1/******/ (() => { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3 4/***/ 9: 5/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 7"use strict"; 8 9// EXPORTS 10__webpack_require__.d(__webpack_exports__, { 11 L: () => (/* binding */ TranslationService) 12}); 13 14// NAMESPACE OBJECT: ./src/services/translations/iTranslationFetcher.ts 15var iTranslationFetcher_namespaceObject = {}; 16__webpack_require__.r(iTranslationFetcher_namespaceObject); 17 18// EXTERNAL MODULE: ./node_modules/inversify/lib/inversify.js 19var inversify = __webpack_require__(260); 20;// ./src/services/translations/translations.ts 21class Translations { 22 constructor() { 23 this.Labels = new Array(); 24 this.Comments = new Array(); 25 this.Buttons = new Array(); 26 this.Titles = new Array(); 27 } 28} 29 30;// ./src/services/translations/translationType.ts 31var TranslationType; 32(function (TranslationType) { 33 TranslationType["Labels"] = "labels"; 34 TranslationType["Comments"] = "comments"; 35 TranslationType["Buttons"] = "buttons"; 36 TranslationType["Titles"] = "titles"; 37})(TranslationType || (TranslationType = {})); 38 39;// ./src/services/translations/translationStorage.ts 40var TranslationStorage; 41(function (TranslationStorage) { 42 TranslationStorage["Labels"] = "do.translations.labels"; 43 TranslationStorage["Comments"] = "do.translations.comments"; 44 TranslationStorage["Buttons"] = "do.translations.buttons"; 45 TranslationStorage["Titles"] = "do.translations.titles"; 46})(TranslationStorage || (TranslationStorage = {})); 47 48;// ./src/services/translations/iTranslationFetcher.ts 49 50 51// EXTERNAL MODULE: ./src/types/types.ts 52var types = __webpack_require__(5644); 53;// ./src/services/translations/translationService.ts 54var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 55 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 56 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 57 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 58 return c > 3 && r && Object.defineProperty(target, key, r), r; 59}; 60var __metadata = (undefined && undefined.__metadata) || function (k, v) { 61 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 62}; 63var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 64 return function (target, key) { decorator(target, key, paramIndex); } 65}; 66var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 67 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 68 return new (P || (P = Promise))(function (resolve, reject) { 69 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 70 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 71 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 72 step((generator = generator.apply(thisArg, _arguments || [])).next()); 73 }); 74}; 75var _a; 76 77 78 79 80 81 82let TranslationService = class TranslationService { 83 constructor(dataFetcher) { 84 this._dealerId = window.DlronGlobal_DealerId; 85 this.dataFetcher = dataFetcher; 86 } 87 initialize(useLabels = true, useComments = false, useButtons = false, useTitles = false) { 88 return __awaiter(this, void 0, void 0, function* () { 89 this.translations = new Translations(); 90 const translationPromises = []; 91 if (useLabels) { 92 translationPromises.push(this.loadTranslations(TranslationType.Labels)); 93 } 94 if (useComments) { 95 translationPromises.push(this.loadTranslations(TranslationType.Comments)); 96 } 97 if (useButtons) { 98 translationPromises.push(this.loadTranslations(TranslationType.Buttons)); 99 } 100 if (useTitles) { 101 translationPromises.push(this.loadTranslations(TranslationType.Titles)); 102 } 103 try { 104 yield Promise.all(translationPromises); 105 } 106 catch (error) { 107 console.error("Error loading translations:", error); 108 } 109 }); 110 } 111 loadTranslations(translationType) { 112 return __awaiter(this, void 0, void 0, function* () { 113 let storageLocation; 114 switch (translationType) { 115 case TranslationType.Labels: 116 storageLocation = TranslationStorage.Labels; 117 break; 118 case TranslationType.Comments: 119 storageLocation = TranslationStorage.Comments; 120 break; 121 case TranslationType.Buttons: 122 storageLocation = TranslationStorage.Buttons; 123 break; 124 case TranslationType.Titles: 125 storageLocation = TranslationStorage.Titles; 126 break; 127 } 128 const translationsFromStorage = sessionStorage.getItem(storageLocation); 129 if (translationsFromStorage) { 130 const translations = JSON.parse(translationsFromStorage); 131 switch (translationType) { 132 case TranslationType.Labels: 133 this.translations.Labels = translations; 134 break; 135 case TranslationType.Comments: 136 this.translations.Comments = translations; 137 break; 138 case TranslationType.Buttons: 139 this.translations.Buttons = translations; 140 break; 141 case TranslationType.Titles: 142 this.translations.Titles = translations; 143 break; 144 } 145 } 146 else { 147 const translations = yield this.dataFetcher.fetch(translationType); 148 if (!translations) { 149 this.setSessionStorage(storageLocation, null); 150 } 151 else { 152 this.processTranslations(translations, translationType, storageLocation); 153 } 154 } 155 }); 156 } 157 processTranslations(translations, translationType, storageLocation) { 158 try { 159 if (translations) { 160 try { 161 switch (translationType) { 162 case TranslationType.Labels: 163 this.translations.Labels = translations["Items"]; 164 break; 165 case TranslationType.Comments: 166 this.translations.Comments = translations["Items"]; 167 break; 168 case TranslationType.Buttons: 169 this.translations.Buttons = translations["Items"]; 170 break; 171 case TranslationType.Titles: 172 this.translations.Titles = translations["Items"]; 173 break; 174 } 175 //Store the translations 176 const translationsForStorage = JSON.stringify(translations["Items"]); 177 this.setSessionStorage(storageLocation, translationsForStorage); 178 } 179 catch (ex) { 180 console.error(`Translations for dealer ID ${this._dealerId} could not be parsed.`); 181 } 182 } 183 else { 184 console.error(`Translations for dealer ID ${this._dealerId} not found.`); 185 } 186 } 187 catch (ex) { 188 this.setSessionStorage(storageLocation, null); 189 console.error(`Error parsing translations for dealer ID ${this._dealerId}`); 190 } 191 } 192 setSessionStorage(storageName, value) { 193 if (value) { 194 sessionStorage.setItem(storageName, value); 195 } 196 else { 197 sessionStorage.removeItem(storageName); 198 } 199 }
200 getLabel(key) { 201 var _a, _b, _c; 202 return (_c = (_b = (_a = this.translations) === null || _a === void 0 ? void 0 : _a.Labels) === null || _b === void 0 ? void 0 : _b[key]) !== null && _c !== void 0 ? _c : key; 203 } 204 getComment(key) { 205 var _a, _b, _c; 206 return (_c = (_b = (_a = this.translations) === null || _a === void 0 ? void 0 : _a.Comments) === null || _b === void 0 ? void 0 : _b[key]) !== null && _c !== void 0 ? _c : key; 207 } 208 getButton(key) { 209 var _a, _b, _c; 210 return (_c = (_b = (_a = this.translations) === null || _a === void 0 ? void 0 : _a.Buttons) === null || _b === void 0 ? void 0 : _b[key]) !== null && _c !== void 0 ? _c : key; 211 } 212 getTitle(key) { 213 var _a, _b, _c; 214 return (_c = (_b = (_a = this.translations) === null || _a === void 0 ? void 0 : _a.Titles) === null || _b === void 0 ? void 0 : _b[key]) !== null && _c !== void 0 ? _c : key; 215 } 216}; 217TranslationService = __decorate([ 218 (0,inversify/* injectable */._G)(), 219 __param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.ITranslationFetcher)), 220 __metadata("design:paramtypes", [typeof (_a = typeof iTranslationFetcher_namespaceObject.ITranslationFetcher !== "undefined" && iTranslationFetcher_namespaceObject.ITranslationFetcher) === "function" ? _a : Object]) 221], TranslationService); 222 223 224 225/***/ }), 226 227/***/ 40: 228/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 229 230"use strict"; 231 232 233Object.defineProperty(exports, "__esModule", ({ 234 value: true 235})); 236exports.tagProperty = exports.tagParameter = exports.decorate = void 0; 237var ERROR_MSGS = __webpack_require__(7718); 238var METADATA_KEY = __webpack_require__(4725); 239function tagParameter(annotationTarget, propertyName, parameterIndex, metadata) { 240 var metadataKey = METADATA_KEY.TAGGED; 241 _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex); 242} 243exports.tagParameter = tagParameter; 244function tagProperty(annotationTarget, propertyName, metadata) { 245 var metadataKey = METADATA_KEY.TAGGED_PROP; 246 _tagParameterOrProperty(metadataKey, annotationTarget.constructor, propertyName, metadata); 247} 248exports.tagProperty = tagProperty; 249function _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex) { 250 var paramsOrPropertiesMetadata = {}; 251 var isParameterDecorator = typeof parameterIndex === "number"; 252 var key = parameterIndex !== undefined && isParameterDecorator ? parameterIndex.toString() : propertyName; 253 if (isParameterDecorator && propertyName !== undefined) { 254 throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION); 255 } 256 if (Reflect.hasOwnMetadata(metadataKey, annotationTarget)) { 257 paramsOrPropertiesMetadata = Reflect.getMetadata(metadataKey, annotationTarget); 258 } 259 var paramOrPropertyMetadata = paramsOrPropertiesMetadata[key]; 260 if (!Array.isArray(paramOrPropertyMetadata)) { 261 paramOrPropertyMetadata = []; 262 } else { 263 for (var _i = 0, paramOrPropertyMetadata_1 = paramOrPropertyMetadata; _i < paramOrPropertyMetadata_1.length; _i++) { 264 var m = paramOrPropertyMetadata_1[_i]; 265 if (m.key === metadata.key) { 266 throw new Error(ERROR_MSGS.DUPLICATED_METADATA + " " + m.key.toString()); 267 } 268 } 269 } 270 paramOrPropertyMetadata.push(metadata); 271 paramsOrPropertiesMetadata[key] = paramOrPropertyMetadata; 272 Reflect.defineMetadata(metadataKey, paramsOrPropertiesMetadata, annotationTarget); 273} 274function _decorate(decorators, target) { 275 Reflect.decorate(decorators, target); 276} 277function _param(paramIndex, decorator) { 278 return function (target, key) { 279 decorator(target, key, paramIndex); 280 }; 281} 282function decorate(decorator, target, parameterIndex) { 283 if (typeof parameterIndex === "number") { 284 _decorate([_param(parameterIndex, decorator)], target); 285 } else if (typeof parameterIndex === "string") { 286 Reflect.decorate([decorator], target, parameterIndex); 287 } else { 288 _decorate([decorator], target); 289 } 290} 291exports.decorate = decorate; 292 293/***/ }), 294 295/***/ 154: 296/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 297 298"use strict"; 299 300 301Object.defineProperty(exports, "__esModule", ({ 302 value: true 303})); 304exports.Target = void 0; 305var METADATA_KEY = __webpack_require__(4725); 306var id_1 = __webpack_require__(8418); 307var metadata_1 = __webpack_require__(8390);
308var queryable_string_1 = __webpack_require__(4131); 309var Target = function () { 310 function Target(type, name, serviceIdentifier, namedOrTagged) { 311 this.id = id_1.id(); 312 this.type = type; 313 this.serviceIdentifier = serviceIdentifier; 314 this.name = new queryable_string_1.QueryableString(name || ""); 315 this.metadata = new Array(); 316 var metadataItem = null; 317 if (typeof namedOrTagged === "string") { 318 metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged); 319 } else if (namedOrTagged instanceof metadata_1.Metadata) { 320 metadataItem = namedOrTagged; 321 } 322 if (metadataItem !== null) { 323 this.metadata.push(metadataItem); 324 } 325 } 326 Target.prototype.hasTag = function (key) { 327 for (var _i = 0, _a = this.metadata; _i < _a.length; _i++) { 328 var m = _a[_i]; 329 if (m.key === key) { 330 return true; 331 } 332 } 333 return false; 334 }; 335 Target.prototype.isArray = function () { 336 return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG); 337 }; 338 Target.prototype.matchesArray = function (name) { 339 return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name); 340 }; 341 Target.prototype.isNamed = function () { 342 return this.hasTag(METADATA_KEY.NAMED_TAG); 343 }; 344 Target.prototype.isTagged = function () { 345 return this.metadata.some(function (m) { 346 return m.key !== METADATA_KEY.INJECT_TAG && m.key !== METADATA_KEY.MULTI_INJECT_TAG && m.key !== METADATA_KEY.NAME_TAG && m.key !== METADATA_KEY.UNMANAGED_TAG && m.key !== METADATA_KEY.NAMED_TAG; 347 }); 348 }; 349 Target.prototype.isOptional = function () { 350 return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true); 351 }; 352 Target.prototype.getNamedTag = function () { 353 if (this.isNamed()) { 354 return this.metadata.filter(function (m) { 355 return m.key === METADATA_KEY.NAMED_TAG; 356 })[0]; 357 } 358 return null; 359 }; 360 Target.prototype.getCustomTags = function () { 361 if (this.isTagged()) { 362 return this.metadata.filter(function (m) { 363 return m.key !== METADATA_KEY.INJECT_TAG && m.key !== METADATA_KEY.MULTI_INJECT_TAG && m.key !== METADATA_KEY.NAME_TAG && m.key !== METADATA_KEY.UNMANAGED_TAG && m.key !== METADATA_KEY.NAMED_TAG; 364 }); 365 } 366 return null; 367 }; 368 Target.prototype.matchesNamedTag = function (name) { 369 return this.matchesTag(METADATA_KEY.NAMED_TAG)(name); 370 }; 371 Target.prototype.matchesTag = function (key) { 372 var _this = this; 373 return function (value) { 374 for (var _i = 0, _a = _this.metadata; _i < _a.length; _i++) { 375 var m = _a[_i]; 376 if (m.key === key && m.value === value) { 377 return true; 378 } 379 } 380 return false; 381 }; 382 }; 383 return Target; 384}(); 385exports.Target = Target; 386 387/***/ }), 388 389/***/ 208: 390/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 391 392"use strict"; 393 394// EXPORTS 395__webpack_require__.d(__webpack_exports__, { 396 $q: () => (/* binding */ setupDevtoolsPlugin) 397}); 398 399// UNUSED EXPORTS: isPerformanceSupported, now 400 401;// ./node_modules/@vue/devtools-api/lib/esm/env.js 402function getDevtoolsGlobalHook() { 403 return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; 404} 405function getTarget() { 406 // @ts-expect-error navigator and windows are not available in all environments 407 return typeof navigator !== 'undefined' && typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : {}; 408} 409const isProxyAvailable = typeof Proxy === 'function'; 410;// ./node_modules/@vue/devtools-api/lib/esm/const.js 411const HOOK_SETUP = 'devtools-plugin:setup'; 412const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; 413;// ./node_modules/@vue/devtools-api/lib/esm/time.js 414let supported; 415let perf; 416function isPerformanceSupported() { 417 var _a; 418 if (supported !== undefined) { 419 return supported; 420 } 421 if (typeof window !== 'undefined' && window.performance) { 422 supported = true; 423 perf = window.performance; 424 } else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { 425 supported = true; 426 perf = globalThis.perf_hooks.performance; 427 } else { 428 supported = false;
429 } 430 return supported; 431} 432function now() { 433 return isPerformanceSupported() ? perf.now() : Date.now(); 434} 435;// ./node_modules/@vue/devtools-api/lib/esm/proxy.js 436 437 438class ApiProxy { 439 constructor(plugin, hook) { 440 this.target = null; 441 this.targetQueue = []; 442 this.onQueue = []; 443 this.plugin = plugin; 444 this.hook = hook; 445 const defaultSettings = {}; 446 if (plugin.settings) { 447 for (const id in plugin.settings) { 448 const item = plugin.settings[id]; 449 defaultSettings[id] = item.defaultValue; 450 } 451 } 452 const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; 453 let currentSettings = Object.assign({}, defaultSettings); 454 try { 455 const raw = localStorage.getItem(localSettingsSaveId); 456 const data = JSON.parse(raw); 457 Object.assign(currentSettings, data); 458 } catch (e) { 459 // noop 460 } 461 this.fallbacks = { 462 getSettings() { 463 return currentSettings; 464 }, 465 setSettings(value) { 466 try { 467 localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); 468 } catch (e) { 469 // noop 470 } 471 currentSettings = value; 472 }, 473 now() { 474 return now(); 475 } 476 }; 477 if (hook) { 478 hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { 479 if (pluginId === this.plugin.id) { 480 this.fallbacks.setSettings(value); 481 } 482 }); 483 } 484 this.proxiedOn = new Proxy({}, { 485 get: (_target, prop) => { 486 if (this.target) { 487 return this.target.on[prop]; 488 } else { 489 return (...args) => { 490 this.onQueue.push({ 491 method: prop, 492 args 493 }); 494 }; 495 } 496 } 497 }); 498 this.proxiedTarget = new Proxy({}, { 499 get: (_target, prop) => { 500 if (this.target) { 501 return this.target[prop]; 502 } else if (prop === 'on') { 503 return this.proxiedOn; 504 } else if (Object.keys(this.fallbacks).includes(prop)) { 505 return (...args) => { 506 this.targetQueue.push({ 507 method: prop, 508 args, 509 resolve: () => {} 510 }); 511 return this.fallbacks[prop](...args); 512 }; 513 } else { 514 return (...args) => { 515 return new Promise(resolve => { 516 this.targetQueue.push({ 517 method: prop, 518 args, 519 resolve 520 }); 521 }); 522 }; 523 } 524 } 525 }); 526 } 527 async setRealTarget(target) { 528 this.target = target; 529 for (const item of this.onQueue) { 530 this.target.on[item.method](...item.args); 531 } 532 for (const item of this.targetQueue) { 533 item.resolve(await this.target[item.method](...item.args)); 534 } 535 } 536} 537;// ./node_modules/@vue/devtools-api/lib/esm/index.js 538 539 540 541 542 543 544function setupDevtoolsPlugin(pluginDescriptor, setupFn) { 545 const descriptor = pluginDescriptor; 546 const target = getTarget(); 547 const hook = getDevtoolsGlobalHook(); 548 const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; 549 if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { 550 hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); 551 } else { 552 const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; 553 const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; 554 list.push({ 555 pluginDescriptor: descriptor, 556 setupFn, 557 proxy 558 }); 559 if (proxy) { 560 setupFn(proxy.proxiedTarget); 561 } 562 } 563} 564 565/***/ }), 566 567/***/ 260: 568/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 569 570"use strict"; 571var __webpack_unused_export__; 572 573 574__webpack_unused_export__ = ({ 575 value: true 576}); 577__webpack_unused_export__ = void 0; 578var keys = __webpack_require__(4725); 579__webpack_unused_export__ = keys; 580var container_1 = __webpack_require__(9638); 581Object.defineProperty(exports, "mc", ({ 582 enumerable: true, 583 get: function () { 584 return container_1.Container; 585 } 586})); 587var literal_types_1 = __webpack_require__(7802); 588__webpack_unused_export__ = ({ 589 enumerable: true, 590 get: function () { 591 return literal_types_1.BindingScopeEnum; 592 } 593}); 594__webpack_unused_export__ = ({ 595 enumerable: true, 596 get: function () { 597 return literal_types_1.BindingTypeEnum; 598 } 599}); 600__webpack_unused_export__ = ({ 601 enumerable: true, 602 get: function () { 603 return literal_types_1.TargetTypeEnum; 604 } 605}); 606var container_module_1 = __webpack_require__(5517); 607__webpack_unused_export__ = ({ 608 enumerable: true, 609 get: function () { 610 return container_module_1.AsyncContainerModule; 611 } 612}); 613__webpack_unused_export__ = ({ 614 enumerable: true, 615 get: function () { 616 return container_module_1.ContainerModule; 617 } 618}); 619var injectable_1 = __webpack_require__(8370); 620Object.defineProperty(exports, "_G", ({ 621 enumerable: true, 622 get: function () { 623 return injectable_1.injectable; 624 } 625})); 626var tagged_1 = __webpack_require__(9523); 627__webpack_unused_export__ = ({ 628 enumerable: true, 629 get: function () { 630 return tagged_1.tagged; 631 } 632}); 633var named_1 = __webpack_require__(7590); 634__webpack_unused_export__ = ({ 635 enumerable: true, 636 get: function () { 637 return named_1.named; 638 } 639}); 640var inject_1 = __webpack_require__(7442); 641Object.defineProperty(exports, "WQ", ({ 642 enumerable: true, 643 get: function () { 644 return inject_1.inject; 645 } 646})); 647__webpack_unused_export__ = ({ 648 enumerable: true, 649 get: function () { 650 return inject_1.LazyServiceIdentifer; 651 } 652}); 653var optional_1 = __webpack_require__(3091); 654__webpack_unused_export__ = ({ 655 enumerable: true, 656 get: function () { 657 return optional_1.optional; 658 } 659}); 660var unmanaged_1 = __webpack_require__(3415); 661__webpack_unused_export__ = ({ 662 enumerable: true, 663 get: function () { 664 return unmanaged_1.unmanaged; 665 } 666}); 667var multi_inject_1 = __webpack_require__(6088); 668__webpack_unused_export__ = ({ 669 enumerable: true, 670 get: function () { 671 return multi_inject_1.multiInject; 672 } 673}); 674var target_name_1 = __webpack_require__(8690); 675__webpack_unused_export__ = ({ 676 enumerable: true, 677 get: function () { 678 return target_name_1.targetName; 679 } 680}); 681var post_construct_1 = __webpack_require__(2719); 682__webpack_unused_export__ = ({ 683 enumerable: true, 684 get: function () { 685 return post_construct_1.postConstruct; 686 } 687}); 688var metadata_reader_1 = __webpack_require__(5426); 689__webpack_unused_export__ = ({ 690 enumerable: true, 691 get: function () { 692 return metadata_reader_1.MetadataReader; 693 } 694}); 695var id_1 = __webpack_require__(8418); 696__webpack_unused_export__ = ({ 697 enumerable: true, 698 get: function () { 699 return id_1.id; 700 } 701}); 702var decorator_utils_1 = __webpack_require__(40); 703__webpack_unused_export__ = ({ 704 enumerable: true, 705 get: function () { 706 return decorator_utils_1.decorate; 707 } 708}); 709var constraint_helpers_1 = __webpack_require__(3884); 710__webpack_unused_export__ = ({ 711 enumerable: true, 712 get: function () { 713 return constraint_helpers_1.traverseAncerstors; 714 } 715}); 716__webpack_unused_export__ = ({ 717 enumerable: true, 718 get: function () { 719 return constraint_helpers_1.taggedConstraint; 720 } 721}); 722__webpack_unused_export__ = ({ 723 enumerable: true, 724 get: function () { 725 return constraint_helpers_1.namedConstraint; 726 } 727}); 728__webpack_unused_export__ = ({ 729 enumerable: true, 730 get: function () { 731 return constraint_helpers_1.typeConstraint; 732 } 733}); 734var serialization_1 = __webpack_require__(7911); 735__webpack_unused_export__ = ({ 736 enumerable: true, 737 get: function () { 738 return serialization_1.getServiceIdentifierAsString; 739 } 740}); 741var binding_utils_1 = __webpack_require__(4984); 742__webpack_unused_export__ = ({ 743 enumerable: true, 744 get: function () { 745 return binding_utils_1.multiBindToService; 746 } 747}); 748 749/***/ }), 750 751/***/ 721: 752/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 753 754"use strict"; 755 756// EXPORTS 757__webpack_require__.d(__webpack_exports__, { 758 d: () => (/* binding */ SrpWasabiGeneral) 759}); 760 761// EXTERNAL MODULE: ./node_modules/inversify/lib/inversify.js 762var inversify = __webpack_require__(260); 763// EXTERNAL MODULE: ./src/types/types.ts 764var types = __webpack_require__(5644); 765;// ./src/components/searchFilter/srpWasab_PageNav.ts 766class SrpWasabiPageNav { 767 srpFiltersMore() { 768 $('.srp-filters-more .toggle').click(function () { 769 if ($('.srp-filters-more').hasClass('active')) { 770 $('.srp-filters-more').removeClass('active'); 771 } 772 else { 773 $('.srp-filters-more').addClass('active'); 774 } 775 }); 776 $(document).on('click', function (event) { 777 if (!$(event.target).closest('.srp-filters-more').length && !$(event.target).closest('.filter-item-minimized button').length) { 778 if ($('.srp-filters-more').hasClass('active')) { 779 $('.srp-filters-more').removeClass('active'); 780 } 781 } 782 }); 783 } 784} 785 786// EXTERNAL MODULE: ./src/services/toggles/iToggleService.ts 787var iToggleService = __webpack_require__(4478); 788// EXTERNAL MODULE: ./src/utilities/jQueryHelper/jQueryHelper.ts 789var jQueryHelper = __webpack_require__(2781); 790;
790// ./src/components/searchFilter/srpWasabi_General.ts 791var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 792 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 793 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 794 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 795 return c > 3 && r && Object.defineProperty(target, key, r), r; 796}; 797var __metadata = (undefined && undefined.__metadata) || function (k, v) { 798 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 799}; 800var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 801 return function (target, key) { decorator(target, key, paramIndex); } 802}; 803var _a; 804 805 806 807 808 809let SrpWasabiGeneral = class SrpWasabiGeneral { 810 constructor(toggleService) { 811 this.SrpWasabiFilterMobileElem = null; 812 this.SrpWasabiTotalFilterNum = null; 813 this.SrpWasabiMaxWidth991 = null; 814 this.rangeArray = []; 815 this.toggleService = toggleService; 816 } 817 initialize() { 818 //Only used for ILP 819 if (window.location.pathname.toLowerCase().indexOf("inventorylineup.aspx") > -1) { 820 this.addCheckboxClickEvents(); 821 //instantiate the filter numbers 822 this.initializeCheckFilterNum(); 823 } 824 this._srpWasabiPageNav = new SrpWasabiPageNav(); 825 window.addEventListener("resize", () => { 826 this.Update(); 827 }, { passive: true }); 828 window.addEventListener("scroll", () => { 829 this.Update(); 830 }, { passive: true }); 831 this.refreshVariables(); 832 this._srpWasabiPageNav.srpFiltersMore(); 833 this.refineSilderMobile(); 834 this.disableFilterPanels(); 835 this.initializeFilterScrollIntoViewUponExpansion(); 836 } 837 Update() { 838 this.refreshVariables(); 839 } 840 CalculateFunction() { 841 var _a, _b; 842 var checkboxNum = (_b = (_a = this.srpFilterElem) === null || _a === void 0 ? void 0 : _a.querySelectorAll('input[type=checkbox]:checked')) === null || _b === void 0 ? void 0 : _b.length; 843 const ranges = document.querySelectorAll(".range"); 844 ranges.forEach((elem) => { 845 if (elem.value !== "") { 846 this.rangeArray.push(this); 847 } 848 }); 849 this.SrpWasabiTotalFilterNum = checkboxNum + this.rangeArray.length; 850 } 851 initializeCheckFilterNum() { 852 var _a, _b; 853 this.srpFilterElem = document.getElementById("srp_filter"); 854 const customCheckboxes = (_a = this.srpFilterElem) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.display_child, .custom-checkbox'); 855 customCheckboxes === null || customCheckboxes === void 0 ? void 0 : customCheckboxes.forEach((checkbox) => { 856 checkbox.addEventListener("click", () => { 857 setTimeout(() => { 858 this.CalculateFunction(); 859 }, 100); 860 }); 861 }); 862 const filterInputs = (_b = this.srpFilterElem) === null || _b === void 0 ? void 0 : _b.querySelectorAll('input'); 863 filterInputs === null || filterInputs === void 0 ? void 0 : filterInputs.forEach((input) => { 864 input.addEventListener("blur", () => { 865 this.CalculateFunction(); 866 }); 867 }); 868 } 869 // refine slider selected 870 addCheckboxClickEvents() { 871 $(document).on('click', '#srp_filter .collapse-options .tile_display .tile_display_child, #srp_filter .collapse-options .list_display .list_display_child', function () { 872 var targetedID = $(this).attr('data-target'); 873 if ($(this).find('input').is(':checked')) { 874 $(this).addClass('tile_selected'); 875 } 876 else { 877 $(this).removeClass('tile_selected'); 878 if (targetedID) { 879 $(this).parents('.list_display').find('' + targetedID + ' .collapse-options-sub .display_child.list_display_child').removeClass('tile_selected'); 880 $(this).parents('.list_display').find('' + targetedID + ' .collapse-options-sub .display_child.list_display_child input').removeAttr('checked'); 881 } 882 } 883 }); 884 } 885 refreshVariables() { 886 this.SrpWasabiFilterMobileElem = $('body'); 887 this.SrpWasabiMaxWidth991 = window.matchMedia('(max-width: 991px)'); 888 } 889 // disable filter panels default 890 disableFilterPanels() { 891 jQueryHelper/* JQueryHelper */.$.SafeApplyCollapse($('#srp_filter .collapse'), { 892 'toggle': false 893 }); 894 } 895 /** 896 * Initialize event listeners to scroll an expanded filter into view. Due to 897 * how the bootstrap collapse component works, we must use jQuery to hook 898 * into the events fired by that component. 899 * @see {@link https://getbootstrap.com/docs/4.0/components/collapse/ } 900 */ 901 initializeFilterScrollIntoViewUponExpansion() { 902 $("#srp_filter .panel .collapse-options") 903 .on("shown.bs.collapse", function () { 904 var parent = this.closest(".panel"); 905 try { 906 parent.scrollIntoView({ 907 behavior: "smooth", 908 block: "nearest" 909 }); 910 } 911 catch (_a) { 912 // Fallback for browsers without support for scrollIntoViewOptions 913 parent.scrollIntoView(false); 914 } 915 }); 916 } 917 // refine silder mobile 918 refineSilderMobile() { 919 $('button.filter-modal-toggle').on('click', (e) => { 920 e.stopImmediatePropagation(); 921 this.addFilterMobileBodyClasses(); 922 this.addFilterMobileBodySpecClasses(); 923 }); 924 $('.shade, .close_sticky, .close_sticky_mod, .search_btn.search_sticky').on('click', () => { 925 this.removeBodyClasses(); 926 this.removeBodySpecClasses(); 927 }); 928 } 929 //refine slider on mobile 930 addFilterMobileBodyClasses() { 931 this.SrpWasabiFilterMobileElem.addClass('filterMobile'); 932 const filterPanel = document.getElementById("filterPanel"); 933 if (filterPanel) { 934 filterPanel.classList.remove("hidden"); 935 } 936 // If Mobile filterPanel ever gets opened, the Desktop filterPanel will remain open if transitioning to it. 937 // Remove the 'wasabi_srp--no-grid' (which should be present when Desktop filterPanel is closed) class 938 // when the following transition occurs: 939 // Deskptop filterPanel closed -> Mobile filterPanel opened -> Desktop filterPanel opened 940 const wasabiSrp = document.querySelector(".wasabi_srp"); 941 if (filterPanel && wasabiSrp) { 942 wasabiSrp.classList.remove("wasabi_srp--no-grid"); 943 } 944 } 945 addFilterMobileBodySpecClasses() { 946 this.SrpWasabiFilterMobileElem.addClass('filterMobileBodySpec'); 947 } 948 removeBodyClasses() { 949 this.SrpWasabiFilterMobileElem.removeClass('filterMobile'); 950 } 951 removeBodySpecClasses() { 952 window.setTimeout(() => { 953 this.SrpWasabiFilterMobileElem.removeClass('filterMobileBodySpec'); 954 }, 350); 955 } 956}; 957SrpWasabiGeneral = __decorate([ 958 (0,inversify/* injectable */._G)(), 959 __param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 960 __metadata("design:paramtypes", [typeof (_a = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? _a : Object]) 961], SrpWasabiGeneral); 962 963 964 965/***/ }), 966 967/***/ 730: 968/***/ ((module, __unused_webpack_exports, __webpack_require__) =>
vendor: 8,038 bytes, lines 968-1208
968 { 969 970/** 971 * lodash (Custom Build) <https://lodash.com/> 972 * Build: `lodash modularize exports="npm" -o ./` 973 * Copyright jQuery Foundation and other contributors <https://jquery.org/> 974 * Released under MIT license <https://lodash.com/license> 975 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> 976 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 977 */ 978 979/** Used as the `TypeError` message for "Functions" methods. */ 980var FUNC_ERROR_TEXT = 'Expected a function'; 981 982/** Used as references for various `Number` constants. */ 983var NAN = 0 / 0; 984 985/** `Object#toString` result references. */ 986var symbolTag = '[object Symbol]'; 987 988/** Used to match leading and trailing whitespace. */ 989var reTrim = /^\s+|\s+$/g; 990 991/** Used to detect bad signed hexadecimal string values. */ 992var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 993 994/** Used to detect binary string values. */ 995var reIsBinary = /^0b[01]+$/i; 996 997/** Used to detect octal string values. */ 998var reIsOctal = /^0o[0-7]+$/i; 999 1000/** Built-in method references without a dependency on `root`. */ 1001var freeParseInt = parseInt; 1002 1003/** Detect free variable `global` from Node.js. */ 1004var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; 1005 1006/** Detect free variable `self`. */ 1007var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 1008 1009/** Used as a reference to the global object. */ 1010var root = freeGlobal || freeSelf || Function('return this')(); 1011 1012/** Used for built-in method references. */ 1013var objectProto = Object.prototype; 1014 1015/** 1016 * Used to resolve the 1017 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 1018 * of values. 1019 */ 1020var objectToString = objectProto.toString; 1021 1022/* Built-in method references for those with the same name as other `lodash` methods. */ 1023var nativeMax = Math.max, 1024 nativeMin = Math.min; 1025 1026/** 1027 * Gets the timestamp of the number of milliseconds that have elapsed since 1028 * the Unix epoch (1 January 1970 00:00:00 UTC). 1029 * 1030 * @static 1031 * @memberOf _ 1032 * @since 2.4.0 1033 * @category Date 1034 * @returns {number} Returns the timestamp. 1035 * @example 1036 * 1037 * _.defer(function(stamp) { 1038 * console.log(_.now() - stamp); 1039 * }, _.now()); 1040 * // => Logs the number of milliseconds it took for the deferred invocation. 1041 */ 1042var now = function () { 1043 return root.Date.now(); 1044}; 1045 1046/** 1047 * Creates a debounced function that delays invoking `func` until after `wait` 1048 * milliseconds have elapsed since the last time the debounced function was 1049 * invoked. The debounced function comes with a `cancel` method to cancel 1050 * delayed `func` invocations and a `flush` method to immediately invoke them. 1051 * Provide `options` to indicate whether `func` should be invoked on the 1052 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 1053 * with the last arguments provided to the debounced function. Subsequent 1054 * calls to the debounced function return the result of the last `func` 1055 * invocation. 1056 * 1057 * **Note:** If `leading` and `trailing` options are `true`, `func` is 1058 * invoked on the trailing edge of the timeout only if the debounced function 1059 * is invoked more than once during the `wait` timeout. 1060 * 1061 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 1062 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 1063 * 1064 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 1065 * for details over the differences between `_.debounce` and `_.throttle`. 1066 * 1067 * @static 1068 * @memberOf _ 1069 * @since 0.1.0 1070 * @category Function 1071 * @param {Function} func The function to debounce. 1072 * @param {number} [wait=0] The number of milliseconds to delay. 1073 * @param {Object} [options={}] The options object. 1074 * @param {boolean} [options.leading=false] 1075 * Specify invoking on the leading edge of the timeout. 1076 * @param {number} [options.maxWait] 1077 * The maximum time `func` is allowed to be delayed before it's invoked. 1078 * @param {boolean} [options.trailing=true] 1079 * Specify invoking on the trailing edge of the timeout. 1080 * @returns {Function} Returns the new debounced function. 1081 * @example 1082 * 1083 * // Avoid costly calculations while the window size is in flux. 1084 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 1085 * 1086 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 1087 * jQuery(element).on('click', _.debounce(sendMail, 300, { 1088 * 'leading': true, 1089 * 'trailing': false 1090 * })); 1091 * 1092 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 1093 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 1094 * var source = new EventSource('/stream'); 1095 * jQuery(source).on('message', debounced); 1096 * 1097 * // Cancel the trailing debounced invocation. 1098 * jQuery(window).on('popstate', debounced.cancel); 1099 */ 1100function debounce(func, wait, options) { 1101 var lastArgs, 1102 lastThis, 1103 maxWait, 1104 result, 1105 timerId, 1106 lastCallTime, 1107 lastInvokeTime = 0, 1108 leading = false, 1109 maxing = false, 1110 trailing = true; 1111 if (typeof func != 'function') { 1112 throw new TypeError(FUNC_ERROR_TEXT); 1113 } 1114 wait = toNumber(wait) || 0; 1115 if (isObject(options)) { 1116 leading = !!options.leading; 1117 maxing = 'maxWait' in options; 1118 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 1119 trailing = 'trailing' in options ? !!options.trailing : trailing; 1120 } 1121 function invokeFunc(time) { 1122 var args = lastArgs, 1123 thisArg = lastThis; 1124 lastArgs = lastThis = undefined; 1125 lastInvokeTime = time; 1126 result = func.apply(thisArg, args); 1127 return result; 1128 } 1129 function leadingEdge(time) { 1130 // Reset any `maxWait` timer. 1131 lastInvokeTime = time; 1132 // Start the timer for the trailing edge. 1133 timerId = setTimeout(timerExpired, wait); 1134 // Invoke the leading edge. 1135 return leading ? invokeFunc(time) : result; 1136 } 1137 function remainingWait(time) { 1138 var timeSinceLastCall = time - lastCallTime, 1139 timeSinceLastInvoke = time - lastInvokeTime, 1140 result = wait - timeSinceLastCall; 1141 return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; 1142 } 1143 function shouldInvoke(time) { 1144 var timeSinceLastCall = time - lastCallTime, 1145 timeSinceLastInvoke = time - lastInvokeTime; 1146 1147 // Either this is the first call, activity has stopped and we're at the 1148 // trailing edge, the system time has gone backwards and we're treating 1149 // it as the trailing edge, or we've hit the `maxWait` limit. 1150 return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; 1151 } 1152 function timerExpired() { 1153 var time = now(); 1154 if (shouldInvoke(time)) { 1155 return trailingEdge(time); 1156 } 1157 // Restart the timer. 1158 timerId = setTimeout(timerExpired, remainingWait(time)); 1159 } 1160 function trailingEdge(time) { 1161 timerId = undefined; 1162 1163 // Only invoke if we have `lastArgs` which means `func` has been 1164 // debounced at least once. 1165 if (trailing && lastArgs) { 1166 return invokeFunc(time); 1167 } 1168 lastArgs = lastThis = undefined; 1169 return result; 1170 } 1171 function cancel() { 1172 if (timerId !== undefined) { 1173 clearTimeout(timerId); 1174 } 1175 lastInvokeTime = 0; 1176 lastArgs = lastCallTime = lastThis = timerId = undefined; 1177 } 1178 function flush() { 1179 return timerId === undefined ? result : trailingEdge(now()); 1180 } 1181 function debounced() { 1182 var time = now(), 1183 isInvoking = shouldInvoke(time); 1184 lastArgs = arguments; 1185 lastThis = this; 1186 lastCallTime = time; 1187 if (isInvoking) { 1188 if (timerId === undefined) { 1189 return leadingEdge(lastCallTime); 1190 } 1191 if (maxing) { 1192 // Handle invocations in a tight loop. 1193 timerId = setTimeout(timerExpired, wait); 1194 return invokeFunc(lastCallTime); 1195 } 1196 } 1197 if (timerId === undefined) { 1198 timerId = setTimeout(timerExpired, wait); 1199 } 1200 return result; 1201 } 1202 debounced.cancel = cancel; 1203 debounced.flush = flush; 1204 return debounced; 1205} 1206 1207/** 1208 * C
1208hecks if `value` is the 1209 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 1210 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 1211 * 1212 * @static 1213 * @memberOf _ 1214 * @since 0.1.0 1215 * @category Lang 1216 * @param {*} value The value to check. 1217 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 1218 * @example 1219 * 1220 * _.isObject({}); 1221 * // => true 1222 * 1223 * _.isObject([1, 2, 3]); 1224 * // => true 1225 * 1226 * _.isObject(_.noop); 1227 * // => true 1228 * 1229 * _.isObject(null); 1230 * // => false 1231 */ 1232function isObject(value) { 1233 var type = typeof value; 1234 return !!value && (type == 'object' || type == 'function'); 1235} 1236 1237/** 1238 * Checks if `value` is object-like. A value is object-like if it's not `null` 1239 * and has a `typeof` result of "object". 1240 * 1241 * @static 1242 * @memberOf _ 1243 * @since 4.0.0 1244 * @category Lang 1245 * @param {*} value The value to check. 1246 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 1247 * @example 1248 * 1249 * _.isObjectLike({}); 1250 * // => true 1251 * 1252 * _.isObjectLike([1, 2, 3]); 1253 * // => true 1254 * 1255 * _.isObjectLike(_.noop); 1256 * // => false 1257 * 1258 * _.isObjectLike(null); 1259 * // => false 1260 */ 1261function isObjectLike(value) { 1262 return !!value && typeof value == 'object'; 1263} 1264 1265/** 1266 * Checks if `value` is classified as a `Symbol` primitive or object. 1267 * 1268 * @static 1269 * @memberOf _ 1270 * @since 4.0.0 1271 * @category Lang 1272 * @param {*} value The value to check. 1273 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 1274 * @example 1275 * 1276 * _.isSymbol(Symbol.iterator); 1277 * // => true 1278 * 1279 * _.isSymbol('abc'); 1280 * // => false 1281 */ 1282function isSymbol(value) { 1283 return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag; 1284} 1285 1286/** 1287 * Converts `value` to a number. 1288 * 1289 * @static 1290 * @memberOf _ 1291 * @since 4.0.0 1292 * @category Lang 1293 * @param {*} value The value to process. 1294 * @returns {number} Returns the number. 1295 * @example 1296 * 1297 * _.toNumber(3.2); 1298 * // => 3.2 1299 * 1300 * _.toNumber(Number.MIN_VALUE); 1301 * // => 5e-324 1302 * 1303 * _.toNumber(Infinity); 1304 * // => Infinity 1305 * 1306 * _.toNumber('3.2'); 1307 * // => 3.2 1308 */ 1309function toNumber(value) { 1310 if (typeof value == 'number') { 1311 return value; 1312 } 1313 if (isSymbol(value)) { 1314 return NAN; 1315 } 1316 if (isObject(value)) { 1317 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 1318 value = isObject(other) ? other + '' : other; 1319 } 1320 if (typeof value != 'string') { 1321 return value === 0 ? value : +value; 1322 } 1323 value = value.replace(reTrim, ''); 1324 var isBinary = reIsBinary.test(value); 1325 return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; 1326} 1327module.exports = debounce; 1328 1329/***/ }), 1330 1331/***/ 761: 1332/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1333 1334// style-loader: Adds some css to the DOM by adding a <style> tag 1335 1336// load the styles
1337var content = __webpack_require__(9536); 1338if(content.__esModule) content = content.default; 1339if(typeof content === 'string') content = [[module.id, content, '']]; 1340if(content.locals) module.exports = content.locals; 1341// add the styles to the DOM 1342var add = (__webpack_require__(8449)/* ["default"] */ .A) 1343var update = add("443e9b7d", content, false, {}); 1344// Hot Module Replacement 1345if(false) {} 1346 1347/***/ }), 1348 1349/***/ 926: 1350/***/ (() => { 1351 1352"use strict"; 1353 1354 1355 1356/***/ }), 1357 1358/***/ 1324: 1359/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1360 1361// style-loader: Adds some css to the DOM by adding a <style> tag 1362 1363// load the styles 1364var content = __webpack_require__(2749); 1365if(content.__esModule) content = content.default; 1366if(typeof content === 'string') content = [[module.id, content, '']]; 1367if(content.locals) module.exports = content.locals; 1368// add the styles to the DOM 1369var add = (__webpack_require__(8449)/* ["default"] */ .A) 1370var update = add("0a2c1ffb", content, false, {}); 1371// Hot Module Replacement 1372if(false) {} 1373 1374/***/ }), 1375 1376/***/ 1373: 1377/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1378 1379"use strict"; 1380/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1381/* harmony export */ L: () => (/* binding */ PricingTypeCookie) 1382/* harmony export */ }); 1383var PricingType; 1384(function (PricingType) { 1385 PricingType["buy"] = "buy"; 1386 PricingType["finance"] = "finance"; 1387 PricingType["lease"] = "lease"; 1388})(PricingType || (PricingType = {})); 1389class PricingTypeCookie { 1390 static get currentCookieValue() { 1391 return window.DealeronCookie.getItem(this.PricingCookieName); 1392 } 1393 static setPricingTypeCookieBySort(selectedOption) { 1394 if (selectedOption) { 1395 const selectedSortType = selectedOption.dataset.sortType || ''; 1396 const pricingType = PricingType[selectedSortType.toLowerCase()]; 1397 if (pricingType) { 1398 window.DealeronCookie.setItem(this.PricingCookieName, pricingType); 1399 } 1400 } 1401 else { 1402 console.error('The selected option was null or undefined when attempting to set the pricing type cookie; expected a document node'); 1403 } 1404 } 1405 static setPricingTypeCookie(tabName) { 1406 const pricingType = PricingType[tabName.toLowerCase()]; 1407 if (pricingType) { 1408 window.DealeronCookie.setItem(this.PricingCookieName, pricingType); 1409 } 1410 } 1411} 1412PricingTypeCookie.PricingCookieName = "DLRON_SELECTED_PRICING_TYPE"; 1413 1414 1415/***/ }), 1416 1417/***/ 1404: 1418/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1419 1420// style-loader: Adds some css to the DOM by adding a <style> tag 1421 1422// load the styles 1423var content = __webpack_require__(6387); 1424if(content.__esModule) content = content.default; 1425if(typeof content === 'string') content = [[module.id, content, '']]; 1426if(content.locals) module.exports = content.locals; 1427// add the styles to the DOM 1428var add = (__webpack_require__(8449)/* ["default"] */ .A) 1429var update = add("8eca6572", content, false, {}); 1430// Hot Module Replacement 1431if(false) {} 1432 1433/***/ }), 1434 1435/***/ 1535: 1436/***/ ((__unused_webpack_module, exports) => { 1437 1438"use strict"; 1439var __webpack_unused_export__; 1440 1441 1442__webpack_unused_export__ = ({ 1443 value: true 1444}); 1445// runtime helper for setting properties on components 1446// in a tree-shakable way 1447exports.A = (sfc, props) => { 1448 const target = sfc.__vccOpts || sfc; 1449 for (const [key, val] of props) { 1450 target[key] = val; 1451 } 1452 return target; 1453}; 1454 1455/***/ }), 1456 1457/***/ 1560: 1458/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1459 1460"use strict"; 1461/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1462/* harmony export */ v: () => (/* binding */ SrpScrollType) 1463/* harmony export */ }); 1464var SrpScrollType; 1465(function (SrpScrollType) { 1466 SrpScrollType[SrpScrollType["Pagination"] = 0] = "Pagination"; 1467 SrpScrollType[SrpScrollType["InfiniteScroll"] = 1] = "InfiniteScroll"; 1468})(SrpScrollType || (SrpScrollType = {})); 1469 1470 1471/***/ }), 1472 1473/***/ 1719: 1474/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1475 1476"use strict"; 1477/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1478/* harmony export */ p: () => (/* binding */ PaginationQueryParams) 1479/* harmony export */ }); 1480/* unused harmony export PagingModel */ 1481 1482class PagingModel { 1483 constructor() { 1484 this.NumberOfVehiclesToShowModel = {}; 1485 this.PaginationDataModel = new PaginationDataModel(); 1486 } 1487} 1488var PaginationQueryParams; 1489(function (PaginationQueryParams) { 1490 PaginationQueryParams["PageSize"] = "pn"; 1491 PaginationQueryParams["PageNumber"] = "pt"; 1492})(PaginationQueryParams || (PaginationQueryParams = {})); 1493 1494 1495/***/ }), 1496 1497/***/ 1774: 1498/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1499 1500"use strict"; 1501 1502// EXPORTS 1503__webpack_require__.d(__webpack_exports__, { 1504 Ey: () => (/* binding */ createPinia), 1505 nY: () => (/* binding */ defineStore), 1506 oO: () => (/* binding */ setActivePinia) 1507}); 1508 1509// UNUSED EXPORTS: MutationType, PiniaVuePlugin, acceptHMRUpdate, disposePinia, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setMapStoreSuffix, shouldHydrate, skipHydrate, storeToRefs 1510 1511// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm-browser.prod.js 1512var vue_runtime_esm_browser_prod = __webpack_require__(3568); 1513;// ./node_modules/vue-demi/lib/index.mjs 1514 1515 1516var lib_isVue2 = false 1517var isVue3 = true 1518var Vue2 = (/* unused pure expression or super */ null && (undefined)) 1519 1520function install() {} 1521 1522function lib_set(target, key, val) { 1523 if (Array.isArray(target)) { 1524 target.length = Math.max(target.length, key) 1525 target.splice(key, 1, val) 1526 return val 1527 } 1528 target[key] = val 1529 return val 1530} 1531 1532function del(target, key) { 1533 if (Array.isArray(target)) { 1534 target.splice(key, 1) 1535 return 1536 } 1537 delete target[key] 1538} 1539 1540 1541 1542 1543// EXTERNAL MODULE: ./node_modules/@vue/devtools-api/lib/esm/index.js + 4 modules 1544var esm = __webpack_require__(208); 1545;// ./node_modules/pinia/dist/pinia.mjs 1546/*! 1547 * pinia v2.3.1 1548 * (c) 2025 Eduardo San Martin Morote 1549 * @license MIT 1550 */ 1551 1552 1553 1554/** 1555 * setActivePinia must be called to handle SSR at the top of functions like 1556 * `fetch`, `setup`, `serverPrefetch` and others 1557 */ 1558let activePinia; 1559/** 1560 * Sets or unsets the active pinia. Used in SSR and internally when calling 1561 * actions and getters 1562 * 1563 * @param pinia - Pinia instance 1564 */ 1565// @ts-expect-error: cannot constrain the type of the return 1566const setActivePinia = (pinia) => (activePinia = pinia); 1567/** 1568 * Get the currently active pinia if there is any. 1569 */ 1570const getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia; 1571const piniaSymbol = (( false) ? 0 : /* istanbul ignore next */ Symbol()); 1572 1573function isPlainObject( 1574// eslint-disable-next-line @typescript-eslint/no-explicit-any 1575o) { 1576 return (o && 1577 typeof o === 'object' && 1578 Object.prototype.toString.call(o) === '[object Object]' && 1579 typeof o.toJSON !== 'function'); 1580} 1581// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> } 1582// TODO: can we change these to numbers? 1583/** 1584 * Possible types for SubscriptionCallback 1585 */ 1586var MutationType; 1587(function (MutationType) { 1588 /** 1589 * Direct mutation of the state: 1590 * 1591 * - `store.name = 'new name'` 1592 * - `store.$state.name = 'new name'` 1593 * - `store.list.push('new item')` 1594 */ 1595 MutationType["direct"] = "direct"; 1596 /** 1597 * Mutated the state with `$patch` and an object 1598 * 1599 * - `store.$patch({ name: 'newName' })` 1600 */ 1601 MutationType["patchObject"] = "patch object"; 1602 /** 1603 * Mutated the state with `$patch` and a function 1604 * 1605 * - `store.$patch(state => state.name = 'newName')` 1606 */ 1607 MutationType["patchFunction"] = "patch function"; 1608 // maybe reset? for $state = {} and $reset 1609})(MutationType || (MutationType = {})); 1610 1611const IS_CLIENT = typeof window !== 'undefined'; 1612 1613/* 1614 * FileSaver.js A saveAs() FileSaver implementation. 1615 * 1616 * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin 1617 * Morote. 1618 * 1619 * License : MIT 1620 */ 1621// The one and only way of getting global scope in all environments 1622// https://stackoverflow.com/q/3277182/1008999 1623const _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window 1624 ? window 1625 : typeof self === 'object' && self.self === self 1626 ? self 1627 : typeof global === 'object' && global.global === global 1628 ? global 1629 : typeof globalThis === 'object' 1630 ? globalThis 1631 : { HTMLElement: null })(); 1632function bom(blob, { autoBom = false } = {}) { 1633 // prepend BOM for UTF-8 XML and text/* types (including HTML) 1634 // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF 1635 if (autoBom && 1636 /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { 1637 return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type }); 1638 } 1639 return blob; 1640} 1641function download(url, name, opts) { 1642 const xhr = new XMLHttpRequest(); 1643 xhr.open('GET', url); 1644 xhr.responseType = 'blob'; 1645 xhr.onload = function () { 1646 saveAs(xhr.response, name, opts); 1647 }; 1648 xhr.onerror = function () { 1649 console.error('could not download file'); 1650 }; 1651 xhr.send(); 1652} 1653function corsEnabled(url) { 1654 const xhr = new XMLHttpRequest(); 1655 // use sync to avoid popup blocker 1656 xhr.open('HEAD', url, false); 1657 try { 1658 xhr.send(); 1659 } 1660 catch (e) { } 1661 return xhr.status >= 200 && xhr.status <= 299; 1662} 1663// `a.click()` doesn't work for all browsers (#465) 1664function click(node) { 1665 try { 1666 node.dispatchEvent(new MouseEvent('click')); 1667 } 1668 catch (e) { 1669 const evt = document.createEvent('MouseEvents'); 1670 evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null); 1671 node.dispatchEvent(evt); 1672 } 1673} 1674const _navigator = typeof navigator === 'object' ? navigator : { userAgent: '' }; 1675// Detect WebView inside a native macOS app by ruling out all browsers 1676// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too 1677// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos 1678const isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&
1679 /AppleWebKit/.test(_navigator.userAgent) && 1680 !/Safari/.test(_navigator.userAgent))(); 1681const saveAs = !IS_CLIENT 1682 ? () => { } // noop 1683 : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program 1684 typeof HTMLAnchorElement !== 'undefined' && 1685 'download' in HTMLAnchorElement.prototype && 1686 !isMacOSWebView 1687 ? downloadSaveAs 1688 : // Use msSaveOrOpenBlob as a second approach 1689 'msSaveOrOpenBlob' in _navigator 1690 ? msSaveAs 1691 : // Fallback to using FileReader and a popup 1692 fileSaverSaveAs; 1693function downloadSaveAs(blob, name = 'download', opts) { 1694 const a = document.createElement('a'); 1695 a.download = name; 1696 a.rel = 'noopener'; // tabnabbing 1697 // TODO: detect chrome extensions & packaged apps 1698 // a.target = '_blank' 1699 if (typeof blob === 'string') { 1700 // Support regular links 1701 a.href = blob; 1702 if (a.origin !== location.origin) { 1703 if (corsEnabled(a.href)) { 1704 download(blob, name, opts); 1705 } 1706 else { 1707 a.target = '_blank'; 1708 click(a); 1709 } 1710 } 1711 else { 1712 click(a); 1713 } 1714 } 1715 else { 1716 // Support blobs 1717 a.href = URL.createObjectURL(blob); 1718 setTimeout(function () { 1719 URL.revokeObjectURL(a.href); 1720 }, 4e4); // 40s 1721 setTimeout(function () { 1722 click(a); 1723 }, 0); 1724 } 1725} 1726function msSaveAs(blob, name = 'download', opts) { 1727 if (typeof blob === 'string') { 1728 if (corsEnabled(blob)) { 1729 download(blob, name, opts); 1730 } 1731 else { 1732 const a = document.createElement('a'); 1733 a.href = blob; 1734 a.target = '_blank'; 1735 setTimeout(function () { 1736 click(a); 1737 }); 1738 } 1739 } 1740 else { 1741 // @ts-ignore: works on windows 1742 navigator.msSaveOrOpenBlob(bom(blob, opts), name); 1743 } 1744} 1745function fileSaverSaveAs(blob, name, opts, popup) { 1746 // Open a popup immediately do go around popup blocker 1747 // Mostly only available on user interaction and the fileReader is async so... 1748 popup = popup || open('', '_blank'); 1749 if (popup) { 1750 popup.document.title = popup.document.body.innerText = 'downloading...'; 1751 } 1752 if (typeof blob === 'string') 1753 return download(blob, name, opts); 1754 const force = blob.type === 'application/octet-stream'; 1755 const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global; 1756 const isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent); 1757 if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && 1758 typeof FileReader !== 'undefined') { 1759 // Safari doesn't allow downloading of blob URLs 1760 const reader = new FileReader(); 1761 reader.onloadend = function () { 1762 let url = reader.result; 1763 if (typeof url !== 'string') { 1764 popup = null; 1765 throw new Error('Wrong reader.result type'); 1766 } 1767 url = isChromeIOS 1768 ? url 1769 : url.replace(/^data:[^;]*;/, 'data:attachment/file;'); 1770 if (popup) { 1771 popup.location.href = url; 1772 } 1773 else { 1774 location.assign(url); 1775 } 1776 popup = null; // reverse-tabnabbing #460 1777 }; 1778 reader.readAsDataURL(blob); 1779 } 1780 else { 1781 const url = URL.createObjectURL(blob); 1782 if (popup) 1783 popup.location.assign(url); 1784 else 1785 location.href = url; 1786 popup = null; // reverse-tabnabbing #460 1787 setTimeout(function () { 1788 URL.revokeObjectURL(url); 1789 }, 4e4); // 40s 1790 } 1791} 1792 1793/** 1794 * Shows a toast or console.log 1795 * 1796 * @param message - message to log 1797 * @param type - different color of the tooltip 1798 */ 1799function toastMessage(message, type) { 1800 const piniaMessage = 'ð ' + message; 1801 if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') { 1802 // No longer available :( 1803 __VUE_DEVTOOLS_TOAST__(piniaMessage, type); 1804 } 1805 else if (type === 'error') { 1806 console.error(piniaMessage); 1807 } 1808 else if (type === 'warn') { 1809 console.warn(piniaMessage); 1810 } 1811 else { 1812 console.log(piniaMessage); 1813 } 1814} 1815function isPinia(o) { 1816 return '_a' in o && 'install' in o; 1817} 1818 1819/** 1820 * This file contain devtools actions, they are not Pinia actions. 1821 */ 1822// --- 1823function checkClipboardAccess() { 1824 if (!('clipboard' in navigator)) { 1825 toastMessage(`Your browser doesn't support the Clipboard API`, 'error'); 1826 return true; 1827 } 1828} 1829function checkNotFocusedError(error) { 1830 if (error instanceof Error && 1831 error.message.toLowerCase().includes('document is not focused')) { 1832 toastMessage('You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.', 'warn'); 1833 return true; 1834 } 1835 return false;
1836} 1837async function actionGlobalCopyState(pinia) { 1838 if (checkClipboardAccess()) 1839 return; 1840 try { 1841 await navigator.clipboard.writeText(JSON.stringify(pinia.state.value)); 1842 toastMessage('Global state copied to clipboard.'); 1843 } 1844 catch (error) { 1845 if (checkNotFocusedError(error)) 1846 return; 1847 toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error'); 1848 console.error(error); 1849 } 1850} 1851async function actionGlobalPasteState(pinia) { 1852 if (checkClipboardAccess()) 1853 return; 1854 try { 1855 loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText())); 1856 toastMessage('Global state pasted from clipboard.'); 1857 } 1858 catch (error) { 1859 if (checkNotFocusedError(error)) 1860 return; 1861 toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error'); 1862 console.error(error); 1863 } 1864} 1865async function actionGlobalSaveState(pinia) { 1866 try { 1867 saveAs(new Blob([JSON.stringify(pinia.state.value)], { 1868 type: 'text/plain;charset=utf-8', 1869 }), 'pinia-state.json'); 1870 } 1871 catch (error) { 1872 toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error'); 1873 console.error(error); 1874 } 1875} 1876let fileInput; 1877function getFileOpener() { 1878 if (!fileInput) { 1879 fileInput = document.createElement('input'); 1880 fileInput.type = 'file'; 1881 fileInput.accept = '.json'; 1882 } 1883 function openFile() { 1884 return new Promise((resolve, reject) => { 1885 fileInput.onchange = async () => { 1886 const files = fileInput.files; 1887 if (!files) 1888 return resolve(null); 1889 const file = files.item(0); 1890 if (!file) 1891 return resolve(null); 1892 return resolve({ text: await file.text(), file }); 1893 }; 1894 // @ts-ignore: TODO: changed from 4.3 to 4.4 1895 fileInput.oncancel = () => resolve(null); 1896 fileInput.onerror = reject; 1897 fileInput.click(); 1898 }); 1899 } 1900 return openFile; 1901} 1902async function actionGlobalOpenStateFile(pinia) { 1903 try { 1904 const open = getFileOpener(); 1905 const result = await open(); 1906 if (!result) 1907 return; 1908 const { text, file } = result; 1909 loadStoresState(pinia, JSON.parse(text)); 1910 toastMessage(`Global state imported from "${file.name}".`); 1911 } 1912 catch (error) { 1913 toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error'); 1914 console.error(error); 1915 } 1916} 1917function loadStoresState(pinia, state) { 1918 for (const key in state) { 1919 const storeState = pinia.state.value[key]; 1920 // store is already instantiated, patch it 1921 if (storeState) { 1922 Object.assign(storeState, state[key]); 1923 } 1924 else { 1925 // store is not instantiated, set the initial state 1926 pinia.state.value[key] = state[key]; 1927 } 1928 } 1929} 1930 1931function formatDisplay(display) { 1932 return { 1933 _custom: { 1934 display, 1935 }, 1936 }; 1937} 1938const PINIA_ROOT_LABEL = 'ð Pinia (root)'; 1939const PINIA_ROOT_ID = '_root'; 1940function formatStoreForInspectorTree(store) { 1941 return isPinia(store) 1942 ? { 1943 id: PINIA_ROOT_ID, 1944 label: PINIA_ROOT_LABEL, 1945 } 1946 : { 1947 id: store.$id, 1948 label: store.$id, 1949 }; 1950} 1951function formatStoreForInspectorState(store) { 1952 if (isPinia(store)) { 1953 const storeNames = Array.from(store._s.keys()); 1954 const storeMap = store._s; 1955 const state = { 1956 state: storeNames.map((storeId) => ({ 1957 editable: true, 1958 key: storeId, 1959 value: store.state.value[storeId], 1960 })), 1961 getters: storeNames 1962 .filter((id) => storeMap.get(id)._getters) 1963 .map((id) => { 1964 const store = storeMap.get(id); 1965 return { 1966 editable: false, 1967 key: id, 1968 value: store._getters.reduce((getters, key) => { 1969 getters[key] = store[key]; 1970 return getters; 1971 }, {}), 1972 }; 1973 }), 1974 }; 1975 return state; 1976 } 1977 const state = { 1978 state: Object.keys(store.$state).map((key) => ({ 1979 editable: true, 1980 key, 1981 value: store.$state[key], 1982 })), 1983 }; 1984 // avoid adding empty getters 1985 if (store._getters && store._getters.length) { 1986 state.getters = store._getters.map((getterName) => ({ 1987 editable: false, 1988 key: getterName, 1989 value: store[getterName], 1990 })); 1991 } 1992 if (store._customProperties.size) { 1993 state.customProperties = Array.from(store._customProperties).map((key) => ({ 1994 editable: true, 1995 key, 1996 value: store[key], 1997 })); 1998 } 1999 return state; 2000} 2001function formatEventData(events) { 2002 if (!events) 2003 return {}; 2004 if (Array.isArray(events)) { 2005 // TODO: handle add and delete for arrays and objects 2006 return events.reduce((data, event) => { 2007 data.keys.push(event.key); 2008 data.operations.push(event.type); 2009 data.oldValue[event.key] = event.oldValue; 2010 data.newValue[event.key] = event.newValue; 2011 return data; 2012 }, { 2013 oldValue: {}, 2014 keys: [], 2015 operations: [], 2016 newValue: {}, 2017 }); 2018 } 2019 else { 2020 return { 2021 operation: formatDisplay(events.type), 2022 key: formatDisplay(events.key), 2023 oldValue: events.oldValue, 2024 newValue: events.newValue, 2025 }; 2026 } 2027} 2028function formatMutationType(type) { 2029 switch (type) { 2030 case MutationType.direct: 2031 return 'mutation'; 2032 case MutationType.patchFunction: 2033 return '$patch'; 2034 case MutationType.patchObject: 2035 return '$patch'; 2036 default: 2037 return 'unknown'; 2038 } 2039} 2040 2041// timeline can be paused when directly changing the state 2042let isTimelineActive = true; 2043const componentStateTypes = []; 2044const MUTATIONS_LAYER_ID = 'pinia:mutations'; 2045const INSPECTOR_ID = 'pinia'; 2046const { assign: assign$1 } = Object; 2047/** 2048 * Gets the displayed name of a store in devtools 2049 * 2050 * @param id - id of the store 2051 * @returns a formatted string 2052 */ 2053const getStoreType = (id) => 'ð ' + id; 2054/** 2055 * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab 2056 * as soon as it is added to the application. 2057 * 2058 * @param app - Vue application 2059 * @param pinia - pinia instance 2060 */ 2061function registerPiniaDevtools(app, pinia) { 2062 (0,esm/* setupDevtoolsPlugin */.$q)({ 2063 id: 'dev.esm.pinia', 2064 label: 'Pinia ð', 2065 logo: 'https://pinia.vuejs.org/logo.svg', 2066 packageName: 'pinia', 2067 homepage: 'https://pinia.vuejs.org', 2068 componentStateTypes, 2069 app, 2070 }, (api) => { 2071 if (typeof api.now !== 'function') { 2072 toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.'); 2073 } 2074 api.addTimelineLayer({ 2075 id: MUTATIONS_LAYER_ID, 2076 label: `Pinia ð`, 2077 color: 0xe5df88, 2078 }); 2079 api.addInspector({ 2080 id: INSPECTOR_ID, 2081 label: 'Pinia ð', 2082 icon: 'storage', 2083 treeFilterPlaceholder: 'Search stores', 2084 actions: [ 2085 { 2086 icon: 'content_copy', 2087 action: () => { 2088 actionGlobalCopyState(pinia); 2089 }, 2090 tooltip: 'Serialize and copy the state', 2091 }, 2092 { 2093 icon: 'content_paste', 2094 action: async () => { 2095 await actionGlobalPasteState(pinia); 2096 api.sendInspectorTree(INSPECTOR_ID); 2097 api.sendInspectorState(INSPECTOR_ID); 2098 }, 2099 tooltip: 'Replace the state with the content of your clipboard', 2100 }, 2101 { 2102 icon: 'save', 2103 action: () => { 2104 actionGlobalSaveState(pinia); 2105 }, 2106 tooltip: 'Save the state as a JSON file', 2107 }, 2108 { 2109 icon: 'folder_open', 2110 action: async () => { 2111 await actionGlobalOpenStateFile(pinia); 2112 api.sendInspectorTree(INSPECTOR_ID); 2113 api.sendInspectorState(INSPECTOR_ID); 2114 }, 2115 tooltip: 'Import the state from a JSON file', 2116 }, 2117 ], 2118 nodeActions: [ 2119 { 2120 icon: 'restore', 2121 tooltip: 'Reset the state (with "$reset")', 2122 action: (nodeId) => { 2123 const store = pinia._s.get(nodeId); 2124 if (!store) { 2125 toastMessage(`Cannot reset "${nodeId}" store because it wasn't found.`, 'warn'); 2126 } 2127 else if (typeof store.$reset !== 'function') { 2128 toastMessage(`Cannot reset "${nodeId}" store because it doesn't have a "$reset" method implemented.`, 'warn'); 2129 } 2130 else { 2131 store.$reset(); 2132 toastMessage(`Store "${nodeId}" reset.`); 2133 } 2134 }, 2135 }, 2136 ], 2137 }); 2138 api.on.inspectComponent((payload, ctx) => { 2139 const proxy = (payload.componentInstance && 2140 payload.componentInstance.proxy); 2141 if (proxy && proxy._pStores) { 2142 const piniaStores = payload.componentInstance.proxy._pStores;
2143 Object.values(piniaStores).forEach((store) => { 2144 payload.instanceData.state.push({ 2145 type: getStoreType(store.$id), 2146 key: 'state', 2147 editable: true, 2148 value: store._isOptionsAPI 2149 ? { 2150 _custom: { 2151 value: (0,vue_runtime_esm_browser_prod/* toRaw */.ux)(store.$state), 2152 actions: [ 2153 { 2154 icon: 'restore', 2155 tooltip: 'Reset the state of this store', 2156 action: () => store.$reset(), 2157 }, 2158 ], 2159 }, 2160 } 2161 : // NOTE: workaround to unwrap transferred refs 2162 Object.keys(store.$state).reduce((state, key) => { 2163 state[key] = store.$state[key]; 2164 return state; 2165 }, {}), 2166 }); 2167 if (store._getters && store._getters.length) { 2168 payload.instanceData.state.push({ 2169 type: getStoreType(store.$id), 2170 key: 'getters', 2171 editable: false, 2172 value: store._getters.reduce((getters, key) => { 2173 try { 2174 getters[key] = store[key]; 2175 } 2176 catch (error) { 2177 // @ts-expect-error: we just want to show it in devtools 2178 getters[key] = error; 2179 } 2180 return getters; 2181 }, {}), 2182 }); 2183 } 2184 }); 2185 } 2186 }); 2187 api.on.getInspectorTree((payload) => { 2188 if (payload.app === app && payload.inspectorId === INSPECTOR_ID) { 2189 let stores = [pinia]; 2190 stores = stores.concat(Array.from(pinia._s.values())); 2191 payload.rootNodes = (payload.filter 2192 ? stores.filter((store) => '$id' in store 2193 ? store.$id 2194 .toLowerCase() 2195 .includes(payload.filter.toLowerCase()) 2196 : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase())) 2197 : stores).map(formatStoreForInspectorTree); 2198 } 2199 }); 2200 // Expose pinia instance as $pinia to window 2201 globalThis.$pinia = pinia; 2202 api.on.getInspectorState((payload) => { 2203 if (payload.app === app && payload.inspectorId === INSPECTOR_ID) { 2204 const inspectedStore = payload.nodeId === PINIA_ROOT_ID 2205 ? pinia 2206 : pinia._s.get(payload.nodeId); 2207 if (!inspectedStore) { 2208 // this could be the selected store restored for a different project 2209 // so it's better not to say anything here 2210 return; 2211 } 2212 if (inspectedStore) { 2213 // Expose selected store as $store to window 2214 if (payload.nodeId !== PINIA_ROOT_ID) 2215 globalThis.$store = (0,vue_runtime_esm_browser_prod/* toRaw */.ux)(inspectedStore); 2216 payload.state = formatStoreForInspectorState(inspectedStore); 2217 } 2218 } 2219 }); 2220 api.on.editInspectorState((payload, ctx) => { 2221 if (payload.app === app && payload.inspectorId === INSPECTOR_ID) { 2222 const inspectedStore = payload.nodeId === PINIA_ROOT_ID 2223 ? pinia 2224 : pinia._s.get(payload.nodeId); 2225 if (!inspectedStore) { 2226 return toastMessage(`store "${payload.nodeId}" not found`, 'error'); 2227 } 2228 const { path } = payload; 2229 if (!isPinia(inspectedStore)) { 2230 // access only the state 2231 if (path.length !== 1 || 2232 !inspectedStore._customProperties.has(path[0]) || 2233 path[0] in inspectedStore.$state) { 2234 path.unshift('$state'); 2235 } 2236 } 2237 else { 2238 // Root access, we can omit the `.value` because the devtools API does it for us 2239 path.unshift('state'); 2240 } 2241 isTimelineActive = false;
2242 payload.set(inspectedStore, path, payload.state.value); 2243 isTimelineActive = true; 2244 } 2245 }); 2246 api.on.editComponentState((payload) => { 2247 if (payload.type.startsWith('ð')) { 2248 const storeId = payload.type.replace(/^ð\s*/, ''); 2249 const store = pinia._s.get(storeId); 2250 if (!store) { 2251 return toastMessage(`store "${storeId}" not found`, 'error'); 2252 } 2253 const { path } = payload; 2254 if (path[0] !== 'state') { 2255 return toastMessage(`Invalid path for store "${storeId}":\n${path}\nOnly state can be modified.`); 2256 } 2257 // rewrite the first entry to be able to directly set the state as 2258 // well as any other path 2259 path[0] = '$state'; 2260 isTimelineActive = false; 2261 payload.set(store, path, payload.state.value); 2262 isTimelineActive = true; 2263 } 2264 }); 2265 }); 2266} 2267function addStoreToDevtools(app, store) { 2268 if (!componentStateTypes.includes(getStoreType(store.$id))) { 2269 componentStateTypes.push(getStoreType(store.$id)); 2270 } 2271 (0,esm/* setupDevtoolsPlugin */.$q)({ 2272 id: 'dev.esm.pinia', 2273 label: 'Pinia ð', 2274 logo: 'https://pinia.vuejs.org/logo.svg', 2275 packageName: 'pinia', 2276 homepage: 'https://pinia.vuejs.org', 2277 componentStateTypes, 2278 app, 2279 settings: { 2280 logStoreChanges: { 2281 label: 'Notify about new/deleted stores', 2282 type: 'boolean', 2283 defaultValue: true, 2284 }, 2285 // useEmojis: { 2286 // label: 'Use emojis in messages â¡ï¸', 2287 // type: 'boolean', 2288 // defaultValue: true, 2289 // }, 2290 }, 2291 }, (api) => { 2292 // gracefully handle errors 2293 const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now; 2294 store.$onAction(({ after, onError, name, args }) => { 2295 const groupId = runningActionId++; 2296 api.addTimelineEvent({ 2297 layerId: MUTATIONS_LAYER_ID, 2298 event: { 2299 time: now(), 2300 title: 'ð« ' + name, 2301 subtitle: 'start', 2302 data: { 2303 store: formatDisplay(store.$id), 2304 action: formatDisplay(name), 2305 args, 2306 }, 2307 groupId, 2308 }, 2309 }); 2310 after((result) => { 2311 activeAction = undefined; 2312 api.addTimelineEvent({ 2313 layerId: MUTATIONS_LAYER_ID, 2314 event: { 2315 time: now(), 2316 title: 'ð¬ ' + name, 2317 subtitle: 'end', 2318 data: { 2319 store: formatDisplay(store.$id), 2320 action: formatDisplay(name), 2321 args, 2322 result, 2323 }, 2324 groupId, 2325 }, 2326 }); 2327 }); 2328 onError((error) => { 2329 activeAction = undefined; 2330 api.addTimelineEvent({ 2331 layerId: MUTATIONS_LAYER_ID, 2332 event: { 2333 time: now(), 2334 logType: 'error', 2335 title: 'ð¥ ' + name, 2336 subtitle: 'end', 2337 data: { 2338 store: formatDisplay(store.$id), 2339 action: formatDisplay(name), 2340 args, 2341 error, 2342 }, 2343 groupId, 2344 }, 2345 }); 2346 }); 2347 }, true); 2348 store._customProperties.forEach((name) => { 2349 (0,vue_runtime_esm_browser_prod/* watch */.wB)(() => (0,vue_runtime_esm_browser_prod/* unref */.R1)(store[name]), (newValue, oldValue) => { 2350 api.notifyComponentUpdate(); 2351 api.sendInspectorState(INSPECTOR_ID); 2352 if (isTimelineActive) { 2353 api.addTimelineEvent({ 2354 layerId: MUTATIONS_LAYER_ID, 2355 event: { 2356 time: now(), 2357 title: 'Change', 2358 subtitle: name, 2359 data: { 2360 newValue, 2361 oldValue, 2362 }, 2363 groupId: activeAction, 2364 }, 2365 }); 2366 } 2367 }, { deep: true }); 2368 }); 2369 store.$subscribe(({ events, type }, state) => { 2370 api.notifyComponentUpdate(); 2371 api.sendInspectorState(INSPECTOR_ID); 2372 if (!isTimelineActive) 2373 return; 2374 // rootStore.state[store.id] = state 2375 const eventData = { 2376 time: now(), 2377 title: formatMutationType(type), 2378 data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)), 2379 groupId: activeAction, 2380 }; 2381 if (type === MutationType.patchFunction) { 2382 eventData.subtitle = '⤵ï¸'; 2383 } 2384 else if (type === MutationType.patchObject) { 2385 eventData.subtitle = 'ð§©'; 2386 } 2387 else if (events && !Array.isArray(events)) { 2388 eventData.subtitle = events.type; 2389 } 2390 if (events) { 2391 eventData.data['rawEvent(s)'] = { 2392 _custom: { 2393 display: 'DebuggerEvent', 2394 type: 'object', 2395 tooltip: 'raw DebuggerEvent[]', 2396 value: events, 2397 }, 2398 }; 2399 } 2400 api.addTimelineEvent({ 2401 layerId: MUTATIONS_LAYER_ID, 2402 event: eventData, 2403 }); 2404 }, { detached: true, flush: 'sync' }); 2405 const hotUpdate = store._hotUpdate; 2406 store._hotUpdate = (0,vue_runtime_esm_browser_prod/* markRaw */.IG)((newStore) => { 2407 hotUpdate(newStore); 2408 api.addTimelineEvent({ 2409 layerId: MUTATIONS_LAYER_ID, 2410 event: { 2411 time: now(), 2412 title: 'ð¥ ' + store.$id, 2413 subtitle: 'HMR update', 2414 data: { 2415 store: formatDisplay(store.$id), 2416 info: formatDisplay(`HMR update`), 2417 }, 2418 }, 2419 }); 2420 // update the devtools too 2421 api.notifyComponentUpdate(); 2422 api.sendInspectorTree(INSPECTOR_ID); 2423 api.sendInspectorState(INSPECTOR_ID); 2424 }); 2425 const { $dispose } = store; 2426 store.$dispose = () => {
2427 $dispose(); 2428 api.notifyComponentUpdate(); 2429 api.sendInspectorTree(INSPECTOR_ID); 2430 api.sendInspectorState(INSPECTOR_ID); 2431 api.getSettings().logStoreChanges && 2432 toastMessage(`Disposed "${store.$id}" store ð`); 2433 }; 2434 // trigger an update so it can display new registered stores 2435 api.notifyComponentUpdate(); 2436 api.sendInspectorTree(INSPECTOR_ID); 2437 api.sendInspectorState(INSPECTOR_ID); 2438 api.getSettings().logStoreChanges && 2439 toastMessage(`"${store.$id}" store installed ð`); 2440 }); 2441} 2442let runningActionId = 0; 2443let activeAction; 2444/** 2445 * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the 2446 * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state 2447 * mutation to the action. 2448 * 2449 * @param store - store to patch 2450 * @param actionNames - list of actionst to patch 2451 */ 2452function patchActionForGrouping(store, actionNames, wrapWithProxy) { 2453 // original actions of the store as they are given by pinia. We are going to override them 2454 const actions = actionNames.reduce((storeActions, actionName) => { 2455 // use toRaw to avoid tracking #541 2456 storeActions[actionName] = (0,vue_runtime_esm_browser_prod/* toRaw */.ux)(store)[actionName]; 2457 return storeActions; 2458 }, {}); 2459 for (const actionName in actions) { 2460 store[actionName] = function () { 2461 // the running action id is incremented in a before action hook 2462 const _actionId = runningActionId; 2463 const trackedStore = wrapWithProxy 2464 ? new Proxy(store, { 2465 get(...args) { 2466 activeAction = _actionId; 2467 return Reflect.get(...args); 2468 }, 2469 set(...args) { 2470 activeAction = _actionId; 2471 return Reflect.set(...args); 2472 }, 2473 }) 2474 : store; 2475 // For Setup Stores we need https://github.com/tc39/proposal-async-context 2476 activeAction = _actionId; 2477 const retValue = actions[actionName].apply(trackedStore, arguments); 2478 // this is safer as async actions in Setup Stores would associate mutations done outside of the action 2479 activeAction = undefined; 2480 return retValue; 2481 }; 2482 } 2483} 2484/** 2485 * pinia.use(devtoolsPlugin) 2486 */ 2487function devtoolsPlugin({ app, store, options }) { 2488 // HMR module 2489 if (store.$id.startsWith('__hot:')) { 2490 return; 2491 }
2492 // detect option api vs setup api 2493 store._isOptionsAPI = !!options.state; 2494 // Do not overwrite actions mocked by @pinia/testing (#2298) 2495 if (!store._p._testing) { 2496 patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI); 2497 // Upgrade the HMR to also update the new actions 2498 const originalHotUpdate = store._hotUpdate; 2499 (0,vue_runtime_esm_browser_prod/* toRaw */.ux)(store)._hotUpdate = function (newStore) { 2500 originalHotUpdate.apply(this, arguments); 2501 patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI); 2502 }; 2503 } 2504 addStoreToDevtools(app, 2505 // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric? 2506 store); 2507} 2508 2509/** 2510 * Creates a Pinia instance to be used by the application 2511 */ 2512function createPinia() { 2513 const scope = (0,vue_runtime_esm_browser_prod/* effectScope */.uY)(true); 2514 // NOTE: here we could check the window object for a state and directly set it 2515 // if there is anything like it with Vue 3 SSR 2516 const state = scope.run(() => (0,vue_runtime_esm_browser_prod/* ref */.KR)({})); 2517 let _p = []; 2518 // plugins added before calling app.use(pinia) 2519 let toBeInstalled = []; 2520 const pinia = (0,vue_runtime_esm_browser_prod/* markRaw */.IG)({ 2521 install(app) { 2522 // this allows calling useStore() outside of a component setup after 2523 // installing pinia's plugin
2524 setActivePinia(pinia); 2525 if (!lib_isVue2) { 2526 pinia._a = app; 2527 app.provide(piniaSymbol, pinia); 2528 app.config.globalProperties.$pinia = pinia; 2529 /* istanbul ignore else */ 2530 if (((( false) || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !("production" === 'test')) && IS_CLIENT) { 2531 registerPiniaDevtools(app, pinia); 2532 } 2533 toBeInstalled.forEach((plugin) => _p.push(plugin)); 2534 toBeInstalled = []; 2535 } 2536 }, 2537 use(plugin) { 2538 if (!this._a && !lib_isVue2) { 2539 toBeInstalled.push(plugin); 2540 } 2541 else { 2542 _p.push(plugin); 2543 } 2544 return this; 2545 }, 2546 _p, 2547 // it's actually undefined here 2548 // @ts-expect-error 2549 _a: null, 2550 _e: scope, 2551 _s: new Map(), 2552 state, 2553 }); 2554 // pinia devtools rely on dev only features so they cannot be forced unless 2555 // the dev build of Vue is used. Avoid old browsers like IE11. 2556 if (((( false) || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !("production" === 'test')) && IS_CLIENT && typeof Proxy !== 'undefined') { 2557 pinia.use(devtoolsPlugin); 2558 } 2559 return pinia; 2560} 2561/** 2562 * Dispose a Pinia instance by stopping its effectScope and removing the state, plugins and stores. This is mostly 2563 * useful in tests, with both a testing pinia or a regular pinia and in applications that use multiple pinia instances. 2564 * Once disposed, the pinia instance cannot be used anymore. 2565 * 2566 * @param pinia - pinia instance 2567 */ 2568function disposePinia(pinia) { 2569 pinia._e.stop(); 2570 pinia._s.clear(); 2571 pinia._p.splice(0); 2572 pinia.state.value = {}; 2573 // @ts-expect-error: non valid 2574 pinia._a = null; 2575} 2576 2577/** 2578 * Checks if a function is a `StoreDefinition`. 2579 * 2580 * @param fn - object to test 2581 * @returns true if `fn` is a StoreDefinition 2582 */ 2583const isUseStore = (fn) => { 2584 return typeof fn === 'function' && typeof fn.$id === 'string'; 2585}; 2586/** 2587 * Mutates in place `newState` with `oldState` to _hot update_ it. It will 2588 * remove any key not existing in `newState` and recursively merge plain 2589 * objects. 2590 * 2591 * @param newState - new state object to be patched 2592 * @param oldState - old state that should be used to patch newState 2593 * @returns - newState 2594 */ 2595function patchObject(newState, oldState) { 2596 // no need to go through symbols because they cannot be serialized anyway 2597 for (const key in oldState) { 2598 const subPatch = oldState[key]; 2599 // skip the whole sub tree 2600 if (!(key in newState)) { 2601 continue; 2602 } 2603 const targetValue = newState[key]; 2604 if (isPlainObject(targetValue) && 2605 isPlainObject(subPatch) && 2606 !isRef(subPatch) && 2607 !isReactive(subPatch)) { 2608 newState[key] = patchObject(targetValue, subPatch); 2609 } 2610 else { 2611 // objects are either a bit more complex (e.g. refs) or primitives, so we 2612 // just set the whole thing 2613 if (isVue2) { 2614 set(newState, key, subPatch); 2615 } 2616 else { 2617 newState[key] = subPatch; 2618 } 2619 } 2620 } 2621 return newState; 2622} 2623/** 2624 * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications. 2625 * 2626 * @example 2627 * ```js 2628 * const useUser = defineStore(...) 2629 * if (import.meta.hot) { 2630 * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot)) 2631 * } 2632 * ``` 2633 * 2634 * @param initialUseStore - return of the defineStore to hot update 2635 * @param hot - `import.meta.hot` 2636 */ 2637function acceptHMRUpdate(initialUseStore, hot) { 2638 // strip as much as possible from iife.prod 2639 if (true) { 2640 return () => { }; 2641 } 2642 return (newModule) => { 2643 const pinia = hot.data.pinia || initialUseStore._pinia; 2644 if (!pinia) { 2645 // this store is still not used 2646 return; 2647 } 2648 // preserve the pinia instance across loads 2649 hot.data.pinia = pinia; 2650 // console.log('got data', newStore) 2651 for (const exportName in newModule) { 2652 const useStore = newModule[exportName]; 2653 // console.log('checking for', exportName) 2654 if (isUseStore(useStore) && pinia._s.has(useStore.$id)) { 2655 // console.log('Accepting update for', useStore.$id) 2656 const id = useStore.$id; 2657 if (id !== initialUseStore.$id) { 2658 console.warn(`The id of the store changed from "${initialUseStore.$id}" to "${id}". Reloading.`);
2659 // return import.meta.hot.invalidate() 2660 return hot.invalidate(); 2661 } 2662 const existingStore = pinia._s.get(id); 2663 if (!existingStore) { 2664 console.log(`[Pinia]: skipping hmr because store doesn't exist yet`); 2665 return; 2666 } 2667 useStore(pinia, existingStore); 2668 } 2669 } 2670 }; 2671} 2672 2673const noop = () => { }; 2674function addSubscription(subscriptions, callback, detached, onCleanup = noop) { 2675 subscriptions.push(callback); 2676 const removeSubscription = () => { 2677 const idx = subscriptions.indexOf(callback); 2678 if (idx > -1) { 2679 subscriptions.splice(idx, 1); 2680 onCleanup(); 2681 } 2682 }; 2683 if (!detached && (0,vue_runtime_esm_browser_prod/* getCurrentScope */.o5)()) { 2684 (0,vue_runtime_esm_browser_prod/* onScopeDispose */.jr)(removeSubscription); 2685 } 2686 return removeSubscription; 2687} 2688function triggerSubscriptions(subscriptions, ...args) { 2689 subscriptions.slice().forEach((callback) => { 2690 callback(...args); 2691 }); 2692} 2693 2694const fallbackRunWithContext = (fn) => fn(); 2695/** 2696 * Marks a function as an action for `$onAction` 2697 * @internal 2698 */ 2699const ACTION_MARKER = Symbol(); 2700/** 2701 * Action name symbol. Allows to add a name to an action after defining it 2702 * @internal 2703 */ 2704const ACTION_NAME = Symbol(); 2705function mergeReactiveObjects(target, patchToApply) { 2706 // Handle Map instances 2707 if (target instanceof Map && patchToApply instanceof Map) { 2708 patchToApply.forEach((value, key) => target.set(key, value)); 2709 } 2710 else if (target instanceof Set && patchToApply instanceof Set) { 2711 // Handle Set instances 2712 patchToApply.forEach(target.add, target); 2713 } 2714 // no need to go through symbols because they cannot be serialized anyway 2715 for (const key in patchToApply) { 2716 if (!patchToApply.hasOwnProperty(key)) 2717 continue; 2718 const subPatch = patchToApply[key]; 2719 const targetValue = target[key]; 2720 if (isPlainObject(targetValue) && 2721 isPlainObject(subPatch) && 2722 target.hasOwnProperty(key) && 2723 !(0,vue_runtime_esm_browser_prod/* isRef */.i9)(subPatch) && 2724 !(0,vue_runtime_esm_browser_prod/* isReactive */.g8)(subPatch)) { 2725 // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might 2726 // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that 2727 // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`. 2728 target[key] = mergeReactiveObjects(targetValue, subPatch); 2729 } 2730 else { 2731 // @ts-expect-error: subPatch is a valid value 2732 target[key] = subPatch; 2733 } 2734 } 2735 return target; 2736} 2737const skipHydrateSymbol = ( false) 2738 ? 0 2739 : /* istanbul ignore next */ Symbol(); 2740/** 2741 * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a 2742 * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store. 2743 * 2744 * @param obj - target object 2745 * @returns obj 2746 */ 2747function skipHydrate(obj) { 2748 return Object.defineProperty(obj, skipHydrateSymbol, {}); 2749} 2750/** 2751 * Returns whether a value should be hydrated 2752 * 2753 * @param obj - target variable 2754 * @returns true if `obj` should be hydrated 2755 */ 2756function shouldHydrate(obj) { 2757 return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol); 2758} 2759const { assign: pinia_assign } = Object; 2760function isComputed(o) { 2761 return !!((0,vue_runtime_esm_browser_prod/* isRef */.i9)(o) && o.effect); 2762} 2763function createOptionsStore(id, options, pinia, hot) { 2764 const { state, actions, getters } = options; 2765 const initialState = pinia.state.value[id]; 2766 let store; 2767 function setup() { 2768 if (!initialState && ( true || 0)) { 2769 /* istanbul ignore if */ 2770 if (lib_isVue2) { 2771 lib_set(pinia.state.value, id, state ? state() : {}); 2772 } 2773 else { 2774 pinia.state.value[id] = state ? state() : {}; 2775 } 2776 } 2777 // avoid creating a state in pinia.state.value 2778 const localState = false 2779 ? // use ref() to unwrap refs inside state TODO: check if this is still necessary 2780 0 2781 : (0,vue_runtime_esm_browser_prod/* toRefs */.QW)(pinia.state.value[id]); 2782 return pinia_assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => { 2783 if (false) {} 2784 computedGetters[name] = (0,vue_runtime_esm_browser_prod/* markRaw */.IG)((0,vue_runtime_esm_browser_prod/* computed */.EW)(() => {
2785 setActivePinia(pinia); 2786 // it was created just before 2787 const store = pinia._s.get(id); 2788 // allow cross using stores 2789 /* istanbul ignore if */ 2790 if (lib_isVue2 && !store._r) 2791 return; 2792 // @ts-expect-error 2793 // return getters![name].call(context, context) 2794 // TODO: avoid reading the getter while assigning with a global variable 2795 return getters[name].call(store, store); 2796 })); 2797 return computedGetters; 2798 }, {})); 2799 } 2800 store = createSetupStore(id, setup, options, pinia, hot, true); 2801 return store; 2802} 2803function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) { 2804 let scope; 2805 const optionsForPlugin = pinia_assign({ actions: {} }, options); 2806 /* istanbul ignore if */ 2807 if (false) {} 2808 // watcher options for $subscribe 2809 const $subscribeOptions = { deep: true }; 2810 /* istanbul ignore else */ 2811 if (false) {} 2812 // internal state 2813 let isListening; // set to true at the end 2814 let isSyncListening; // set to true at the end 2815 let subscriptions = []; 2816 let actionSubscriptions = []; 2817 let debuggerEvents; 2818 const initialState = pinia.state.value[$id]; 2819 // avoid setting the state for option stores if it is set 2820 // by the setup 2821 if (!isOptionsStore && !initialState && ( true || 0)) { 2822 /* istanbul ignore if */ 2823 if (lib_isVue2) { 2824 lib_set(pinia.state.value, $id, {}); 2825 } 2826 else { 2827 pinia.state.value[$id] = {}; 2828 } 2829 } 2830 const hotState = (0,vue_runtime_esm_browser_prod/* ref */.KR)({}); 2831 // avoid triggering too many listeners 2832 // https://github.com/vuejs/pinia/issues/1129 2833 let activeListener; 2834 function $patch(partialStateOrMutator) { 2835 let subscriptionMutation; 2836 isListening = isSyncListening = false; 2837 // reset the debugger events since patches are sync 2838 /* istanbul ignore else */ 2839 if ((false)) {} 2840 if (typeof partialStateOrMutator === 'function') { 2841 partialStateOrMutator(pinia.state.value[$id]); 2842 subscriptionMutation = { 2843 type: MutationType.patchFunction, 2844 storeId: $id, 2845 events: debuggerEvents, 2846 }; 2847 } 2848 else { 2849 mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator); 2850 subscriptionMutation = { 2851 type: MutationType.patchObject, 2852 payload: partialStateOrMutator, 2853 storeId: $id, 2854 events: debuggerEvents, 2855 }; 2856 } 2857 const myListenerId = (activeListener = Symbol()); 2858 (0,vue_runtime_esm_browser_prod/* nextTick */.dY)().then(() => { 2859 if (activeListener === myListenerId) { 2860 isListening = true; 2861 } 2862 }); 2863 isSyncListening = true; 2864 // because we paused the watcher, we need to manually call the subscriptions 2865 triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]); 2866 } 2867 const $reset = isOptionsStore 2868 ? function $reset() { 2869 const { state } = options; 2870 const newState = state ? state() : {}; 2871 // we use a patch to group all changes into one single subscription 2872 this.$patch(($state) => { 2873 // @ts-expect-error: FIXME: shouldn't error? 2874 pinia_assign($state, newState); 2875 }); 2876 } 2877 : /* istanbul ignore next */ 2878 ( false) 2879 ? 0 2880 : noop; 2881 function $dispose() { 2882 scope.stop(); 2883 subscriptions = []; 2884 actionSubscriptions = []; 2885 pinia._s.delete($id); 2886 } 2887 /** 2888 * Helper that wraps function so it can be tracked with $onAction 2889 * @param fn - action to wrap 2890 * @param name - name of the action 2891 */ 2892 const action = (fn, name = '') => { 2893 if (ACTION_MARKER in fn) { 2894 fn[ACTION_NAME] = name; 2895 return fn; 2896 } 2897 const wrappedAction = function () {
2898 setActivePinia(pinia); 2899 const args = Array.from(arguments); 2900 const afterCallbackList = []; 2901 const onErrorCallbackList = []; 2902 function after(callback) { 2903 afterCallbackList.push(callback); 2904 } 2905 function onError(callback) { 2906 onErrorCallbackList.push(callback); 2907 } 2908 // @ts-expect-error 2909 triggerSubscriptions(actionSubscriptions, { 2910 args, 2911 name: wrappedAction[ACTION_NAME], 2912 store, 2913 after, 2914 onError, 2915 }); 2916 let ret; 2917 try { 2918 ret = fn.apply(this && this.$id === $id ? this : store, args); 2919 // handle sync errors 2920 } 2921 catch (error) { 2922 triggerSubscriptions(onErrorCallbackList, error); 2923 throw error; 2924 } 2925 if (ret instanceof Promise) { 2926 return ret 2927 .then((value) => { 2928 triggerSubscriptions(afterCallbackList, value); 2929 return value; 2930 }) 2931 .catch((error) => { 2932 triggerSubscriptions(onErrorCallbackList, error); 2933 return Promise.reject(error); 2934 }); 2935 } 2936 // trigger after callbacks 2937 triggerSubscriptions(afterCallbackList, ret); 2938 return ret; 2939 }; 2940 wrappedAction[ACTION_MARKER] = true; 2941 wrappedAction[ACTION_NAME] = name; // will be set later 2942 // @ts-expect-error: we are intentionally limiting the returned type to just Fn 2943 // because all the added properties are internals that are exposed through `$onAction()` only 2944 return wrappedAction; 2945 }; 2946 const _hmrPayload = /*#__PURE__*/ (0,vue_runtime_esm_browser_prod/* markRaw */.IG)({ 2947 actions: {}, 2948 getters: {}, 2949 state: [], 2950 hotState, 2951 }); 2952 const partialStore = { 2953 _p: pinia, 2954 // _s: scope, 2955 $id, 2956 $onAction: addSubscription.bind(null, actionSubscriptions), 2957 $patch, 2958 $reset, 2959 $subscribe(callback, options = {}) { 2960 const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher()); 2961 const stopWatcher = scope.run(() => (0,vue_runtime_esm_browser_prod/* watch */.wB)(() => pinia.state.value[$id], (state) => { 2962 if (options.flush === 'sync' ? isSyncListening : isListening) { 2963 callback({ 2964 storeId: $id, 2965 type: MutationType.direct, 2966 events: debuggerEvents, 2967 }, state); 2968 } 2969 }, pinia_assign({}, $subscribeOptions, options))); 2970 return removeSubscription; 2971 }, 2972 $dispose, 2973 }; 2974 /* istanbul ignore if */ 2975 if (lib_isVue2) { 2976 // start as non ready 2977 partialStore._r = false; 2978 } 2979 const store = (0,vue_runtime_esm_browser_prod/* reactive */.Kh)(( false) || (((( false) || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !("production" === 'test')) && IS_CLIENT) 2980 ? pinia_assign({ 2981 _hmrPayload, 2982 _customProperties: (0,vue_runtime_esm_browser_prod/* markRaw */.IG)(new Set()), // devtools custom properties 2983 }, partialStore 2984 // must be added later 2985 // setupStore 2986 ) 2987 : partialStore); 2988 // store the partial store now so the setup of stores can instantiate each other before they are finished without 2989 // creating infinite loops. 2990 pinia._s.set($id, store); 2991 const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext; 2992 // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped 2993 const setupStore = runWithContext(() => pinia._e.run(() => (scope = (0,vue_runtime_esm_browser_prod/* effectScope */.uY)()).run(() => setup({ action })))); 2994 // overwrite existing actions to support $onAction 2995 for (const key in setupStore) { 2996 const prop = setupStore[key]; 2997 if (((0,vue_runtime_esm_browser_prod/* isRef */.i9)(prop) && !isComputed(prop)) || (0,vue_runtime_esm_browser_prod/* isReactive */.g8)(prop)) { 2998 // mark it as a piece of state to be serialized 2999 if (false) {} 3000 else if (!isOptionsStore) { 3001 // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created 3002 if (initialState && shouldHydrate(prop)) { 3003 if ((0,vue_runtime_esm_browser_prod/* isRef */.i9)(prop)) { 3004 prop.value = initialState[key]; 3005 } 3006 else { 3007 // probably a reactive object, lets recursively assign 3008 // @ts-expect-error: prop is unknown 3009 mergeReactiveObjects(prop, initialState[key]); 3010 } 3011 } 3012 // transfer the ref to the pinia state to keep everything in sync 3013 /* istanbul ignore if */ 3014 if (lib_isVue2) { 3015 lib_set(pinia.state.value[$id], key, prop); 3016 } 3017 else { 3018 pinia.state.value[$id][key] = prop; 3019 } 3020 } 3021 /* istanbul ignore else */ 3022 if ((false)) {} 3023 // action 3024 } 3025 else if (typeof prop === 'function') { 3026 const actionValue = false ? 0 : action(prop, key); 3027 // this a hot module replacement store because the hotUpdate method needs 3028 // to do it with the right context 3029 /* istanbul ignore if */ 3030 if (lib_isVue2) { 3031 lib_set(setupStore, key, actionValue); 3032 } 3033 else { 3034 // @ts-expect-error 3035 setupStore[key] = actionValue; 3036 } 3037 /* istanbul ignore else */ 3038 if ((false)) {} 3039 // list actions so they can be used in plugins 3040 // @ts-expect-error 3041 optionsForPlugin.actions[key] = prop; 3042 } 3043 else if ((false)) {} 3044 } 3045 // add the state, getters, and action properties 3046 /* istanbul ignore if */ 3047 if (lib_isVue2) { 3048 Object.keys(setupStore).forEach((key) => { 3049 lib_set(store, key, setupStore[key]); 3050 }); 3051 } 3052 else { 3053 pinia_assign(store, setupStore); 3054 // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object. 3055 // Make `storeToRefs()` work with `reactive()` #799 3056 pinia_assign((0,vue_runtime_esm_browser_prod/* toRaw */.ux)(store), setupStore); 3057 } 3058 // use this instead of a computed with setter to be able to create it anywhere 3059 // without linking the computed lifespan to wherever the store is first 3060 // created. 3061 Object.defineProperty(store, '$state', { 3062 get: () => ( false ? 0 : pinia.state.value[$id]), 3063 set: (state) => { 3064 /* istanbul ignore if */ 3065 if (false) {} 3066 $patch(($state) => { 3067 // @ts-expect-error: FIXME: shouldn't error? 3068 pinia_assign($state, state); 3069 }); 3070 }, 3071 }); 3072 // add the hotUpdate before plugins to allow them to override it 3073 /* istanbul ignore else */ 3074 if ((false)) {} 3075 if (((( false) || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !("production" === 'test')) && IS_CLIENT) { 3076 const nonEnumerable = { 3077 writable: true, 3078 configurable: true, 3079 // avoid warning on devtools trying to display this property 3080 enumerable: false, 3081 }; 3082 ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => { 3083 Object.defineProperty(store, p, pinia_assign({ value: store[p] }, nonEnumerable)); 3084 }); 3085 } 3086 /* istanbul ignore if */ 3087 if (lib_isVue2) { 3088 // mark the store as ready before plugins 3089 store._r = true; 3090 } 3091 // apply all plugins 3092 pinia._p.forEach((extender) => { 3093 /* istanbul ignore else */ 3094 if (((( false) || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !("production" === 'test')) && IS_CLIENT) { 3095 const extensions = scope.run(() => extender({ 3096 store: store, 3097 app: pinia._a, 3098 pinia, 3099 options: optionsForPlugin, 3100 })); 3101 Object.keys(extensions || {}
3101).forEach((key) => store._customProperties.add(key)); 3102 pinia_assign(store, extensions); 3103 } 3104 else { 3105 pinia_assign(store, scope.run(() => extender({ 3106 store: store, 3107 app: pinia._a, 3108 pinia, 3109 options: optionsForPlugin, 3110 }))); 3111 } 3112 }); 3113 if (false) {} 3114 // only apply hydrate to option stores with an initial state in pinia 3115 if (initialState && 3116 isOptionsStore && 3117 options.hydrate) { 3118 options.hydrate(store.$state, initialState); 3119 } 3120 isListening = true; 3121 isSyncListening = true; 3122 return store; 3123} 3124// allows unused stores to be tree shaken 3125/*! #__NO_SIDE_EFFECTS__ */ 3126function defineStore( 3127// TODO: add proper types from above 3128idOrOptions, setup, setupOptions) { 3129 let id; 3130 let options; 3131 const isSetupStore = typeof setup === 'function'; 3132 if (typeof idOrOptions === 'string') { 3133 id = idOrOptions; 3134 // the option store setup will contain the actual options in this case 3135 options = isSetupStore ? setupOptions : setup; 3136 } 3137 else { 3138 options = idOrOptions; 3139 id = idOrOptions.id; 3140 if (false) {} 3141 } 3142 function useStore(pinia, hot) { 3143 const hasContext = (0,vue_runtime_esm_browser_prod/* hasInjectionContext */.PS)(); 3144 pinia = 3145 // in test mode, ignore the argument provided as we can always retrieve a 3146 // pinia instance with getActivePinia() 3147 ( false ? 0 : pinia) || 3148 (hasContext ? (0,vue_runtime_esm_browser_prod/* inject */.WQ)(piniaSymbol, null) : null); 3149 if (pinia)
3150 setActivePinia(pinia); 3151 if (false) {} 3152 pinia = activePinia; 3153 if (!pinia._s.has(id)) { 3154 // creating the store registers it in `pinia._s` 3155 if (isSetupStore) { 3156 createSetupStore(id, setup, options, pinia); 3157 } 3158 else { 3159 createOptionsStore(id, options, pinia); 3160 } 3161 /* istanbul ignore else */ 3162 if ((false)) {} 3163 } 3164 const store = pinia._s.get(id); 3165 if (false) {} 3166 if (false) {} 3167 // StoreGeneric cannot be casted towards Store 3168 return store; 3169 } 3170 useStore.$id = id; 3171 return useStore; 3172} 3173 3174let mapStoreSuffix = 'Store'; 3175/** 3176 * Changes the suffix added by `mapStores()`. Can be set to an empty string. 3177 * Defaults to `"Store"`. Make sure to extend the MapStoresCustomization 3178 * interface if you are using TypeScript. 3179 * 3180 * @param suffix - new suffix 3181 */ 3182function setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS 3183) { 3184 mapStoreSuffix = suffix; 3185} 3186/** 3187 * Allows using stores without the composition API (`setup()`) by generating an 3188 * object to be spread in the `computed` field of a component. It accepts a list 3189 * of store definitions. 3190 * 3191 * @example 3192 * ```js 3193 * export default { 3194 * computed: { 3195 * // other computed properties 3196 * ...mapStores(useUserStore, useCartStore) 3197 * }, 3198 * 3199 * created() { 3200 * this.userStore // store with id "user" 3201 * this.cartStore // store with id "cart" 3202 * } 3203 * } 3204 * ``` 3205 * 3206 * @param stores - list of stores to map to an object 3207 */ 3208function mapStores(...stores) { 3209 if (false) {} 3210 return stores.reduce((reduced, useStore) => { 3211 // @ts-expect-error: $id is added by defineStore 3212 reduced[useStore.$id + mapStoreSuffix] = function () { 3213 return useStore(this.$pinia); 3214 }; 3215 return reduced; 3216 }, {}); 3217} 3218/** 3219 * Allows using state and getters from one store without using the composition 3220 * API (`setup()`) by generating an object to be spread in the `computed` field 3221 * of a component. 3222 * 3223 * @param useStore - store to map from 3224 * @param keysOrMapper - array or object 3225 */ 3226function mapState(useStore, keysOrMapper) { 3227 return Array.isArray(keysOrMapper) 3228 ? keysOrMapper.reduce((reduced, key) => { 3229 reduced[key] = function () { 3230 // @ts-expect-error: FIXME: should work? 3231 return useStore(this.$pinia)[key]; 3232 }; 3233 return reduced; 3234 }, {}) 3235 : Object.keys(keysOrMapper).reduce((reduced, key) => { 3236 // @ts-expect-error 3237 reduced[key] = function () { 3238 const store = useStore(this.$pinia); 3239 const storeKey = keysOrMapper[key]; 3240 // for some reason TS is unable to infer the type of storeKey to be a 3241 // function 3242 return typeof storeKey === 'function' 3243 ? storeKey.call(this, store) 3244 : // @ts-expect-error: FIXME: should work? 3245 store[storeKey]; 3246 }; 3247 return reduced; 3248 }, {}); 3249} 3250/** 3251 * Alias for `mapState()`. You should use `mapState()` instead. 3252 * @deprecated use `mapState()` instead. 3253 */ 3254const mapGetters = (/* unused pure expression or super */ null && (mapState)); 3255/** 3256 * Allows directly using actions from your store without using the composition 3257 * API (`setup()`) by generating an object to be spread in the `methods` field 3258 * of a component. 3259 * 3260 * @param useStore - store to map from 3261 * @param keysOrMapper - array or object 3262 */ 3263function mapActions(useStore, keysOrMapper) { 3264 return Array.isArray(keysOrMapper) 3265 ? keysOrMapper.reduce((reduced, key) => { 3266 // @ts-expect-error 3267 reduced[key] = function (...args) { 3268 // @ts-expect-error: FIXME: should work? 3269 return useStore(this.$pinia)[key](...args); 3270 }; 3271 return reduced; 3272 }, {}) 3273 : Object.keys(keysOrMapper).reduce((reduced, key) => { 3274 // @ts-expect-error 3275 reduced[key] = function (...args) { 3276 // @ts-expect-error: FIXME: should work? 3277 return useStore(this.$pinia)[keysOrMapper[key]](...args); 3278 }; 3279 return reduced; 3280 }, {}); 3281} 3282/** 3283 * Allows using state and getters from one store without using the composition 3284 * API (`setup()`) by generating an object to be spread in the `computed` field 3285 * of a component. 3286 * 3287 * @param useStore - store to map from 3288 * @param keysOrMapper - array or object 3289 */ 3290function mapWritableState(useStore, keysOrMapper) { 3291 return Array.isArray(keysOrMapper) 3292 ? keysOrMapper.reduce((reduced, key) => { 3293 reduced[key] = { 3294 get() { 3295 return useStore(this.$pinia)[key]; 3296 }, 3297 set(value) { 3298 return (useStore(this.$pinia)[key] = value); 3299 }, 3300 }; 3301 return reduced; 3302 }, {}) 3303 : Object.keys(keysOrMapper).reduce((reduced, key) => { 3304 reduced[key] = { 3305 get() { 3306 return useStore(this.$pinia)[keysOrMapper[key]]; 3307 }, 3308 set(value) { 3309 return (useStore(this.$pinia)[keysOrMapper[key]] = value); 3310 }, 3311 }; 3312 return reduced; 3313 }, {}); 3314} 3315 3316/** 3317 * Creates an object of references with all the state, getters, and plugin-added 3318 * state properties of the store. Similar to `toRefs()` but specifically 3319 * designed for Pinia stores so methods and non reactive properties are 3320 * completely ignored. 3321 * 3322 * @param store - store to extract the refs from 3323 */ 3324function storeToRefs(store) { 3325 // See https://github.com/vuejs/pinia/issues/852 3326 // It's easier to just use toRefs() even if it includes more stuff 3327 if (isVue2) { 3328 // @ts-expect-error: toRefs include methods and others 3329 return toRefs(store); 3330 } 3331 else { 3332 const rawStore = toRaw(store); 3333 const refs = {}; 3334 for (const key in rawStore) { 3335 const value = rawStore[key]; 3336 // There is no native method to check for a computed 3337 // https://github.com/vuejs/core/pull/4165 3338 if (value.effect) { 3339 // @ts-expect-error: too hard to type correctly 3340 refs[key] = 3341 // ... 3342 computed({ 3343 get: () => store[key], 3344 set(value) { 3345 store[key] = value; 3346 }, 3347 }); 3348 } 3349 else if (isRef(value) || isReactive(value)) { 3350 // @ts-expect-error: the key is state or getter 3351 refs[key] = 3352 // --- 3353 toRef(store, key); 3354 } 3355 } 3356 return refs; 3357 } 3358} 3359 3360/** 3361 * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need 3362 * this plugin if you are using Nuxt.js**. Use the `buildModule` instead: 3363 * https://pinia.vuejs.org/ssr/nuxt.html. 3364 * 3365 * @example 3366 * ```js 3367 * import Vue from 'vue' 3368 * import { PiniaVuePlugin, createPinia } from 'pinia' 3369 * 3370 * Vue.use(PiniaVuePlugin) 3371 * const pinia = createPinia() 3372 * 3373 * new Vue({ 3374 * el: '#app', 3375 * // ... 3376 * pinia, 3377 * }) 3378 * ``` 3379 * 3380 * @param _Vue - `Vue` imported from 'vue'. 3381 */ 3382const PiniaVuePlugin = function (_Vue) { 3383 // Equivalent of 3384 // app.config.globalProperties.$pinia = pinia 3385 _Vue.mixin({ 3386 beforeCreate() { 3387 const options = this.$options; 3388 if (options.pinia) { 3389 const pinia = options.pinia; 3390 // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31 3391 /* istanbul ignore else */ 3392 if (!this._provided) { 3393 const provideCache = {}; 3394 Object.defineProperty(this, '_provided', { 3395 get: () => provideCache, 3396 set: (v) => Object.assign(provideCache, v),
3397 }); 3398 } 3399 this._provided[piniaSymbol] = pinia; 3400 // propagate the pinia instance in an SSR friendly way 3401 // avoid adding it to nuxt twice 3402 /* istanbul ignore else */ 3403 if (!this.$pinia) { 3404 this.$pinia = pinia; 3405 } 3406 pinia._a = this; 3407 if (IS_CLIENT) { 3408 // this allows calling useStore() outside of a component setup after 3409 // installing pinia's plugin 3410 setActivePinia(pinia); 3411 } 3412 if (((( false) || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !("production" === 'test')) && IS_CLIENT) { 3413 registerPiniaDevtools(pinia._a, pinia); 3414 } 3415 } 3416 else if (!this.$pinia && options.parent && options.parent.$pinia) { 3417 this.$pinia = options.parent.$pinia; 3418 } 3419 }, 3420 destroyed() { 3421 delete this._pStores; 3422 }, 3423 }); 3424}; 3425 3426 3427 3428 3429/***/ }), 3430 3431/***/ 2064: 3432/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 3433 3434"use strict"; 3435 3436 3437Object.defineProperty(exports, "__esModule", ({ 3438 value: true 3439})); 3440exports.BindingInSyntax = void 0; 3441var literal_types_1 = __webpack_require__(7802); 3442var binding_when_on_syntax_1 = __webpack_require__(3341); 3443var BindingInSyntax = function () { 3444 function BindingInSyntax(binding) { 3445 this._binding = binding; 3446 } 3447 BindingInSyntax.prototype.inRequestScope = function () { 3448 this._binding.scope = literal_types_1.BindingScopeEnum.Request; 3449 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 3450 }; 3451 BindingInSyntax.prototype.inSingletonScope = function () { 3452 this._binding.scope = literal_types_1.BindingScopeEnum.Singleton; 3453 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 3454 }; 3455 BindingInSyntax.prototype.inTransientScope = function () { 3456 this._binding.scope = literal_types_1.BindingScopeEnum.Transient; 3457 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 3458 }; 3459 return BindingInSyntax; 3460}(); 3461exports.BindingInSyntax = BindingInSyntax; 3462 3463/***/ }), 3464 3465/***/ 2173: 3466/***/ ((module, __webpack_exports__, __webpack_require__) => { 3467 3468"use strict"; 3469__webpack_require__.r(__webpack_exports__); 3470/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3471/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 3472/* harmony export */ }); 3473/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 3474/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 3475/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 3476/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 3477// Imports 3478 3479 3480var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 3481// Module 3482___CSS_LOADER_EXPORT___.push([module.id, `.vehicle-title__condition{margin-right:3px}.save-heart__srp-card-heart-wrapper{margin-top:.5rem}.vehicle-special-tags{display:flex;flex-wrap:wrap;color:#707070;line-height:1;padding-bottom:8px}.vehicle-special-tags__label,.vehicle-special-tags__icon{font-size:12px;font-weight:400;line-height:1}.vehicle-special-tags__special-offer,.vehicle-special-tags__price-drop{display:flex;align-items:center}.vehicle-special-tags__label{margin-right:1rem}.vehicle-special-tags__icon{margin-right:.5rem}`, ""]); 3483// Exports 3484/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_
3484LOADER_EXPORT___); 3485 3486 3487/***/ }), 3488 3489/***/ 2283: 3490/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3491 3492"use strict"; 3493/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3494/* harmony export */ K: () => (/* binding */ VehicleService) 3495/* harmony export */ }); 3496/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260); 3497/* harmony import */ var _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7090); 3498/* harmony import */ var _personalizationService_iPersonalizationService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(926); 3499/* harmony import */ var _types_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5644); 3500var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 3501 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 3502 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 3503 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 3504 return c > 3 && r && Object.defineProperty(target, key, r), r; 3505}; 3506var __metadata = (undefined && undefined.__metadata) || function (k, v) { 3507 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 3508}; 3509var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 3510 return function (target, key) { decorator(target, key, paramIndex); } 3511}; 3512var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 3513 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 3514 return new (P || (P = Promise))(function (resolve, reject) { 3515 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 3516 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 3517 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 3518 step((generator = generator.apply(thisArg, _arguments || [])).next()); 3519 }); 3520}; 3521var _a; 3522 3523 3524 3525 3526let VehicleService = class VehicleService { 3527 constructor(personalizationService) { 3528 this.rootApiUrl = "/api/vhcliaa"; 3529 this.vehicleCache = {}; 3530 this.getVehicles = (dealerId, pageId, pagination, baseFilter, dynamicCountsSearch) => __awaiter(this, void 0, void 0, function* () { 3531 var _a, _b; 3532 let url = this.getVehicleApiUrl(dealerId, pageId, pagination, baseFilter, dynamicCountsSearch); 3533 //Personalization (aka Signals) 3534 //NOTE: We add this here so we don't have to see it visually show up on the URL every time 3535 url = (_b = (_a = this.personalizationService) === null || _a === void 0 ? void 0 : _a.addPersonalizationParameters(url)) !== null && _b !== void 0 ? _b : url; 3536 if (this.vehicleCache[url]) { 3537 return this.vehicleCache[url]; 3538 } 3539 const promise = _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.sendApiRequest(url); 3540 this.vehicleCache[url] = promise; 3541 return promise; 3542 }); 3543 this.getCompareVehicle = (dealerId, vin) => __awaiter(this, void 0, void 0, function* () { 3544 const url = this.getCompareVehicleApiUrl(dealerId, vin); 3545 return _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.sendApiRequest(url); 3546 }); 3547 this.getVehicleCardDeck = (dealerId, vins) => __awaiter(this, void 0, void 0, function* () { 3548 const url = this.getVehicleCardDeckApiUrl(dealerId, vins); 3549 return _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.sendApiRequest(url); 3550 }); 3551 // HELPER METHODS 3552 this.getVehicleApiUrl = (dealerId, pageId, paginationData = null, baseFilter = null, dynamicCountsSearch = null) => { 3553 const searchParams = _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.getBaseApiQueryString(paginationData, dynamicCountsSearch); 3554 if (baseFilter) { 3555 //NOTE: Fastly attempts to prevent malicious querystring parameters which can be triggered 3556 // by baseFilter parameters. We need to base64 encode the baseFilter to prevent this. 3557 // the backend will unencode it before using it. 3558 _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.setSearchParam("baseFilter", btoa(baseFilter).replace(/\+/g, "%2B"), searchParams); 3559 } 3560 _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.setSearchParam("displayCardsShown", this.getDisplayCardsShown(paginationData.PageNumber, paginationData.PageSize), searchParams); 3561 //HACK: don't encode spaces as +, it won't return the results correctly 3562 const url = `${this.rootApiUrl}/vehicle-pages/cosmos/srp/vehicles/${dealerId}/${pageId}?${_serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.mapArrayToQueryString(searchParams)}`; 3563 return url; 3564 }; 3565 this.getCompareVehicleApiUrl = (dealerId, vin) => { 3566 const url = `${this.rootApiUrl}/inventory/${dealerId}/vehicle-compare?vin=${vin}`; 3567 return url; 3568 }; 3569 this.getVehicleCardDeckApiUrl = (dealerId, vins) => { 3570 const searchParams = _serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.getBaseApiQueryString(null, null); 3571 const url = `${this.rootApiUrl}/vehicle-card-deck/${dealerId}?vins=${vins}&${_serviceHelpers__WEBPACK_IMPORTED_MODULE_1__/* .ServiceHelpers */ .d.mapArrayToQueryString(searchParams)}&host=${window.location.origin}`; 3572 return url; 3573 }; 3574 this.getDisplayCardsShown = (pageNumber, pageSize) => { 3575 if (pageNumber < 1) 3576 return 0; 3577 return (pageNumber - 1) * pageSize; 3578 }; 3579 this.personalizationService = personalizationService; 3580 this.vehicleCache = {}; 3581 } 3582}; 3583VehicleService = __decorate([ 3584 (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .injectable */ ._G)(), 3585 __param(0, (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .inject */ .WQ)(_types_types__WEBPACK_IMPORTED_MODULE_2__/* .TYPES */ .Q.IPersonalizationService)), 3586 __metadata("design:paramtypes", [typeof (_a = typeof _personalizationService_iPersonalizationService__WEBPACK_IMPORTED_MODULE_3__/* .IPersonalizationService */ .R !== "undefined" && _personalizationService_iPersonalizationService__WEBPACK_IMPORTED_MODULE_3__/* .IPersonalizationService */ .R) === "function" ? _a : Object]) 3587], VehicleService); 3588 3589 3590 3591/***/ }), 3592 3593/***/ 2437: 3594/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 3595 3596"use strict"; 3597 3598 3599Object.defineProperty(exports, "__esModule", ({ 3600 value: true 3601})); 3602exports.BindingInWhenOnSyntax = void 0; 3603var binding_in_syntax_1 = __webpack_require__(2064); 3604var binding_on_syntax_1 = __webpack_require__(5078); 3605var binding_when_syntax_1 = __webpack_require__(4533); 3606var BindingInWhenOnSyntax = function () { 3607 function BindingInWhenOnSyntax(binding) { 3608 this._binding = binding; 3609 this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding); 3610 this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding); 3611 this._bindingInSyntax = new binding_in_syntax_1.BindingInSyntax(binding); 3612 } 3613 BindingInWhenOnSyntax.prototype.inRequestScope = function () { 3614 return this._bindingInSyntax.inRequestScope(); 3615 }; 3616 BindingInWhenOnSyntax.prototype.inSingletonScope = function () { 3617 return this._bindingInSyntax.inSingletonScope(); 3618 }; 3619 BindingInWhenOnSyntax.prototype.inTransientScope = function () { 3620 return this._bindingInSyntax.inTransientScope(); 3621 }; 3622 BindingInWhenOnSyntax.prototype.when = function (constraint) { 3623 return this._bindingWhenSyntax.when(constraint); 3624 }; 3625 BindingInWhenOnSyntax.prototype.whenTargetNamed = function (name) { 3626 return this._bindingWhenSyntax.whenTargetNamed(name); 3627 }; 3628 BindingInWhenOnSyntax.prototype.whenTargetIsDefault = function () { 3629 return this._bindingWhenSyntax.whenTargetIsDefault(); 3630 }; 3631 BindingInWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) { 3632 return this._bindingWhenSyntax.whenTargetTagged(tag, value); 3633 }; 3634 BindingInWhenOnSyntax.prototype.whenInjectedInto = function (parent) { 3635 return this._bindingWhenSyntax.whenInjectedInto(parent); 3636 }; 3637 BindingInWhenOnSyntax.prototype.whenParentNamed = function (name) { 3638 return this._bindingWhenSyntax.whenParentNamed(name); 3639 }; 3640 BindingInWhenOnSyntax.prototype.whenParentTagged = function (tag, value) { 3641 return this._bindingWhenSyntax.whenParentTagged(tag, value); 3642 }; 3643 BindingInWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) { 3644 return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor); 3645 };
3646 BindingInWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) { 3647 return this._bindingWhenSyntax.whenNoAncestorIs(ancestor); 3648 }; 3649 BindingInWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) { 3650 return this._bindingWhenSyntax.whenAnyAncestorNamed(name); 3651 }; 3652 BindingInWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) { 3653 return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value); 3654 }; 3655 BindingInWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) { 3656 return this._bindingWhenSyntax.whenNoAncestorNamed(name); 3657 }; 3658 BindingInWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) { 3659 return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value); 3660 }; 3661 BindingInWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) { 3662 return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint); 3663 }; 3664 BindingInWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) { 3665 return this._bindingWhenSyntax.whenNoAncestorMatches(constraint); 3666 }; 3667 BindingInWhenOnSyntax.prototype.onActivation = function (handler) { 3668 return this._bindingOnSyntax.onActivation(handler); 3669 }; 3670 return BindingInWhenOnSyntax; 3671}(); 3672exports.BindingInWhenOnSyntax = BindingInWhenOnSyntax; 3673 3674/***/ }), 3675 3676/***/ 2486: 3677/***/ ((module, __webpack_exports__, __webpack_require__) => { 3678 3679"use strict"; 3680__webpack_require__.r(__webpack_exports__); 3681/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3682/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 3683/* harmony export */ }); 3684/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 3685/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 3686/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 3687/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 3688// Imports 3689 3690 3691var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 3692// Module 3693___CSS_LOADER_EXPORT___.push([module.id, `.pricestak-post.less-whitespace[data-v-520844d0]:empty{padding-top:0}`, ""]); 3694// Exports 3695/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 3696 3697 3698/***/ }), 3699 3700/***/ 2491: 3701/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3702 3703"use strict"; 3704/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3705/* harmony export */ _: () => (/* binding */ SrpLayoutType) 3706/* harmony export */ }); 3707var SrpLayoutType; 3708(function (SrpLayoutType) { 3709 SrpLayoutType[SrpLayoutType["List"] = 0] = "List"; 3710 SrpLayoutType[SrpLayoutType["Grid"] = 1] = "Grid"; 3711})(SrpLayoutType || (SrpLayoutType = {})); 3712 3713 3714/***/ }), 3715 3716/***/ 2564: 3717/***/ ((module, __webpack_exports__, __webpack_require__) => { 3718 3719"use strict"; 3720__webpack_require__.r(__webpack_exports__); 3721/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3722/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 3723/* harmony export */ }); 3724/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 3725/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 3726/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 3727/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 3728// Imports 3729 3730 3731var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 3732// Module
3733___CSS_LOADER_EXPORT___.push([module.id, `.card-skeleton-image[data-v-72f833e6]{display:block;width:100%;height:auto;grid-area:1/1/-1/-1}`, ""]); 3734// Exports 3735/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 3736 3737 3738/***/ }), 3739 3740/***/ 2620: 3741/***/ ((module, __webpack_exports__, __webpack_require__) => { 3742 3743"use strict"; 3744__webpack_require__.r(__webpack_exports__); 3745/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3746/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 3747/* harmony export */ }); 3748/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 3749/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 3750/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 3751/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 3752// Imports 3753 3754 3755var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 3756// Module 3757___CSS_LOADER_EXPORT___.push([module.id, `.rv-features[data-v-5de90bdd]{padding:0 20px}.rv-specs[data-v-5de90bdd]{display:flex;justify-content:space-between;gap:1rem 2rem;border-top:1px solid #dcdce2}.rv-specs--status[data-v-5de90bdd]{align-items:center;padding:1rem 0}@media(min-width: 1533px){.list-view .rv-specs--status[data-v-5de90bdd]{padding:20px 0 1rem;border-top:none}}.rv-specs--status[data-v-5de90bdd] .vehicle-status{font-size:1.2rem !important;line-height:1.2;padding:.2rem .5rem;min-height:2rem}.rv-specs--details[data-v-5de90bdd]{flex-direction:column;row-gap:1rem;padding:1rem 0 20px}@media(min-width: 992px){.list-view .rv-specs--details[data-v-5de90bdd]{row-gap:1.5rem}}@media(min-width: 1533px){.list-view .rv-specs--details[data-v-5de90bdd]{row-gap:2.4rem}}.rv-location[data-v-5de90bdd]{display:flex;align-items:center;justify-content:space-between;column-gap:.4rem;font-size:1.2rem;font-weight:700;line-height:1.2;min-height:2rem;background-color:#333;color:#fff;padding:.2rem .7rem .2rem .4rem}.rv-location--rounded[data-v-5de90bdd]{border-radius:.4rem}.rv-location-icon[data-v-5de90bdd]{display:grid;grid-template-areas:"icon";grid-template-columns:1fr;grid-template-rows:1fr;mask-image:var(--svg-url);mask-size:contain;mask-repeat:no-repeat}.rv-location-icon__image[data-v-5de90bdd]{grid-area:icon}.rv-location-icon[data-v-5de90bdd]::after{content:"";display:block;background-color:#fff;mix-blend-mode:screen;grid-area:icon;width:100%;height:100%}.rv-location-icon__image[data-v-5de90bdd]{width:1.2rem;height:1.2rem}.rv-details[data-v-5de90bdd]{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}.rv-floorplan[data-v-5de90bdd]{display:flex;flex-direction:column;row-gap:.5rem}.rv-floorplan__image[data-v-5de90bdd]{width:100%;height:auto;max-width:100%}.rv-floorplan__link[data-v-5de90bdd]{font-size:1.2rem;line-height:1.2}`, ""]); 3758// Exports 3759/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 3760 3761 3762/***/ }), 3763 3764/***/ 2719: 3765/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 3766 3767"use strict"; 3768 3769 3770Object.defineProperty(exports, "__esModule", ({ 3771 value: true 3772})); 3773exports.postConstruct = void 0; 3774var ERRORS_MSGS = __webpack_require__(7718); 3775var METADATA_KEY = __webpack_require__(4725); 3776var metadata_1 = __webpack_require__(8390); 3777function postConstruct() { 3778 return function (target, propertyKey, descriptor) { 3779 var metadata = new metadata_1.Metadata(METADATA_KEY.POST_CONSTRUCT, propertyKey); 3780 if (Reflect.hasOwnMetadata(METADATA_KEY.POST_CONSTRUCT, target.constructor)) { 3781 throw new Error(ERRORS_MSGS.MULTIPLE_POST_CONSTRUCT_METHODS); 3782 } 3783 Reflect.defineMetadata(METADATA_KEY.POST_CONSTRUCT, metadata, target.constructor); 3784 }; 3785} 3786exports.postConstruct = postConstruct; 3787 3788/***/ }), 3789 3790/***/ 2749: 3791/***/ ((module, __webpack_exports__, __webpack_require__) => { 3792 3793"use strict"; 3794__webpack_require__.r(__webpack_exports__); 3795/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3796/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 3797/* harmony export */ }); 3798/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 3799/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 3800/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 3801/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 3802// Imports 3803 3804 3805var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 3806// Module
3807___CSS_LOADER_EXPORT___.push([module.id, `.dropdown-button--copy[data-v-12e549a4]::after{mask-image:var(--copy-icon-url);-webkit-mask-image:var(--copy-icon-url)}.dropdown-button--share[data-v-12e549a4]::after{mask-image:var(--share-icon-url);-webkit-mask-image:var(--share-icon-url)}.dropdown-button--print[data-v-12e549a4]::after{mask-image:var(--print-icon-url);-webkit-mask-image:var(--print-icon-url)}.vehicle-dropdown__action--details[data-v-12e549a4]::after{mask-image:var(--details-icon-url);-webkit-mask-image:var(--details-icon-url)}`, ""]); 3808// Exports 3809/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 3810 3811 3812/***/ }), 3813 3814/***/ 2770: 3815/***/ (() => { 3816 3817"use strict"; 3818 3819 3820 3821/***/ }), 3822 3823/***/ 2781: 3824/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3825 3826"use strict"; 3827/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3828/* harmony export */ $: () => (/* binding */ JQueryHelper) 3829/* harmony export */ }); 3830/* 3831*Any changes to this file will need to be made to the legacy file as well. 3832*/ 3833class JQueryHelper { 3834 static SafeApplyPopover(element, options) { 3835 // Ensure jQuery and popover is loaded before running popover 3836 if (typeof jQuery != "undefined" && typeof jQuery.fn['popover'] === "function") { 3837 return jQuery(element).popover(options); 3838 } 3839 else { 3840 console.warn("jQuery popover is not defined. This may be a third party script issue"); 3841 return jQuery(); 3842 } 3843 } 3844 static SafeApplyTooltip(element) { 3845 // Ensure jQuery and tooltip is loaded before running tooltip 3846 if (typeof jQuery != "undefined" && typeof jQuery.fn['tooltip'] === "function") { 3847 const $element = jQuery(element); 3848 $element.tooltip(); 3849 return; 3850 } 3851 else { 3852 console.warn("jQuery tooltip is not defined. This may be a third party script issue"); 3853 return; 3854 } 3855 } 3856 static SafeApplyCollapse(element, options) { 3857 // Ensure jQuery and collapse is loaded before running collapse 3858 if (typeof jQuery != "undefined" && typeof jQuery.fn['collapse'] === "function") { 3859 const $element = jQuery(element); 3860 $element.collapse(options); 3861 return; 3862 } 3863 else { 3864 console.warn("jQuery collapse is not defined. This may be a third party script issue"); 3865 return; 3866 } 3867 } 3868} 3869 3870 3871/***/ }), 3872 3873/***/ 2908: 3874/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3875 3876// style-loader: Adds some css to the DOM by adding a <style> tag 3877 3878// load the styles 3879var content = __webpack_require__(9673); 3880if(content.__esModule) content = content.default; 3881if(typeof content === 'string') content = [[module.id, content, '']]; 3882if(content.locals) module.exports = content.locals; 3883// add the styles to the DOM 3884var add = (__webpack_require__(8449)/* ["default"] */ .A) 3885var update = add("d34465d4", content, false, {}); 3886// Hot Module Replacement 3887if(false) {} 3888 3889/***/ }), 3890 3891/***/ 2966: 3892/***/ ((module, __webpack_exports__, __webpack_require__) => { 3893 3894"use strict"; 3895__webpack_require__.r(__webpack_exports__); 3896/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3897/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 3898/* harmony export */ }); 3899/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 3900/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 3901/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 3902/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 3903// Imports 3904 3905 3906var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 3907// Module
3908___CSS_LOADER_EXPORT___.push([module.id, `.window-sticker-button[data-v-7ddcc9ee]{border-radius:5px}`, ""]); 3909// Exports 3910/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 3911 3912 3913/***/ }), 3914 3915/***/ 3042: 3916/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3917 3918// style-loader: Adds some css to the DOM by adding a <style> tag 3919 3920// load the styles 3921var content = __webpack_require__(6737); 3922if(content.__esModule) content = content.default; 3923if(typeof content === 'string') content = [[module.id, content, '']]; 3924if(content.locals) module.exports = content.locals; 3925// add the styles to the DOM 3926var add = (__webpack_require__(8449)/* ["default"] */ .A) 3927var update = add("062c3015", content, false, {}); 3928// Hot Module Replacement 3929if(false) {} 3930 3931/***/ }), 3932 3933/***/ 3091: 3934/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 3935 3936"use strict"; 3937 3938 3939Object.defineProperty(exports, "__esModule", ({ 3940 value: true 3941})); 3942exports.optional = void 0; 3943var METADATA_KEY = __webpack_require__(4725); 3944var metadata_1 = __webpack_require__(8390); 3945var decorator_utils_1 = __webpack_require__(40); 3946function optional() { 3947 return function (target, targetKey, index) { 3948 var metadata = new metadata_1.Metadata(METADATA_KEY.OPTIONAL_TAG, true); 3949 if (typeof index === "number") { 3950 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 3951 } else { 3952 decorator_utils_1.tagProperty(target, targetKey, metadata); 3953 } 3954 }; 3955} 3956exports.optional = optional; 3957 3958/***/ }), 3959 3960/***/ 3104: 3961/***/ ((__unused_webpack_module, exports) => { 3962 3963"use strict"; 3964 3965 3966Object.defineProperty(exports, "__esModule", ({ 3967 value: true 3968})); 3969exports.Plan = void 0; 3970var Plan = function () { 3971 function Plan(parentContext, rootRequest) { 3972 this.parentContext = parentContext; 3973 this.rootRequest = rootRequest; 3974 } 3975 return Plan; 3976}(); 3977exports.Plan = Plan; 3978 3979/***/ }), 3980 3981/***/ 3108: 3982/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3983 3984// style-loader: Adds some css to the DOM by adding a <style> tag 3985 3986// load the styles 3987var content = __webpack_require__(2173); 3988if(content.__esModule) content = content.default; 3989if(typeof content === 'string') content = [[module.id, content, '']]; 3990if(content.locals) module.exports = content.locals; 3991// add the styles to the DOM 3992var add = (__webpack_require__(8449)/* ["default"] */ .A) 3993var update = add("795d0418", content, false, {}); 3994// Hot Module Replacement 3995if(false) {} 3996 3997/***/ }), 3998 3999/***/ 3188: 4000/***/ (() => { 4001 4002"use strict"; 4003 4004 4005 4006/***/ }), 4007 4008/***/ 3239: 4009/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4010 4011"use strict"; 4012 4013// EXPORTS 4014__webpack_require__.d(__webpack_exports__, { 4015 E: () => (/* binding */ doIocContainer) 4016}); 4017 4018// NAMESPACE OBJECT: ./src/components/inventorysearch/iInventoryWasabi.ts 4019var iInventoryWasabi_namespaceObject = {}; 4020__webpack_require__.r(iInventoryWasabi_namespaceObject); 4021 4022// NAMESPACE OBJECT: ./src/components/inventorysearch/iWasabiFilterState.ts 4023var iWasabiFilterState_namespaceObject = {}; 4024__webpack_require__.r(iWasabiFilterState_namespaceObject); 4025 4026// EXTERNAL MODULE: ./node_modules/inversify/lib/inversify.js 4027var inversify = __webpack_require__(260); 4028// EXTERNAL MODULE: ./src/types/types.ts 4029var types = __webpack_require__(5644); 4030// EXTERNAL MODULE: ./src/services/toggles/toggleService.ts + 1 modules 4031var toggleService = __webpack_require__(7363); 4032// EXTERNAL MODULE: ./src/services/translations/translationService.ts + 4 modules 4033var translationService = __webpack_require__(9); 4034// EXTERNAL MODULE: ./src/components/hideableScrollbar/hideableScrollbar.ts 4035var hideableScrollbar = __webpack_require__(6839); 4036;// ./src/components/searchFilter/searchFilterButton.ts 4037class SearchFilterButton { 4038 constructor() { 4039 this.filterStateStorageKey = "CosmosFilterPanelState"; 4040 this.expandFilterPanelByDefault = false;
4041 this.initialize(); 4042 //hide desktop filter panel by default, but only do this 4043 // when the mod is enabled or it'll break the old version 4044 // remove the querySelector check once the MOD is permanent 4045 if (document.querySelector(".srp-filter--mod")) { 4046 this.initializeFilterPanelDesktop(); 4047 } 4048 } 4049 initialize() { 4050 var _a, _b, _c, _d, _e, _f; 4051 this.filterPanel = document.getElementById("filterPanel"); 4052 // searchFilterButton does not exist in MRPs 4053 this.filterPanelButton = document.getElementById("searchFilterButton"); 4054 this.wasabiSrp = document.querySelector(".wasabi_srp"); 4055 this.srpResults = document.querySelector(".srp-results"); 4056 this.expandFilterPanelByDefault = ((_c = (_b = (_a = this.filterPanel) === null || _a === void 0 ? void 0 : _a.dataset) === null || _b === void 0 ? void 0 : _b.expandFilterPanelByDefault) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'true'; 4057 this.currentPageName = window.location.href.split('?')[0]; 4058 this.setupFilterPanelState(); 4059 if (this.filterPanelButton && !((_d = this.filterPanelButton.dataset) === null || _d === void 0 ? void 0 : _d.doInitialized)) { 4060 (_e = this.filterPanelButton) === null || _e === void 0 ? void 0 : _e.addEventListener("click", () => { 4061 this.toggleFilterPanelDesktop(); 4062 }); 4063 this.filterPanelButton.dataset.doInitialized = "true"; 4064 } 4065 ; 4066 const filterButtonClose = document.getElementById("filterButtonClose"); 4067 if (filterButtonClose && !((_f = filterButtonClose.dataset) === null || _f === void 0 ? void 0 : _f.doInitialized)) { 4068 filterButtonClose.addEventListener("click", () => { 4069 this.toggleFilterPanelDesktop(); 4070 }); 4071 filterButtonClose.dataset.doInitialized = "true"; 4072 } 4073 ; 4074 } 4075 setupFilterPanelState() { 4076 const currentState = localStorage.getItem(this.filterStateStorageKey); 4077 if (currentState) { 4078 this.filterPanelState = new Set(JSON.parse(currentState)); 4079 } 4080 else { 4081 this.filterPanelState = new Set(); 4082 localStorage.setItem(this.filterStateStorageKey, JSON.stringify(Array.from(this.filterPanelState))); 4083 } 4084 } 4085 initializeFilterPanelDesktop() { 4086 if (this.canToggleFilterPanelDesktop()) { 4087 if (this.expandFilterPanelByDefault || this.filterPanelState.has(this.currentPageName)) { 4088 this.showFilterPanel(); 4089 } 4090 else { 4091 this.hideFilterPanel(); 4092 } 4093 } 4094 } 4095 toggleFilterPanelDesktop() { 4096 var _a; 4097 if (this.canToggleFilterPanelDesktop()) { 4098 if ((_a = this.filterPanel) === null || _a === void 0 ? void 0 : _a.classList.contains("hidden")) { 4099 this.showFilterPanel(); 4100 } 4101 else { 4102 this.hideFilterPanel(); 4103 } 4104 this.toggleFilterState(); 4105 } 4106 } 4107 canToggleFilterPanelDesktop() { 4108 //if the mobile panel is open then let the mobile mtheods handle open/close 4109 return !this.isMobileFilterPanel() && this.filterPanel !== null; 4110 } 4111 isMobileFilterPanel() { 4112 const mobileFilterToggleButton = document.querySelector(".filter-modal-toggle"); 4113 if (mobileFilterToggleButton) { 4114 return window.getComputedStyle(mobileFilterToggleButton).display !== "none"; 4115 } 4116 return false; 4117 } 4118 showFilterPanel() { 4119 var _a, _b, _c, _d; 4120 (_a = this.filterPanel) === null || _a === void 0 ? void 0 : _a.classList.remove("hidden"); 4121 (_b = this.filterPanelButton) === null || _b === void 0 ? void 0 : _b.classList.add("hidden"); 4122 if (this.wasabiSrp) { 4123 (_c = this.wasabiSrp) === null || _c === void 0 ? void 0 : _c.classList.remove("wasabi_srp--no-grid"); 4124 (_d = this.srpResults) === null || _d === void 0 ? void 0 : _d.classList.remove("srp-results--no-grid"); 4125 } 4126 } 4127 hideFilterPanel() { 4128 var _a, _b, _c, _d; 4129 (_a = this.filterPanel) === null || _a === void 0 ? void 0 : _a.classList.add("hidden"); 4130 (_b = this.filterPanelButton) === null || _b === void 0 ? void 0 : _b.classList.remove("hidden"); 4131 if (this.wasabiSrp) { 4132 (_c = this.wasabiSrp) === null || _c === void 0 ? void 0 : _c.classList.add("wasabi_srp--no-grid"); 4133 (_d = this.srpResults) === null || _d === void 0 ? void 0 : _d.classList.add("srp-results--no-grid"); 4134 } 4135 } 4136 toggleFilterState() { 4137 if (!this.filterPanelState.delete(this.currentPageName)) { 4138 this.filterPanelState.add(this.currentPageName); 4139 } 4140 localStorage.setItem(this.filterStateStorageKey, JSON.stringify(Array.from(this.filterPanelState))); 4141 } 4142} 4143 4144;// ./src/components/searchFilter/filterPanelHeader.ts 4145class FilterPanelHeader { 4146 constructor() { 4147 // Use a closure to prevent polluting global scope with this script 4148 this.CLEAR_ALL_ELEMENT_ID = "filter-panel-header-clear-all"; 4149 this.FILTER_STATE_CHANGE_EVENT = "filter-number-change"; 4150 this.FILTER_STATE_INIT_EVENT = "filter-number-init"; 4151 this.initialize(); 4152 } 4153 initialize() { 4154 var clearAllElement = this.getClearAllElement(); 4155 var filterPillListContainer = document.querySelector('.srp-selected-filters--pill-list'); 4156 this.addFilterStateListeners(clearAllElement, filterPillListContainer); 4157 this.setInitialVisibility(clearAllElement); 4158 this.setHrefToCurrentPathname(clearAllElement); 4159 this.addHoverTextToTruncatedFilterPills(filterPillListContainer); 4160 } 4161 getClearAllElement() { 4162 return document.getElementById(this.CLEAR_ALL_ELEMENT_ID); 4163 } 4164 // Set the href on an element the path without the query string (e.g. /searchne
4164w.aspx) 4165 setHrefToCurrentPathname(clearAllElement) { 4166 if (clearAllElement) { 4167 clearAllElement.href = window.location.pathname; 4168 } 4169 } 4170 addHoverTextToTruncatedFilterPills(filterPillListContainer) { 4171 if (!filterPillListContainer) { 4172 return; 4173 } 4174 var filterPillElements = filterPillListContainer.querySelectorAll(".pill-list__item-text"); 4175 Array.from(filterPillElements).forEach((filterPillElement) => { 4176 if (filterPillElement.offsetWidth < filterPillElement.scrollWidth) { 4177 filterPillElement.setAttribute('title', filterPillElement.textContent); 4178 } 4179 }); 4180 } 4181 addFilterStateListeners(clearAllElement, filterPillListContainer) { 4182 document.addEventListener(this.FILTER_STATE_INIT_EVENT, (event) => { 4183 this.setClearAllBtnStyling(event, clearAllElement, filterPillListContainer); 4184 }); 4185 document.addEventListener(this.FILTER_STATE_CHANGE_EVENT, (event) => { 4186 this.setClearAllBtnStyling(event, clearAllElement, filterPillListContainer); 4187 }); 4188 } 4189 setClearAllBtnStyling(event, clearAllElement, filterPillListContainer) { 4190 var filterPillsExist = filterPillListContainer && filterPillListContainer.children.length > 0; 4191 var selectedFiltersExist = event.detail > 0; 4192 if (filterPillsExist || selectedFiltersExist) { 4193 clearAllElement === null || clearAllElement === void 0 ? void 0 : clearAllElement.classList.remove("hidden"); 4194 } 4195 else { 4196 clearAllElement === null || clearAllElement === void 0 ? void 0 : clearAllElement.classList.add("hidden"); 4197 } 4198 } 4199 // Make the clear all button active by default if there's a query string 4200 setInitialVisibility(clearAllElement) { 4201 const noFiltersEl = document.querySelector("#no-filters-text"); 4202 if (noFiltersEl) { 4203 clearAllElement === null || clearAllElement === void 0 ? void 0 : clearAllElement.classList.add("hidden"); 4204 } 4205 } 4206} 4207 4208;// ./src/components/searchResultsPage/searchFilters/filterPanel/panelToggle.ts 4209class FilterPanelToggle { 4210 static Toggle(element) { 4211 var _a; 4212 const panelContentSlideinClass = "panel__content--slide-in"; 4213 const panelExpandedClass = "panel--expanded"; 4214 const panelExpandedParentClass = "filter-expanded"; 4215 const displayNoneClass = "no-display"; 4216 const activeButton = element; 4217 const activePanel = activeButton.closest(".panel"); 4218 const panelParent = activeButton.closest("#filter-panels"); 4219 const filterPanelContentButton = activePanel.querySelector(".panel__content-btn"); 4220 const filterPanelToggleButton = activePanel.querySelector(".panel-toggle__label-btn"); 4221 const activePanelContent = activePanel.querySelector(".panel__content"); 4222 activePanel.classList.toggle(panelExpandedClass); 4223 (_a = panelParent === null || panelParent === void 0 ? void 0 : panelParent.classList) === null || _a === void 0 ? void 0 : _a.toggle(panelExpandedParentClass); 4224 activePanelContent.classList.toggle(panelContentSlideinClass); 4225 // There are two panel buttons - hide the one that is not visible 4226 filterPanelToggleButton.classList.toggle(displayNoneClass); 4227 filterPanelContentButton.classList.toggle(displayNoneClass); 4228 activePanel.parentElement.scrollTo({ top: 0, behavior: "smooth" }); 4229 } 4230} 4231 4232;// ./src/components/searchResultsPage/searchFilters/filterPanel/makeFilter.ts 4233 4234class MakeFilterPanel { 4235 constructor() { 4236 this._makes = []; 4237 this.makeModelNavElement = document.querySelector("#collapse-options-make-expanded #model-btn"); 4238 this.addMakeFilteringEventHandler("click"); 4239 this.setupMakeModelNavigation(); 4240 } 4241 addMakeFilteringEventHandler(clickEvent) { 4242 const searchParameters = new URLSearchParams(window.location.search); 4243 //handle case sensitivity issues in the param name 4244 const caseInsensitiveParams = new URLSearchParams(); 4245 for (const [name, value] of searchParameters) { 4246 caseInsensitiveParams.append(name.toLowerCase(), value); 4247 } 4248 if (caseInsensitiveParams.has("make")) { 4249 const rawMakeValue = caseInsensitiveParams.get("make"); 4250 if (rawMakeValue.indexOf(",")) { 4251 const splitMakes = rawMakeValue.split(",");
4252 splitMakes.forEach((x) => this._makes.push(x)); 4253 } 4254 else { 4255 this._makes.push(rawMakeValue); 4256 } 4257 this.toggleMakeModelNavElement(); 4258 this.hideElementsOnMakeFilterSelectionChange(); 4259 this.showElementsOnMakeFilterSelectionChange(); 4260 } 4261 const makeCheckboxes = Array.from(document.querySelectorAll('[data-make][type="checkbox"]')); 4262 const makeFilterPills = Array.from(document.querySelectorAll('button[data-key="Make"]')); 4263 const inputsWithMakeData = makeCheckboxes.concat(makeFilterPills); 4264 inputsWithMakeData.forEach((checkbox) => { 4265 checkbox.addEventListener(clickEvent, (event) => { 4266 this.updateMakesArray(event); 4267 if (this._makes.length === 0) { 4268 return this.resetOnEmptyMakesFilterSelection(); 4269 } 4270 this.uncheckMakeFilterInputsOnMakeDeselect(); 4271 this.collapseTrimPanelsOnMakeDeselect(); 4272 this.hideElementsOnMakeFilterSelectionChange(); 4273 this.showElementsOnMakeFilterSelectionChange(); 4274 }); 4275 }); 4276 } 4277 showElementsOnMakeFilterSelectionChange() { 4278 const targetsToShow = Array.from(document.querySelectorAll(`[data-make-filter]`)).filter((x) => this._makes.some((make) => x.dataset.makeFilter === make)); 4279 targetsToShow.forEach((targetElement) => { 4280 targetElement.classList.remove("hidden_filter"); 4281 }); 4282 } 4283 hideElementsOnMakeFilterSelectionChange() { 4284 const targetsToHide = Array.from(document.querySelectorAll(`[data-make-filter]`)).filter((x) => !this._makes.some((make) => x.dataset.makeFilter === make)); 4285 targetsToHide.forEach((targetElement) => { 4286 targetElement.classList.add("hidden_filter"); 4287 }); 4288 } 4289 updateMakesArray(event) { 4290 const checkbox = event.target; 4291 const checkboxMake = checkbox.dataset.make; 4292 const optionChecked = checkbox.checked; 4293 if (optionChecked) { 4294 this._makes.push(checkboxMake); 4295 } 4296 else { 4297 this._makes.splice(this._makes.indexOf(checkboxMake), 1); 4298 } 4299 this.toggleMakeModelNavElement(); 4300 } 4301 resetOnEmptyMakesFilterSelection() { 4302 Array.from(document.querySelectorAll(`[data-make-filter]`)).forEach((targetElement) => { 4303 targetElement.classList.remove("hidden_filter"); 4304 }); 4305 this.uncheckMakeFilterInputsOnMakeDeselect(); 4306 this.collapseTrimPanelsOnMakeDeselect(); 4307 return; 4308 } 4309 collapseTrimPanelsOnMakeDeselect() { 4310 const targetsToCollapse = Array.from(document.querySelectorAll("[data-make-filter-collapse]")).filter((x) => !this._makes.some((make) => x.dataset.makeFilterCollapse === make)); 4311 targetsToCollapse.forEach((x) => { 4312 x.classList.remove("in"); 4313 }); 4314 } 4315 uncheckMakeFilterInputsOnMakeDeselect() { 4316 const targetsToUncheck = Array.from(document.querySelectorAll(`[data-make-filter-input]:checked`)).filter((x) => !this._makes.some((make) => x.dataset.makeFilterInput === make)); 4317 targetsToUncheck.forEach((targetElement) => { 4318 targetElement.checked = false; 4319 targetElement.dispatchEvent(new Event("change")); 4320 document.dispatchEvent(new Event("filter-number-change")); 4321 }); 4322 } 4323 setupMakeModelNavigation() { 4324 if (!this.makeModelNavElement) { 4325 return; 4326 } 4327 const makeCollapse = document.getElementById("collapse-options-make"); 4328 const modelCollapse = document.getElementById("collapse-options-model"); 4329 if (!makeCollapse) { 4330 return; 4331 } 4332 if (!modelCollapse) { 4333 this.makeModelNavElement.hidden = true; 4334 this.makeModelNavElement.classList.add("hidden"); 4335 return; 4336 } 4337 this.makeModelNavElement.addEventListener("click", () => { 4338 FilterPanelToggle.Toggle(makeCollapse); 4339 FilterPanelToggle.Toggle(modelCollapse); 4340 }); 4341 } 4342 toggleMakeModelNavElement() { 4343 if (!this.makeModelNavElement) { 4344 return; 4345 } 4346 if (this._makes.length > 0) { 4347 this.makeModelNavElement.removeAttribute("disabled"); 4348 } 4349 else { 4350 this.makeModelNavElement.setAttribute("disabled", "true"); 4351 } 4352 } 4353} 4354 4355;// ./src/components/searchResultsPage/searchFilters/filterPanel/modelTrimFilterPanel.ts 4356class ModelTrimFilterPanel {
4357 constructor() { 4358 this.initialize(); 4359 } 4360 initialize() { 4361 this.addModelTrimFilterEventListeners(); 4362 } 4363 showAllTrims(collapseModelId) { 4364 var _a; 4365 const trimsList = document.getElementById(collapseModelId); 4366 Array.from((_a = trimsList === null || trimsList === void 0 ? void 0 : trimsList.firstElementChild) === null || _a === void 0 ? void 0 : _a.children).forEach(trim => { 4367 trim.removeAttribute("hidden"); 4368 }); 4369 } 4370 addModelTrimFilterEventListeners() { 4371 const filterPanel = document.getElementById("filterPanel"); 4372 const allTrimsCheckboxes = filterPanel.querySelectorAll("[id^=filter][id$=AllTrims]"); 4373 const trimCheckboxes = filterPanel.querySelectorAll("[data-filter-type=trim]"); 4374 const modelCheckboxes = filterPanel.querySelectorAll("[data-filter-type=model]"); 4375 modelCheckboxes.forEach((modelCheckbox) => { 4376 modelCheckbox.addEventListener("change", (event) => { 4377 const target = event.target; 4378 this.toggleAllTrimsCheckboxOnModelCheck(target, filterPanel); 4379 }); 4380 }); 4381 trimCheckboxes.forEach((trimCheckbox) => { 4382 trimCheckbox.addEventListener("change", (event) => { 4383 const target = event.target; 4384 this.toggleOffAllTrimsCheckbox(target); 4385 if (!target.checked) { 4386 this.getTrimCheckStatus(target); 4387 } 4388 }); 4389 }); 4390 allTrimsCheckboxes.forEach((checkbox) => { 4391 checkbox.addEventListener("change", (event) => { 4392 const target = event.target; 4393 if (target.checked) { 4394 checkbox.classList.remove("dash"); 4395 target.disabled = true; 4396 this.toggleOffAllModelTrims(target); 4397 } 4398 }); 4399 }); 4400 } 4401 toggleAllTrimsCheckboxOnModelCheck(element, location) { 4402 const allTrimsCheckbox = element.parentElement.nextElementSibling.querySelector("[id$=AllTrims]"); 4403 if (allTrimsCheckbox) { 4404 allTrimsCheckbox.checked = element.checked; 4405 allTrimsCheckbox.dispatchEvent(new Event("change")); 4406 if (element.checked) { 4407 allTrimsCheckbox.classList.remove("dash"); 4408 } 4409 if (allTrimsCheckbox.checked) { 4410 allTrimsCheckbox.disabled = true; 4411 } 4412 location.dispatchEvent(new Event("filter-number-change")); 4413 return; 4414 } 4415 } 4416 toggleOffAllTrimsCheckbox(element) { 4417 const trimCheckboxesContainer = element.closest(".collapse-options-sub"); 4418 if (trimCheckboxesContainer) { 4419 const allTrimsCheckbox = trimCheckboxesContainer.querySelector("[id$=AllTrims]"); 4420 if (allTrimsCheckbox && element.checked) { 4421 allTrimsCheckbox.disabled = false; 4422 allTrimsCheckbox.checked = false; 4423 allTrimsCheckbox.classList.add("dash"); 4424 allTrimsCheckbox.dispatchEvent(new Event("change")); 4425 } 4426 } 4427 } 4428 // If the user unchecks all the trims re-check the "All Trims" checkbox 4429 getTrimCheckStatus(element) { 4430 const trimsContainer = element.closest(".collapse-options-sub"); 4431 const allTrimCheckboxes = Array.from(trimsContainer.querySelectorAll("[data-filter-type=trim]")); 4432 const allTrimsCheckbox = trimsContainer.querySelector("[id$=AllTrims]"); 4433 let anyCheckBoxesChecked = allTrimCheckboxes.some((checkbox) => { 4434 return checkbox.checked === true; 4435 }); 4436 if (anyCheckBoxesChecked) { 4437 return; 4438 } 4439 if (allTrimsCheckbox) { 4440 allTrimsCheckbox.checked = true; 4441 allTrimsCheckbox.classList.remove("dash"); 4442 allTrimsCheckbox.disabled = true; 4443 } 4444 trimsContainer.dispatchEvent(new Event("filter-number-change")); 4445 } 4446 toggleOffAllModelTrims(element) { 4447 const trimCheckboxesContainer = element.closest(".collapse-options-sub"); 4448 if (trimCheckboxesContainer) { 4449 const checkedModelTrims = trimCheckboxesContainer.querySelectorAll("input:checked:not([id$=AllTrims])");
4450 checkedModelTrims.forEach((checkbox) => { 4451 checkbox.checked = false; 4452 trimCheckboxesContainer.dispatchEvent(new Event("filter-number-change")); 4453 }); 4454 } 4455 } 4456} 4457 4458;// ./src/components/searchResultsPage/searchFilters/selectedFilters/selectedFilters.ts 4459class SelectedFilters { 4460 constructor() { 4461 SelectedFilters._maxHeight = 120; 4462 this._pillListElem = document.querySelector('[data-pill-list]'); 4463 if (this._pillListElem) { 4464 const isMobile = this.filterPillsInit(); 4465 if (isMobile) { 4466 this.moreFiltersMobile(); 4467 } 4468 else { 4469 this.moreFiltersSetup(); 4470 } 4471 this.addViewportResizeListener(); 4472 } 4473 } 4474 moreFiltersSetup() { 4475 const pillListElem = document.querySelector('[data-pill-list]'); 4476 const computedStyle = getComputedStyle(pillListElem); 4477 const pillListHeight = (pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.clientHeight) - (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom)); 4478 if (pillListHeight === SelectedFilters._currentPillsListHeight && SelectedFilters._areFiltersHidden) { 4479 return; 4480 } 4481 var hiddenFilterPills = this.moreFiltersHide(pillListElem, pillListHeight); 4482 this.updateHiddenFiltersCount(hiddenFilterPills[1]); 4483 let viewMoreElem = document.querySelector("[data-pill-hidden]"); 4484 if (viewMoreElem && SelectedFilters._areFiltersHidden) { 4485 viewMoreElem.classList.remove("hidden"); 4486 viewMoreElem.dataset.pillHidden = '0'; 4487 } 4488 else if (viewMoreElem) { 4489 viewMoreElem.dataset.pillHidden = '1'; 4490 } 4491 this.moreFiltersOnClick(viewMoreElem.querySelector("button"), hiddenFilterPills[0], pillListElem); 4492 } 4493 moreFiltersHide(pillListElem, pillListHeight) { 4494 let indexToHide = -1; 4495 if (pillListHeight > SelectedFilters._maxHeight) { 4496 for (let i = 0; i < (pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.childElementCount); i++) { 4497 const elem = pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.children.item(i); 4498 // Note that the "view more" pill is included in this list of children. We don't want to count that pill in our calculations. 4499 if (elem.offsetTop >= SelectedFilters._maxHeight && i !== (pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.childElementCount) - 1) { 4500 indexToHide = i - 1; 4501 break; 4502 } 4503 } 4504 } 4505 SelectedFilters._currentPillsListHeight = pillListHeight; 4506 SelectedFilters._areFiltersHidden = !(indexToHide === -1); 4507 let hiddenFiltersCount = 0; 4508 let hiddenFilterPills = []; 4509 if (SelectedFilters._areFiltersHidden) { 4510 for (let i = indexToHide; i < (pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.childElementCount); i++) { 4511 (pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.children.item(i)).classList.add("hidden"); 4512 hiddenFiltersCount++; 4513 hiddenFilterPills.push(pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.children.item(i)); 4514 } 4515 } 4516 pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.classList.add("collapsed"); 4517 var hiddenFilterPillsTuple = [hiddenFilterPills, hiddenFiltersCount - 1]; 4518 return hiddenFilterPillsTuple; 4519 } 4520 updateHiddenFiltersCount(count) { 4521 const countSpan = document.querySelector("[data-minimized-filters-count='0']"); 4522 countSpan.innerHTML = count.toString(); 4523 } 4524 moreFiltersOnClick(viewMoreBtn, hiddenFilterPills, pillListElem) { 4525 const clickEvent = 'click'; 4526 viewMoreBtn.addEventListener(clickEvent, event => { 4527 pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.classList.replace("collapsed", "expanded");
4528 hiddenFilterPills.forEach(pill => { 4529 pill.classList.remove("hidden"); 4530 }); 4531 const viewMoreElem = viewMoreBtn.closest("li"); 4532 viewMoreElem.classList.add("hidden"); 4533 this.addHoverTextToTruncatedFilterPills(); 4534 }); 4535 } 4536 addHoverTextToTruncatedFilterPills() { 4537 var filterPillElements = document.querySelectorAll(".srp-selected-filters--pill-list .pill-list__item-text"); 4538 filterPillElements.forEach((filterPillElement) => { 4539 if (filterPillElement.offsetWidth < filterPillElement.scrollWidth) { 4540 filterPillElement.setAttribute('title', filterPillElement.textContent); 4541 } 4542 }); 4543 } 4544 moreFiltersMobile() { 4545 const pillListElem = document.querySelector('[data-pill-list]'); 4546 var hiddenPills = pillListElem.querySelectorAll(".hidden"); 4547 hiddenPills.forEach(elem => { 4548 elem.classList.remove("hidden"); 4549 }); 4550 let viewMoreElem = document.querySelector("[data-pill-hidden]"); 4551 viewMoreElem.dataset.pillHidden = "1"; 4552 SelectedFilters._areFiltersHidden = false; 4553 } 4554 addViewportResizeListener() { 4555 // Change pill list styling when screen changes between mobile and desktop 4556 window.addEventListener('resize', () => { 4557 const isMobile = SelectedFilters.prototype.filterPillsInit(); 4558 if (isMobile) { 4559 SelectedFilters.prototype.moreFiltersMobile(); 4560 } 4561 else if (!SelectedFilters._areFiltersHidden) { 4562 SelectedFilters.prototype.moreFiltersSetup(); 4563 } 4564 }); 4565 } 4566 filterPillsInit() { 4567 const pillListElem = document.querySelector('[data-pill-list]'); 4568 if (window.innerWidth > 991) { 4569 pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.classList.remove("mobile"); 4570 return false; 4571 } 4572 else { 4573 pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.classList.remove("collapsed"); 4574 pillListElem === null || pillListElem === void 0 ? void 0 : pillListElem.classList.add("mobile"); 4575 return true; 4576 } 4577 } 4578} 4579 4580;// ./src/components/inventorysearch/iInventoryWasabi.ts 4581 4582 4583// EXTERNAL MODULE: ./src/services/toggles/iToggleService.ts 4584var iToggleService = __webpack_require__(4478); 4585;// ./src/components/searchResultsPage/searchFilters/filterPanel/filterPanel.ts 4586var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 4587 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4588 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 4589 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 4590 return c > 3 && r && Object.defineProperty(target, key, r), r; 4591}; 4592var __metadata = (undefined && undefined.__metadata) || function (k, v) { 4593 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 4594}; 4595var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 4596 return function (target, key) { decorator(target, key, paramIndex); } 4597}; 4598var _a, _b; 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610let FilterPanel = class FilterPanel { 4611 constructor(InventoryWasabi, toggleService) { 4612 this._makes = []; 4613 this.isIlp = () => { 4614 const isIlp = window.location.pathname.toLowerCase().indexOf("inventorylineup.aspx") > -1; 4615 return isIlp; 4616 }; 4617 this.inventoryWasabi = InventoryWasabi; 4618 this._toggleService = toggleService; 4619 } 4620 initialize() { 4621 let filterPanelContainer; 4622 filterPanelContainer = !this.isIlp() ? document.querySelector("#sephora_filter") : document.querySelector("#srp_filter"); 4623 //NOTE: Order is important because of custom event listeners and dom structure. 4624 // The Dependency chain is a train wreck and needs to be cleaned up 4625 // - InventoryWasabi 4626 // - FilterPanelHeader 4627 // - FilterState 4628 //This is leftover from conversion to wasabi-mod. This class has a mix of filter and non-filter stuff. 4629 // The filter items should be split out and merged into this class 4630 this.inventoryWasabi.initialize(); 4631 // We might not have a filter panel at all since it can be hidden. If we don't have a panel 4632 // then don't run the remainder of these items to save some cycles. 4633 if (!filterPanelContainer) { 4634 return; 4635 } 4636 if (this.isIlp()) { 4637 new FilterPanelHeader(); 4638 } 4639 new SearchFilterButton(); 4640 const filtersElem = document.querySelector("#filter-panels"); 4641 if (filtersElem) { 4642 this._hideableScrollbarFilterV2_Panels = new hideableScrollbar/* HideableScrollbar */.t(filtersElem); 4643 } 4644 if (this.isIlp()) { 4645 const filterHeaderElem = document.querySelector(".filter-header--scroll"); 4646 if (filterHeaderElem) { 4647 this._hideableScrollbarFilterV2_Header = new hideableScrollbar/* HideableScrollbar */.t(filterHeaderElem); 4648 } 4649 this._hideableScrollbarFilterV2_PanelContents = []; 4650 const panelContentElems = filtersElem === null || filtersElem === void 0 ? void 0 : filtersElem.querySelectorAll('.panel__content'); 4651 panelContentElems === null || panelContentElems === void 0 ? void 0 : panelContentElems.forEac
4651h(panelContentElem => { 4652 var _a; 4653 (_a = this._hideableScrollbarFilterV2_PanelContents) === null || _a === void 0 ? void 0 : _a.push(new hideableScrollbar/* HideableScrollbar */.t(panelContentElem)); 4654 }); 4655 this._selectedFilters = new SelectedFilters(); 4656 } 4657 else { 4658 this.addFilterPanelResizeObserver(filtersElem); 4659 } 4660 this.addEventHandlers(filterPanelContainer); 4661 } 4662 addEventHandlers(filterPanelContainer) { 4663 if (this.isIlp()) { 4664 new MakeFilterPanel(); 4665 } 4666 const modelTrimFilterPanel = new ModelTrimFilterPanel(); 4667 const clickEvent = "click"; 4668 if (this.isIlp()) { 4669 const filterPanelsList = filterPanelContainer.querySelectorAll(".panel-toggle__label-btn, .panel__content-btn"); 4670 const filterPanels = Array.from(filterPanelsList); 4671 filterPanels === null || filterPanels === void 0 ? void 0 : filterPanels.forEach((panel) => { 4672 panel.addEventListener(clickEvent, (event) => { 4673 const element = event.currentTarget; 4674 FilterPanelToggle.Toggle(element); 4675 }); 4676 }); 4677 } 4678 const vehicleStageFilters = Array.from(document.querySelectorAll(`[data-vehicle-stage-filter="true"]`)); 4679 vehicleStageFilters === null || vehicleStageFilters === void 0 ? void 0 : vehicleStageFilters.forEach((filter) => { 4680 if (!filter.dataset.filterPanelEventAttached) { 4681 filter.addEventListener("change", (event) => { 4682 const elem = event.currentTarget; 4683 this.limitVehicleStageCheckboxes(elem, vehicleStageFilters); 4684 }); 4685 filter.dataset.filterPanelEventAttached = "true"; 4686 } 4687 }); 4688 if (this.isIlp()) { 4689 const allTrimsBtns = Array.from(document.querySelectorAll("[data-collapse-model-id]")); 4690 allTrimsBtns === null || allTrimsBtns === void 0 ? void 0 : allTrimsBtns.forEach((btn) => { 4691 btn.addEventListener(clickEvent, (event) => { 4692 var _a; 4693 (_a = btn.firstElementChild) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => { 4694 modelTrimFilterPanel.showAllTrims(btn.dataset.collapseModelId); 4695 btn.setAttribute("hidden", ""); 4696 }); 4697 });
4698 btn.dataset.filterPanelEventAttached = "true"; 4699 }); 4700 } 4701 const filterPanel = document.querySelector("#filter-panels"); 4702 if (filterPanel && !filterPanel.dataset.filterPanelEventAttached) { 4703 filterPanel.addEventListener("scroll", () => { 4704 if (document.querySelectorAll(".panel__content--slide-in").length > 0) { 4705 filterPanel.scrollTo(0, 0); 4706 } 4707 }); 4708 filterPanel.dataset.filterPanelEventAttached = "true"; 4709 } 4710 const filterCheckboxes = document.querySelectorAll('.panel__content input[type="checkbox"]'); 4711 if (filterPanel && !filterPanel.dataset.filterPanelEventAttached) { 4712 filterCheckboxes === null || filterCheckboxes === void 0 ? void 0 : filterCheckboxes.forEach((checkbox) => { 4713 checkbox.addEventListener("click", () => { 4714 filterPanel.scrollTo(0, 0); 4715 }); 4716 checkbox.dataset.filterPanelEventAttached = "true"; 4717 }); 4718 } 4719 } 4720 //vehicle staging checkboxes only supports one of the checkboxes being checked 4721 //or we'll get no results because the filters are AND filters 4722 limitVehicleStageCheckboxes(currentFilter, vehicleStageFilters) { 4723 const currentFilterIsChecked = currentFilter.checked; 4724 vehicleStageFilters 4725 .forEach((filter) => { 4726 filter.checked = false; 4727 }); 4728 currentFilter.checked = currentFilterIsChecked; 4729 } 4730 addFilterPanelResizeObserver(filterPanelContainer) { 4731 const observer = new ResizeObserver((entries) => { 4732 entries.forEach((entry) => { 4733 const panelWidth = entry.borderBoxSize[0].inlineSize; 4734 filterPanelContainer.style.setProperty('--filter-panel-width', `${panelWidth}px`); 4735 }); 4736 }); 4737 if (filterPanelContainer) { 4738 observer.observe(filterPanelContainer); 4739 } 4740 } 4741}; 4742FilterPanel = __decorate([ 4743 (0,inversify/* injectable */._G)(), 4744 __param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IInventoryWasabi)), 4745 __param(1, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 4746 __metadata("design:paramtypes", [typeof (_a = typeof iInventoryWasabi_namespaceObject.IInventoryWasabi !== "undefined" && iInventoryWasabi_namespaceObject.IInventoryWasabi) === "function" ? _a : Object, typeof (_b = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? _b : Object]) 4747], FilterPanel); 4748 4749 4750;// ./src/components/inventorysearch/iWasabiFilterState.ts 4751 4752 4753// EXTERNAL MODULE: ./src/utilities/jQueryHelper/jQueryHelper.ts 4754var jQueryHelper = __webpack_require__(2781); 4755// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/customEvents.ts 4756var customEvents = __webpack_require__(9600); 4757;// ./src/components/inventorysearch/inventory-wasabi-mod.ts 4758var inventory_wasabi_mod_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 4759 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4760 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 4761 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 4762 return c > 3 && r && Object.defineProperty(target, key, r), r; 4763}; 4764var inventory_wasabi_mod_metadata = (undefined && undefined.__metadata) || function (k, v) { 4765 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 4766}; 4767var inventory_wasabi_mod_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 4768 return function (target, key) { decorator(target, key, paramIndex); } 4769}; 4770var inventory_wasabi_mod_a, inventory_wasabi_mod_b; 4771 4772 4773 4774 4775 4776 4777class PopoverOpts { 4778 constructor(html, trigger, container, animation, placement) { 4779 this.html = html; 4780 this.trigger = trigger; 4781 this.container = container; 4782 this.animation = animation; 4783 this.placement = placement; 4784 } 4785} 4786let InventoryWasabi = class InventoryWasabi { 4787 constructor(wasabiFilterState, toggleService) { 4788 this.isIlp = () => { 4789 const isIlp = window.location.pathname.toLowerCase().indexOf("inventorylineup.aspx") > -1; 4790 return isIlp; 4791 }; 4792 this.toggleService = toggleService; 4793 this.wasabiFilterState = wasabiFilterState; 4794 } 4795 initialize() { 4796 if (this.isIlp()) { 4797 this.wasabiFilterState.initialize(); 4798 } 4799 // If on the lineup page, these variables will not have been defined 4800 window.usingUwmTpi = window.usingUwmTpi || false; 4801 window.vehicleType = window.vehicleType || "new"; 4802 if (!String.prototype.includes) { 4803 String.prototype.includes = function () { 4804 'use strict'; 4805 return String.prototype.indexOf.apply(this, arguments) !== -1; 4806 }; 4807 } 4808 jQuery('[data-toggle=offcanvas]').click(function () { 4809 jQuery('.row-offcanvas').toggleClass('active'); 4810 jQuery("#srpRefineSearch_Filters input:first").focus(); 4811 if (jQuery('.row-offcanvas').hasClass('active')) 4812 jQuery('.contentWrapper .container').css('overflow-x', 'hidden'); 4813 }); 4814 if (!window.usingUwmTpi) { 4815 if (!this.isIlp()) { 4816 document.addEventListener(customEvents/* CosmosSrpCustomEvents */.A.VehicleLoadEnd, () => { 4817 this.activateVideos(); 4818 }); 4819 } 4820 else { 4821 this.activateVideos(); 4822 } 4823 } 4824 jQuery('body').on('show.bs.modal', function (e) { 4825 //@ts-ignore 4826 var relatedTarget = e.relatedTarget; 4827 if (relatedTarget) { 4828 jQuery('iframe#rebateIframe').removeAttr('src'); 4829 jQuery('iframe#rebateIframe').attr("src", relatedTarget.getAttribute('data-iframe-src')); 4830 } 4831 }); 4832 jQuery('body').on('hidden.bs.modal', '.page-modal', function () { 4833 jQuery(this).find('iframe').removeAttr('src'); 4834 jQuery(this).removeData('bs.modal'); 4835 }); 4836 if (this.isIlp()) { 4837 var openSearchButton = document.getElementById("opensearch-submit"); 4838 if (openSearchButton) { 4839 openSearchButton.addEventListener("click", () => { 4840 this.refineSearch(true); 4841 }); 4842 } 4843 const filterSearchButtons = document.querySelectorAll('[data-filter-search-btn]'); 4844 filterSearchButtons === null || filterSearchButtons === void 0 ? void 0 : filterSearchButtons.forEach(button => { 4845 const buttonElement = button; 4846 buttonElement === null || buttonElement === void 0 ? void 0 : buttonElement.addEventListener('click', () => { 4847 this.refineSearch(false); 4848 }); 4849 }); 4850 }
4851 jQuery('.modal-link').click(function (e) { 4852 e.preventDefault(); 4853 var modal = jQuery('#rebateModal'); 4854 modal 4855 .on('show.bs.modal', function () { 4856 jQuery('iframe#rebateIframe').removeAttr('src'); 4857 const currentTarget = e.currentTarget; 4858 jQuery('iframe#rebateIframe').attr("src", currentTarget.href); 4859 }) 4860 .modal(); 4861 }); 4862 // DEV-4627 4863 jQuery(".commentsExpand").click(function (e) { 4864 jQuery(this).prev().toggleClass("vehicleCommentsCollapsed"); 4865 if (jQuery(this).find("i").hasClass("fa-plus")) { 4866 jQuery(this).find("i").removeClass("fa-plus").addClass("fa-minus"); 4867 } 4868 else { 4869 jQuery(this).find("i").removeClass("fa-minus").addClass("fa-plus"); 4870 } 4871 }); 4872 //var openDetailsNew is defined in UCSearchResultsBlock.cs 4873 $('div[rel]').each(function () { 4874 $(this).click(function () { 4875 if (window.openDetailsNew) 4876 window.open(jQuery(this).attr('rel')); 4877 else 4878 location.href = jQuery(this).attr('rel'); 4879 }); 4880 }); 4881 $('div ul[rel]').each(function () { 4882 $(this).click(function () { 4883 if (window.openDetailsNew) 4884 window.open(jQuery(this).attr('rel')); 4885 else 4886 location.href = jQuery(this).attr('rel'); 4887 }); 4888 }); 4889 $('span[data-toggle="popover"],a:not([role="button"])[data-toggle="popover"]').each(function () { 4890 var vin = $(this).closest('.vehicleCard, .vehicle-card').attr('data-vin'); 4891 var containerSelector = '[data-vin="' + vin + '"]'; 4892 if (window.matchMedia("(max-width: 767px)").matches) { 4893 const opts = new PopoverOpts(true, "click", "body", false, this.dataset.placement || 'bottom'); 4894 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(this, opts); 4895 } 4896 else { 4897 var _this = this; 4898 const opts = new PopoverOpts(true, "manual", "body", false, this.dataset.placement || 'auto left'); 4899 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(this, opts) 4900 .on("mouseenter", function () { 4901 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(_this, "show"); 4902 $(containerSelector + ' .popover').on("mouseleave", function () { 4903 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(_this, 'hide'); 4904 }); 4905 const popoverElems = document.getElementsByClassName("popover"); 4906 Array.from(popoverElems).forEach(elem => { 4907 elem.addEventListener('mouseleave', (event) => { 4908 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(_this, 'hide'); 4909 }); 4910 }); 4911 }).on("mouseleave", function () { 4912 setTimeout(function () { 4913 if (!$(".popover:hover").length) { 4914 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(_this, "hide"); 4915 } 4916 }, 5); 4917 }); 4918 } 4919 }); 4920 $('body').on("shown.bs.popover", function () { 4921 $('.modal-link').click(function (e) { 4922 e.preventDefault(); 4923 var modal = jQuery('#rebateModal'); 4924 modal 4925 .on('show.bs.modal', function () { 4926 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover('[aria-describedby]', 'hide'); 4927 $('iframe#rebateIframe').removeAttr('src'); 4928 const currentTarget = e.currentTarget; 4929 $('iframe#rebateIframe').attr("src", currentTarget.href); 4930 }) 4931 .modal(); 4932 }); 4933 }); 4934 jQuery("#closeSRP_refine").on('click touch', this.closeRefineSearch); 4935 jQuery(document).keyup((e) => { 4936 if (e.key === "Escape") { 4937 this.closeRefineSearch(); 4938 } 4939 }); 4940 var firstFocusableElement = jQuery("#closeSRP_refine"); 4941 var lastFocusableElement = jQuery("#btnFilter"); 4942 lastFocusableElement.keydown(function (e) { 4943 if (e.key === "Tab" && !e.shiftKey) { 4944 e.preventDefault(); 4945 firstFocusableElement.focus(); 4946 } 4947 }); 4948 firstFocusableElement.keydown(function (e) { 4949 if (e.key === "Tab" && e.shiftKey) { 4950 e.preventDefault(); 4951 lastFocusableElement.focus(); 4952 } 4953 }); 4954 $('a[data-toggle="offcanvas"].stat-search-toggle').on('click', function () { 4955 $('#srpRefineSearch_Filters input').attr('readonly', 'readonly'); 4956 setTimeout(function () { 4957 $('#srpRefineSearch_Filters input').removeAttr('readonly'); 4958 $('#srpRefineSearch_Filters input').blur(); 4959 }, 100); 4960 }); 4961 } 4962 activateVideos() { 4963 var _a; 4964 (_a = document.querySelectorAll("[id^='videoBtn']")) === null || _a === void 0 ? void 0 : _a.forEach((elem) => { 4965 const src = elem.getAttribute("show").replace(/["']/g, ""); 4966 this.ActivateMagnific(jQuery(elem), 'video', src); 4967 }); 4968 } 4969 /*********************/ 4970 /* BEGIN ILP Methods */ 4971 refineSearch(newSearch) { 4972 //Fetch all the key/value pairs that encapsulate the querystring parameters for a search 4973 var appliedFilters = () => { 4974 const filters = this.wasabiFilterState.getAppliedFilters(); 4975 this.wasabiFilterState.triggerDealerOnTrackEvents(filters); 4976 return filters; 4977 }; 4978 var removedFilters = () => { 4979 const filters = this.wasabiFilterState.getRemovedFilters(); 4980 return filters; 4981 }; 4982 // DEV-14659 - Changing location.href will not reload the window if there is a fragment 4983 // If there is a # then remove that portion of the URL starting at the # (just need to take care of fragments) 4984 var currentUrl = location.href; 4985 if (currentUrl.includes("#")) { 4986 currentUrl = currentUrl.substring(0, currentUrl.indexOf("#")); 4987 } 4988 var updatedUrl = this.updateQueryStringParameters(currentUrl, appliedFilters(), removedFilters(), newSearch); 4989 location.href = updatedUrl; 4990 } 4991 updateQueryStringParameters(uri, addValues, removeValues, newSearch) { 4992 //order of operations is important, remove values first 4993 jQuery.each(removeValues, (key, value) => {
4994 const keyLowerCase = key.toString().toLowerCase(); 4995 if (keyLowerCase.startsWith("model") || keyLowerCase == "trim") { 4996 uri = this.removeQueryStringParameter(uri, key); 4997 key = "ModelAndTrim"; 4998 } 4999 uri = this.removeQueryStringParameter(uri, key); 5000 }); 5001 //CONPLAT-1833 5002 //always clear open search explicitly, or it won't get removed 5003 uri = this.removeQueryStringParameter(uri, "q"); 5004 uri = this.removeQueryStringParameter(uri, "vehiclelocation"); 5005 //END CONPLAT-1833 5006 if (newSearch) { 5007 var newSearchQuery = addValues["q"]; 5008 if (newSearchQuery) { 5009 uri = this.updateQueryStringParameter(uri, "q", newSearchQuery); 5010 } 5011 } 5012 else { 5013 jQuery.each(addValues, (key, value) => { 5014 uri = this.updateQueryStringParameter(uri, key, value); 5015 }); 5016 } 5017 return (uri); 5018 } 5019 updateQueryStringParameter(uri, key, value) { 5020 var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); 5021 var separator = uri.indexOf('?') !== -1 ? "&" : "?"; 5022 if (uri.match(re)) { 5023 return uri.replace(re, '$1' + key + "=" + value + '$2'); 5024 } 5025 else { 5026 return (uri + separator + key + "=" + value).replace(/pt=\d+&?/i, ""); 5027 } 5028 } 5029 removeQueryStringParameter(uri, key) { 5030 var re = new RegExp("([?&])" + key + "\\d{0,3}=.*?(&|$)", 'i'); 5031 var match; 5032 while ((match = re.exec(uri)) !== null) { 5033 uri = uri.replace(match[0], !match[2] ? "" : match[1]); 5034 } 5035 return uri; 5036 } 5037 /* END ILP Methods */ 5038 /*********************/ 5039 ActivateMagnific(that, type, src) { 5040 if (window.magnificPopupLoaded) { 5041 this.ActivateMagnificInner(that, type, src); 5042 } 5043 else { 5044 document.addEventListener("MagnificPopupLoaded", () => { 5045 this.ActivateMagnificInner(that, type, src); 5046 }); 5047 } 5048 } 5049 ActivateMagnificInner(that, type, src) { 5050 if (src === '') { 5051 return; 5052 } 5053 switch (type) { 5054 case 'iframe': 5055 jQuery(that).magnificPopup({ 5056 type: 'iframe', 5057 midClick: true, 5058 items: { 5059 src: src 5060 } 5061 }); 5062 break; 5063 case 'special': 5064 jQuery(that).magnificPopup({ 5065 items: { 5066 type: 'iframe', 5067 src: src 5068 }, 5069 iframe: { 5070 markup: '<div class="mfp-iframe-scaler specialMagnific">' + 5071 '<div class="mfp-close"></div>' + 5072 '<iframe class="mfp-iframe" frameborder="0" allowfullscreen> </iframe>' + 5073 '</div>' 5074 }, 5075 callbacks: { 5076 open: () => { 5077 this.ResetTracker(); 5078 //var specialLinkTrackerEvent is defined in C# as a global that is expected to exist 5079 window.trackerHook(window.specialLinkTrackerEvent, 'click'); 5080 } 5081 } 5082 }); 5083 break; 5084 case 'video': 5085 jQuery(that).magnificPopup({ 5086 items: { 5087 type: 'iframe', 5088 midClick: true, 5089 src: src 5090 }, 5091 iframe: { 5092 markup: '<div class="mfp-iframe-scaler vehicleVidMagnific">' + 5093 '<div class="mfp-close"></div>' + 5094 '<iframe class="mfp-iframe" frameborder="0" allowfullscreen scrolling="no"> </iframe>' + 5095 '</div>' 5096 }, 5097 mainClass: "vehicleVidMagnificContainer" 5098 }); 5099 } 5100 } 5101 openWindowSticker(url) {
5102 const screen_width = window.screen.availWidth / 2; 5103 const left_point = window.parseInt(screen_width) - (500); 5104 const brochureWindow = window.open(url, "", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=1,resizable=yes,copyhistory=yes,width=1050,height=1500"); 5105 brochureWindow.moveTo(left_point, 0); 5106 } 5107 openFordWindowSticker(url) { 5108 var t3websiteCookie = (window.DealeronCookie.getItem('t3website') || ''); 5109 var guid = ''; 5110 if (t3websiteCookie != '') { 5111 var elements = t3websiteCookie.match(/<cookieguid>([^<]*)<\/cookieguid>/); 5112 if (elements.length > 1) { 5113 var cookieguid = elements[1]; 5114 if (cookieguid != null) { 5115 guid = cookieguid; 5116 } 5117 } 5118 } 5119 if (guid == '') { 5120 this.openWindowSticker(url); 5121 } 5122 else { 5123 this.openWindowSticker(url + "&cguid=" + guid); 5124 } 5125 } 5126 closeRefineSearch() { 5127 jQuery('.row-offcanvas-left').removeClass('active'); 5128 jQuery('.contentWrapper .container').css('overflow-x', 'visible'); 5129 jQuery("a[data-toggle='offcanvas']").focus(); 5130 } 5131 ResetTracker() { 5132 window.eventFired = 0; 5133 } 5134}; 5135InventoryWasabi = inventory_wasabi_mod_decorate([ 5136 (0,inversify/* injectable */._G)(), 5137 inventory_wasabi_mod_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IWasabiFilterState)), 5138 inventory_wasabi_mod_param(1, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 5139 inventory_wasabi_mod_metadata("design:paramtypes", [typeof (inventory_wasabi_mod_a = typeof iWasabiFilterState_namespaceObject.IWasabiFilterState !== "undefined" && iWasabiFilterState_namespaceObject.IWasabiFilterState) === "function" ? inventory_wasabi_mod_a : Object, typeof (inventory_wasabi_mod_b = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? inventory_wasabi_mod_b : Object]) 5140], InventoryWasabi); 5141 5142 5143// EXTERNAL MODULE: ./src/services/translations/iTranslationService.ts 5144var iTranslationService = __webpack_require__(3188); 5145;// ./src/components/inventorysearch/wasabiFilterState.ts 5146var wasabiFilterState_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 5147 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 5148 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5149 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 5150 return c > 3 && r && Object.defineProperty(target, key, r), r; 5151}; 5152var wasabiFilterState_metadata = (undefined && undefined.__metadata) || function (k, v) { 5153 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 5154}; 5155var wasabiFilterState_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 5156 return function (target, key) { decorator(target, key, paramIndex); } 5157}; 5158var wasabiFilterState_a; 5159//NOTE: Only used for InventoryLineup.aspx (ILP) 5160 5161 5162 5163 5164let WasabiFilterState = class WasabiFilterState { 5165 constructor(translationService) { 5166 this.handleUndo = () => { 5167 const savedQueryString = this.getSavedFilterState() || ""; 5168 localStorage.setItem("isFilterStateUndo", "true"); 5169 window.location.search = savedQueryString; 5170 }; 5171 this.isIlp = () => { 5172 const isIlp = window.location.pathname.toLowerCase().indexOf("inventorylineup.aspx") > -1; 5173 return isIlp; 5174 }; 5175 this.translationService = translationService; 5176 } 5177 getAppliedFilters() { 5178 //This is only used by ILP 5179 if (!this.isIlp()) { 5180 return; 5181 } 5182 const keyValues = {}; 5183 const modelTrims = {}; 5184 //Vehicle Properties Selector 5185 document.querySelectorAll("input[type=checkbox][id^=filter]:checked").forEach((element) => { 5186 if (element.name === "Model") { 5187 const model = element.value; 5188 const escapedModel = model.replace(/!/g, "%5C!") 5189 .replace(/:/g, "%5C:") 5190 .replace(/\+/g, "%2B") 5191 .replace(/\&/g, "%26"); 5192 if (!(model in modelTrims)) { 5193 modelTrims[escapedModel] = []; 5194 } 5195 } 5196 else if (element.name === "Trim") { 5197 const model = element.value.split(',')[0]; 5198 const escapedModel = model.replace(/!/g, "%5C!") 5199 .replace(/:/g, "%5C:") 5200 .replace(/\+/g, "%2B") 5201 .replace(/\&/g, "%26"); 5202 const trim = element.value.split(',')[1]; 5203 const escapedTrim = trim.replace(/!/g, "%5C!") 5204 .replace(/:/g, "%5C:") 5205 .replace(/\+/g, "%2B") 5206 .replace(/\&/g, "%26"); 5207 if (model in modelTrims) { 5208 modelTrims[escapedModel].push(escapedTrim); 5209 } 5210 else { 5211 modelTrims[escapedModel] = [escapedTrim]; 5212 } 5213 } 5214 else if (element.name !== "All-Trims") {
5215 const key = element.name; 5216 const value = encodeURIComponent(element.value); 5217 if (key in keyValues) { 5218 keyValues[key].push(value); 5219 } 5220 else { 5221 keyValues[key] = [value]; 5222 } 5223 } 5224 }); 5225 if (Object.keys(modelTrims).length) { 5226 const encodedModelTrims = []; 5227 for (const key in modelTrims) { 5228 if (modelTrims[key].length > 0) { 5229 encodedModelTrims.push(key + ":" + modelTrims[key].join(',')); 5230 } 5231 else { 5232 encodedModelTrims.push(key); 5233 } 5234 } 5235 keyValues["ModelAndTrim"] = encodedModelTrims.join('!'); 5236 } 5237 if ("cpotier" in keyValues) { 5238 delete keyValues["cpo"]; 5239 } 5240 this.handleRangeInputKeyValues(keyValues); 5241 const searchValet = document.querySelector("input[id^='opensearch-']"); 5242 if (searchValet && searchValet.value.trim() !== "") { 5243 keyValues["q"] = searchValet.value; 5244 } 5245 const zipCodeField = document.getElementById("search_valet_zip"); 5246 const distanceSelect = document.getElementsByClassName("distance-select")[0]; 5247 if (distanceSelect) { 5248 const distanceField = distanceSelect.querySelector(".custom-option.selected"); 5249 if (distanceField && (zipCodeField && zipCodeField.value !== "")) { 5250 const distance = distanceField.dataset.value.trim(); 5251 if (distance === "") { 5252 alert("Please select a distance."); 5253 distanceField.focus(); 5254 } 5255 //first 5 digits only 5256 const zipCode = zipCodeField.value.trim().split("-")[0]; 5257 keyValues["vehiclelocation"] = zipCode + "-" + distance; 5258 } 5259 } 5260 const makeModelNavElement = document.querySelector("#collapse-options-make-expanded #model-btn"); 5261 if (keyValues["make"]) { 5262 makeModelNavElement === null || makeModelNavElement === void 0 ? void 0 : makeModelNavElement.removeAttribute("disabled"); 5263 } 5264 else { 5265 makeModelNavElement === null || makeModelNavElement === void 0 ? void 0 : makeModelNavElement.setAttribute("disabled", "true"); 5266 } 5267 return keyValues; 5268 } 5269 //remove all checkboxes from the query string 5270 getRemovedFilters() { 5271 if (!this.isIlp()) { 5272 return; 5273 } 5274 var keyValues = {}; 5275 jQuery("input:checkbox[id^='filter']").each(function (i, e) { 5276 const checkbox = this; 5277 var key = checkbox.name; 5278 if (key.toLowerCase() == "model" || key.toLowerCase() == "trim") { 5279 key = "ModelAndTrim"; 5280 } 5281 var value = encodeURIComponent(checkbox.value); 5282 if (key in keyValues) { 5283 keyValues[key].push(value); 5284 } 5285 else { 5286 keyValues[key] = [value]; 5287 } 5288 }); 5289 this.handleRangeInputKeyValues(keyValues); 5290 return keyValues; 5291 } 5292 removeFilter(filterName, filterValue) { 5293 if (!this.isIlp()) { 5294 return; 5295 } 5296 if (filterValue.includes(" - ")) { 5297 if (filterName === "Mileage") { 5298 this.removeCheckboxFilter("Mileagerange", filterValue.replace(/\s/g, "")); 5299 } 5300 else { 5301 const filterRangeMin = document.querySelector(`input[name="${filterName.toLowerCase()}range"][data-min]`); 5302 const filterRangeMax = document.querySelector(`input[name="${filterName.toLowerCase()}range"][data-max]`); 5303 filterRangeMin.value = filterRangeMin.dataset.minValue; 5304 filterRangeMax.value = filterRangeMax.dataset.maxValue; 5305 } 5306 } 5307 else { 5308 this.removeCheckboxFilter(filterName, filterValue); 5309 } 5310 } 5311 removeCheckboxFilter(filterName, filterValue) { 5312 var _a; 5313 if (!this.isIlp()) { 5314 return; 5315 } 5316 const filterCheckbox = document.querySelector(`input[name="${filterName}"][value="${filterValue}"]`); 5317 if (filterCheckbox) { 5318 filterCheckbox.checked = false;
5319 filterCheckbox.parentElement.classList.remove("tile_selected"); 5320 } 5321 if (filterName === "Model") { 5322 const allTrimsCheckbox = filterCheckbox.parentElement.nextElementSibling.querySelector("[id$=AllTrims]"); 5323 if (allTrimsCheckbox) { 5324 allTrimsCheckbox.checked = false; 5325 allTrimsCheckbox.disabled = true; 5326 allTrimsCheckbox.dispatchEvent(new Event("change")); 5327 (_a = document.getElementById("filterPanel")) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new Event("filter-number-change")); 5328 } 5329 jQueryHelper/* JQueryHelper */.$.SafeApplyCollapse(`[id^=collapse-options-model-${filterValue}-]`, 'hide'); 5330 } 5331 else if (filterName === "ModelAndTrim") { 5332 const modelTrimSplit = filterValue.split(": "); 5333 const trimCheckboxFilter = document.querySelector(`[id='filter${modelTrimSplit[0]}${modelTrimSplit[1]}']`); // "4Runner: Limited" 5334 trimCheckboxFilter.checked = false; 5335 const trimsListParent = document.querySelector(`[id^='collapse-options-model-${modelTrimSplit[0]}']`); 5336 const trimsCheckboxes = Array.from(trimsListParent.querySelectorAll("[type='checkbox']:not([id$=AllTrims])")); 5337 const allTrimsCheckbox = trimsListParent.querySelector("[id$=AllTrims]"); 5338 if (!trimsCheckboxes.some(checkbox => checkbox.checked)) { 5339 if (allTrimsCheckbox) { 5340 allTrimsCheckbox.classList.remove("dash"); 5341 allTrimsCheckbox.checked = false; 5342 allTrimsCheckbox.disabled = true; 5343 } 5344 const modelCheckbox = document.querySelector(`[name='Model'][value='${modelTrimSplit[0]}']`); 5345 if (modelCheckbox) { 5346 modelCheckbox.checked = false; 5347 } 5348 jQueryHelper/* JQueryHelper */.$.SafeApplyCollapse(`[id^=collapse-options-model-${modelTrimSplit[0]}-]`, 'hide'); 5349 } 5350 } 5351 } 5352 handleRangeInputKeyValues(keyValues, isRemove = false) { 5353 const rangeFilters = document.querySelectorAll("input[class^=range]"); 5354 rangeFilters.forEach((elem) => { 5355 const key = elem.name; 5356 const preEncodeValue = this.removeWhiteSpace(elem.value); 5357 const value = encodeURIComponent(preEncodeValue); 5358 if (value > '') { 5359 if (key in keyValues) { 5360 const preEncodeMax = elem.getAttribute("data-max-value"); 5361 const maxValue = encodeURIComponent(preEncodeMax); 5362 const preEncodeMin = this.removeWhiteSpace(elem.getAttribute("data-min-value")); 5363 const minValue = encodeURIComponent(preEncodeMin); 5364 if (isRemove) { 5365 if (keyValues[key] === minValue && value === maxValue) { 5366 keyValues[key] = keyValues[key] + '-' + value; 5367 } 5368 else { 5369 delete keyValues[key]; 5370 } 5371 } 5372 else { 5373 if (keyValues[key] === minValue && value === maxValue) { 5374 delete keyValues[key]; 5375 } 5376 else { 5377 keyValues[key] = keyValues[key] + '-' + value; 5378 } 5379 } 5380 } 5381 else { 5382 keyValues[key] = value; 5383 } 5384 } 5385 }); 5386 } 5387 triggerDealerOnTrackEvents(filters) { 5388 // Don't track search valet or zipcode/distance 5389 const keyValues = Object.assign({}, filters); 5390 delete keyValues.q; 5391 delete keyValues.vehiclelocation; 5392 const dealerOnTrackEvents = []; 5393 document.querySelectorAll("input[type=checkbox][id^=filter]:checked").forEach((element) => { 5394 if (element.name === "Model" || element.name === "Trim") { 5395 return; 5396 } 5397 let currentLabel = ""; 5398 switch (element.value) { 5399 case "1": 5400 currentLabel = "on"; 5401 break; 5402 default: 5403 currentLabel = element.value; 5404 } 5405 const trackingCategory = "SRP - Filter - " + element.name; 5406 const eventGroup = dealerOnTrackEvents.find(event => event.category === trackingCategory); 5407 if (eventGroup) { 5408 eventGroup.label += ", " + currentLabel; 5409 } 5410 else { 5411 dealerOnTrackEvents.push({ category: trackingCategory, action: vehicleType, label: currentLabel }); 5412 } 5413 }); 5414 if (Array.isArray(keyValues.ModelAndTrim)) { 5415 dealerOnTrackEvents.push({ category: "SRP - Filter - Model_Trim", action: vehicleType, label: ke
5415yValues.ModelAndTrim.join(',') }); 5416 } 5417 this.setupRangeInputTrackerData(dealerOnTrackEvents); 5418 } 5419 setupRangeInputTrackerData(dealerOnTrackEvents) { 5420 const rangeFilters = document.querySelectorAll("input[class^=range]"); 5421 const rangeInputTrackerData = []; 5422 rangeFilters.forEach((elem) => { 5423 const key = elem.name; 5424 const trackerValue = this.removeWhiteSpace(encodeURIComponent((elem.value ? elem.value : elem.placeholder))); 5425 let currentTrackerData = rangeInputTrackerData.find(t => t.key === key); 5426 if (!currentTrackerData) { 5427 currentTrackerData = { key: key, min: elem.dataset.minValue, max: elem.dataset.maxValue }; 5428 rangeInputTrackerData.push(currentTrackerData); 5429 } 5430 if (elem.id.indexOf("_min") > -1) { 5431 currentTrackerData.minValue = trackerValue; 5432 } 5433 else { 5434 currentTrackerData.maxValue = trackerValue; 5435 } 5436 }); 5437 rangeInputTrackerData.forEach(function (entry) { 5438 //if the user modified any of the range values then send a track event 5439 if (entry.min !== entry.minValue || entry.max !== entry.maxValue) { 5440 let category = "SRP - Filter - "; 5441 //handle special cases with category names 5442 switch (entry.key) { 5443 case "pricerange": 5444 category = `${category}Buy`; 5445 break; 5446 case "financepricerange": 5447 category = `${category}Finance`; 5448 break; 5449 case "leasepricerange": 5450 category = `${category}Lease`; 5451 break; 5452 default: 5453 category = `${category}${entry.key}`; 5454 } 5455 dealerOnTrackEvents.push({ category: category, action: vehicleType, label: "Min = " + entry.minValue + ", Max = " + entry.maxValue }); 5456 } 5457 }); 5458 } 5459 removeWhiteSpace(str) { 5460 return str.replace(/[^\w\s]|_/g, "").replace(/\s+/g, " "); 5461 } 5462 initialize() { 5463 if (this.isIlp()) { 5464 const requestQueryString = window.location.search; 5465 const storedQueryString = this.getSavedFilterState(); 5466 const isUndo = localStorage.getItem("isUndoFilterState"); 5467 if (requestQueryString && !isUndo) { 5468 this.saveFilterState(); 5469 } 5470 else if (isUndo) { 5471 localStorage.removeItem("isFilterStateUndo"); 5472 } 5473 else if (storedQueryString && !requestQueryString) { 5474 this.showUndoButton(storedQueryString); 5475 const FILTER_STATE_CHANGE_EVENT = "filter-number-change"; 5476 document.addEventListener(FILTER_STATE_CHANGE_EVENT, (event) => { 5477 this.hideUndoButton(); 5478 this.clearSavedFilterState(); 5479 }, { once: true }); 5480 } 5481 } 5482 } 5483 saveFilterState() { 5484 localStorage.setItem("filterState", window.location.search); 5485 } 5486 getSavedFilterState() { 5487 const filterState = localStorage.getItem("filterState"); 5488 return filterState || null; 5489 } 5490 clearSavedFilterState() { 5491 localStorage.removeItem("filterState"); 5492 } 5493 showUndoButton(queryString) { 5494 var _a; 5495 const container = document.querySelector("[data-undo-btn-container]"); 5496 const btn = document.querySelector("[data-undo-btn]"); 5497 const filterCount = this.getClearedFilterCount(queryString); 5498 const filterCountSpan = document.getElementById("cleared-filters-count-text"); 5499 btn === null || btn === void 0 ? void 0 : btn.addEventListener("click", this.handleUndo, { once: true }); 5500 if (filterCountSpan) { 5501 if (filterCount == 1) { 5502 filterCountSpan.textContent = this.translate("FILTERS_CLEARED_SINGULAR"); 5503 } 5504 else { 5505 filterCountSpan.textContent = (_a = this.translate("FILTERS_CLEARED_PLURAL")) === null || _a === void 0 ? void 0 : _a.replace('{0}', filterCount.toString()); 5506 } 5507 } 5508 container === null || container === void 0 ? void 0 : container.removeAttribute("hidden"); 5509 } 5510 getClearedFilterCount(queryString) { 5511 const filters = queryString.split(/[&,!]/g); 5512 return filters.length; 5513 } 5514 hideUndoButton() { 5515 const container = document.querySelector(".srp-selected-filters--cleared"); 5516 const btn = document.querySelector("[data-undo-btn]"); 5517 btn === null || btn === void 0 ? void 0 : btn.removeEventListener("click", this.handleUndo); 5518 container === null || container === void 0 ? void 0 : container.setAttribute("hidden", "true"); 5519 } 5520 translate(item) { 5521 return this.translationService.getLabel(item); 5522 } 5523}; 5524WasabiFilterState = wasabiFilterState_decorate([ 5525 (0,inversify/* injectable */._G)(), 5526 wasabiFilterState_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.ITranslationService)), 5527 wasabiFilterState_metadata("design:paramtypes", [typeof (wasabiFilterState_a = typeof iTranslationService/* ITranslationService */.o !== "undefined" && iTranslationService/* ITranslationService */.o) === "function" ? wasabiFilterState_a : Object]) 5528], WasabiFilterState); 5529 5530 5531;// ./src/components/searchFilter/filterState.ts 5532var filterState_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 5533 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 5534 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5535 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c >
5535 3 ? d(target, key, r) : d(target, key)) || r; 5536 return c > 3 && r && Object.defineProperty(target, key, r), r; 5537}; 5538var filterState_metadata = (undefined && undefined.__metadata) || function (k, v) { 5539 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 5540}; 5541var filterState_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 5542 return function (target, key) { decorator(target, key, paramIndex); } 5543}; 5544var filterState_a; 5545 5546 5547 5548let FilterState = class FilterState { 5549 constructor(translationService) { 5550 this.filterList = {}; 5551 this.FILTER = "Filter"; 5552 this.FILTERS = "Filters"; 5553 this.APPLY = "Apply"; 5554 this.APPLIED = "Applied"; 5555 this.FILTER_STATE_APPLIED = "applied-filters"; 5556 this.FILTER_STATE_APPLY = "apply-filters"; 5557 this.FILTER_STATE_NONE = "no-filters"; 5558 this.LABEL_APPLY_FILTERS = 'APPLY_FILTERS'; 5559 this.LABEL_APPLY_FILTERS_SINGULAR = 'APPLY_FILTERS_SINGULAR'; 5560 this.LABEL_APPLY_FILTERS_PLURAL = 'APPLY_FILTERS_PLURAL'; 5561 this.LABEL_FILTERS_APPLIED_SINGULAR = 'FILTERS_APPLIED_SINGULAR'; 5562 this.LABEL_FILTERS_APPLIED_PLURAL = 'FILTERS_APPLIED_PLURAL'; 5563 this.LABEL_NO_FILTERS_TO_APPLY = 'NO_FILTERS_TO_APPLY'; 5564 this.translationService = translationService; 5565 } 5566 initialize(filterStateJson = null) { 5567 //TODO: this entire filter state should be migrated to the pinia store once 5568 // vue is fully implemented. For now we need to support loading filter state 5569 // from the server when the toggle is off 5570 if (!filterStateJson) { 5571 let filterStateJson = document.getElementById("filter-state"); 5572 if (filterStateJson) { 5573 this.filterList = JSON.parse(filterStateJson.textContent); 5574 this.attachEvents(); 5575 } 5576 else { 5577 console.error('#filter-state does not exist. Failed to initialize filter state'); 5578 } 5579 } 5580 else { 5581 this.filterList = filterStateJson; 5582 this.attachEvents(); 5583 } 5584 } 5585 attachEvents() { 5586 var vehicleSelectors = document.querySelectorAll("input[type='checkbox'][id^='filter']"); 5587 vehicleSelectors.forEach((el) => { 5588 el.addEventListener('change', (element) => { 5589 var filterUpdated = element.target; 5590 var filterName = filterUpdated.name.toLowerCase(); 5591 var filterValue = filterUpdated.value; 5592 var filterKey = this.getFilterKey(filterName, filterValue); 5593 if (filterUpdated.checked) { 5594 this.updateApplyFilterBtnCount(filterKey, filterValue); 5595 switch (filterName.toLowerCase()) { 5596 case "cpo": 5597 this.cpoCheckChanged(filterUpdated, filterUpdated.checked); 5598 break; 5599 case "model": 5600 this.modelCheckChanged(filterUpdated, filterUpdated.checked); 5601 break; 5602 case "trim": 5603 this.trimChecked(filterName, filterValue); 5604 break; 5605 case "cpotier": 5606 this.cpoTierChecked(filterName, filterValue); 5607 break; 5608 case "intransit": 5609 this.inTransitChecked(filterName); 5610 break; 5611 case "inproduction": 5612 this.inProductionChecked(filterName); 5613 break; 5614 case "instock": 5615 this.inStockChecked(filterName); 5616 break; 5617 default: 5618 // do nothing 5619 } 5620 } 5621 else { 5622 switch (filterName.toLowerCase()) { 5623 case "model": 5624 case "trim": 5625 this.modelOrTrimUnchecked(filterName, filterValue); 5626 break; 5627 case "cpo": 5628 case "cpotier": 5629 this.cpoOrCpoTierUnChecked(filterName, filterValue); 5630 break; 5631 default: 5632 // do nothing 5633 } 5634 this.updateApplyFilterBtnCount(filterKey); 5635 } 5636 this.notifyFilterNumberChange(); 5637 this.setFilterCountPillsOnLoad(); 5638 }); 5639 this.initInStockCheckbox(); 5640 }); 5641 var specialOnlyCheckbox = document.getElementsByClassName("special-only")[0]; 5642 if (specialOnlyCheckbox) { 5643 specialOnlyCheckbox.addEventListener('click', (e) => { 5644 var checkbox = document.getElementById("filter-searchspecialsonly"); 5645 if (checkbox) { 5646 var key = checkbox.name.toLowerCase() + "-" + checkbox.value; 5647 checkbox.checked = !checkbox.checked; 5648 if (checkbox.checked) { 5649 this.updateApplyFilterBtnCount(key, checkbox.value); 5650 } 5651 else { 5652 this.updateApplyFilterBtnCount(key); 5653 } 5654 this.notifyFilterNumberChange(); 5655 } 5656 }); 5657 } 5658 var collapsableFilterBtns = document.querySelectorAll('.panel__content-btn'); 5659 collapsableFilterBtns.forEach((btn) => { 5660 var panelOptionTitleId = btn.getAttribute('data-target'); 5661 var filterPill = document.querySelector(`${panelOptionTitleId} .filter-count`); 5662 document.addEventListener('filter-number-change', () => { 5663 this.getFilterCount(filterPill); 5664 }); 5665 btn.addEventListener('click', () => { 5666 this.handleCollapsibleFilterClick(filterPill); 5667 }); 5668 btn.addEventListener('keyup', (keyPressed) => { 5669 if (keyPressed.code == 'Space' || keyPressed.code == 'Enter') { 5670 this.handleCollapsibleFilterClick(filterPill); 5671 } 5672 }); 5673 }); 5674 document.addEventListener('range-value-change', (e) => { 5675 if (e.detail.min === e.detail.rangeMin && e.detail.max === e.detail.rangeMax) { 5676 this.updateApplyFilterBtnCount(e.detail.name.toLowerCase()); 5677 } 5678 else { 5679 var key = e.detail.name.toLowerCase(); 5680 var value = { min: e.detail.min, max: e.detail.max }; 5681 this.updateApplyFilterBtnCount(key, value); 5682 } 5683 this.notifyFilterNumberChange(); 5684 }); 5685 document.addEventListener('filter-number-change', (e) => { 5686 this.updateSearchBtnText(e.detail); 5687 }); 5688 document.addEventListener('filter-number-init', (e) => { 5689 this.initSearchBtnText(e.detail); 5690 this.setFilterCountPillsOnLoad(); 5691 }); 5692 const filterPanelContainer = document.querySelector("#srp_filter"); 5693 if (filterPanelContainer) { 5694 filterPanelContainer.classList.remove("srp-filter--uninitialized"); 5695 const loadingSpinners = filterPanelContainer.querySelectorAll(".filter-header-loading"); 5696 if (loadingSpinners.length > 0) {
5697 loadingSpinners.forEach(elem => { 5698 elem.classList.add("filter-header-loading--hidden"); 5699 }); 5700 } 5701 } 5702 this.notifyFilterNumberChange(true); 5703 } 5704 initSearchBtnText(count) { 5705 var searchButtonsV2 = document.querySelectorAll('[data-filter-search-btn]'); 5706 if (searchButtonsV2 !== null && searchButtonsV2 !== undefined) { 5707 if (count > 0) { 5708 searchButtonsV2.forEach((btn) => { 5709 var _a; 5710 if (count == 1) { 5711 btn.innerText = this.translate(this.LABEL_FILTERS_APPLIED_SINGULAR); 5712 } 5713 else { 5714 btn.innerText = (_a = this.translate(this.LABEL_FILTERS_APPLIED_PLURAL)) === null || _a === void 0 ? void 0 : _a.replace('{0}', count); 5715 } 5716 btn.dataset.filterState = this.FILTER_STATE_APPLIED; 5717 }); 5718 } 5719 else { 5720 searchButtonsV2.forEach((btn) => { 5721 btn.innerText = this.translate(this.LABEL_NO_FILTERS_TO_APPLY);
5722 btn.dataset.filterState = this.FILTER_STATE_NONE; 5723 }); 5724 this.hideShowNoFiltersApplied(); 5725 } 5726 } 5727 } 5728 updateSearchBtnText(count) { 5729 var searchButtonsV2 = document.querySelectorAll('[data-filter-search-btn]'); 5730 if (searchButtonsV2 !== null && searchButtonsV2 !== undefined) { 5731 var filterPills = document.querySelector('.srp-selected-filters--pill-list'); 5732 var filterPillsExist = filterPills && filterPills.children && filterPills.children.length > 0; 5733 if (count > 0) { 5734 searchButtonsV2.forEach((btn) => { 5735 var _a; 5736 if (count == 1) { 5737 btn.innerText = this.translate(this.LABEL_APPLY_FILTERS_SINGULAR); 5738 } 5739 else { 5740 btn.innerText = (_a = this.translate(this.LABEL_APPLY_FILTERS_PLURAL)) === null || _a === void 0 ? void 0 : _a.replace('{0}', count); 5741 } 5742 btn.dataset.f
5742ilterState = this.FILTER_STATE_APPLY; 5743 btn.classList.replace("btn-inactive", "btn-cta"); 5744 }); 5745 } 5746 else { 5747 searchButtonsV2.forEach((btn) => { 5748 var _a; 5749 if (filterPillsExist) { 5750 btn.innerText = (_a = this.translate(this.LABEL_APPLY_FILTERS_PLURAL)) === null || _a === void 0 ? void 0 : _a.replace('{0}', count); 5751 btn.dataset.filterState = this.FILTER_STATE_APPLY; 5752 btn.classList.replace("btn-inactive", "btn-cta"); 5753 } 5754 else { 5755 btn.innerText = this.translate(this.LABEL_NO_FILTERS_TO_APPLY); 5756 btn.dataset.filterState = this.FILTER_STATE_NONE; 5757 btn.classList.replace("btn-cta", "btn-inactive"); 5758 } 5759 }); 5760 this.hideShowNoFiltersApplied(); 5761 } 5762 } 5763 } 5764 translate(item) { 5765 return this.translationService.getLabel(item); 5766 } 5767 hideShowNoFiltersApplied() { 5768 var noFiltersElement = document.querySelector(".srp-selected-filters #no-filters-text"); 5769 if (!noFiltersElement) { 5770 return; 5771 } 5772 var filterPillsElement = document.querySelector('.srp-selected-filters--pill-list'); 5773 var filtersClearedElement = document.querySelector(".srp-selected-filters--cleared"); 5774 var undoBtnDisplayed = filtersClearedElement && !filtersClearedElement.hidden; 5775 if (!filterPillsElement && !undoBtnDisplayed) { 5776 noFiltersElement.removeAttribute("hidden"); 5777 } 5778 else { 5779 noFiltersElement.setAttribute("hidden", "true"); 5780 } 5781 } 5782 getFilterKey(inputElementName, inputElementValue) { 5783 return inputElementName.toLowerCase() + '-' + inputElementValue; 5784 } 5785 updateApplyFilterBtnCount(filterKey, filterValue = undefined) { 5786 if (filterValue) { 5787 this.filterList[filterKey] = filterValue; 5788 } 5789 else { 5790 delete this.filterList[filterKey]; 5791 } 5792 } 5793 cpoCheckChanged(filter, shouldAddChildren) { 5794 var targetedID = $(filter.parentElement).attr('data-target'); 5795 var elems = $(filter).parents('.list_display').find('' + targetedID + ' .collapse-options-sub .display_child.list_display_child input:checked'); 5796 //account for not having any tiered items 5797 if (elems.length == 0 && $(filter).is(':checked')) { 5798 elems = filter; 5799 } 5800 this.updateChildrenInBtnFilterCount(elems, shouldAddChildren); 5801 } 5802 updateChildrenInBtnFilterCount(children, shouldAddChildren) { 5803 if (shouldAddChildren) { 5804 Array.from(children).forEach((child) => { 5805 var childFilterKey = this.getFilterKey(child.name, child.value); 5806 this.updateApplyFilterBtnCount(childFilterKey, child.value); 5807 }); 5808 var parentFilterKey = this.getFilterKey(parent.name, undefined); 5809 //REFACTOR - parent.value was always undefined in the legacy js version of this. 5810 //var parentFilterKey = this.getFilterKey(parent.name, parent.value); 5811 this.updateApplyFilterBtnCount(parentFilterKey); 5812 } 5813 else { 5814 Array.from(children).forEach((child) => { 5815 var childFilterKey = this.getFilterKey(child.name, child.value); 5816 this.updateApplyFilterBtnCount(childFilterKey); 5817 }); 5818 } 5819 } 5820 modelCheckChanged(filter, shouldAddChildren) { 5821 var targetedID = $(filter.parentElement).attr('data-target'); 5822 var elems = $(filter).parents('.list_display').find('' + targetedID + ' .collapse-options-sub .display_child.list_display_child input:checked'); 5823 this.updateChildrenInBtnFilterCount(elems, shouldAddChildren); 5824 } 5825 trimChecked(filterType, filterValue) { 5826 if (filterType == "trim") { 5827 var model = filterValue.split(',')[0]; 5828 var modelKey = "model" + "-" + model; 5829 if (this.filterList[modelKey]) { 5830 this.updateApplyFilterBtnCount(modelKey); 5831 } 5832 } 5833 } 5834 cpoTierChecked(filterType, filterValue) { 5835 var cpoFilterType = "cpotier"; 5836 if (filterType.toLowerCase() === cpoFilterType) { 5837 var cpoTierParentKey = filterValue.split(',')[0]; 5838 if (this.filterList[cpoTierParentKey]) { 5839 this.updateApplyFilterBtnCount(cpoTierParentKey); 5840 } 5841 } 5842 } 5843 inTransitChecked(filterType) { 5844 if (filterType == "intransit") { 5845 this.RemoveInStockFilterFromCount(); 5846 this.RemoveInProductionFilterFromCount(); 5847 } 5848 } 5849 inProductionChecked(filterType) { 5850 if (filterType == "inproduction") { 5851 this.RemoveInStockFilterFromCount(); 5852 this.RemoveInTransitFilterFromCount(); 5853 } 5854 } 5855 inStockChecked(filterType) { 5856 if (filterType == "instock") { 5857 this.RemoveInTransitFilterFromCount(); 5858 this.RemoveInProductionFilterFromCount(); 5859 } 5860 } 5861 RemoveInStockFilterFromCount() { 5862 const inStockCheckbox = document.querySelector("[id^='filter-instock']"); 5863 if (inStockCheckbox) { 5864 this.updateApplyFilterBtnCount("instock-1"); 5865 } 5866 } 5867 RemoveInTransitFilterFromCount() { 5868 const inTransitCheckbox = document.querySelector("[id^='filter-intransit']"); 5869 if (inTransitCheckbox) { 5870 this.updateApplyFilterBtnCount("intransit-1"); 5871 } 5872 } 5873 RemoveInProductionFilterFromCount() { 5874 const inProductionCheckbox = document.querySelector("[id^='filter-inproduction']"); 5875 if (inProductionCheckbox) { 5876 this.updateApplyFilterBtnCount("inproduction-1"); 5877 } 5878 } 5879 modelOrTrimUnchecked(filterType, filterValue) { 5880 if (filterType == "model") { 5881 var model = filterValue; 5882 var trimKeyPrefix = "trim" + "-" + model; 5883 Object.keys(this.filterList).forEach((dictKey) => { 5884 if (dictKey.match(trimKeyPrefix)) { 5885 this.updateApplyFilterBtnCount(dictKey); 5886 } 5887 }); 5888 } 5889 else if (filterType == "trim") { 5890 var model = filterValue.split(',')[0]; 5891 var modelKey = "model" + "-" + model; 5892 var trimKeyPrefix = "trim" + "-" + model; 5893 var count = 0; 5894 Object.keys(this.filterList).forEach((dictKey) => { 5895 if (dictKey.match(trimKeyPrefix)) { 5896 count++; 5897 } 5898 }); 5899 // When last trim for model is unchecked add model back to filter count 5900 if (count == 1) { 5901 this.updateApplyFilterBtnCount(modelKey, modelKey); 5902 } 5903 } 5904 } 5905 cpoOrCpoTierUnChecked(filterType, filterValue) { 5906 var cpoFilterType = "cpo"; 5907 var cpotierFilterType = "cpotier"; 5908 if (filterType == cpoFilterType) { 5909 Object.keys(this.filterList).forEach((dictKey) => { 5910 if (dictKey.startsWith(cpoFilterType)) { 5911 this.updateApplyFilterBtnCount(dictKey); 5912 } 5913 }); 5914 } 5915 else if (filterType == cpotierFilterType) { 5916 var count = 0; 5917 Object.keys(this.filterList).forEach((dictKey) => { 5918 if (dictKey.startsWith(cpotierFilterType)) { 5919 count++; 5920 } 5921 }); 5922 // When last cpotier for cpo is unchecked add cpo back to filter count 5923 if (count == 1) { 5924 var value = cpoFilterType + "-" + filterValue; 5925 this.updateApplyFilterBtnCount(cpoFilterType, value); 5926 } 5927 } 5928 } 5929 notifyFilterNumberChange(isInitCall = false) { 5930 var filterCount = Object.keys(this.filterList).length; 5931 if (Object.keys(this.filterList).includes("inproduction-1") && Object.keys(this.filterList).includes("intransit-1")) { 5932 filterCount -= 2; 5933 } 5934 if (isInitCall) { 5935 document.dispatchEvent(new CustomEvent('filter-number-init', { detail: filterCount })); 5936 } 5937 else { 5938 document.dispatchEvent(new CustomEvent('filter-number-change', { detail: filterCount })); 5939 } 5940 } 5941 setFilterCountPillsOnLoad() { 5942 var filterCountPills = document.querySelectorAll('#filter-panels .panel .filter-count');
5943 filterCountPills.forEach((filterCountPill) => { 5944 this.handleCollapsibleFilterClick(filterCountPill); 5945 }); 5946 } 5947 handleCollapsibleFilterClick(filterCountPill) { 5948 if (filterCountPill) { 5949 var filterCount = this.getFilterCount(filterCountPill); 5950 this.showHideFilterCountPill(filterCountPill, filterCount); 5951 } 5952 } 5953 getFilterCount(filterCountPill) { 5954 if (!filterCountPill) { 5955 return; 5956 } 5957 var filterName = filterCountPill.id.replace("-count", ""); 5958 if (filterName === "ModelAndTrim") { 5959 return this.getFilterCountForModelAndTrim(); 5960 } 5961 else if (filterName.includes('range')) { 5962 var rangeFilterName = filterName.replace("-range", "").toLowerCase(); 5963 if (rangeFilterName === "price") { 5964 return this.getFilterCountForPriceFilter(); 5965 } 5966 else if (rangeFilterName === "mpg") { 5967 return this.getFilterCountForMpgFilter(); 5968 } 5969 else if (typeof (this.filterList[rangeFilterName]) !== "undefined") { 5970 /* For Range Filters with Only One Range */ 5971 return 1; 5972 } 5973 } 5974 else if (filterName === "vehicle-condition") { 5975 return this.getFilterCountForVehicleCondition(); 5976 } 5977 else { 5978 // mileage is a special type of ranged checkbox that doesn't work like other 5979 // ranges, so we want to account for it here like other checkeboxes 5980 if (filterName.toLowerCase() == "mileage") { 5981 filterName += "range"; 5982 } 5983 var elems = document.querySelectorAll("[name='" + filterName + "']:checked"); 5984 return elems ? elems.length : 0; 5985 } 5986 } 5987 showHideFilterCountPill(filterCountPill, filterCount) { 5988 if (filterCount > 0) { 5989 filterCountPill.innerText = filterCount; 5990 filterCountPill.removeAttribute('hidden'); 5991 } 5992 else { 5993 filterCountPill.innerText = ""; 5994 filterCountPill.setAttribute('hidden', ''); 5995 } 5996 } 5997 getFilterCountForModelAndTrim() { 5998 var modelFilters = document.querySelectorAll("[name='Model']:checked"); 5999 var filterCount = modelFilters ? modelFilters.length : 0; 6000 modelFilters.forEach((model) => { 6001 var modelName = model.value.replace(/\s+/g, "-"); 6002 var collapsableModelDiv = document.getElementById("collapse-options-model-" + modelName); 6003 if (collapsableModelDiv) { 6004 var trimFilterCountElem = collapsableModelDiv.querySelectorAll("[name='Trim']:checked"); 6005 if (trimFilterCountElem) { 6006 var trimFilterCount = trimFilterCountElem.length; 6007 if (trimFilterCount > 1) { 6008 filterCount += (trimFilterCount - 1); 6009 } 6010 } 6011 } 6012 }); 6013 return filterCount; 6014 } 6015 getFilterCountForPriceFilter() { 6016 var filterCount = 0; 6017 if (typeof (this.filterList["price"]) !== "undefined") { 6018 filterCount++; 6019 } 6020 if (typeof (this.filterList["leaseprice"]) !== "undefined") { 6021 filterCount++; 6022 } 6023 if (typeof (this.filterList["financeprice"]) !== "undefined") { 6024 filterCount++; 6025 } 6026 var checkboxSearchSpecialsOnly = document.getElementById("filter-searchspecialsonly"); 6027 if (checkboxSearchSpecialsOnly && checkboxSearchSpecialsOnly.checked) { 6028 filterCount++; 6029 } 6030 return filterCount; 6031 } 6032 getFilterCountForMpgFilter() { 6033 var filterCount = 0; 6034 if (typeof (this.filterList["citympg"]) !== "undefined") { 6035 filterCount++; 6036 } 6037 if (typeof (this.filterList["hwympg"]) !== "undefined") { 6038 filterCount++; 6039 } 6040 return filterCount; 6041 } 6042 getFilterCountForVehicleCondition() { 6043 var vehicleConditionFilterCount = 1; 6044 var vehicleConditionFiltersDiv = document.querySelector('#Vehicle-Condition-Filters'); 6045 var vehicleConditionFilters = (vehicleConditionFiltersDiv && vehicleConditionFiltersDiv.children) ? vehicleConditionFiltersDiv.children : undefined; 6046 if (vehicleConditionFilters) {
6047 Array.from(vehicleConditionFilters).forEach((vehicleConditionFilter) => { 6048 var checkedFilter = vehicleConditionFilter.querySelector('input[id^="filter"]:checked'); 6049 if (checkedFilter) { 6050 // Filters with nested filters - there is only one at this point (Certified Pre-Owned). 6051 if (checkedFilter.name.toLowerCase().includes("cpo")) { 6052 return; 6053 } 6054 else { 6055 vehicleConditionFilterCount++; 6056 } 6057 } 6058 }); 6059 } 6060 //Get CpoTier Counts 6061 vehicleConditionFilterCount += this.getCpoTierCount(); 6062 return vehicleConditionFilterCount; 6063 } 6064 getCpoTierCount() { 6065 var cpoFilters = document.querySelectorAll("[name='cpo']:checked"); 6066 var filterCount = cpoFilters ? cpoFilters.length : 0; 6067 cpoFilters.forEach(() => { 6068 var collapsableDiv = document.getElementById("collapse-options-cpotier"); 6069 if (collapsableDiv) { 6070 var tierFilterCountElem = collapsableDiv.querySelectorAll("[name='cpotier']:checked"); 6071 if (tierFilterCountElem) { 6072 var tierFilterCount = tierFilterCountElem.length; 6073 if (tierFilterCount > 1) { 6074 filterCount += (tierFilterCount - 1); 6075 } 6076 } 6077 } 6078 }); 6079 return filterCount; 6080 } 6081 initInStockCheckbox() { 6082 var inStockCheckbox = document.querySelector("#filter-instock"); 6083 if (inStockCheckbox && inStockCheckbox.checked) { 6084 var key = inStockCheckbox.name.toLowerCase() + "-" + inStockCheckbox.value; 6085 this.updateApplyFilterBtnCount(key, inStockCheckbox.value); 6086 } 6087 } 6088}; 6089FilterState = filterState_decorate([ 6090 (0,inversify/* injectable */._G)(), 6091 filterState_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.ITranslationService)), 6092 filterState_metadata("design:paramtypes", [typeof (filterState_a = typeof iTranslationService/* ITranslationService */.o !== "undefined" && iTranslationService/* ITranslationService */.o) === "function" ? filterState_a : Object]) 6093], FilterState); 6094 6095 6096// EXTERNAL MODULE: ./src/services/toggles/toggleFetcher.ts 6097var toggleFetcher = __webpack_require__(5141); 6098// EXTERNAL MODULE: ./src/services/translations/defaultTranslationFetcher.ts 6099var defaultTranslationFetcher = __webpack_require__(8102); 6100// EXTERNAL MODULE: ./src/components/searchFilter/srpWasabi_General.ts + 1 modules 6101var srpWasabi_General = __webpack_require__(721); 6102// EXTERNAL MODULE: ./src/components/vehicle/vehicleCard/vehicleCardWasabi.ts + 1 modules 6103var vehicleCardWasabi = __webpack_require__(8066); 6104;// ./src/components/searchFilter/rangeFilterCosmos.ts 6105var rangeFilterCosmos_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6106 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6107 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6108 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6109 return c > 3 && r && Object.defineProperty(target, key, r), r; 6110}; 6111var rangeFilterCosmos_metadata = (undefined && undefined.__metadata) || function (k, v) { 6112 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 6113}; 6114 6115let RangeFilterCosmos = class RangeFilterCosmos { 6116 constructor() { 6117 } 6118 initialize() { 6119 let ranges = document.querySelectorAll("[data-range-filter-config]"); 6120 for (let i = 0; i < ranges.length; i++) { 6121 const elem = ranges[i]; 6122 if (elem) { 6123 const rangeConfig = { rangeId: elem.dataset.rangeFilterConfig }; 6124 this.setupRange(rangeConfig); 6125 } 6126 } 6127 //TODO: Get rid of this when VUE conversion for FilterPanels is complete 6128 // if we didn't find any ranges above, then we are not rending vue components 6129 // so make sure the old way works. 6130 if (ranges.length === 0) { 6131 const scriptId = "range-filter-config"; 6132 let ranges = document.querySelectorAll("[id^=" + scriptId + "]"); 6133 // IE doesn't support forEach on NodeList 6134 Array.prototype.forEach.call(ranges, (range) => { 6135 const jsonData = JSON.parse(range.text); 6136 this.setupRange(jsonData); 6137 }); 6138 } 6139 } 6140 setupRange(rangeConfig) { 6141 // Initialize min/max elements and listeners 6142 const rangeName = rangeConfig.rangeId; 6143 let minElement = document.getElementById(rangeName + '_min'); 6144 let maxElement = document.getElementById(rangeName + '_max'); 6145 switch (rangeName) { 6146 case "range-filter-config-finance": 6147 minElement = document.getElementById('financeprice_min'); 6148 maxElement = document.getElementById('financeprice_max'); 6149 break; 6150 case "range-filter-config-lease": 6151 minElement = document.getElementById('leaseprice_min'); 6152 maxElement = document.getElementById('leaseprice_max'); 6153 break; 6154 } 6155 this.setupSliderEventListeners(minElement, maxElement); 6156 this.setupSeparatorEventListeners(minElement, maxElement); 6157 } 6158 updateSlider(elem, position) { 6159 if (!elem.id) { 6160 return; 6161 } 6162 const elemValue = elem.value.replace(/,/g, ''); 6163 let inputValue = parseFloat(elemValue); 6164 const baseElemId = elem.id.split("_")[0]; 6165 const minElemId = baseElemId + "_min"; 6166 const maxElemId = baseElemId + "_max"; 6167 //enforce step 6168 const sliderStep = parseFloat(elem.dataset.stepSize);
6169 inputValue = Math.ceil(inputValue / sliderStep) * sliderStep; 6170 elem.value = inputValue; 6171 //min value 6172 const defaultMinValue = parseFloat(elem.dataset.minValue); 6173 const minElem = document.getElementById(minElemId); 6174 let selectedMinValue = 0; 6175 if (minElem) { 6176 let minValue = minElem.value.replace(/,/g, ''); 6177 selectedMinValue = parseFloat(minValue); 6178 if (isNaN(selectedMinValue)) { 6179 selectedMinValue = defaultMinValue; 6180 } 6181 } 6182 //max value 6183 const defaultMaxValue = parseFloat(elem.dataset.maxValue); 6184 const maxElem = document.getElementById(maxElemId); 6185 let selectedMaxValue = 0; 6186 if (maxElem) { 6187 let maxValue = maxElem.value.replace(/,/g, ''); 6188 selectedMaxValue = parseFloat(maxValue); 6189 if (isNaN(selectedMaxValue)) { 6190 selectedMaxValue = defaultMaxValue; 6191 } 6192 } 6193 //trigger validation message 6194 let validator = elem.parentElement.parentElement.parentElement.getElementsByClassName("invalid-feedback"); 6195 if (validator) { 6196 validator = validator[0]; 6197 if (selectedMinValue > selectedMaxValue) { 6198 validator.classList.remove("hidden"); 6199 } 6200 else { 6201 validator.classList.add("hidden"); 6202 } 6203 } 6204 //enforce min/max values and don't let the min/max values pass each other 6205 if (isNaN(inputValue) || selectedMinValue > selectedMaxValue) { 6206 if (position == 0) { 6207 inputValue = defaultMinValue; 6208 elem.value = defaultMinValue; 6209 selectedMinValue = defaultMinValue; 6210 } 6211 else { 6212 inputValue = defaultMaxValue; 6213 elem.value = defaultMaxValue; 6214 selectedMaxValue = defaultMaxValue; 6215 } 6216 } 6217 const sliderEvent = new CustomEvent('range-value-change', { 6218 detail: { 6219 name: baseElemId, 6220 min: selectedMinValue, 6221 max: selectedMaxValue, 6222 rangeMin: defaultMinValue, 6223 rangeMax: defaultMaxValue 6224 } 6225 }); 6226 document.dispatchEvent(sliderEvent); 6227 } 6228 setupSliderEventListeners(minElement, maxElement) { 6229 if (minElement) { 6230 minElement.addEventListener("change", (e) => { 6231 this.updateSlider(e.target, 0); 6232 }); 6233 } 6234 if (maxElement) { 6235 maxElement.addEventListener("change", (e) => { 6236 this.updateSlider(e.target, 1); 6237 }); 6238 } 6239 } 6240 separatorUpdater(minObj, maxObj) { 6241 let inputMin = minObj.value === "" ? minObj.getAttribute('placeholder') : minObj.value; 6242 let inputMax = maxObj.value === "" ? maxObj.getAttribute('placeholder') : maxObj.value; 6243 // Don't add a separator for year values 6244 if (!minObj.parentElement.classList.contains("input-year")) { 6245 inputMin = this.formatValueWithSeparator(inputMin); 6246 } 6247 if (!maxObj.parentElement.classList.contains("input-year")) { 6248 inputMax = this.formatValueWithSeparator(inputMax); 6249 } 6250 minObj.value = inputMin; 6251 maxObj.value = inputMax; 6252 } 6253 formatValueWithSeparator(value) { 6254 const cleanValue = value.replace(/,/g, ""); 6255 return new Intl.NumberFormat("en-US", { style: "decimal" }).format(cleanValue); 6256 } 6257 setupSeparatorEventListeners(minElement, maxElement) { 6258 if (minElement && maxElement) { 6259 minElement.addEventListener('change', () => { 6260 this.separatorUpdater(minElement, maxElement); 6261 }); 6262 maxElement.addEventListener('change', () => { 6263 this.separatorUpdater(minElement, maxElement); 6264 }); 6265 } 6266 } 6267}; 6268RangeFilterCosmos = rangeFilterCosmos_decorate([ 6269 (0,inversify/* injectable */._G)(), 6270 rangeFilterCosmos_metadata("design:paramtypes", []) 6271], RangeFilterCosmos); 6272 6273 6274// EXTERNAL MODULE: ./src/services/vehicleService/vehicleService.ts 6275var vehicleService = __webpack_require__(2283); 6276// EXTERNAL MODULE: ./src/components/spaCosmos/commonModels/srpPageSettingsModel.ts 6277var srpPageSettingsModel = __webpack_require__(6611); 6278// EXTERNAL MODULE: ./src/services/serviceHelpers.ts 6279var serviceHelpers = __webpack_require__(7090); 6280// EXTERNAL MODULE: ./src/services/personalizationService/iPersonalizationService.ts
6281var iPersonalizationService = __webpack_require__(926); 6282;// ./src/services/filterService/filterService.ts 6283var filterService_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6284 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6285 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6286 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6287 return c > 3 && r && Object.defineProperty(target, key, r), r; 6288}; 6289var filterService_metadata = (undefined && undefined.__metadata) || function (k, v) { 6290 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 6291}; 6292var filterService_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 6293 return function (target, key) { decorator(target, key, paramIndex); } 6294}; 6295var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 6296 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 6297 return new (P || (P = Promise))(function (resolve, reject) { 6298 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6299 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 6300 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 6301 step((generator = generator.apply(thisArg, _arguments || [])).next()); 6302 }); 6303}; 6304var filterService_a, filterService_b; 6305 6306 6307 6308 6309 6310 6311 6312let FilterService = class FilterService { 6313 constructor(personalizationService, toggleService) { 6314 this.rootSrpFiltersUrl = "/api/vhcliaa/vehicle-pages/cosmos/srp/filters/"; 6315 this.filterCache = {}; 6316 this.getFilterApiUrl = (dealerId, pageId, dynamicCountsSearchParams) => { 6317 let searchParams = serviceHelpers/* ServiceHelpers */.d.getBaseApiQueryString(undefined, dynamicCountsSearchParams); 6318 //HACK: don't decode the queryString params because we allow dealers to add unsafe data and this will break the search 6319 let apiUrl = `${this.rootSrpFiltersUrl}${dealerId}/${pageId}?${serviceHelpers/* ServiceHelpers */.d.mapArrayToQueryString(searchParams)}`; 6320 return apiUrl; 6321 }; 6322 this.getFilters = (dealerId, pageId, dynamicCountsSearchParams) => __awaiter(this, void 0, void 0, function* () { 6323 var _a, _b; 6324 let url = this.getFilterApiUrl(dealerId, pageId, dynamicCountsSearchParams); 6325 //Personalization (aka Signals) 6326 //NOTE: We add this here so we don't have to see it visually show up on the URL every time 6327 url = (_b = (_a = this.personalizationService) === null || _a === void 0 ? void 0 : _a.addPersonalizationParameters(url)) !== null && _b !== void 0 ? _b : url; 6328 if (this.filterCache[url]) { 6329 return this.filterCache[url]; 6330 } 6331 const response = serviceHelpers/* ServiceHelpers */.d.sendApiRequest(url); 6332 this.filterCache[url] = response; 6333 return response; 6334 }); 6335 //Helpers 6336 //we put these here so we can inject toggleService more better than in the pinia stores 6337 //which don't have a way to take a constructor 6338 this.isDynamicFilteringEnabled = (filterType, uiLocation) => { 6339 return filterType === srpPageSettingsModel/* SrpFilterType */.K.Dynamic; 6340 }; 6341 this.personalizationService = personalizationService; 6342 this.toggleService = toggleService; 6343 this.filterCache = {}; 6344 } 6345 hideZeroCountFilters() { 6346 return this.toggleService.getToggleStatus(toggleService/* Toggle */.lM.HideZeroCountFilters); 6347 } 6348}; 6349FilterService = filterService_decorate([ 6350 (0,inversify/* injectable */._G)(), 6351 filterService_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IPersonalizationService)), 6352 filterService_param(1, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 6353 filterService_metadata("design:paramtypes", [typeof (filterService_a = typeof iPersonalizationService/* IPersonalizationService */.R !== "undefined" && iPersonalizationService/* IPersonalizationService */.R) === "function" ? filterService_a : Object, typeof (filterService_b = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? filterService_b : Object]) 6354], FilterService); 6355 6356 6357;// ./src/components/priceStak/priceStakSyncDataModel.ts 6358class PriceStakSyncDataModel { 6359 constructor() { 6360 this.previousElementScrollY = 0; 6361 } 6362} 6363 6364// EXTERNAL MODULE: ./src/components/pricing/pricingTypeCookie.ts 6365var pricingTypeCookie = __webpack_require__(1373); 6366// EXTERNAL MODULE: ./src/components/spaCosmos/pagination/srpScrollType.ts 6367var srpScrollType = __webpack_require__(1560);
6368// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/vehicleLoadCause.ts 6369var vehicleLoadCause = __webpack_require__(3249); 6370;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakDataModel.ts 6371class PriceStakDataModel { 6372 constructor(selectedTab) { 6373 this.selectedTab = selectedTab; 6374 } 6375} 6376 6377// EXTERNAL MODULE: ./src/utilities/performanceHelpers.ts 6378var performanceHelpers = __webpack_require__(9185); 6379// EXTERNAL MODULE: ./src/services/stores/iStoreProvider.ts 6380var iStoreProvider = __webpack_require__(2770); 6381;// ./src/components/priceStak/priceStakSynchronizer.ts 6382var priceStakSynchronizer_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6383 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6384 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6385 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6386 return c > 3 && r && Object.defineProperty(target, key, r), r; 6387}; 6388var priceStakSynchronizer_metadata = (undefined && undefined.__metadata) || function (k, v) { 6389 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 6390}; 6391var priceStakSynchronizer_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 6392 return function (target, key) { decorator(target, key, paramIndex); } 6393}; 6394var priceStakSynchronizer_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 6395 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 6396 return new (P || (P = Promise))(function (resolve, reject) { 6397 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6398 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 6399 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 6400 step((generator = generator.apply(thisArg, _arguments || [])).next()); 6401 }); 6402}; 6403var priceStakSynchronizer_a; 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414var DropdownEvent; 6415(function (DropdownEvent) { 6416 DropdownEvent["SHOW"] = "show"; 6417 DropdownEvent["HIDE"] = "hide"; 6418})(DropdownEvent || (DropdownEvent = {})); 6419var DropdownButtonText; 6420(function (DropdownButtonText) { 6421 DropdownButtonText["MORE"] = "More"; 6422 DropdownButtonText["LESS"] = "Less"; 6423})(DropdownButtonText || (DropdownButtonText = {})); 6424var DoTaggingResult; 6425(function (DoTaggingResult) { 6426 DoTaggingResult["INCREASE"] = "increase"; 6427 DoTaggingResult["DECREASE"] = "decrease"; 6428})(DoTaggingResult || (DoTaggingResult = {})); 6429let PriceStakSynchronizer = class PriceStakSynchronizer { 6430 constructor(storeProvider) { 6431 this.priceStakSyncDataModel = new PriceStakSyncDataModel(); 6432 this.storeProvider = storeProvider; 6433 } 6434 initialize(scrollType, causeOfVehicleLoad = vehicleLoadCause/* VehicleLoadCause */.q.Unknown) { 6435 this.globalStore = this.storeProvider.getGlobalStore(); 6436 if (scrollType === srpScrollType/* SrpScrollType */.v.InfiniteScroll) { 6437 // Set all pricestak dropdowns to open/close when the dropdown is clicked 6438 if (!this.priceStakSyncDataModel.dropdowns) { 6439 this.getElements(); 6440 this.addPriceStakDropdownListeners(); 6441 } 6442 else { 6443 let newDropdownStartIndex = this.priceStakSyncDataModel.dropdowns.length > 0 ? this.priceStakSyncDataModel.dropdowns.length - 1 : 0; 6444 if (causeOfVehicleLoad != vehicleLoadCause/* VehicleLoadCause */.q.InfiniteScroll) { 6445 //start from 0 if we filtered vehicles (infinite scroll) 6446 newDropdownStartIndex = 0; 6447 } 6448 this.getElements(); 6449 // Add listeners only for new pricestak dropdowns (infinite scroll) 6450 this.addPriceStakDropdownListeners(newDropdownStartIndex); 6451 // Sync dropdowns 6452 let firstDropdown = this.priceStakSyncDataModel.dropdownButtons[0]; 6453 if (firstDropdown) { 6454 const ariaExpanded = firstDropdown.getAttribute('aria-expanded'); 6455 const eventType = ariaExpanded === 'true' ? DropdownEvent.SHOW : DropdownEvent.HIDE; 6456 this.toggleDropdowns(eventType, newDropdownStartIndex); 6457 } 6458 } 6459 this.addPriceStakDropdownResizeObserver(); 6460 // Set all pricestak tabs to switch when a tab is clicked 6461 if (!this.priceStakSyncDataModel.priceStackTabs) { 6462 this.setPriceStakTabDataModel(); 6463 this.setPriceStakTabListeners(); 6464 this.checkForQuerystringOverrides(); 6465 this.switchAllTabs(); 6466 } 6467 else { 6468 this.setPriceStakTabListeners(); 6469 this.switchAllTabs(); 6470 } 6471 } 6472 else { 6473 //set pricestak dropdowns for pagination 6474 this.getElements(); 6475 this.addPriceStakDropdownListeners(); 6476 // Sync Dropdowns 6477 let firstDropdown = this.priceStakSyncDataModel.dropdownButtons[0]; 6478 if (firstDropdown) { 6479 const ariaExpanded = firstDropdown.getAttribute('aria-expanded'); 6480 const eventType = ariaExpanded === 'true' ? DropdownEvent.SHOW : DropdownEvent.HIDE; 6481 this.toggleDropdowns(eventType); 6482 } 6483 this.addPriceStakDropdownResizeObserver(); 6484 //set pricestak tabs for pagination 6485 this.setPriceStakTabDataModel(); 6486 this.setPriceStakTabListeners(); 6487 this.checkForQuerystringOverrides(); 6488 this.switchAllTabs(); 6489 } 6490 } 6491 ; 6492 scrollAnchorAfter(target, buttonBeforeY) { 6493 return priceStakSynchronizer_awaiter(this, void 0, void 0, function* () { 6494 let buttonAfterY = yield this.getTargetScrollTop(target); 6495 window.scrollTo(0, window.scrollY - (buttonBeforeY - buttonAfterY)); 6496 setTimeout(() => this.globalStore.updateProgramaticScroll(false), 500); 6497 }); 6498 } 6499 getTargetScrollTop(target) { 6500 return priceStakSynchronizer_awaiter(this, void 0, void 0, function* () { 6501 let boundingRect; 6502 yield (0,performanceHelpers/* doBeforeNextRepaint */.L)(() => { 6503 boundingRect = target.getBoundingClientRect(); 6504 }); 6505 return boundingRect.top; 6506 }); 6507 } 6508 setPriceStakTabDataModel() { 6509 var widgetDataElement = document.getElementById('priceStakDataModel'); 6510 if (widgetDataElement && widgetDataElement.textContent) { 6511 this.priceStakSyncDataModel.priceStakDataModel = JSON.parse(widgetDataElement.textContent); 6512 } 6513 else { 6514 this.priceStakSyncDataModel.priceStakDataModel = new PriceStakDataModel('buy'); 6515 } 6516 } 6517 checkForQuerystringOverrides() { 6518 var queryString = window.location.search.toLocaleLowerCase(); 6519 if (queryString.includes('?pricerange') || queryString.includes('&pricerange')) { 6520 this.priceStakSyncDataModel.priceStakDataModel.selectedTab = 'buy'; 6521 } 6522 else if (queryString.includes('financepricerange')) { 6523 this.priceStakSyncDataModel.priceStakDataModel.selectedTab = 'finance'; 6524 } 6525 else if (queryString.includes('leasepricerange')) { 6526 this.priceStakSyncDataModel.priceStakDataModel.selectedTab = 'lease'; 6527 } 6528 } 6529 setPriceStakTabListeners() { 6530 // The query below already excludes every button that has a listener, so the whole list is new and all 6531 // of it gets wired up. Starting from a saved index would skip buttons that were never wired up and 6532 // leave them to Bootstrap, which flips .active behind Vue's back and blanks the card. 6533 this.priceStakSyncDataModel.priceStackTabs = document.querySelectorAll('[data-pricestak-tab]:not([data-pricestack-tabs-init="true"])'); 6534 this.addPriceStakTabListeners(); 6535 } 6536 addPriceStakTabListeners() { 6537 for (let i = 0; i < this.priceStakSyncDataModel.priceStackTabs.length; i++) { 6538 const button = this.priceStakSyncDataModel.priceStackTabs[i]; 6539 if (button) { 6540 button.addEventListener('click', (event) => priceStakSynchronizer_awaiter(this, void 0, void 0, function* () { 6541 let target = event.currentTarget;
6542 let buttonBeforeY = yield this.getTargetScrollTop(target); 6543 this.priceStakSyncDataModel.priceStakDataModel.selectedTab = (target).getAttribute('data-pricestak-tab'); 6544 pricingTypeCookie/* PricingTypeCookie */.L.setPricingTypeCookie(this.priceStakSyncDataModel.priceStakDataModel.selectedTab); 6545 this.globalStore.updateProgramaticScroll(true); 6546 this.switchAllTabs(); 6547 yield this.scrollAnchorAfter(target, buttonBeforeY); 6548 })); 6549 button.setAttribute('data-pricestack-tabs-init', 'true'); 6550 } 6551 } 6552 } 6553 switchAllTabs() { 6554 var _a; 6555 var allTabContainers = document.querySelectorAll('[data-pricestak-main]'); 6556 let selectedTab = (_a = pricingTypeCookie/* PricingTypeCookie */.L.currentCookieValue) !== null && _a !== void 0 ? _a : this.priceStakSyncDataModel.priceStakDataModel.selectedTab; 6557 // send event to Vue priceStakTabs to set the tabs correctly on refresh 6558 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.SwitchPricingTab, { detail: selectedTab })); 6559 allTabContainers.forEach((tabContainer) => { 6560 // Vue-rendered pricestaks drive their own .active classes off the SwitchPricingTab event dispatched 6561 // above. Touching them here is what lets the DOM and Vue's v-show state disagree. 6562 if (tabContainer.dataset.pricestakVueManaged === 'true') { 6563 return; 6564 } 6565 //check for tab, if it does not exist in this tab container, try buy 6566 //CONPLAT-2374: Use the PricingTypeCookie value to determine the selected tab 6567 var tabSelector = `[data-pricestak-tab='${selectedTab}']`; 6568 var selectedTabElement = tabContainer.querySelector(tabSelector); 6569 if (selectedTabElement) { 6570 this.switchTab(tabContainer, selectedTab); 6571 } 6572 else { 6573 //if there is no "buy" tab, nothing to do 6574 var defaultTabSelector = `[data-pricestak-tab='buy']`; 6575 var defaultTabElement = tabContainer.querySelector(defaultTabSelector); 6576 if (defaultTabElement) { 6577 this.switchTab(tabContainer, 'buy'); 6578 } 6579 } 6580 }); 6581 } 6582 switchTab(tabContainer, newTabName) { 6583 var _a, _b, _c, _d; 6584 if (tabContainer) { 6585 const currentTabWrapper = tabContainer.querySelector('[data-pricestak-tab-wrapper].active'); 6586 const currentTabButton = currentTabWrapper === null || currentTabWrapper === void 0 ? void 0 : currentTabWrapper.querySelector('[data-pricestak-tab]'); 6587 const currentTabPane = tabContainer.querySelector('[data-pricestak-tab-pane].active'); 6588 const newTabWrapper = tabContainer.querySelector(`[data-
6588pricestak-tab-wrapper="${newTabName}"]`); 6589 const newTabButton = tabContainer.querySelector(`[data-pricestak-tab="${newTabName}"]`); 6590 const newTabPane = tabContainer.querySelector(`[data-pricestak-tab-pane="${newTabName}"]`); 6591 (_a = currentTabWrapper === null || currentTabWrapper === void 0 ? void 0 : currentTabWrapper.classList) === null || _a === void 0 ? void 0 : _a.remove('active'); 6592 currentTabButton === null || currentTabButton === void 0 ? void 0 : currentTabButton.setAttribute('aria-expanded', 'false'); 6593 (_b = currentTabPane === null || currentTabPane === void 0 ? void 0 : currentTabPane.classList) === null || _b === void 0 ? void 0 : _b.remove('active'); 6594 (_c = newTabWrapper === null || newTabWrapper === void 0 ? void 0 : newTabWrapper.classList) === null || _c === void 0 ? void 0 : _c.add('active'); 6595 newTabButton === null || newTabButton === void 0 ? void 0 : newTabButton.setAttribute('aria-expanded', 'true'); 6596 (_d = newTabPane === null || newTabPane === void 0 ? void 0 : newTabPane.classList) === null || _d === void 0 ? void 0 : _d.add('active'); 6597 } 6598 } 6599 getElements() { 6600 this.priceStakSyncDataModel.dropdowns = document.querySelectorAll('[data-pricestak-element="collapse"]'); 6601 this.priceStakSyncDataModel.dropdownButtons = document.querySelectorAll('[data-pricestak-element="collapse-button"]'); 6602 this.priceStakSyncDataModel.dropdownButtonLabels = document.querySelectorAll('[data-pricestak-element="collapse-button-label"]'); 6603 } 6604 addPriceStakDropdownListeners(startIndex = 0) { 6605 if (this.priceStakSyncDataModel.dropdowns && this.priceStakSyncDataModel.dropdownButtonLabels) { 6606 for (let i = startIndex; i < this.priceStakSyncDataModel.dropdowns.length; i++) { 6607 const button = this.priceStakSyncDataModel.dropdownButtons[i]; 6608 // we want to add a dropdown-listener attribute to avoid duplicate listeners that will cause incorrect 6609 // dropdown labels 6610 if (button && button.getAttribute('dropdown-listener') !== 'enabled') { 6611 button.addEventListener('click', (event) => { 6612 this.dropdownButtonCallback(event); 6613 }); 6614 button.setAttribute('dropdown-listener', 'enabled'); 6615 } 6616 } 6617 window.jQuery(this.priceStakSyncDataModel.dropdowns).on('hidden.bs.collapse', (event) => { 6618 this.toggleDropdownResizeObservation(false); 6619 }); 6620 window.jQuery(this.priceStakSyncDataModel.dropdowns).on('shown.bs.collapse', (event) => { 6621 this.toggleDropdownResizeObservation(false); 6622 }); 6623 } 6624 } 6625 dropdownButtonCallback(event) { 6626 var _a; 6627 event.preventDefault(); 6628 const clickedElement = event.target; 6629 const clickedButton = clickedElement.closest('[data-pricestak-element="collapse-button"]'); 6630 const target_DropdownSelector = (_a = clickedButton === null || clickedButton === void 0 ? void 0 : clickedButton.dataset) === null || _a === void 0 ? void 0 : _a.target; 6631 const currentDropdown = document.querySelector(target_DropdownSelector); 6632 // only allow opening/closing the dropdown if its not already in the process of opening/closing 6633 if (!currentDropdown.classList.contains("collapsing")) { 6634 const scrollbarPositionBeforeToggle = document.documentElement.scrollTop; 6635 const scrollHeightBeforeToggle = document.documentElement.scrollHeight; 6636 this.priceStakSyncDataModel.currentScrollbarRatio = scrollbarPositionBeforeToggle / scrollHeightBeforeToggle; 6637 const ariaExpanded = clickedButton.getAttribute('aria-expanded'); 6638 this.toggleDropdownResizeObservation(true, currentDropdown); 6639 if (ariaExpanded != null) { 6640 const eventType = ariaExpanded === 'true' ? DropdownEvent.HIDE : DropdownEvent.SHOW; 6641 this.toggleDropdowns(eventType); 6642 } 6643 } 6644 } 6645 addPriceStakDropdownResizeObserver() { 6646 if (!this.priceStakSyncDataModel.resizeObserver) { 6647 this.priceStakSyncDataModel.resizeObserver = new ResizeObserver(() => { 6648 const scrollHeightAfterToggle = document.documentElement.scrollHeight; 6649 const scrollbarPositionAfterToggle = scrollHeightAfterToggle * this.priceStakSyncDataModel.currentScrollbarRatio; 6650 document.documentElement.scrollTo({ top: scrollbarPositionAfterToggle }); 6651 }); 6652 } 6653 } 6654 toggleDropdownResizeObservation(shouldObserve, currentDropdown = null) { 6655 if (currentDropdown) { 6656 if (shouldObserve) { 6657 this.priceStakSyncDataModel.resizeObserver.observe(currentDropdown); 6658 } 6659 else { 6660 this.priceStakSyncDataModel.resizeObserver.unobserve(currentDropdown); 6661 } 6662 } 6663 } 6664 toggleDropdowns(eventType, startIndex = 0) { 6665 const newButtonLabel = eventType === DropdownEvent.SHOW ? DropdownButtonText.LESS : DropdownButtonText.MORE; 6666 const newButtonDoTaggingResult = eventType === DropdownEvent.SHOW ? DoTaggingResult.DECREASE : DoTaggingResult.INCREASE; 6667 for (let i = startIndex; i < this.priceStakSyncDataModel.dropdownButtons.length; i++) { 6668 const label = this.priceStakSyncDataModel.dropdownButtonLabels[i]; 6669 const dropdown = this.priceStakSyncDataModel.dropdowns[i]; 6670 const doTaggedButton = this.priceStakSyncDataModel.dropdownButtons[i]; 6671 doTaggedButton.setAttribute('data-dotagging-event-action-result', newButtonDoTaggingResult); 6672 label.innerText = newButtonLabel; 6673 $(dropdown).collapse(eventType); 6674 } 6675 } 6676};
6677PriceStakSynchronizer = priceStakSynchronizer_decorate([ 6678 (0,inversify/* injectable */._G)(), 6679 priceStakSynchronizer_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IStoreProvider)), 6680 priceStakSynchronizer_metadata("design:paramtypes", [typeof (priceStakSynchronizer_a = typeof iStoreProvider/* IStoreProvider */.y !== "undefined" && iStoreProvider/* IStoreProvider */.y) === "function" ? priceStakSynchronizer_a : Object]) 6681], PriceStakSynchronizer); 6682 6683 6684// EXTERNAL MODULE: ./src/components/shareVehicleModal/shareVehicleModal.ts + 1 modules 6685var shareVehicleModal = __webpack_require__(4999); 6686// EXTERNAL MODULE: ./src/components/oem/ford/evnVideoPlayer.ts 6687var evnVideoPlayer = __webpack_require__(3925); 6688;// ./src/services/oem/oemVehicleStatusService/oemVehicleStatusService.ts 6689var oemVehicleStatusService_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6690 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6691 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6692 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6693 return c > 3 && r && Object.defineProperty(target, key, r), r; 6694}; 6695var oemVehicleStatusService_metadata = (undefined && undefined.__metadata) || function (k, v) { 6696 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 6697}; 6698var oemVehicleStatusService_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 6699 return function (target, key) { decorator(target, key, paramIndex); } 6700}; 6701var oemVehicleStatusService_a; 6702 6703 6704 6705let OemVehicleStatusService = class OemVehicleStatusService { 6706 constructor(translationService) { 6707 this.translationService = translationService; 6708 } 6709 getVehicleStatusLabel(stage) { 6710 const compareText = decodeURIComponent(stage).toLowerCase(); 6711 let label = stage; 6712 // TODO: We need to bring down the actual OemProgram to the front end so that we can check specifically if the Dealer is that Oem type (e.g. Dealer == Ford, etc) 6713 switch (compareText) { 6714 // Ford/Lincoln 6715 case "stockinventory": 6716 label = this.translationService.getLabel("IN_STOCK"); 6717 break; 6718 case "stockintransit": 6719 label = this.translationService.getLabel("IN_TRANSIT"); 6720 break; 6721 case "stockinplant": 6722 label = this.translationService.getLabel("DEALER_ORDERED"); 6723 break; 6724 case "extendedinventory": 6725 label = this.translationService.getLabel("EXTENDED_INVENTORY"); 6726 break; 6727 case "fctp_readyforsale": 6728 label = this.translationService.getLabel("FCTP_READY_FOR_SALE"); 6729 break; 6730 case "fctp_inservice": 6731 label = this.translationService.getLabel("FCTP_INSERVICE_SHORT"); 6732 break; 6733 case "available": 6734 label = this.translationService.getLabel("SRP_REFINEMENT_AVAILABLE"); 6735 break; 6736 // GM 6737 case "in-transit retail stock": 6738 label = this.translationService.getLabel("IN_TRANSIT"); 6739 break; 6740 case "courtesy car retail stock": 6741 label = this.translationService.getLabel("FCTP_READY_FOR_SALE"); 6742 break; 6743 case "dealer retail grounded stock": 6744 label = this.translationService.getLabel("IN_STOCK"); 6745 break; 6746 case "dealer demo retail stock": 6747 label = this.translationService.getLabel("DEMO_VEHICLE"); 6748 break; 6749 case "driver ed retail stock": 6750 label = this.translationService.getLabel("DRIVER_ED_VEHICLE"); 6751 break; 6752 default: 6753 label = stage; 6754 break; 6755 } 6756 return label; 6757 } 6758}; 6759OemVehicleStatusService = oemVehicleStatusService_decorate([ 6760 (0,inversify/* injectable */._G)(), 6761 oemVehicleStatusService_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.ITranslationService)), 6762 oemVehicleStatusService_metadata("design:paramtypes", [typeof (oem
6762VehicleStatusService_a = typeof iTranslationService/* ITranslationService */.o !== "undefined" && iTranslationService/* ITranslationService */.o) === "function" ? oemVehicleStatusService_a : Object]) 6763], OemVehicleStatusService); 6764 6765 6766;// ./src/core/enums/localStorageContainer.ts 6767var LocalStorageContainer; 6768(function (LocalStorageContainer) { 6769 LocalStorageContainer["SignalsForYouDql"] = "do_signals_personalized_vehicles_query"; 6770})(LocalStorageContainer || (LocalStorageContainer = {})); 6771 6772;// ./src/services/personalizationService/personalizationService.ts 6773var personalizationService_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6774 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6775 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6776 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6777 return c > 3 && r && Object.defineProperty(target, key, r), r; 6778}; 6779var personalizationService_metadata = (undefined && undefined.__metadata) || function (k, v) { 6780 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 6781}; 6782var personalizationService_param = (undefined && undefined.__param) || function (paramIndex, decorator) { 6783 return function (target, key) { decorator(target, key, paramIndex); } 6784}; 6785var PersonalizationService_1; 6786var personalizationService_a; 6787 6788 6789 6790 6791let PersonalizationService = PersonalizationService_1 = class PersonalizationService { 6792 constructor(toggleService) { 6793 this.toggleService = toggleService; 6794 } 6795 isForYouFilterEnabled() { 6796 return this.getSignalsForYouDql() != null; 6797 } 6798 getSignalsForYouDql(url = "") { 6799 var getSignalsForYouDql = localStorage.getItem(LocalStorageContainer.SignalsForYouDql); 6800 // Check the query to see if the we want to override the signalsForYou dql 6801 if (url.includes("overrideForYouDql=")) { 6802 getSignalsForYouDql = this.overrideForYouDql(url); 6803 } 6804 if (!getSignalsForYouDql) { 6805 return null; 6806 } 6807 //NOTE: always base64 encode Dql 6808 let encoded = `${btoa(getSignalsForYouDql).replace(/\+/g, "%2B")}`; 6809 if (encoded.length < PersonalizationService_1.QS_MAX_LENGTH) { 6810 return encoded; 6811 } 6812 else { 6813 return null; 6814 } 6815 } 6816 addPersonalizationParameters(url) { 6817 const signalsDql = this.getSignalsForYouDql(url); 6818 if (signalsDql === null) { 6819 return url; 6820 } 6821 const separator = url.indexOf("?") > -1 ? "&" : "?"; 6822 return `${url}${separator}signalsforyoudql=${signalsDql}`; 6823 } 6824 overrideForYouDql(url) { 6825 const queryString = url.split('?')[1] || ''; 6826 const params = new URLSearchParams(queryString); 6827 return params.get("overrideForYouDql"); 6828 } 6829}; 6830PersonalizationService.QS_MAX_LENGTH = 2000; 6831PersonalizationService = PersonalizationService_1 = personalizationService_decorate([ 6832 (0,inversify/* injectable */._G)(), 6833 personalizationService_param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 6834 personalizationService_metadata("design:paramtypes", [typeof (personalizationService_a = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? personalizationService_a : Object]) 6835], PersonalizationService); 6836 6837 6838// EXTERNAL MODULE: ./src/infrastructure/vue/types/appLocation.ts 6839var appLocation = __webpack_require__(8602); 6840// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/globalStore.ts + 11 modules 6841var globalStore = __webpack_require__(3551); 6842// EXTERNAL MODULE: ./src/infrastructure/vue/vehicleCardDeck/globalStore.ts + 1 modules 6843var vehicleCardDeck_globalStore = __webpack_require__(5467); 6844;// ./src/services/stores/storeProvider.ts 6845var storeProvider_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6846 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6847 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6848 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c >
6848 3 ? d(target, key, r) : d(target, key)) || r; 6849 return c > 3 && r && Object.defineProperty(target, key, r), r; 6850}; 6851 6852 6853 6854 6855let StoreProvider = class StoreProvider { 6856 initialize(appLocation) { 6857 this.appLocation = appLocation; 6858 } 6859 /** 6860 * Get the global store that a component should pull from based on its app's location 6861 */ 6862 getGlobalStore() { 6863 switch (this.appLocation) { 6864 case appLocation/* AppLocation */.V.CosmosSrp: 6865 return (0,globalStore/* useGlobalStore */.o)(); 6866 case appLocation/* AppLocation */.V.VehicleCardDeck: 6867 return (0,vehicleCardDeck_globalStore/* useGlobalStore */.o)(); 6868 default: 6869 return (0,globalStore/* useGlobalStore */.o)(); 6870 } 6871 } 6872}; 6873StoreProvider = storeProvider_decorate([ 6874 (0,inversify/* injectable */._G)() 6875], StoreProvider); 6876 6877 6878// EXTERNAL MODULE: ./src/components/vehicleDisclaimerModal/vehiclePricestakDisclaimerModal.ts 6879var vehiclePricestakDisclaimerModal = __webpack_require__(6579); 6880// EXTERNAL MODULE: ./src/components/digitalGarage/tdgConfirmAndContactButtons.ts 6881var tdgConfirmAndContactButtons = __webpack_require__(7067); 6882;// ./src/utilities/stringHelpers.ts 6883class StringHelpers { 6884 static isNullOrWhitespace(input) { 6885 if (input === undefined || input == null) { 6886 return true; 6887 } 6888 return input.replace(/\s/g, '').length < 1; 6889 } 6890} 6891 6892;// ./src/services/locationSortModalService/locationSortModalService.ts 6893var locationSortModalService_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 6894 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 6895 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 6896 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6897 return c > 3 && r && Object.defineProperty(target, key, r), r; 6898}; 6899 6900 6901let LocationSortModalService = class LocationSortModalService { 6902 constructor() { 6903 // These are the three types of interactions we track for the modal. 6904 // Coordinate is associated with the user sharing their GeoLocation, 6905 // zip is associated with the user entering a zip code, 6906 // closed is associated with the user closing the modal in any way without taking action. 6907 this.MODAL_INTERACTION_COORDINATE = 'coordinate'; 6908 this.MODAL_INTERACTION_ZIP = 'zip'; 6909 this.MODAL_INTERACTION_CLOSED = 'closed'; 6910 // Cookie storage keys 6911 this.MODAL_INTERACTION_COOKIE = 'DLRON_LOCATION_MODAL_USED'; 6912 this.COORDINATE_COOKIE = 'DLRON_coordinate'; 6913 this.ZIP_COOKIE = 'DLRON_ZIP'; 6914 this.COORDINATE_PARTIAL = 'DLRON_coordinate_'; 6915 } 6916 initialize(defaultSortOrder, enableDistanceModal) { 6917 this.setupModalEventListeners(); 6918 //NOTE: EnableDistanceModal only controls whether or not we show the modal on page load. 6919 if (enableDistanceModal && this.shouldShowGeoModalOnLoad(defaultSortOrder)) { 6920 // @ts-ignore 6921 jQuery('#geoFilterModal').modal('show'); 6922 this.findCookieAndShowButton(); 6923 } 6924 } 6925 askLocation() { 6926 if (!globalThis.DealeronCookie.hasItem(this.COORDINATE_COOKIE)) { 6927 if (navigator.geolocation) { 6928 navigator.geolocation.getCurrentPosition(this.createCoordinateCookie.bind(this), (error) => alert('Error: ' + error.message)); 6929 } 6930 else { 6931 alert('Geolocation is not supported by this browser.'); 6932 } 6933 } 6934 } 6935 acceptLocation() { 6936 if (this.isLocalStorageAvailable()) { 6937 sessionStorage.setItem(this.COORDINATE_PARTIAL + globalThis.location.href.split('?')[0], "1"); 6938 } 6939 else { 6940 alert('Error: Location sharing not enabled in private browsing'); 6941 } 6942 } 6943 sortLocationDynamic(selection) { 6944 let selectionValue = ""; 6945 if (selection.nodeName.toLowerCase() === "option") { 6946 // @ts-ignore 6947 selectionValue = selection.value; 6948 } 6949 else { 6950 selectionValue = selection.dataset.value; 6951 } 6952 if (!this.isLocationProvided()) { 6953 // @ts-ignore 6954 jQuery('#geoFilterModal').modal('show'); 6955 this.findCookieAndShowButton(); 6956 const qs = selectionValue.match(/st=([^&]*)/g); 6957 if (qs) { 6958 this.swapOrInsertDistanceSort('hasLocation', qs[0]);
6959 this.swapOrInsertDistanceSort('getLocation', qs[0]); 6960 this.swapOrInsertDistanceSort('zipSearchModalBtn', qs[0]); 6961 } 6962 } 6963 } 6964 zipcodeSearchDynamic(event) { 6965 event.preventDefault(); 6966 const zip = jQuery('#zipCodeModalTxt').val(); 6967 if (StringHelpers.isNullOrWhitespace(zip) || this.isInvalidUSZip(zip)) { 6968 document.getElementById('zipCodeModalTxt').style.borderColor = 'red'; 6969 } 6970 else { 6971 globalThis.DealeronCookie.setItem(this.ZIP_COOKIE, zip); 6972 this.setModalInteraction(this.MODAL_INTERACTION_ZIP); 6973 // i hate this 6974 const button = document.getElementById('dynamicZip'); 6975 button.innerHTML = zip; 6976 button.click(); 6977 // @ts-ignore 6978 jQuery('#geoFilterModal').modal('hide'); 6979 } 6980 } 6981 // -------------- Private helper methods -------------- 6982 // create cookie and querystring with location 6983 createCoordinateCookie(position) { 6984 const querystring = position.coords.latitude.toFixed(3) + '|' + position.coords.longitude.toFixed(3); 6985 if (this.isLocalStorageAvailable()) { 6986 // Use a normalized path ('/') to ensure subsequent retrieval works across environments 6987 globalThis.DealeronCookie.setItem(this.COORDINATE_COOKIE, querystring, null, '/'); 6988 this.setModalInteraction(this.MODAL_INTERACTION_COORDINATE); 6989 this.loadWithCoordinate(querystring); 6990 } 6991 else { 6992 alert('Error: Location sharing not enabled in private browsing'); 6993 } 6994 } 6995 // show correct button, append query string values setup to button values 6996 findCookieAndShowButton() { 6997 const url = globalThis.location.href; 6998 if (!url.includes('ZipCode')) { 6999 if (url.includes('?')) { 7000 jQuery('#zipSearchModalBtn').val(url + '&ZipCode='); 7001 } 7002 else { 7003 jQuery('#zipSearchModalBtn').val(url + '?ZipCode='); 7004 } 7005 } 7006 if (url.includes('?')) { 7007 jQuery('#getLocation').val(url + '¤tlocation='); 7008 } 7009 else { 7010 jQuery('#getLocation').val(url + '?currentlocation='); 7011 } 7012 } 7013 isLocalStorageAvailable() { 7014 try { 7015 sessionStorage.setItem('testKey', '1'); 7016 sessionStorage.removeItem('testKey'); 7017 return true; 7018 } 7019 catch (error) { 7020 alert('Error: session storage not available'); 7021 return false; 7022 } 7023 } 7024 isInvalidUSZip(zip) { 7025 return !/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(zip); 7026 } 7027 isLocationProvided() { 7028 const coord = globalThis.DealeronCookie.getItem(this.COORDINATE_COOKIE); 7029 const zip = globalThis.DealeronCookie.getItem(this.ZIP_COOKIE); 7030 return !!coord || !!zip; 7031 } 7032 loadWithCoordinate(querystring) { 7033 sessionStorage.setItem(this.COORDINATE_PARTIAL + globalThis.location.href.split('?')[0], "1"); 7034 globalThis.location.href = jQuery('#getLocation').val().replace('currentlocation=', 'currentlocation=' + this.trimLatLongCoordinate(querystring)); 7035 } 7036 setModalInteraction(type) { 7037 // Persist interaction for all recognized modal interaction states: 7038 // - coordinate: user shared geolocation 7039 // - zip: user provided a zip code 7040 // - closed: user explicitly dismissed without providing location 7041 // Storing 'closed' lets us suppress automatic re-opening while still 7042 // allowing an explicit distance sort selection to re-trigger the modal. 7043 if ([ 7044 this.MODAL_INTERACTION_COORDINATE, 7045 this.MODAL_INTERACTION_ZIP, 7046 this.MODAL_INTERACTION_CLOSED 7047 ].includes(type)) { 7048 globalThis.DealeronCookie.setItem(this.MODAL_INTERACTION_COOKIE, type, null, '/'); 7049 } 7050 } 7051 setupModalEventListeners() { 7052 $('#geoFilterModal').on('hidden.bs.modal', (e) => { 7053 const used = globalThis.DealeronCookie.getItem(this.MODAL_INTERACTION_COOKIE); 7054 if ((used != this.MODAL_INTERACTION_COORDINATE) && (used != this.MODAL_INTERACTION_ZIP)) { 7055 this.setModalInteraction(this.MODAL_INTERACTION_CLOSED); 7056 } 7057 }); 7058 } 7059 shouldShowGeoModalOnLoad(defaultSortOrder) { 7060 var _a, _b, _c; 7061 const url = globalThis.location.href; 7062 const normalizedDefault = (_a = defaultSortOrder === null || defaultSortOrder === void 0 ? void 0 : defaultSortOrder.toLowerCase()) !== null && _a !== void 0 ? _a : ''; 7063 let params; 7064 try { 7065 params = new URL(url).searchParams; 7066 } 7067 catch (_d) { 7068 // Fallback: create params from substring after '?' 7069 const query = (_b = url.split('?')[1]) !== null && _b !== void 0 ? _b : ''; 7070 params = new URLSearchParams(query); 7071 } 7072 const st = (_c = params.get('st')) === null || _c === void 0 ? void 0 : _c.toLowerCase(); 7073 const isSortByDistance = st ? st.startsWith('distance') : normalizedDefault.includes('distance'); 7074 // Presence of location indicators in query string 7075 const hasCoordInUrl = params.has('currentlocation'); 7076 // Accept both ZipCode and zipcode variants 7077 const hasZipInUrl = params.has('ZipCode') || params.has('zipcode'); 7078 const hasLocationInUrl = hasCoordInUrl || hasZipInUrl; 7079 // Stored location (cookie) only reflects actual coordinate or zip 7080 const hasStoredLocation = this.isLocationProvided(); 7081 // If user previously closed the modal without supplying location, suppress auto-display. 7082 const interaction = globalThis.DealeronCookie.getItem(this.MODAL_INTERACTION_COOKIE); 7083 const userPreviouslyClosed = interaction === this.MODAL_INTERACTION_CLOSED; 7084 if (userPreviouslyClosed) { 7085 return false;
7086 } 7087 // Show modal only if sorting by distance and neither URL nor stored location present 7088 return isSortByDistance && !hasLocationInUrl && !hasStoredLocation; 7089 } 7090 swapOrInsertDistanceSort(id, distanceFilter) { 7091 var _a; 7092 let previous = (_a = jQuery('#' + id).val()) !== null && _a !== void 0 ? _a : ''; 7093 if (/([?&])st=([^&]*)/i.test(previous)) { 7094 previous = previous 7095 .replace(/&st=([^&]*)/gi, `&${distanceFilter}`) 7096 .replace(/\?st=([^&]*)/gi, `?${distanceFilter}`); 7097 } 7098 else { 7099 // Append with correct delimiter logic 7100 const delimiter = previous.includes('?') ? '&' : (previous.length > 0 ? (previous.endsWith('&') ? '' : '&') : ''); 7101 previous = previous + delimiter + distanceFilter; 7102 } 7103 jQuery('#' + id).val(previous); 7104 } 7105 trimLatLongCoordinate(location) { 7106 const latLong = location.split('|'); 7107 return Number.parseFloat(latLong[0]).toFixed(3) + '|' + Number.parseFloat(latLong[1]).toFixed(3); 7108 } 7109}; 7110LocationSortModalService = locationSortModalService_decorate([ 7111 (0,inversify/* injectable */._G)() 7112], LocationSortModalService); 7113 7114 7115;// ./src/services/navbarSearch/navbarSearchService.ts 7116var navbarSearchService_decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 7117 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 7118 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 7119 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 7120 return c > 3 && r && Object.defineProperty(target, key, r), r; 7121}; 7122var navbarSearchService_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 7123 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 7124 return new (P || (P = Promise))(function (resolve, reject) { 7125 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 7126 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7127 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 7128 step((generator = generator.apply(thisArg, _arguments || [])).next()); 7129 }); 7130}; 7131 7132 7133let NavbarSearchService = class NavbarSearchService { 7134 constructor() { 7135 this.rootApiUrl = "/api/vhcliaa"; 7136 this.getNavigationBarSearchApiUrl = (dealerId) => { 7137 var _a, _b; 7138 const searchParams = serviceHelpers/* ServiceHelpers */.d.getBaseApiQueryString(null, null); 7139 const origin = (_b = (_a = globalThis.location) === null || _a === void 0 ? void 0 : _a.origin) !== null && _b !== void 0 ? _b : ""; 7140 return `${this.rootApiUrl}/navbar-search/${dealerId}?${serviceHelpers/* ServiceHelpers */.d.mapArrayToQueryString(searchParams)}&host=${origin}`; 7141 }; 7142 } 7143 getNavbarSearchSuggestions(dealerId) { 7144 return navbarSearchService_awaiter(this, void 0, void 0, function* () { 7145 const response = yield fetch(this.getNavigationBarSearchApiUrl(dealerId)); 7146 if (!response.ok) { 7147 const text = yield response.text(); 7148 throw new Error(`Failed to fetch navbar search data: ${response.status} ${text}`); 7149 } 7150 const data = yield response.json(); 7151 if (!Array.isArray(data) || !data.every((x) => typeof x === "string")) { 7152 throw new Error("Invalid navbar search suggestions format"); 7153 } 7154 return data; 7155 }); 7156 } 7157 redirectToSearchPage(searchRoute, query) { 7158 if (!(query === null || query === void 0 ? void 0 : query.trim()) || !searchRoute) { 7159 return; 7160 } 7161 globalThis.location.href = this.parseRedirectUrl(searchRoute, query); 7162 } 7163 getRedirectUrl(searchRoute, query) { 7164 return `${globalThis.location.origin}${this.parseRedirectUrl(searchRoute, query)}`; 7165 } 7166 parseRedirectUrl(searchRoute, query) { 7167 if (!(query === null || query === void 0 ? void 0 : query.trim()) || !searchRoute) { 7168 return ''; 7169 } 7170 // Ensure searchRoute starts with / to make it site-root relative 7171 const rootRelativeRoute = searchRoute.startsWith('/') ? searchRoute : `/${searchRoute}`; 7172 const encodedQuery = encodeURIComponent(query).replace(/%20/g, " "); 7173 return `${rootRelativeRoute}?q=${encodedQuery}`; 7174 } 7175}; 7176NavbarSearchService = navbarSearchService_decorate([ 7177 (0,inversify/* injectable */._G)()
7178], NavbarSearchService); 7179 7180 7181;// ./src/inversify.config.ts 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207const doIocContainer = new inversify/* Container */.mc(); 7208doIocContainer.bind(types/* TYPES */.Q.IToggleFetcher).to(toggleFetcher/* ToggleFetcher */.I).inSingletonScope(); 7209doIocContainer.bind(types/* TYPES */.Q.ITranslationFetcher).to(defaultTranslationFetcher/* TranslationFetcher */.$).inSingletonScope(); 7210doIocContainer.bind(types/* TYPES */.Q.IFilterPanel).to(FilterPanel).inSingletonScope(); 7211doIocContainer.bind(types/* TYPES */.Q.IInventoryWasabi).to(InventoryWasabi); 7212doIocContainer.bind(types/* TYPES */.Q.IWasabiFilterState).to(WasabiFilterState).inSingletonScope(); 7213doIocContainer.bind(types/* TYPES */.Q.IFilterState).to(FilterState).inSingletonScope(); 7214doIocContainer.bind(types/* TYPES */.Q.SrpWasabiGeneral).to(srpWasabi_General/* SrpWasabiGeneral */.d).inSingletonScope(); 7215doIocContainer.bind(types/* TYPES */.Q.VehicleCardWasabi).to(vehicleCardWasabi/* VehicleCardWasabi */.a).inSingletonScope(); 7216doIocContainer.bind(types/* TYPES */.Q.RangeFilterCosmos).to(RangeFilterCosmos).inSingletonScope(); 7217doIocContainer.bind(types/* TYPES */.Q.IVehicleService).to(vehicleService/* VehicleService */.K).inSingletonScope(); 7218doIocContainer.bind(types/* TYPES */.Q.IFilterService).to(FilterService).inSingletonScope(); 7219doIocContainer.bind(types/* TYPES */.Q.IPriceStakSynchronizer).to(PriceStakSynchronizer).inSingletonScope(); 7220doIocContainer.bind(types/* TYPES */.Q.ShareVehicleModel).to(shareVehicleModal/* ShareVehicleModal */.H).inSingletonScope(); 7221doIocContainer.bind(types/* TYPES */.Q.EvnVideoPlayer).to(evnVideoPlayer/* EvnVideoPlayer */.U).inSingletonScope(); 7222doIocContainer.bind(types/* TYPES */.Q.IToggleService).to(toggleService/* ToggleService */.gH).inSingletonScope(); 7223doIocContainer.bind(types/* TYPES */.Q.ITranslationService).to(translationService/* TranslationService */.L).inSingletonScope(); 7224doIocContainer.bind(types/* TYPES */.Q.IOemVehicleStatusService).to(OemVehicleStatusService).inSingletonScope(); 7225doIocContainer.bind(types/* TYPES */.Q.IPersonalizationService).to(PersonalizationService).inSingletonScope(); 7226doIocContainer.bind(types/* TYPES */.Q.IStoreProvider).to(StoreProvider).inSingletonScope(); 7227doIocContainer.bind(types/* TYPES */.Q.VehiclePricestakDisclaimerModal).to(vehiclePricestakDisclaimerModal/* VehiclePricestakDisclaimerModal */.F).inSingletonScope(); 7228doIocContainer.bind(types/* TYPES */.Q.TdgConfirmAndContactButtons).to(tdgConfirmAndContactButtons/* TdgConfirmAndContactButtons */.Y).inSingletonScope(); 7229doIocContainer.bind(types/* TYPES */.Q.ILocationSortModalService).to(LocationSortModalService).inSingletonScope(); 7230doIocContainer.bind(types/* TYPES */.Q.INavbarSearchService).to(NavbarSearchService).inSingletonScope(); 7231 7232 7233 7234/***/ }), 7235 7236/***/ 3249: 7237/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7238 7239"use strict"; 7240/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7241/* harmony export */ q: () => (/* binding */ VehicleLoadCause) 7242/* harmony export */ }); 7243var VehicleLoadCause; 7244(function (VehicleLoadCause) { 7245 VehicleLoadCause[VehicleLoadCause["Unknown"] = 0] = "Unknown"; 7246 VehicleLoadCause[VehicleLoadCause["InfiniteScroll"] = 1] = "InfiniteScroll"; 7247 VehicleLoadCause[VehicleLoadCause["SetPageSize"] = 2] = "SetPageSize"; 7248 VehicleLoadCause[VehicleLoadCause["SetPageNumber"] = 3] = "SetPageNumber"; 7249})(VehicleLoadCause || (VehicleLoadCause = {})); 7250 7251 7252/***/ }), 7253 7254/***/ 3277: 7255/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7256 7257"use strict"; 7258/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7259/* harmony export */ I: () => (/* binding */ UiLocationVersion) 7260/* harmony export */ }); 7261//NOTE: This MUST lineup with the EnumUiLocationVersion.cs in the backend. We compare backend int to the int here! 7262var UiLocationVersion; 7263(function (UiLocationVersion) { 7264 UiLocationVersion[UiLocationVersion["SrpWasabi"] = 1] = "SrpWasabi"; 7265 UiLocationVersion[UiLocationVersion["VdpHoisin"] = 3] = "VdpHoisin"; 7266 UiLocationVersion[UiLocationVersion["VehicleCardDeck"] = 8] = "VehicleCardDeck"; 7267})(UiLocationVersion || (UiLocationVersion = {})); 7268 7269 7270/***/ }), 7271 7272/***/ 3318: 7273/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7274 7275// style-loader: Adds some css to the DOM by adding a <style> tag 7276 7277// load the styles
7278var content = __webpack_require__(3907); 7279if(content.__esModule) content = content.default; 7280if(typeof content === 'string') content = [[module.id, content, '']]; 7281if(content.locals) module.exports = content.locals; 7282// add the styles to the DOM 7283var add = (__webpack_require__(8449)/* ["default"] */ .A) 7284var update = add("c1044942", content, false, {}); 7285// Hot Module Replacement 7286if(false) {} 7287 7288/***/ }), 7289 7290/***/ 3341: 7291/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 7292 7293"use strict"; 7294 7295 7296Object.defineProperty(exports, "__esModule", ({ 7297 value: true 7298})); 7299exports.BindingWhenOnSyntax = void 0; 7300var binding_on_syntax_1 = __webpack_require__(5078); 7301var binding_when_syntax_1 = __webpack_require__(4533); 7302var BindingWhenOnSyntax = function () { 7303 function BindingWhenOnSyntax(binding) { 7304 this._binding = binding; 7305 this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding); 7306 this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding); 7307 } 7308 BindingWhenOnSyntax.prototype.when = function (constraint) { 7309 return this._bindingWhenSyntax.when(constraint); 7310 }; 7311 BindingWhenOnSyntax.prototype.whenTargetNamed = function (name) { 7312 return this._bindingWhenSyntax.whenTargetNamed(name); 7313 }; 7314 BindingWhenOnSyntax.prototype.whenTargetIsDefault = function () { 7315 return this._bindingWhenSyntax.whenTargetIsDefault(); 7316 }; 7317 BindingWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) { 7318 return this._bindingWhenSyntax.whenTargetTagged(tag, value); 7319 }; 7320 BindingWhenOnSyntax.prototype.whenInjectedInto = function (parent) { 7321 return this._bindingWhenSyntax.whenInjectedInto(parent); 7322 }; 7323 BindingWhenOnSyntax.prototype.whenParentNamed = function (name) { 7324 return this._bindingWhenSyntax.whenParentNamed(name); 7325 }; 7326 BindingWhenOnSyntax.prototype.whenParentTagged = function (tag, value) { 7327 return this._bindingWhenSyntax.whenParentTagged(tag, value); 7328 }; 7329 BindingWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) { 7330 return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor); 7331 }; 7332 BindingWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) { 7333 return this._bindingWhenSyntax.whenNoAncestorIs(ancestor); 7334 }; 7335 BindingWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) { 7336 return this._bindingWhenSyntax.whenAnyAncestorNamed(name); 7337 }; 7338 BindingWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) { 7339 return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value); 7340 }; 7341 BindingWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) { 7342 return this._bindingWhenSyntax.whenNoAncestorNamed(name); 7343 }; 7344 BindingWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) { 7345 return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value); 7346 }; 7347 BindingWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) { 7348 return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint); 7349 }; 7350 BindingWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) { 7351 return this._bindingWhenSyntax.whenNoAncestorMatches(constraint); 7352 }; 7353 BindingWhenOnSyntax.prototype.onActivation = function (handler) { 7354 return this._bindingOnSyntax.onActivation(handler); 7355 }; 7356 return BindingWhenOnSyntax; 7357}(); 7358exports.BindingWhenOnSyntax = BindingWhenOnSyntax; 7359 7360/***/ }), 7361 7362/***/ 3402: 7363/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7364 7365"use strict"; 7366/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7367/* harmony export */ h: () => (/* binding */ SpaBreakpoints) 7368/* harmony export */ }); 7369class SpaBreakpoints { 7370} 7371SpaBreakpoints.breakpoint539 = 539; 7372SpaBreakpoints.breakpoint640 = 640; 7373SpaBreakpoints.breakpoint991 = 991; 7374SpaBreakpoints.breakpoint1200 = 1200; 7375SpaBreakpoints.breakpoint1533 = 1533; 7376SpaBreakpoints.breakpoint1920 = 1920; 7377 7378 7379/***/ }), 7380 7381/***/ 3415: 7382/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 7383 7384"use strict"; 7385 7386 7387Object.defineProperty(exports, "__esModule", ({ 7388 value: true 7389})); 7390exports.unmanaged = void 0; 7391var METADATA_KEY = __webpack_require__(4725); 7392var metadata_1 = __webpack_require__(8390); 7393var decorator_utils_1 = __webpack_require__(40); 7394function unmanaged() { 7395 return function (target, targetKey, index) { 7396 var metadata = new metadata_1.Metadata(METADATA_KEY.UNMANAGED_TAG, true); 7397 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 7398 }; 7399} 7400exports.unmanaged = unmanaged; 7401 7402/***/ }), 7403 7404/***/ 3551: 7405/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7406 7407"use strict"; 7408 7409// EXPORTS 7410__webpack_require__.d(__webpack_exports__, { 7411 o: () => (/* binding */ useGlobalStore) 7412}); 7413 7414// EXTERNAL MODULE: ./node_modules/pinia/dist/pinia.mjs + 1 modules 7415var pinia = __webpack_require__(1774); 7416// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm-browser.prod.js 7417var vue_runtime_esm_browser_prod = __webpack_require__(3568); 7418// EXTERNAL MODULE: ./src/core/enums/srpLayoutType.ts 7419var srpLayoutType = __webpack_require__(2491); 7420;// ./src/components/spaCosmos/head/searchResultsList/searchResultsListModel.ts 7421class SearchResultsListModel { 7422 constructor() { 7423 this.IsRefineSearchHidden = false;
7424 } 7425} 7426 7427;// ./src/components/spaCosmos/head/searchValet/searchValetModel.ts 7428class SearchValetModel { 7429} 7430 7431;// ./src/components/spaCosmos/pagination/searchPaginationModel.ts 7432class SearchPaginationModel { 7433} 7434 7435;// ./src/components/spaCosmos/searchFilters/filterPanel/filterListModel.ts 7436class FilterListModel { 7437 constructor() { 7438 this.Refinements = new Array(); 7439 } 7440} 7441 7442;// ./src/components/spaCosmos/searchFilters/filterPanel/filterStateModel.ts 7443 7444class FilterStateModel { 7445 constructor() { 7446 this.FilterList = new FilterListModel(); 7447 } 7448} 7449 7450;// ./src/components/spaCosmos/searchFilters/filterPanel/filterPanelModel.ts 7451 7452 7453class FilterPanelModel { 7454 constructor() { 7455 this.FilterList = new FilterListModel(); 7456 this.FilterStateModel = new FilterStateModel(); 7457 this.HideZeroMatchFilters = false; 7458 } 7459} 7460 7461;// ./src/components/spaCosmos/commonModels/dealerModel.ts 7462class DealerModel { 7463} 7464 7465// EXTERNAL MODULE: ./src/components/spaCosmos/commonModels/srpPageSettingsModel.ts 7466var srpPageSettingsModel = __webpack_require__(6611); 7467;// ./src/components/spaCosmos/commonModels/srpModel.ts 7468 7469 7470 7471 7472 7473 7474 7475class SrpModel { 7476 constructor() { 7477 this.FilterPanelModel = new FilterPanelModel(); 7478 this.SearchResultsListModel = new SearchResultsListModel(); 7479 this.SearchValetModel = new SearchValetModel(); 7480 this.SrpPageSettingsModel = new srpPageSettingsModel/* SrpPageSettingsModel */.J(); 7481 this.DealerModel = new DealerModel(); 7482 this.SearchPaginationModel = new SearchPaginationModel(); 7483 this.TpiSpace = 0; 7484 this.DefaultLayoutType = srpLayoutType/* SrpLayoutType */._.Grid; 7485 } 7486} 7487 7488// EXTERNAL MODULE: ./src/components/spaCosmos/customDropdown/customDropdownModel.ts 7489var customDropdownModel = __webpack_require__(3743); 7490// EXTERNAL MODULE: ./src/components/spaCosmos/utilities/spaBreakpoints.ts 7491var spaBreakpoints = __webpack_require__(3402); 7492// EXTERNAL MODULE: ./src/inversify.config.ts + 24 modules 7493var inversify_config = __webpack_require__(3239); 7494// EXTERNAL MODULE: ./src/services/toggles/toggleService.ts + 1 modules 7495var toggles_toggleService = __webpack_require__(7363); 7496// EXTERNAL MODULE: ./src/types/types.ts 7497var types = __webpack_require__(5644); 7498// EXTERNAL MODULE: ./src/utilities/urlHelpers.ts 7499var urlHelpers = __webpack_require__(7324); 7500// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/customEvents.ts 7501var customEvents = __webpack_require__(9600); 7502// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/filterStore.ts + 1 modules 7503var cosmosSrp_filterStore = __webpack_require__(6055); 7504;// ./src/services/tracker/oemTrackerService.ts 7505function callOemTracker(filters, count) { 7506 if (!window.TrackFilteredSearch) { 7507 return; 7508 } 7509 window.TrackFilteredSearch({ filters, count }); 7510} 7511 7512// EXTERNAL MODULE: ./node_modules/lodash.debounce/index.js 7513var lodash_debounce = __webpack_require__(730); 7514var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce); 7515// EXTERNAL MODULE: ./src/components/spaCosmos/pagination/pagingModel.ts 7516var pagingModel = __webpack_require__(1719); 7517;// ./src/components/spaCosmos/pagination/paginationDataModel.ts 7518class PaginationDataModel { 7519 constructor() { 7520 this.PageEnd = 1; 7521 this.PageNumber = 1; 7522 this.PageStart = 1; 7523 this.TotalPages = 1; 7524 this.TotalCount = 0; 7525 } 7526} 7527 7528// EXTERNAL MODULE: ./src/components/spaCosmos/pagination/srpScrollType.ts 7529var srpScrollType = __webpack_require__(1560); 7530// EXTERNAL MODULE: ./src/components/spaCosmos/utilities/SpaHelpers.ts 7531var SpaHelpers = __webpack_require__(4423); 7532// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/vehicleLoadCause.ts 7533var vehicleLoadCause = __webpack_require__(3249); 7534;// ./src/infrastructure/vue/cosmosSrp/vehicleStore.ts 7535var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 7536 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 7537 return new (P || (P = Promise))(function (resolve, reject) { 7538 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 7539 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7540 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 7541 step((generator = generator.apply(thisArg, _arguments || [])).next()); 7542 }); 7543}; 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557function emitSidekickNoResultsEvent(response) { 7558 var _a, _b, _c, _d; 7559 const totalCount = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.Paging) === null || _a === void 0 ? void 0 : _a.PaginationDataModel) === null || _b === void 0 ? void 0 : _b.TotalCount) !== null && _c !== void 0 ? _c : 0; 7560 if (totalCount !== 0 || !(response === null || response === void 0 ? void 0 : response.SidekickTriggerOnSrp)) { 7561 return; 7562 } 7563 globalThis.dispatchEvent(new CustomEvent("open-do-chat", { 7564 detail: { 7565 noResults: (_d = response === null || response === void 0 ? void 0 : response.NoResultsSearchValue) !== null && _d !== void 0 ? _d : "" 7566 } 7567 })); 7568} 7569function srpScrollTop() { 7570 // very hacky, if not impossible to calculate scroll using only DOM elements VHCLIAA controls 7571 const cBlock2Elem = document.querySelector("#cBlock2"); 7572 const desktopHeaderElem = document.querySelector(".headerWrapper.full"); 7573 const scrollTop = (cBlock2Elem === null || cBlock2Elem === void 0 ? void 0 : cBlock2Elem.offsetTop) - (desktopHeaderElem === null || desktopHeaderElem === void 0 ? void 0 : desktopHeaderElem.offsetHeight); 7574 if (globalThis.scrollY > scrollTop) { 7575 globalThis.scroll({ 7576 top: scrollTop, 7577 behavior: 'smooth' 7578 }); 7579 } 7580} 7581const useVehicleStore = (0,pinia/* defineStore */.nY)('vehicle', () => { 7582 const globalStore = useGlobalStore(); 7583 const vehicleService = inversify_config/* doIocContainer */.E.get(types/* TYPES */.Q.IVehicleService); 7584 const loadingVehicles = (0,vue_runtime_esm_browser_prod/* ref */.KR)(true); 7585 const isInfiniteScrollLoading = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 7586 const loadedScripts = (0,vue_runtime_esm_browser_prod/* ref */.KR)(new Set()); 7587 const isConsumerReportsScriptLoaded = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 7588 const isLoadingVehicles = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => loadingVehicles.value); 7589 const causeOfLastVehicleLoad = (0,vue_runtime_esm_browser_prod/* ref */.KR)(vehicleLoadCause/* VehicleLoadCause */.q.Unknown); 7590 // Note: Paging data only loads after the first call to vehicleStore.getCosmosSrpVehicles(). It is 7591 // not initialized before that call so we need to account for this anywhere we try to access 7592 // paging data before the first call to get vehicles 7593 const getTpiScripts = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => loadedScripts.value); 7594 const isPagingInitialized = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return ((_b = (_a = globalStore.getSrpModel) === null || _a === void 0 ? void 0 : _a.SearchPaginationModel) === null || _b === void 0 ? void 0 : _b.Paging) !== undefined; }); 7595 const getPaginationDataModel = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return (_b = (_a = globalStore.getSrpModel.SearchPaginationModel) === null || _a === void 0 ? void 0 : _a.Paging) === null || _b === void 0 ? void 0 : _b.PaginationDataModel; }); 7596 const infiniteScrollMaxReached = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 7597 var _a, _b, _c, _d, _e, _f, _g, _h; 7598 return ((_d = (_c = (_b = (_a = globalStore.getSrpModel.SearchPaginationModel) === null || _a === void 0 ? void 0 : _a.Paging) === null || _b === void 0 ? void 0 : _b.PaginationDataModel) === null || _c === void 0 ? void 0 : _c.PageNumber) !== null && _d !== void 0 ? _d : 1) >= 7599 ((_h = (_g = (_f = (_e = globalStore.getSrpModel.SearchPaginationModel) === null || _e === void 0 ? void 0 : _e.Paging) === null || _f === void 0 ? void 0 : _f.PaginationDataModel) === null || _g === void 0 ? void 0 : _g.TotalPages) !== null && _h !== void 0 ? _h : 1); 7600 });
7601 const getVehicleCount = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b, _c; return (_c = (_b = (_a = globalStore.getSrpModel.SearchPaginationModel) === null || _a === void 0 ? void 0 : _a.Paging) === null || _b === void 0 ? void 0 : _b.PaginationDataModel.TotalCount) !== null && _c !== void 0 ? _c : 0; }); 7602 const getVehicleScrollType = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return (_b = (_a = globalStore.getSrpModel.SearchPaginationModel) === null || _a === void 0 ? void 0 : _a.SrpScrollType) !== null && _b !== void 0 ? _b : srpScrollType/* SrpScrollType */.v.InfiniteScroll; }); 7603 const getTdgHeartVehicles = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return (_b = (_a = globalStore.getSrpModel.SearchPaginationModel) === null || _a === void 0 ? void 0 : _a.TdgSaveHeartVehicles) !== null && _b !== void 0 ? _b : {}; }); 7604 const getCauseOfLastVehicleLoad = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => causeOfLastVehicleLoad.value); 7605 function getVehiclesFromVehicleService() { 7606 var _a; 7607 return __awaiter(this, void 0, void 0, function* () { 7608 const response = yield vehicleService.getVehicles(globalStore.getSrpModel.DealerModel.DealerId, globalStore.getSrpModel.PageId, (_a = getPaginationDataModel.value) !== null && _a !== void 0 ? _a : new PaginationDataModel(), globalStore.getSrpModel.BaseFilter, globalStore.getDynamicCountsSearch); 7609 return response; 7610 }); 7611 } 7612 //Vehicles 7613 function getCosmosSrpVehicles() { 7614 return __awaiter(this, void 0, void 0, function* () { 7615 try { 7616 loadingVehicles.value = true; 7617 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.VehicleLoadStart)); 7618 const response = yield getVehiclesFromVehicleService(); 7619 updateVehiclePagingModel(response); 7620 emitSidekickNoResultsEvent(response); 7621 if (!globalStore.isInitialLoad) { 7622 //fire OEM specific tagging events 7623 callOemTracker(location.search, response.Paging.PaginationDataModel.TotalCount); 7624 } 7625 globalStore.setInitialLoad(false); 7626 loadingVehicles.value = false; 7627 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.VehicleSearchEnd)); 7628 //NOTE: CosmosSrpCustomEvents.VehicleLoadEnd is dispatched in other locations to account for 7629 // infinte scrolling and dynamicVehicleCards. VehicleSearchEnd only fires once so the 7630 // label containing the vehicle count updates 7631 } 7632 catch (error) { 7633 loadingVehicles.value = false; 7634 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.VehicleSearchEnd)); 7635 console.error(`Error fetching data: ${error}`); 7636 } 7637 }); 7638 } 7639 function updateVehiclePagingModel(response) { 7640 globalStore.setConditionalBlock(response.ConditionalBlockHtml); 7641 //update the search pagination information 7642 Object.assign(globalStore.getSrpModel.SearchPaginationModel, response); 7643 //update the search results list information 7644 if (globalStore.getSrpModel.SearchResultsListModel != null && (response === null || response === void 0 ? void 0 : response.SuggestionRedirectModel) != null) { 7645 globalStore.getSrpModel.SearchResultsListModel.HasRedirect = response.SuggestionRedirectModel.HasRedirect; 7646 globalStore.getSrpModel.SearchResultsListModel.HasSuggestion = response.SuggestionRedirectModel.HasSuggestion; 7647 globalStore.getSrpModel.SearchResultsListModel.SearchInsteadUrl = response.SuggestionRedirectModel.SearchInsteadUrl; 7648 globalStore.getSrpModel.SearchResultsListModel.SearchInsteadText = response.SuggestionRedirectModel.SearchInsteadText; 7649 globalStore.getSrpModel.SearchResultsListModel.ShowingResultsForUrl = response.SuggestionRedirectModel.ShowingResultsForUrl; 7650 globalStore.getSrpModel.SearchResultsListModel.ShowingResultsForText = response.SuggestionRedirectModel.ShowingResultsForText; 7651 } 7652 } 7653 function addMoreVehicleCardsOnScroll() { 7654 return __awaiter(this, void 0, void 0, function* () { 7655 try { 7656 isInfiniteScrollLoading.value = true; 7657 causeOfLastVehicleLoad.value = vehicleLoadCause/* VehicleLoadCause */.q.InfiniteScroll; 7658 globalStore.getSrpModel.SearchPaginationModel.Paging.PaginationDataModel.PageNumber++; 7659 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.VehicleLoadStart)); 7660 let baseFilter = globalStore.getSrpModel.BaseFilter; 7661 const response = yield vehicleService.getVehicles(globalStore.getSrpModel.DealerModel.DealerId, globalStore.getSrpModel.PageId, getPaginationDataModel.value, baseFilter, globalStore.getDynamicCountsSearch); 7662 //append the new vehicles to the existing list 7663 globalStore.getSrpModel.SearchPaginationModel.DisplayCards.push(...response.DisplayCards); 7664 //BEGIN OEM WORK 7665 //fire OEM specific tagging events 7666 callOemTracker(location.search, response.Paging.PaginationDataModel.TotalCount); 7667 //update tdg heart vehicles 7668 setTdgSaveHeartVehicles(response.TdgSaveHeartVehicles); 7669 //END OEM WORK 7670 isInfiniteScrollLoading.value = false;
7671 (0,vue_runtime_esm_browser_prod/* nextTick */.dY)(() => { 7672 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.VehicleLoadEnd)); 7673 }); 7674 } 7675 catch (error) { 7676 isInfiniteScrollLoading.value = false; 7677 console.error(`Error fetching data: ${error}`); 7678 } 7679 }); 7680 } 7681 const getVehiclesWithDebounce = lodash_debounce_default()(() => __awaiter(void 0, void 0, void 0, function* () { 7682 yield getCosmosSrpVehicles(); 7683 }), 500); 7684 // Immediate version for initial page load - bypasses 500ms debounce 7685 const getVehiclesImmediate = () => __awaiter(void 0, void 0, void 0, function* () { 7686 yield getCosmosSrpVehicles(); 7687 }); 7688 //NOTE: Call this after applying filters and reset the initial page to 1 7689 function getFilteredVehicles() { 7690 globalStore.filterStore.setWaitingToFilterVehicles(false); 7691 this.setPageNumber(1); 7692 } 7693 // Immediate version for initial page load 7694 function getFilteredVehiclesImmediate() { 7695 globalStore.filterStore.setWaitingToFilterVehicles(false); 7696 this.setPageNumber(1, true); 7697 } 7698 //Pagination 7699 function setPageNumber(pageNumber, useImmediate = false) { 7700 var _a; 7701 return __awaiter(this, void 0, void 0, function* () { 7702 if (isPagingInitialized.value) { 7703 // Scroll as early as possible to help UX shift 7704 srpScrollTop(); 7705 yield (0,vue_runtime_esm_browser_prod/* nextTick */.dY)(); 7706 globalStore.getSrpModel.SearchPaginationModel.Paging.PaginationDataModel.PageNumber = pageNumber; 7707 const removeParm = pageNumber === 1; 7708 globalStore.updateQueryParameter(pagingModel/* PaginationQueryParams */.p.PageNumber, pageNumber, removeParm); 7709 // Update pt=# in dynamicSearchCounts 7710 const dynamicCountsSearch = ((_a = globalStore.getDynamicCountsSearch) !== null && _a !== void 0 ? _a : "").replace(/pt=\d+/, `pt=${pageNumber}`); 7711 globalStore.setDynamicCountsSearch(dynamicCountsSearch); 7712 } 7713 causeOfLastVehicleLoad.value = vehicleLoadCause/* VehicleLoadCause */.q.SetPageNumber; 7714 if (useImmediate) { 7715 yield getVehiclesImmediate(); 7716 } 7717 else { 7718 yield getVehiclesWithDebounce(); 7719 } 7720 }); 7721 } 7722 function setPageSize(pageSize) { 7723 return __awaiter(this, void 0, void 0, function* () { 7724 globalStore.getSrpModel.SearchPaginationModel.Paging.PaginationDataModel.PageSize = pageSize; 7725 globalStore.updateQueryParameter(pagingModel/* PaginationQueryParams */.p.PageSize, pageSize, false); 7726 setPageNumber(1); 7727 causeOfLastVehicleLoad.value = vehicleLoadCause/* VehicleLoadCause */.q.SetPageSize; 7728 yield getVehiclesWithDebounce(); 7729 }); 7730 } 7731 function isScriptLoaded(scriptSrc) { 7732 if (loadedScripts.value.has(scriptSrc)) { 7733 return true; 7734 } 7735 return false; 7736 } 7737 function addLoadedScript(scriptSrc) { 7738 loadedScripts.value.add(scriptSrc); 7739 } 7740 // Event handler function for TDG heart event 7741 function processTdgVehicleHearts() { 7742 var _a; 7743 if (globalThis.DGDataHub && getTdgHeartVehicles.value && Object.keys(getTdgHeartVehicles.value).length > 0) { 7744 globalThis.DGDataHub.srpSaveItems = getTdgHeartVehicles.value; 7745 } 7746 // dependency components/digitalGarage/main.js 7747 (_a = globalThis.toyotaDigitalGarageScript) === null || _a === void 0 ? void 0 : _a.srpSaveItemsRender(); 7748 } 7749 function addConsumerReportsScript() { 7750 if (!isConsumerReportsScriptLoaded.value) { 7751 const url = "/resources/vhcliaa/components/consumerReports/consumerReports.js"; 7752 SpaHelpers/* SpaHelpers */.A.loadScript(`${url}?v=${globalThis.DlronGlobal_PlatformVersion}`); 7753 isConsumerReportsScriptLoaded.value = true; 7754 } 7755 } 7756 function setTdgSaveHeartVehicles(tdgVehicles) { 7757 if (tdgVehicles) { 7758 Object.assign(globalStore.getSrpModel.SearchPaginationModel.TdgSaveHeartVehicles, tdgVehicles); 7759 } 7760 } 7761 return { 7762 getCosmosSrpVehicles, 7763 isLoadingVehicles, 7764 addMoreVehicleCardsOnScroll, 7765 isInfiniteScrollLoading, 7766 infiniteScrollMaxReached, 7767 setPageNumber, 7768 setPageSize, 7769 isScriptLoaded, 7770 addLoadedScript, 7771 getFilteredVehicles, 7772 getFilteredVehiclesImmediate,
7773 getVehicleCount, 7774 getVehicleScrollType, 7775 isPagingInitialized, 7776 addConsumerReportsScript, 7777 processTdgVehicleHearts, 7778 getTpiScripts, 7779 getCauseOfLastVehicleLoad, 7780 srpScrollTop, 7781 getVehiclesFromVehicleService, 7782 }; 7783}); 7784 7785// EXTERNAL MODULE: ./src/components/spaCosmos/head/searchSort/searchSortModel.ts 7786var searchSortModel = __webpack_require__(9092); 7787;// ./src/infrastructure/vue/cosmosSrp/globalStore.ts 7788var globalStore_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 7789 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 7790 return new (P || (P = Promise))(function (resolve, reject) { 7791 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 7792 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7793 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 7794 step((generator = generator.apply(thisArg, _arguments || [])).next()); 7795 }); 7796}; 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810const useGlobalStore = (0,pinia/* defineStore */.nY)('global', () => { 7811 const filterStore = (0,cosmosSrp_filterStore/* useFilterStore */.P)(); 7812 const vehicleStore = useVehicleStore(); 7813 const activeVehicleDropdown = (0,vue_runtime_esm_browser_prod/* ref */.KR)(null); 7814 const toggleService = inversify_config/* doIocContainer */.E.get(types/* TYPES */.Q.IToggleService); 7815 const currentUrl = (0,vue_runtime_esm_browser_prod/* ref */.KR)(""); 7816 //Don't access this directly from outside the globalStore. Instead, use getSrpModel 7817 const srpModel = (0,vue_runtime_esm_browser_prod/* reactive */.Kh)(new SrpModel()); 7818 const dropdownStates = (0,vue_runtime_esm_browser_prod/* reactive */.Kh)(new Array()); 7819 const initializedDataComplete = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 7820 const initializationError = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 7821 const initialLoad = (0,vue_runtime_esm_browser_prod/* ref */.KR)(true); 7822 const isMobile = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 7823 const currentLayout = (0,vue_runtime_esm_browser_prod/* ref */.KR)(srpModel.DefaultLayoutType); 7824 const dynamicCountsSearch = (0,vue_runtime_esm_browser_prod/* ref */.KR)(""); 7825 const getDynamicCountsSearch = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => dynamicCountsSearch.value); 7826 const isProgrammaticScroll = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 7827 function setDynamicCountsSearch(value) { 7828 dynamicCountsSearch.value = value; 7829 } 7830 ; 7831 const getSrpModel = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => srpModel); 7832 const getActiveOem = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 7833 try { 7834 const raw = window.DlronGlobal_ActiveOemProgram; 7835 if (!raw) 7836 return null; 7837 if (typeof raw === 'string') 7838 return raw.toLowerCase(); 7839 return String(raw).toLowerCase(); 7840 } 7841 catch (_a) { 7842 return null; 7843 } 7844 }); 7845 const getSearchPageType = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 7846 var _a; 7847 return ((_a = srpModel.PageVehicleType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || 'new'; 7848 }); 7849 const getInventorySettingsSrp = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 7850 var _a, _b; 7851 try { 7852 return (_b = (_a = srpModel === null || srpModel === void 0 ? void 0 : srpModel.FilterPanelModel) === null || _a === void 0 ? void 0 : _a.InventorySettingsSrp) !== null && _b !== void 0 ? _b : null; 7853 } 7854 catch (_c) { 7855 return null; 7856 } 7857 }); 7858 const isInitialized = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => initializedDataComplete.value); 7859 const isInitialLoad = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => initialLoad.value); 7860 const getPrimaryMake = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => srpModel.DealerModel.PrimaryMake); 7861 const getIndustry = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => srpModel.DealerModel.Industry); 7862 const getCurrencyCode = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => srpModel.DealerModel.CurrencyCode); 7863 const getActiveVehicleDropdown = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => activeVehicleDropdown.value); 7864 const getDropdownStates = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => dropdownStates); 7865 const getCurrentUrl = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => currentUrl.value); 7866 const getIsTdgDealer = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => srpModel.DealerModel.IsTdgDealer); 7867 function setup() { 7868 return globalStore_awaiter(this, void 0, void 0, function* () { 7869 yield initializeData(); 7870 prefetchCalls(); 7871 initDropdownDictionary(); 7872 initOems(); 7873 initBrowserNavigation(); 7874 }); 7875 } 7876 function initializeData() { 7877 return globalStore_awaiter(this, void 0, void 0, function* () { 7878 yield new Promise((resolve, reject) => { 7879 var _a; 7880 if (!initializedDataComplete.value) { 7881 try { 7882 const componentElem = document.querySelector("#dlron-srp-model"); 7883 let json = null; 7884 if (componentElem) { 7885 json = JSON.parse((_a = componentElem.textContent) !== null && _a !== void 0 ? _a : ""); 7886 componentElem.remove(); 7887 } 7888 if (json) { 7889 Object.assign(srpModel, json); 7890 } 7891 } 7892 catch (e) { 7893 initializationError.value = true; 7894 reject(new Error(`Error parsing JSON data from model: ${e}`)); 7895 } 7896 } 7897 initializedDataComplete.value = true; 7898 resolve(true); 7899 }); 7900 }); 7901 } 7902 function initDropdownDictionary() { 7903 // keys in dropdownStates[] are the numeric values of each enum 7904 // ex. Pagination = 0 7905 for (const dropdownType in Object.keys(customDropdownModel/* DropdownType */.m).filter(key => !Number.isNaN(Number(key)))) { 7906 dropdownStates[Number.parseInt(dropdownType)] = 0; 7907 } 7908 } 7909 function initOems() { 7910 document.addEventListener(customEvents/* CosmosSrpCustomEvents */.A.VehicleLoadEnd, vehicleStore.processTdgVehicleHearts); 7911 } 7912 //Update the conditional blocks. 7913 //This is a special case where we need to remove/update the existing conditional block 7914 //because the conditional block is located outside of the Vue app 7915 function setConditionalBlock(data) { 7916 let parsedData = null; 7917 if ((toggleService === null || toggleService === void 0 ? void 0 : toggleService.getToggleStatus(toggles_toggleService/* Toggle */.lM.DO37371)) === true) { 7918 try { 7919 const json = JSON.parse(data); 7920 if ((json === null || json === void 0 ? void 0 : json.Id) && (json === null || json === void 0 ? void 0 : json.Children) && (json === null || json === void 0 ? void 0 : json.TargetAreaId)) { 7921 data = `<do-banner target-area="${json.TargetAreaId}" carousel-id="${json.Id}" banner-id="${json.Children}"></do-banner>`; 7922 parsedData = json; 7923 } 7924 else { 7925 data = null; 7926 } 7927 } 7928 catch (error) { 7929 console.error("Error parsing conditional block JSON:", error); 7930 data = null; 7931 } 7932 } 7933 const mainContent = document.getElementById("content-main"); 7934 let conditionalBlocksParent; 7935 let bannerBlocksParent; 7936 let replaceConditionalBlock = true; 7937 if (mainContent) { 7938 if ((toggleService === null || toggleService === void 0 ? void 0 : toggleService.getToggleStatus(toggles_toggleService/* Toggle */.lM.DO37371)) === true) { 7939 const doBanner = mainContent.querySelector("do-banner"); 7940 replaceConditionalBlock = !isBannerDataSame(doBanner, parsedData); 7941 if (replaceConditionalBlock && doBanner) { 7942 bannerBlocksParent = doBanner.parentElement; 7943 doBanner.remove(); 7944 } 7945 } 7946 // TODO: Remove this when we are ready to remove the old conditional blocks 7947 const conditionalBlocks = mainContent.querySelector(".conditionalBlocks"); 7948 if (conditionalBlocks) { 7949 conditionalBlocksParent = conditionalBlocks.parentElement; 7950 conditionalBlocks.remove(); 7951 } 7952 } 7953 if ((toggleService === null || toggleService === void 0 ? void 0 : toggleService.getToggleStatus(toggles_toggleService/* Toggle */.lM.DO37371)) === true) { 7954 if (replaceConditionalBlock) { 7955 if (data && bannerBlocksParent) { 7956 bannerBlocksParent.insertAdjacentHTML("afterbegin", data); 7957 } 7958 else if (data) { 7959 mainContent.insertAdjacentHTML("afterbegin", data); 7960 } 7961 } 7962 } 7963 else { 7964 //TODO: Remove this when we are ready to remove the old conditional blocks 7965 if (data && conditionalBlocksParent) { 7966 conditionalBlocksParent.insertAdjacentHTML("afterbegin", data); 7967 } 7968 else if (data) { 7969 mainContent.insertAdjacentHTML("afterbegin", data); 7970 } 7971 } 7972 } 7973 function updateQueryParameter(key, value, remove) { 7974 const currentURL = new URL(window.location.href); 7975 const searchParams = urlHelpers/* UrlHelpers */.b.queryStringToArray(currentURL.search); 7976 if (remove) { 7977 const index = searchParams.findIndex(param => param.key === key); 7978 // If the object is found, remove it from the array 7979 if (index > -1) { 7980 searchParams.splice(index, 1); 7981 } 7982 } 7983 else { 7984 // Update or add the query parameter 7985 urlHelpers/* UrlHelpers */.b.setQueryParam(key, value, searchParams); 7986 } 7987 currentURL.search = urlHelpers/* UrlHelpers */.b.mapArrayToQueryString(searchParams); 7988 updateUrlState(currentURL.toString()); 7989 } 7990 function updateUrlState(url) { 7991 // We do not push a history state if it is the initial page load 7992 // This allows us to reload the page when using browser navigation 7993 if (!isInitialLoad.value && (url != getCurrentUrl.value)) { 7994 currentUrl.value = url; 7995 history.pushState({}, '', url); 7996 } 7997 } 7998 function initBrowserNavigation() { 7999 window.addEventListener('popstate', () => { 8000 location.reload(); 8001 }); 8002 } 8003 function setInitialLoad(value) { 8004 initialLoad.value = value; 8005 } 8006 function setActiveVehicleDropdown(value) { 8007 activeVehicleDropdown.value = value; 8008 } 8009 function setDropdownState(type, selectedIndex) { 8010 dropdownStates[type] = selectedIndex; 8011 } 8012 function updateProgramaticScroll(value) { 8013 isProgrammaticScroll.value = value; 8014 } 8015 function setUrlWithDynamicCountFilters() { 8016 // If we have a Dynamic Counts Search (can't add those to url because it will apply on refresh) then we add it to url now 8017 // because we have applied those filters 8018 if (dynamicCountsSearch.value) { 8019 const url = new URL(location.href); 8020 url.search = dynamicCountsSearch.value; 8021 const formattedUrl = url.toString(); 8022 updateUrlState(formattedUrl); 8023 } 8024 } 8025 function prefetchCalls() { 8026 // Set mobile state before prefetching using the centralized breakpoint 8027 isMobile.value = window.innerWidth <= spaBreakpoints/* SpaBreakpoints */.h.breakpoint991; 8028 if (isMobile.value && !filterStore.isDynamicFiltering) { 8029 vehicleStore.getVehiclesFromVehicleService(); 8030 } 8031 else { 8032 filterStore.getFiltersFromFilterService(); 8033 vehicleStore.getVehiclesFromVehicleService(); 8034 } 8035 } 8036 function injectBestMatchSortOption(hasActiveSearch) { 8037 var _a, _b; 8038 const sortModels = [ 8039 (_a = srpModel.SearchResultsListModel) === null || _a === void 0 ? void 0 : _a.SearchSortModel, 8040 (_b = srpModel.SearchValetModel) === null || _b === void 0 ? void 0 : _b.SearchSortModel 8041 ].filter(model => { var _a; return (_a = model === null || model === void 0 ? void 0 : model.SortOptions) === null || _a === void 0 ? void 0 : _a.length; }); 8042 if (sortModels.length === 0) { 8043 return; 8044 } 8045 for (const sortModel of sortModels) { 8046 if (hasActiveSearch) { 8047 let relevanceIndex = sortModel.SortOptions.findIndex(opt => opt.DisplayableSortDataPair.Field === searchSortModel/* SortType */.r3.Relevance && opt.DisplayableSortDataPair.Desce
8047nding); 8048 if (relevanceIndex === -1) { 8049 const bestMatchOption = new searchSortModel/* SortData */.F2([new searchSortModel/* SortDataPair */.pC(searchSortModel/* SortType */.r3.Relevance, true)], false, 'Relevance desc'); 8050 sortModel.SortOptions.unshift(bestMatchOption); 8051 relevanceIndex = 0; 8052 } 8053 else if (relevanceIndex > 0) { 8054 const existingBestMatch = sortModel.SortOptions.splice(relevanceIndex, 1)[0]; 8055 if (!existingBestMatch.RequestWithQueryString) { 8056 existingBestMatch.RequestWithQueryString = 'Relevance desc'; 8057 } 8058 sortModel.SortOptions.unshift(existingBestMatch); 8059 relevanceIndex = 0; 8060 } 8061 else if (!sortModel.SortOptions[0].RequestWithQueryString) { 8062 sortModel.SortOptions[0].RequestWithQueryString = 'Relevance desc'; 8063 } 8064 sortModel.SortSelected = new searchSortModel/* SortDataPair */.pC(searchSortModel/* SortType */.r3.Relevance, true); 8065 setDropdownState(customDropdownModel/* DropdownType */.m.SearchSort, relevanceIndex); 8066 continue; 8067 } 8068 for (let i = sortModel.SortOptions.length - 1; i >= 0; i--) { 8069 if (sortModel.SortOptions[i].DisplayableSortDataPair.Field === searchSortModel/* SortType */.r3.Relevance) { 8070 sortModel.SortOptions.splice(i, 1); 8071 } 8072 } 8073 } 8074 } 8075 /// NOTE: Double-check if any props added here are also needed for the VehicleCardDeck (ex. /mysavedvehicles page) 8076 /// Props needed for VehicleCardDeck need to be copied over to infrastructure/vue/vehicleCardDeck/globalStore.ts 8077 return { 8078 setup, 8079 getSrpModel, 8080 getActiveOem, 8081 getInventorySettingsSrp, 8082 isInitialized, 8083 isInitialLoad, 8084 setInitialLoad, 8085 updateUrlState, 8086 setConditionalBlock, 8087 updateQueryParameter, 8088 filterStore, 8089 vehicleStore, 8090 getPrimaryMake, 8091 setActiveVehicleDropdown, 8092 getActiveVehicleDropdown, 8093 setDropdownState, 8094 getDropdownStates, 8095 setDynamicCountsSearch, 8096 getDynamicCountsSearch, 8097 isMobile, 8098 currentLayout, 8099 setUrlWithDynamicCountFilters, 8100 getIndustry, 8101 isProgrammaticScroll, 8102 updateProgramaticScroll, 8103 getCurrencyCode, 8104 getSearchPageType, 8105 getIsTdgDealer, 8106 injectBestMatchSortOption 8107 }; 8108}); 8109function isBannerDataSame(doBanner, data) { 8110 var _a, _b, _c, _d, _e; 8111 if (!doBanner || !data) 8112 return false; 8113 try { 8114 const targetAreaAttr = ((_a = doBanner.getAttribute('target-area')) !== null && _a !== void 0 ? _a : '').trim(); 8115 const carouselIdAttr = ((_b = doBanner.getAttribute('carousel-id')) !== null && _b !== void 0 ? _b : '').trim(); 8116 const bannerIdAttr = ((_c = doBanner.getAttribute('banner-id')) !== null && _c !== void 0 ? _c : '').trim(); 8117 const bannerIds = bannerIdAttr.length ? bannerIdAttr.split(',').map(s => s.trim()).filter(Boolean) : []; 8118 const jsonTarget = String((_d = data.TargetAreaId) !== null && _d !== void 0 ? _d : '').trim(); 8119 const jsonId = String((_e = data.Id) !== null && _e !== void 0 ? _e : '').trim(); 8120 let jsonChildrenArray = []; 8121 if (typeof data.Children === 'string') { 8122 jsonChildrenArray = data.Children.split(',').map((c) => c.trim()).filter(Boolean); 8123 } 8124 if (jsonTarget !== targetAreaAttr) 8125 return false; 8126 if (jsonId !== carouselIdAttr) 8127 return false; 8128 if (jsonChildrenArray.length !== bannerIds.length) 8129 return false; 8130 return data.Children === bannerIdAttr; 8131 } 8132 catch (e) { 8133 console.error('Error matching do-banner attributes to json:', e); 8134 return false; 8135 } 8136} 8137 8138 8139/***/ }), 8140 8141/***/ 3553: 8142/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 8143 8144"use strict"; 8145 8146
8147var __spreadArrays = this && this.__spreadArrays || function () { 8148 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; 8149 for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; 8150 return r; 8151}; 8152Object.defineProperty(exports, "__esModule", ({ 8153 value: true 8154})); 8155exports.resolveInstance = void 0; 8156var error_msgs_1 = __webpack_require__(7718); 8157var literal_types_1 = __webpack_require__(7802); 8158var METADATA_KEY = __webpack_require__(4725); 8159function _injectProperties(instance, childRequests, resolveRequest) { 8160 var propertyInjectionsRequests = childRequests.filter(function (childRequest) { 8161 return childRequest.target !== null && childRequest.target.type === literal_types_1.TargetTypeEnum.ClassProperty; 8162 }); 8163 var propertyInjections = propertyInjectionsRequests.map(resolveRequest); 8164 propertyInjectionsRequests.forEach(function (r, index) { 8165 var propertyName = ""; 8166 propertyName = r.target.name.value(); 8167 var injection = propertyInjections[index]; 8168 instance[propertyName] = injection; 8169 }); 8170 return instance; 8171} 8172function _createInstance(Func, injections) { 8173 return new (Func.bind.apply(Func, __spreadArrays([void 0], injections)))(); 8174} 8175function _postConstruct(constr, result) { 8176 if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) { 8177 var data = Reflect.getMetadata(METADATA_KEY.POST_CONSTRUCT, constr); 8178 try { 8179 result[data.value](); 8180 } catch (e) { 8181 throw new Error(error_msgs_1.POST_CONSTRUCT_ERROR(constr.name, e.message)); 8182 } 8183 } 8184} 8185function resolveInstance(constr, childRequests, resolveRequest) { 8186 var result = null; 8187 if (childRequests.length > 0) { 8188 var constructorInjectionsRequests = childRequests.filter(function (childRequest) { 8189 return childRequest.target !== null && childRequest.target.type === literal_types_1.TargetTypeEnum.ConstructorArgument; 8190 }); 8191 var constructorInjections = constructorInjectionsRequests.map(resolveRequest); 8192 result = _createInstance(constr, constructorInjections); 8193 result = _injectProperties(result, childRequests, resolveRequest); 8194 } else { 8195 result = new constr(); 8196 } 8197 _postConstruct(constr, result); 8198 return result; 8199} 8200exports.resolveInstance = resolveInstance; 8201 8202/***/ }), 8203 8204/***/ 3568: 8205/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8206 8207"use strict"; 8208/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8209/* harmony export */ $u: () => (/* binding */ ld), 8210/* harmony export */ $y: () => (/* binding */ lx), 8211/* harmony export */ C4: () => (/* binding */ es), 8212/* harmony export */ CE: () => (/* binding */ it), 8213/* harmony export */ D$: () => (/* binding */ ol), 8214/* harmony export */ EW: () => (/* binding */ ij), 8215/* harmony export */ Ef: () => (/* binding */ of), 8216/* harmony export */ FK: () => (/* binding */ r0), 8217/* harmony export */ Fv: () => (/* binding */ ig), 8218/* harmony export */ IG: () => (/* binding */ tC), 8219/* harmony export */ KC: () => (/* binding */ lc), 8220/* harmony export */ KR: () => (/* binding */ tk), 8221/* harmony export */ Kh: () => (/* binding */ tp), 8222/* harmony export */ Lk: () => (/* binding */ iu), 8223/* harmony export */ PS: () => (/* binding */ rl), 8224/* harmony export */ Q3: () => (/* binding */ iv), 8225/* harmony export */ QW: () => (/* binding */ tF), 8226/* harmony export */ R1: () => (/* binding */ tO), 8227/* harmony export */ Tr: () => (/* binding */ en), 8228/* harmony export */ WQ: () => (/* binding */ rn), 8229/* harmony export */ Wv: () => (/* binding */ il), 8230/* harmony export */ aG: () => (/* binding */ sh), 8231/* harmony export */ bF: () => (/* binding */ ic), 8232/* harmony export */ bo: () => (/* binding */ np), 8233/* harmony export */ dY: () => (/* binding */ t9), 8234/* harmony export */ eB: () => (/* binding */ i7), 8235/* harmony export */ eW: () => (/* binding */ ih), 8236/* harmony export */ g2: () => (/* binding */ lS), 8237/* harmony export */ g8: () => (/* binding */ tm), 8238/* harmony export */ hi: () => (/* binding */ lg), 8239/* harmony export */ i9: () => (/* binding */ tw), 8240/* harmony export */ jR: () => (/* binding */ oi), 8241/* harmony export */ jr: () => (/* binding */ e_), 8242/* harmony export */ k6: () => (/* binding */ nf), 8243/* harmony export */ o5: () => (/* binding */ em), 8244/* harmony export */ pI: () => (/* binding */ lT), 8245/* harmony export */ pM: () => (/* binding */ nj), 8246/* harmony export */ sV: () => (/* binding */ lf), 8247/* harmony export */ uX: () => (/* binding */ r3), 8248/* harmony export */ uY: () => (/* binding */ ev),
8249/* harmony export */ ux: () => (/* binding */ tS), 8250/* harmony export */ v6: () => (/* binding */ ib), 8251/* harmony export */ v_: () => (/* binding */ ep), 8252/* harmony export */ wB: () => (/* binding */ rM), 8253/* harmony export */ xo: () => (/* binding */ lh) 8254/* harmony export */ }); 8255/* unused harmony exports BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, compile, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, customRef, defineAsyncComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, getCurrentInstance, getCurrentWatcher, getTransitionRawChildren, guardReactiveProps, h, handleError, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, isMemoSame, isProxy, isReadonly, isRuntimeOnly, isShallow, isVNode, mergeDefaults, mergeModels, normalizeProps, onActivated, onBeforeUpdate, onDeactivated, onErrorCaptured, onRenderTracked, onRenderTriggered, onServerPrefetch, onWatcherCleanup, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, readonly, registerRuntimeCompiler, render, renderSlot, resolveDirective, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toHandlerKey, toHandlers, toRef, toValue, transformVNodeArgs, triggerRef, useAttrs, useCssModule, useCssVars, useHost, useId, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, version, warn, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withDefaults, withMemo, withScopeId */ 8256/** 8257* vue v3.5.13 8258* (c) 2018-present Yuxi (Evan) You and Vue contributors 8259* @license MIT
8260**/var e, t; 8261let n, l, r, i, s, o, a, u, c, f, p, d; 8262function h(e) { 8263 let t = Object.create(null); 8264 for (let n of e.split(",")) t[n] = 1; 8265 return e => e in t; 8266} 8267let g = {}, 8268 m = [], 8269 _ = () => {}, 8270 y = () => !1, 8271 b = e => 111 === e.charCodeAt(0) && 110 === e.charCodeAt(1) && (e.charCodeAt(2) > 122 || 97 > e.charCodeAt(2)), 8272 S = e => e.startsWith("onUpdate:"), 8273 C = Object.assign, 8274 x = (e, t) => { 8275 let n = e.indexOf(t); 8276 n > -1 && e.splice(n, 1); 8277 }, 8278 E = Object.prototype.hasOwnProperty, 8279 w = (e, t) => E.call(e, t), 8280 k = Array.isArray, 8281 T = e => "[object Map]" === F(e), 8282 A = e => "[object Set]" === F(e), 8283 R = e => "[object Date]" === F(e), 8284 N = e => "[object RegExp]" === F(e), 8285 O = e => "function" == typeof e, 8286 P = e => "string" == typeof e, 8287 M = e => "symbol" == typeof e, 8288 I = e => null !== e && "object" == typeof e, 8289 L = e => (I(e) || O(e)) && O(e.then) && O(e.catch), 8290 D = Object.prototype.toString, 8291 F = e => D.call(e), 8292 V = e => F(e).slice(8, -1), 8293 U = e => "[object Object]" === F(e), 8294 j = e => P(e) && "NaN" !== e && "-" !== e[0] && "" + parseInt(e, 10) === e, 8295 B = h(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"), 8296 $ = e => { 8297 let t = Object.create(null); 8298 return n => t[n] || (t[n] = e(n)); 8299 }, 8300 H = /-(\w)/g, 8301 W = $(e => e.replace(H, (e, t) => t ? t.toUpperCase() : "")), 8302 K = /\B([A-Z])/g, 8303 z = $(e => e.replace(K, "-$1").toLowerCase()), 8304 q = $(e => e.charAt(0).toUpperCase() + e.slice(1)), 8305 G = $(e => e ? `on${q(e)}` : ""), 8306 J = (e, t) => !Object.is(e, t), 8307 X = (e, ...t) => { 8308 for (let n = 0; n < e.length; n++) e[n](...t); 8309 }, 8310 Z = (e, t, n, l = !1) => { 8311 Object.defineProperty(e, t, { 8312 configurable: !0, 8313 enumerable: !1, 8314 writable: l, 8315 value: n 8316 }); 8317 }, 8318 Y = e => { 8319 let t = parseFloat(e); 8320 return isNaN(t) ? e : t; 8321 }, 8322 Q = e => { 8323 let t = P(e) ? Number(e) : NaN; 8324 return isNaN(t) ? e : t; 8325 }, 8326 ee = () => n || (n = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof __webpack_require__.g ? __webpack_require__.g : {}), 8327 et = h("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"); 8328function en(e) { 8329 if (k(e)) { 8330 let t = {}; 8331 for (let n = 0; n < e.length; n++) { 8332 let l = e[n], 8333 r = P(l) ? function (e) { 8334 let t = {}; 8335 return e.replace(ei, "").split(el).forEach(e => { 8336 if (e) { 8337 let n = e.split(er); 8338 n.length > 1 && (t[n[0].trim()] = n[1].trim()); 8339 } 8340 }), t; 8341 }(l) : en(l); 8342 if (r) for (let e in r) t[e] = r[e]; 8343 } 8344 return t; 8345 } 8346 if (P(e) || I(e)) return e; 8347} 8348let el = /;(?![^(]*\))/g, 8349 er = /:([^]+)/, 8350 ei = /\/\*[^]*?\*\//g; 8351function es(e) { 8352 let t = ""; 8353 if (P(e)) t = e;else if (k(e)) for (let n = 0; n < e.length; n++) { 8354 let l = es(e[n]); 8355 l && (t += l + " "); 8356 } else if (I(e)) for (let n in e) e[n] && (t += n + " "); 8357 return t.trim(); 8358} 8359function eo(e) { 8360 if (!e) return null; 8361 let { 8362 class: t, 8363 style: n 8364 } = e; 8365 return t && !P(t) && (e.class = es(t)), n && (e.style = en(n)), e; 8366} 8367let ea = h("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly"); 8368function eu(e, t) { 8369 if (e === t) return !0; 8370 let n = R(e), 8371 l = R(t); 8372 if (n || l) return !!n && !!l && e.getTime() === t.getTime(); 8373 if (n = M(e), l = M(t), n || l) return e === t; 8374 if (n = k(e), l = k(t), n || l) return !!n && !!l && function (e, t) { 8375 if (e.length !== t.length) return !1; 8376 let n = !0; 8377 for (let l = 0; n && l < e.length; l++) n = eu(e[l], t[l]); 8378 return n; 8379 }(e, t); 8380 if (n = I(e), l = I(t), n || l) { 8381 if (!n || !l || Object.keys(e).length !== Object.keys(t).length) return !1; 8382 for (let n in e) { 8383 let l = e.hasOwnProperty(n), 8384 r = t.hasOwnProperty(n); 8385 if (l && !r || !l && r || !eu(e[n], t[n])) return !1; 8386 } 8387 } 8388 return String(e) === String(t); 8389} 8390function ec(e, t) { 8391 return e.findIndex(e => eu(e, t)); 8392} 8393let ef = e => !!(e && !0 === e.__v_isRef),
8394 ep = e => P(e) ? e : null == e ? "" : k(e) || I(e) && (e.toString === D || !O(e.toString)) ? ef(e) ? ep(e.value) : JSON.stringify(e, ed, 2) : String(e), 8395 ed = (e, t) => ef(t) ? ed(e, t.value) : T(t) ? { 8396 [`Map(${t.size})`]: [...t.entries()].reduce((e, [t, n], l) => (e[eh(t, l) + " =>"] = n, e), {}) 8397 } : A(t) ? { 8398 [`Set(${t.size})`]: [...t.values()].map(e => eh(e)) 8399 } : M(t) ? eh(t) : !I(t) || k(t) || U(t) ? t : String(t), 8400 eh = (e, t = "") => { 8401 var n; 8402 return M(e) ? `Symbol(${null != (n = e.description) ? n : t})` : e; 8403 }; 8404class eg { 8405 constructor(e = !1) { 8406 this.detached = e, this._active = !0, this.effects = [], this.cleanups = [], this._isPaused = !1, this.parent = l, !e && l && (this.index = (l.scopes || (l.scopes = [])).push(this) - 1); 8407 } 8408 get active() { 8409 return this._active; 8410 } 8411 pause() { 8412 if (this._active) { 8413 let e, t; 8414 if (this._isPaused = !0, this.scopes) for (e = 0, t = this.scopes.length; e < t; e++) this.scopes[e].pause(); 8415 for (e = 0, t = this.effects.length; e < t; e++) this.effects[e].pause(); 8416 } 8417 } 8418 resume() { 8419 if (this._active && this._isPaused) { 8420 let e, t; 8421 if (this._isPaused = !1, this.scopes) for (e = 0, t = this.scopes.length; e < t; e++) this.scopes[e].resume(); 8422 for (e = 0, t = this.effects.length; e < t; e++) this.effects[e].resume(); 8423 } 8424 } 8425 run(e) { 8426 if (this._active) { 8427 let t = l; 8428 try { 8429 return l = this, e(); 8430 } finally { 8431 l = t; 8432 } 8433 } 8434 } 8435 on() { 8436 l = this; 8437 } 8438 off() { 8439 l = this.parent; 8440 } 8441 stop(e) { 8442 if (this._active) { 8443 let t, n; 8444 for (t = 0, this._active = !1, n = this.effects.length; t < n; t++) this.effects[t].stop(); 8445 for (t = 0, this.effects.length = 0, n = this.cleanups.length; t < n; t++) this.cleanups[t](); 8446 if (this.cleanups.length = 0, this.scopes) { 8447 for (t = 0, n = this.scopes.length; t < n; t++) this.scopes[t].stop(!0); 8448 this.scopes.length = 0; 8449 } 8450 if (!this.detached && this.parent && !e) { 8451 let e = this.parent.scopes.pop(); 8452 e && e !== this && (this.parent.scopes[this.index] = e, e.index = this.index); 8453 } 8454 this.parent = void 0; 8455 } 8456 } 8457} 8458function ev(e) { 8459 return new eg(e); 8460} 8461function em() { 8462 return l; 8463} 8464function e_(e, t = !1) { 8465 l && l.cleanups.push(e); 8466} 8467let ey = new WeakSet(); 8468class eb { 8469 constructor(e) { 8470 this.fn = e, this.deps = void 0, this.depsTail = void 0, this.flags = 5, this.next = void 0, this.cleanup = void 0, this.scheduler = void 0, l && l.active && l.effects.push(this); 8471 } 8472 pause() { 8473 this.flags |= 64; 8474 } 8475 resume() { 8476 64 & this.flags && (this.flags &= -65, ey.has(this) && (ey.delete(this), this.trigger())); 8477 } 8478 notify() { 8479 (!(2 & this.flags) || 32 & this.flags) && (8 & this.flags || eC(this)); 8480 } 8481 run() { 8482 if (!(1 & this.flags)) return this.fn(); 8483 this.flags |= 2, eL(this), eE(this); 8484 let e = r, 8485 t = eO; 8486 r = this, eO = !0; 8487 try { 8488 return this.fn(); 8489 } finally { 8490 ew(this), r = e, eO = t, this.flags &= -3; 8491 } 8492 } 8493 stop() { 8494 if (1 & this.flags) { 8495 for (let e = this.deps; e; e = e.nextDep) eA(e); 8496 this.deps = this.depsTail = void 0, eL(this), this.onStop && this.onStop(), this.flags &= -2; 8497 } 8498 } 8499 trigger() { 8500 64 & this.flags ? ey.add(this) : this.scheduler ? this.scheduler() : this.runIfDirty(); 8501 } 8502 runIfDirty() { 8503 ek(this) && this.run(); 8504 } 8505 get dirty() { 8506 return ek(this); 8507 } 8508} 8509let eS = 0; 8510function eC(e, t = !1) { 8511 if (e.flags |= 8, t) { 8512 e.next = s, s = e; 8513 return; 8514 } 8515 e.next = i, i = e; 8516} 8517function ex() { 8518 let e; 8519 if (!(--eS > 0)) { 8520 if (s) { 8521 let e = s; 8522 for (s = void 0; e;) { 8523 let t = e.next; 8524 e.next = void 0, e.flags &= -9, e = t; 8525 } 8526 } 8527 for (; i;) { 8528 let t = i; 8529 for (i = void 0; t;) { 8530 let n = t.next; 8531 if (t.next = void 0, t.flags &= -9, 1 & t.flags) try { 8532 t.trigger(); 8533 } catch (t) { 8534 e || (e = t); 8535 } 8536 t = n; 8537 } 8538 } 8539 if (e) throw e; 8540 } 8541} 8542function eE(e) { 8543 for (let t = e.deps; t; t = t.nextDep) t.version = -1, t.prevActiveLink = t.dep.activeLink, t.dep.activeLink = t; 8544} 8545function ew(e) { 8546 let t; 8547 let n = e.depsTail, 8548 l = n; 8549 for (; l;) { 8550 let e = l.prevDep; 8551 -1 === l.version ? (l === n && (n = e), eA(l), function (e) { 8552 let { 8553 prevDep: t, 8554 nextDep: n 8555 } = e; 8556 t && (t.nextDep = n, e.prevDep = void 0), n && (n.prevDep = t, e.nextDep = void 0); 8557 }(l)) : t = l, l.dep.activeLink = l.prevActiveLink, l.prevActiveLink = void 0, l = e; 8558 } 8559 e.deps = t, e.depsTail = n; 8560} 8561function ek(e) { 8562 for (let t = e.deps; t; t = t.nextDep) if (t.dep.version !== t.version || t.dep.computed && (eT(t.dep.computed) || t.dep.version !== t.version)) return !0; 8563 return !!e._dirty; 8564} 8565function eT(e) { 8566 if (4 & e.flags && !(16 & e.flags) || (e.flags &= -17, e.globalVersion === eD)) return; 8567 e.globalVersion = eD; 8568 let t = e.dep; 8569 if (e.flags |= 2, t.version > 0 && !e.isSSR && e.deps && !ek(e)) { 8570 e.flags &= -3; 8571 return; 8572 } 8573 let n = r, 8574 l = eO; 8575 r = e, eO = !0; 8576 try { 8577 eE(e); 8578 let n = e.fn(e._value); 8579 (0 === t.version || J(n, e._value)) && (e._value = n, t.version++); 8580 } catch (e) { 8581 throw t.version++, e; 8582 } finally { 8583 r = n, eO = l, ew(e), e.flags &= -3; 8584 } 8585} 8586function eA(e, t = !1) { 8587 let { 8588 dep: n, 8589 prevSub: l, 8590 nextSub: r 8591 } = e; 8592 if (l && (l.nextSub = r, e.prevSub = void 0), r && (r.prevSub = l, e.nextSub = void 0), n.subs === e && (n.subs = l, !l && n.computed)) { 8593 n.computed.flags &= -5; 8594 for (let e = n.computed.deps; e; e = e.nextDep) eA(e, !0); 8595 } 8596 t || --n.sc || !n.map || n.map.delete(n.key); 8597} 8598function eR(e, t) { 8599 e.effect instanceof eb && (e = e.effect.fn); 8600 let n = new eb(e); 8601 t && C(n, t); 8602 try { 8603 n.run(); 8604 } catch (e) { 8605 throw n.stop(), e; 8606 } 8607 let l = n.run.bind(n); 8608 return l.effect = n, l; 8609} 8610function eN(e) { 8611 e.effect.stop(); 8612} 8613let eO = !0, 8614 eP = []; 8615function eM() { 8616 eP.push(eO), eO = !1; 8617} 8618function eI() { 8619 let e = eP.pop(); 8620 eO = void 0 === e || e; 8621} 8622function eL(e) { 8623 let { 8624 cleanup: t 8625 } = e; 8626 if (e.cleanup = void 0, t) { 8627 let e = r; 8628 r = void 0; 8629 try { 8630 t(); 8631 } finally { 8632 r = e; 8633 } 8634 } 8635} 8636let eD = 0; 8637class eF { 8638 constructor(e, t) { 8639 this.sub = e, this.dep = t, this.version = t.version, this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; 8640 } 8641} 8642class eV { 8643 constructor(e) { 8644 this.computed = e, this.version = 0, this.activeLink = void 0, this.subs = void 0, this.map = void 0, this.key = void 0, this.sc = 0; 8645 } 8646 track(e) { 8647 if (!r || !eO || r === this.computed) return; 8648 let t = this.activeLink; 8649 if (void 0 === t || t.sub !== r) t = this.activeLink = new eF(r, this), r.deps ? (t.prevDep = r.depsTail, r.depsTail.nextDep = t, r.depsTail = t) : r.deps = r.depsTail = t, function e(t) { 8650 if (t.dep.sc++, 4 & t.sub.flags) { 8651 let n = t.dep.computed; 8652 if (n && !t.dep.subs) { 8653 n.flags |= 20; 8654 for (let t = n.deps; t; t = t.nextDep) e(t); 8655 } 8656 let l = t.dep.subs; 8657 l !== t && (t.prevSub = l, l && (l.nextSub = t)), t.dep.subs = t; 8658 } 8659 }(t);else if (-1 === t.version && (t.version = this.version, t.nextDep)) { 8660 let e = t.nextDep; 8661 e.prevDep = t.prevDep, t.prevDep && (t.prevDep.nextDep = e), t.prevDep = r.depsTail, t.nextDep = void 0, r.depsTail.nextDep = t, r.depsTail = t, r.deps === t && (r.deps = e); 8662 } 8663 return t; 8664 } 8665 trigger(e) { 8666 this.version++, eD++, this.notify(e); 8667 } 8668 notify(e) { 8669 eS++; 8670 try { 8671 for (let e = this.subs; e; e = e.prevSub) e.sub.notify() && e.sub.dep.notify(); 8672 } finally { 8673 ex(); 8674 } 8675 } 8676} 8677let eU = new WeakMap(), 8678 ej = Symbol(""), 8679 eB = Symbol(""), 8680 e$ = Symbol(""); 8681function eH(e, t, n) { 8682 if (eO && r) { 8683 let t = eU.get(e); 8684 t || eU.set(e, t = new Map()); 8685 let l = t.get(n); 8686 l || (t.set(n, l = new eV()), l.map = t, l.key = n), l.track(); 8687 } 8688} 8689function eW(e, t, n, l, r, i) { 8690 let s = eU.get(e); 8691 if (!s) { 8692 eD++; 8693 return; 8694 } 8695 let o = e => { 8696 e && e.trigger(); 8697 };
8698 if (eS++, "clear" === t) s.forEach(o);else { 8699 let r = k(e), 8700 i = r && j(n); 8701 if (r && "length" === n) { 8702 let e = Number(l); 8703 s.forEach((t, n) => { 8704 ("length" === n || n === e$ || !M(n) && n >= e) && o(t); 8705 }); 8706 } else switch ((void 0 !== n || s.has(void 0)) && o(s.get(n)), i && o(s.get(e$)), t) { 8707 case "add": 8708 r ? i && o(s.get("length")) : (o(s.get(ej)), T(e) && o(s.get(eB))); 8709 break; 8710 case "delete": 8711 !r && (o(s.get(ej)), T(e) && o(s.get(eB))); 8712 break; 8713 case "set": 8714 T(e) && o(s.get(ej)); 8715 } 8716 } 8717 ex(); 8718} 8719function eK(e) { 8720 let t = tS(e); 8721 return t === e ? t : (eH(t, "iterate", e$), ty(e) ? t : t.map(tx)); 8722} 8723function ez(e) { 8724 return eH(e = tS(e), "iterate", e$), e; 8725} 8726let eq = { 8727 __proto__: null, 8728 [Symbol.iterator]() { 8729 return eG(this, Symbol.iterator, tx); 8730 }, 8731 concat(...e) { 8732 return eK(this).concat(...e.map(e => k(e) ? eK(e) : e)); 8733 }, 8734 entries() { 8735 return eG(this, "entries", e => (e[1] = tx(e[1]), e)); 8736 }, 8737 every(e, t) { 8738 return eX(this, "every", e, t, void 0, arguments); 8739 }, 8740 filter(e, t) { 8741 return eX(this, "filter", e, t, e => e.map(tx), arguments); 8742 }, 8743 find(e, t) { 8744 return eX(this, "find", e, t, tx, arguments); 8745 }, 8746 findIndex(e, t) { 8747 return eX(this, "findIndex", e, t, void 0, arguments); 8748 }, 8749 findLast(e, t) { 8750 return eX(this, "findLast", e, t, tx, arguments); 8751 }, 8752 findLastIndex(e, t) { 8753 return eX(this, "findLastIndex", e, t, void 0, arguments); 8754 }, 8755 forEach(e, t) { 8756 return eX(this, "forEach", e, t, void 0, arguments); 8757 }, 8758 includes(...e) { 8759 return eY(this, "includes", e); 8760 }, 8761 indexOf(...e) { 8762 return eY(this, "indexOf", e); 8763 }, 8764 join(e) { 8765 return eK(this).join(e); 8766 }, 8767 lastIndexOf(...e) { 8768 return eY(this, "lastIndexOf", e); 8769 }, 8770 map(e, t) { 8771 return eX(this, "map", e, t, void 0, arguments); 8772 }, 8773 pop() { 8774 return eQ(this, "pop"); 8775 }, 8776 push(...e) { 8777 return eQ(this, "push", e); 8778 }, 8779 reduce(e, ...t) { 8780 return eZ(this, "reduce", e, t); 8781 }, 8782 reduceRight(e, ...t) { 8783 return eZ(this, "reduceRight", e, t); 8784 }, 8785 shift() { 8786 return eQ(this, "shift"); 8787 }, 8788 some(e, t) { 8789 return eX(this, "some", e, t, void 0, arguments); 8790 }, 8791 splice(...e) { 8792 return eQ(this, "splice", e); 8793 }, 8794 toReversed() { 8795 return eK(this).toReversed(); 8796 }, 8797 toSorted(e) { 8798 return eK(this).toSorted(e); 8799 }, 8800 toSpliced(...e) { 8801 return eK(this).toSpliced(...e); 8802 }, 8803 unshift(...e) { 8804 return eQ(this, "unshift", e); 8805 }, 8806 values() { 8807 return eG(this, "values", tx); 8808 } 8809}; 8810function eG(e, t, n) { 8811 let l = ez(e), 8812 r = l[t](); 8813 return l === e || ty(e) || (r._next = r.next, r.next = () => { 8814 let e = r._next(); 8815 return e.value && (e.value = n(e.value)), e; 8816 }), r; 8817} 8818let eJ = Array.prototype; 8819function eX(e, t, n, l, r, i) { 8820 let s = ez(e), 8821 o = s !== e && !ty(e), 8822 a = s[t]; 8823 if (a !== eJ[t]) { 8824 let t = a.apply(e, i); 8825 return o ? tx(t) : t; 8826 } 8827 let u = n; 8828 s !== e && (o ? u = function (t, l) { 8829 return n.call(this, tx(t), l, e); 8830 } : n.length > 2 && (u = function (t, l) { 8831 return n.call(this, t, l, e); 8832 })); 8833 let c = a.call(s, u, l); 8834 return o && r ? r(c) : c; 8835} 8836function eZ(e, t, n, l) { 8837 let r = ez(e), 8838 i = n; 8839 return r !== e && (ty(e) ? n.length > 3 && (i = function (t, l, r) { 8840 return n.call(this, t, l, r, e); 8841 }) : i = function (t, l, r) { 8842 return n.call(this, t, tx(l), r, e); 8843 }), r[t](i, ...l); 8844} 8845function eY(e, t, n) { 8846 let l = tS(e); 8847 eH(l, "iterate", e$); 8848 let r = l[t](...n); 8849 return (-1 === r || !1 === r) && tb(n[0]) ? (n[0] = tS(n[0]), l[t](...n)) : r; 8850} 8851function eQ(e, t, n = []) { 8852 eM(), eS++; 8853 let l = tS(e)[t].apply(e, n); 8854 return ex(), eI(), l; 8855} 8856let e0 = h("__proto__,__v_isRef,__isVue"), 8857 e1 = new Set(Object.getOwnPropertyNames(Symbol).filter(e => "arguments" !== e && "caller" !== e).map(e => Symbol[e]).filter(M)); 8858function e2(e) { 8859 M(e) || (e = String(e)); 8860 let t = tS(this); 8861 return eH(t, "has", e), t.hasOwnProperty(e); 8862} 8863class e6 { 8864 constructor(e = !1, t = !1) { 8865 this._isReadonly = e, this._isShallow = t; 8866 } 8867 get(e, t, n) { 8868 if ("__v_skip" === t) return e.__v_skip; 8869 let l = this._isReadonly, 8870 r = this._isShallow; 8871 if ("__v_isReactive" === t) return !l; 8872 if ("__v_isReadonly" === t) return l; 8873 if ("__v_isShallow" === t) return r; 8874 if ("__v_raw" === t) return n === (l ? r ? tf : tc : r ? tu : ta).get(e) || Object.getPrototypeOf(e) === Object.getPrototypeOf(n) ? e : void 0; 8875 let i = k(e); 8876 if (!l) { 8877 let e; 8878 if (i && (e = eq[t])) return e; 8879 if ("hasOwnProperty" === t) return e2; 8880 } 8881 let s = Reflect.get(e, t, tw(e) ? e : n); 8882 return (M(t) ? e1.has(t) : e0(t)) ? s : (l || eH(e, "get", t), r) ? s : tw(s) ? i && j(t) ? s : s.value : I(s) ? l ? th(s) : tp(s) : s; 8883 } 8884} 8885class e4 extends e6 { 8886 constructor(e = !1) { 8887 super(!1, e); 8888 } 8889 set(e, t, n, l) { 8890 let r = e[t]; 8891 if (!this._isShallow) { 8892 let t = t_(r); 8893 if (ty(n) || t_(n) || (r = tS(r), n = tS(n)), !k(e) && tw(r) && !tw(n)) return !t && (r.value = n, !0); 8894 } 8895 let i = k(e) && j(t) ? Number(t) < e.length : w(e, t), 8896 s = Reflect.set(e, t, n, tw(e) ? e : l); 8897 return e === tS(l) && (i ? J(n, r) && eW(e, "set", t, n) : eW(e, "add", t, n)), s; 8898 } 8899 deleteProperty(e, t) { 8900 let n = w(e, t); 8901 e[t]; 8902 let l = Reflect.deleteProperty(e, t); 8903 return l && n && eW(e, "delete", t, void 0), l; 8904 } 8905 has(e, t) { 8906 let n = Reflect.has(e, t); 8907 return M(t) && e1.has(t) || eH(e, "has", t), n; 8908 } 8909 ownKeys(e) { 8910 return eH(e, "iterate", k(e) ? "length" : ej), Reflect.ownKeys(e); 8911 } 8912} 8913class e8 extends e6 { 8914 constructor(e = !1) { 8915 super(!0, e); 8916 } 8917 set(e, t) { 8918 return !0; 8919 } 8920 deleteProperty(e, t) { 8921 return !0; 8922 } 8923} 8924let e3 = new e4(), 8925 e5 = new e8(), 8926 e9 = new e4(!0), 8927 e7 = new e8(!0), 8928 te = e => e, 8929 tt = e => Reflect.getPrototypeOf(e); 8930function tn(e) { 8931 return function (...t) { 8932 return "delete" !== e && ("clear" === e ? void 0 : this); 8933 }; 8934} 8935function tl(e, t) { 8936 let n = function (e, t) { 8937 let n = { 8938 get(n) { 8939 let l = this.__v_raw, 8940 r = tS(l), 8941 i = tS(n); 8942 e || (J(n, i) && eH(r, "get", n), eH(r, "get", i)); 8943 let { 8944 has: s 8945 } = tt(r), 8946 o = t ? te : e ? tE : tx; 8947 return s.call(r, n) ? o(l.get(n)) : s.call(r, i) ? o(l.get(i)) : void (l !== r && l.get(n)); 8948 }, 8949 get size() { 8950 let t = this.__v_raw; 8951 return e || eH(tS(t), "iterate", ej), Reflect.get(t, "size", t); 8952 }, 8953 has(t) { 8954 let n = this.__v_raw, 8955 l = tS(n), 8956 r = tS(t); 8957 return e || (J(t, r) && eH(l, "has", t), eH(l, "has", r)), t === r ? n.has(t) : n.has(t) || n.has(r); 8958 },
8959 forEach(n, l) { 8960 let r = this, 8961 i = r.__v_raw, 8962 s = tS(i), 8963 o = t ? te : e ? tE : tx; 8964 return e || eH(s, "iterate", ej), i.forEach((e, t) => n.call(l, o(e), o(t), r)); 8965 } 8966 }; 8967 return C(n, e ? { 8968 add: tn("add"), 8969 set: tn("set"), 8970 delete: tn("delete"), 8971 clear: tn("clear") 8972 } : { 8973 add(e) { 8974 t || ty(e) || t_(e) || (e = tS(e)); 8975 let n = tS(this); 8976 return tt(n).has.call(n, e) || (n.add(e), eW(n, "add", e, e)), this; 8977 }, 8978 set(e, n) { 8979 t || ty(n) || t_(n) || (n = tS(n)); 8980 let l = tS(this), 8981 { 8982 has: r, 8983 get: i 8984 } = tt(l), 8985 s = r.call(l, e); 8986 s || (e = tS(e), s = r.call(l, e)); 8987 let o = i.call(l, e); 8988 return l.set(e, n), s ? J(n, o) && eW(l, "set", e, n) : eW(l, "add", e, n), this; 8989 }, 8990 delete(e) { 8991 let t = tS(this), 8992 { 8993 has: n, 8994 get: l 8995 } = tt(t), 8996 r = n.call(t, e); 8997 r || (e = tS(e), r = n.call(t, e)), l && l.call(t, e); 8998 let i = t.delete(e); 8999 return r && eW(t, "delete", e, void 0), i; 9000 }, 9001 clear() { 9002 let e = tS(this), 9003 t = 0 !== e.size, 9004 n = e.clear(); 9005 return t && eW(e, "clear", void 0, void 0), n; 9006 } 9007 }), ["keys", "values", "entries", Symbol.iterator].forEach(l => { 9008 n[l] = function (...n) { 9009 let r = this.__v_raw, 9010 i = tS(r), 9011 s = T(i), 9012 o = "entries" === l || l === Symbol.iterator && s, 9013 a = r[l](...n), 9014 u = t ? te : e ? tE : tx; 9015 return e || eH(i, "iterate", "keys" === l && s ? eB : ej), { 9016 next() { 9017 let { 9018 value: e, 9019 done: t 9020 } = a.next(); 9021 return t ? { 9022 value: e, 9023 done: t 9024 } : { 9025 value: o ? [u(e[0]), u(e[1])] : u(e), 9026 done: t 9027 }; 9028 }, 9029 [Symbol.iterator]() { 9030 return this; 9031 } 9032 }; 9033 }; 9034 }), n; 9035 }(e, t); 9036 return (t, l, r) => "__v_isReactive" === l ? !e : "__v_isReadonly" === l ? e : "__v_raw" === l ? t : Reflect.get(w(n, l) && l in t ? n : t, l, r); 9037} 9038let tr = { 9039 get: tl(!1, !1) 9040 }, 9041 ti = { 9042 get: tl(!1, !0) 9043 }, 9044 ts = { 9045 get: tl(!0, !1) 9046 }, 9047 to = { 9048 get: tl(!0, !0) 9049 }, 9050 ta = new WeakMap(), 9051 tu = new WeakMap(), 9052 tc = new WeakMap(), 9053 tf = new WeakMap(); 9054function tp(e) { 9055 return t_(e) ? e : tv(e, !1, e3, tr, ta); 9056} 9057function td(e) { 9058 return tv(e, !1, e9, ti, tu); 9059} 9060function th(e) { 9061 return tv(e, !0, e5, ts, tc); 9062} 9063function tg(e) { 9064 return tv(e, !0, e7, to, tf); 9065} 9066function tv(e, t, n, l, r) { 9067 if (!I(e) || e.__v_raw && !(t && e.__v_isReactive)) return e; 9068 let i = r.get(e); 9069 if (i) return i; 9070 let s = e.__v_skip || !Object.isExtensible(e) ? 0 : function (e) { 9071 switch (e) { 9072 case "Object": 9073 case "Array": 9074 return 1; 9075 case "Map": 9076 case "Set": 9077 case "WeakMap": 9078 case "WeakSet": 9079 return 2; 9080 default: 9081 return 0; 9082 } 9083 }(V(e)); 9084 if (0 === s) return e; 9085 let o = new Proxy(e, 2 === s ? l : n); 9086 return r.set(e, o), o; 9087} 9088function tm(e) { 9089 return t_(e) ? tm(e.__v_raw) : !!(e && e.__v_isReactive); 9090} 9091function t_(e) { 9092 return !!(e && e.__v_isReadonly); 9093} 9094function ty(e) { 9095 return !!(e && e.__v_isShallow); 9096} 9097function tb(e) { 9098 return !!e && !!e.__v_raw; 9099} 9100function tS(e) { 9101 let t = e && e.__v_raw; 9102 return t ? tS(t) : e; 9103} 9104function tC(e) { 9105 return !w(e, "__v_skip") && Object.isExtensible(e) && Z(e, "__v_skip", !0), e; 9106} 9107let tx = e => I(e) ? tp(e) : e, 9108 tE = e => I(e) ? th(e) : e; 9109function tw(e) { 9110 return !!e && !0 === e.__v_isRef; 9111} 9112function tk(e) { 9113 return tA(e, !1); 9114} 9115function tT(e) { 9116 return tA(e, !0); 9117} 9118function tA(e, t) { 9119 return tw(e) ? e : new tR(e, t); 9120} 9121class tR { 9122 constructor(e, t) { 9123 this.dep = new eV(), this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = t ? e : tS(e), this._value = t ? e : tx(e), this.__v_isShallow = t; 9124 } 9125 get value() { 9126 return this.dep.track(), this._value; 9127 } 9128 set value(e) { 9129 let t = this._rawValue, 9130 n = this.__v_isShallow || ty(e) || t_(e); 9131 J(e = n ? e : tS(e), t) && (this._rawValue = e, this._value = n ? e : tx(e), this.dep.trigger()); 9132 } 9133} 9134function tN(e) { 9135 e.dep && e.dep.trigger(); 9136} 9137function tO(e) { 9138 return tw(e) ? e.value : e; 9139} 9140function tP(e) { 9141 return O(e) ? e() : tO(e); 9142} 9143let tM = { 9144 get: (e, t, n) => "__v_raw" === t ? e : tO(Reflect.get(e, t, n)), 9145 set: (e, t, n, l) => { 9146 let r = e[t]; 9147 return tw(r) && !tw(n) ? (r.value = n, !0) : Reflect.set(e, t, n, l); 9148 } 9149}; 9150function tI(e) { 9151 return tm(e) ? e : new Proxy(e, tM); 9152} 9153class tL { 9154 constructor(e) { 9155 this.__v_isRef = !0, this._value = void 0; 9156 let t = this.dep = new eV(), 9157 { 9158 get: n, 9159 set: l 9160 } = e(t.track.bind(t), t.trigger.bind(t)); 9161 this._get = n, this._set = l; 9162 } 9163 get value() { 9164 return this._value = this._get(); 9165 } 9166 set value(e) { 9167 this._set(e); 9168 } 9169} 9170function tD(e) { 9171 return new tL(e); 9172} 9173function tF(e) { 9174 let t = k(e) ? Array(e.length) : {}; 9175 for (let n in e) t[n] = tB(e, n); 9176 return t; 9177} 9178class tV { 9179 constructor(e, t, n) { 9180 this._object = e, this._key = t, this._defaultValue = n, this.__v_isRef = !0, this._value = void 0; 9181 } 9182 get value() { 9183 let e = this._object[this._key]; 9184 return this._value = void 0 === e ? this._defaultValue : e; 9185 } 9186 set value(e) { 9187 this._object[this._key] = e; 9188 } 9189 get dep() { 9190 return function (e, t) { 9191 let n = eU.get(e); 9192 return n && n.get(t); 9193 }(tS(this._object), this._key); 9194 } 9195} 9196class tU { 9197 constructor(e) { 9198 this._getter = e, this.__v_isRef = !0, this.__v_isReadonly = !0, this._value = void 0; 9199 } 9200 get value() { 9201 return this._value = this._getter(); 9202 } 9203} 9204function tj(e, t, n) { 9205 return tw(e) ? e : O(e) ? new tU(e) : I(e) && arguments.length > 1 ? tB(e, t, n) : tk(e); 9206} 9207function tB(e, t, n) { 9208 let l = e[t]; 9209 return tw(l) ? l : new tV(e, t, n); 9210} 9211class t$ {
9212 constructor(e, t, n) { 9213 this.fn = e, this.setter = t, this._value = void 0, this.dep = new eV(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = eD - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !t, this.isSSR = n; 9214 } 9215 notify() { 9216 if (this.flags |= 16, !(8 & this.flags) && r !== this) return eC(this, !0), !0; 9217 } 9218 get value() { 9219 let e = this.dep.track(); 9220 return eT(this), e && (e.version = this.dep.version), this._value; 9221 } 9222 set value(e) { 9223 this.setter && this.setter(e); 9224 } 9225} 9226let tH = { 9227 GET: "get", 9228 HAS: "has", 9229 ITERATE: "iterate" 9230 }, 9231 tW = { 9232 SET: "set", 9233 ADD: "add", 9234 DELETE: "delete", 9235 CLEAR: "clear" 9236 }, 9237 tK = {}, 9238 tz = new WeakMap(); 9239function tq() { 9240 return p; 9241} 9242function tG(e, t = !1, n = p) { 9243 if (n) { 9244 let t = tz.get(n); 9245 t || tz.set(n, t = []), t.push(e); 9246 } 9247} 9248function tJ(e, t = 1 / 0, n) { 9249 if (t <= 0 || !I(e) || e.__v_skip || (n = n || new Set()).has(e)) return e; 9250 if (n.add(e), t--, tw(e)) tJ(e.value, t, n);else if (k(e)) for (let l = 0; l < e.length; l++) tJ(e[l], t, n);else if (A(e) || T(e)) e.forEach(e => { 9251 tJ(e, t, n); 9252 });else if (U(e)) { 9253 for (let l in e) tJ(e[l], t, n); 9254 for (let l of Object.getOwnPropertySymbols(e)) Object.prototype.propertyIsEnumerable.call(e, l) && tJ(e[l], t, n); 9255 } 9256 return e; 9257} 9258function tX(e, t) {} 9259let tZ = { 9260 SETUP_FUNCTION: 0, 9261 0: "SETUP_FUNCTION", 9262 RENDER_FUNCTION: 1, 9263 1: "RENDER_FUNCTION", 9264 NATIVE_EVENT_HANDLER: 5, 9265 5: "NATIVE_EVENT_HANDLER", 9266 COMPONENT_EVENT_HANDLER: 6, 9267 6: "COMPONENT_EVENT_HANDLER", 9268 VNODE_HOOK: 7, 9269 7: "VNODE_HOOK", 9270 DIRECTIVE_HOOK: 8, 9271 8: "DIRECTIVE_HOOK", 9272 TRANSITION_HOOK: 9, 9273 9: "TRANSITION_HOOK", 9274 APP_ERROR_HANDLER: 10, 9275 10: "APP_ERROR_HANDLER", 9276 APP_WARN_HANDLER: 11, 9277 11: "APP_WARN_HANDLER", 9278 FUNCTION_REF: 12, 9279 12: "FUNCTION_REF", 9280 ASYNC_COMPONENT_LOADER: 13, 9281 13: "ASYNC_COMPONENT_LOADER", 9282 SCHEDULER: 14, 9283 14: "SCHEDULER", 9284 COMPONENT_UPDATE: 15, 9285 15: "COMPONENT_UPDATE", 9286 APP_UNMOUNT_CLEANUP: 16, 9287 16: "APP_UNMOUNT_CLEANUP" 9288}; 9289function tY(e, t, n, l) { 9290 try { 9291 return l ? e(...l) : e(); 9292 } catch (e) { 9293 t0(e, t, n); 9294 } 9295} 9296function tQ(e, t, n, l) { 9297 if (O(e)) { 9298 let r = tY(e, t, n, l); 9299 return r && L(r) && r.catch(e => { 9300 t0(e, t, n); 9301 }), r; 9302 } 9303 if (k(e)) { 9304 let r = []; 9305 for (let i = 0; i < e.length; i++) r.push(tQ(e[i], t, n, l)); 9306 return r; 9307 } 9308} 9309function t0(e, t, n, l = !0) { 9310 t && t.vnode; 9311 let { 9312 errorHandler: r, 9313 throwUnhandledErrorInProduction: i 9314 } = t && t.appContext.config || g; 9315 if (t) { 9316 let l = t.parent, 9317 i = t.proxy, 9318 s = `https://vuejs.org/error-reference/#runtime-${n}`; 9319 for (; l;) { 9320 let t = l.ec; 9321 if (t) { 9322 for (let n = 0; n < t.length; n++) if (!1 === t[n](e, i, s)) return; 9323 } 9324 l = l.parent; 9325 } 9326 if (r) { 9327 eM(), tY(r, null, 10, [e, i, s]), eI(); 9328 return; 9329 } 9330 } 9331 !function (e, t, n, l = !0, r = !1) { 9332 if (r) throw e; 9333 console.error(e); 9334 }(e, 0, 0, l, i); 9335} 9336let t1 = [], 9337 t2 = -1, 9338 t6 = [], 9339 t4 = null, 9340 t8 = 0, 9341 t3 = Promise.resolve(), 9342 t5 = null; 9343function t9(e) { 9344 let t = t5 || t3; 9345 return e ? t.then(this ? e.bind(this) : e) : t; 9346} 9347function t7(e) { 9348 if (!(1 & e.flags)) { 9349 let t = nr(e), 9350 n = t1[t1.length - 1]; 9351 !n || !(2 & e.flags) && t >= nr(n) ? t1.push(e) : t1.splice(function (e) { 9352 let t = t2 + 1, 9353 n = t1.length; 9354 for (; t < n;) { 9355 let l = t + n >>> 1, 9356 r = t1[l], 9357 i = nr(r); 9358 i < e || i === e && 2 & r.flags ? t = l + 1 : n = l; 9359 } 9360 return t; 9361 }(t), 0, e), e.flags |= 1, ne(); 9362 } 9363} 9364function ne() { 9365 t5 || (t5 = t3.then(function e(t) { 9366 try { 9367 for (t2 = 0; t2 < t1.length; t2++) { 9368 let e = t1[t2]; 9369 !e || 8 & e.flags || (4 & e.flags && (e.flags &= -2), tY(e, e.i, e.i ? 15 : 14), 4 & e.flags || (e.flags &= -2)); 9370 } 9371 } finally { 9372 for (; t2 < t1.length; t2++) { 9373 let e = t1[t2]; 9374 e && (e.flags &= -2); 9375 } 9376 t2 = -1, t1.length = 0, nl(), t5 = null, (t1.length || t6.length) && e(); 9377 } 9378 })); 9379} 9380function nt(e) { 9381 k(e) ? t6.push(...e) : t4 && -1 === e.id ? t4.splice(t8 + 1, 0, e) : 1 & e.flags || (t6.push(e), e.flags |= 1), ne(); 9382} 9383function nn(e, t, n = t2 + 1) { 9384 for (; n < t1.length; n++) { 9385 let t = t1[n]; 9386 if (t && 2 & t.flags) { 9387 if (e && t.id !== e.uid) continue; 9388 t1.splice(n, 1), n--, 4 & t.flags && (t.flags &= -2), t(), 4 & t.flags || (t.flags &= -2); 9389 } 9390 } 9391} 9392function nl(e) { 9393 if (t6.length) { 9394 let e = [...new Set(t6)].sort((e, t) => nr(e) - nr(t)); 9395 if (t6.length = 0, t4) { 9396 t4.push(...e); 9397 return; 9398 } 9399 for (t8 = 0, t4 = e; t8 < t4.length; t8++) { 9400 let e = t4[t8]; 9401 4 & e.flags && (e.flags &= -2), 8 & e.flags || e(), e.flags &= -2; 9402 } 9403 t4 = null, t8 = 0; 9404 } 9405} 9406let nr = e => null == e.id ? 2 & e.flags ? -1 : 1 / 0 : e.id, 9407 ni = null, 9408 ns = null; 9409function no(e) { 9410 let t = ni; 9411 return ni = e, ns = e && e.type.__scopeId || null, t; 9412} 9413function na(e) { 9414 ns = e; 9415} 9416function nu() { 9417 ns = null; 9418} 9419let nc = e => nf; 9420function nf(e, t = ni, n) { 9421 if (!t || e._n) return e; 9422 let l = (...n) => { 9423 let r; 9424 l._d && r7(-1); 9425 let i = no(t); 9426 try { 9427 r = e(...n); 9428 } finally { 9429 no(i), l._d && r7(1); 9430 } 9431 return r; 9432 }; 9433 return l._n = !0, l._c = !0, l._d = !0, l; 9434} 9435function np(e, t) { 9436 if (null === ni) return e; 9437 let n = iV(ni), 9438 l = e.dirs || (e.dirs = []); 9439 for (let e = 0; e < t.length; e++) { 9440 let [r, i, s, o = g] = t[e]; 9441 r && (O(r) && (r = { 9442 mounted: r, 9443 updated: r 9444 }), r.deep && tJ(i), l.push({ 9445 dir: r, 9446 instance: n, 9447 value: i, 9448 oldValue: void 0, 9449 arg: s, 9450 modifiers: o 9451 })); 9452 } 9453 return e; 9454}
9455function nd(e, t, n, l) { 9456 let r = e.dirs, 9457 i = t && t.dirs; 9458 for (let s = 0; s < r.length; s++) { 9459 let o = r[s]; 9460 i && (o.oldValue = i[s].value); 9461 let a = o.dir[l]; 9462 a && (eM(), tQ(a, n, 8, [e.el, o, e, t]), eI()); 9463 } 9464} 9465let nh = Symbol("_vte"), 9466 ng = e => e.__isTeleport, 9467 nv = e => e && (e.disabled || "" === e.disabled), 9468 nm = e => e && (e.defer || "" === e.defer), 9469 n_ = e => "undefined" != typeof SVGElement && e instanceof SVGElement, 9470 ny = e => "function" == typeof MathMLElement && e instanceof MathMLElement, 9471 nb = (e, t) => { 9472 let n = e && e.to; 9473 return P(n) ? t ? t(n) : null : n; 9474 }, 9475 nS = { 9476 name: "Teleport", 9477 __isTeleport: !0, 9478 process(e, t, n, l, r, i, s, o, a, u) { 9479 let { 9480 mc: c, 9481 pc: f, 9482 pbc: p, 9483 o: { 9484 insert: d, 9485 querySelector: h, 9486 createText: g, 9487 createComment: m 9488 } 9489 } = u, 9490 _ = nv(t.props), 9491 { 9492 shapeFlag: y, 9493 children: b, 9494 dynamicChildren: S 9495 } = t; 9496 if (null == e) { 9497 let e = t.el = g(""), 9498 u = t.anchor = g(""); 9499 d(e, n, l), d(u, n, l); 9500 let f = (e, t) => { 9501 16 & y && (r && r.isCE && (r.ce._teleportTarget = e), c(b, e, t, r, i, s, o, a)); 9502 }, 9503 p = () => { 9504 let e = t.target = nb(t.props, h), 9505 n = nw(e, t, g, d); 9506 e && ("svg" !== s && n_(e) ? s = "svg" : "mathml" !== s && ny(e) && (s = "mathml"), _ || (f(e, n), nE(t, !1))); 9507 }; 9508 _ && (f(n, u), nE(t, !0)), nm(t.props) ? ry(() => { 9509 p(), t.el.__isMounted = !0; 9510 }, i) : p(); 9511 } else { 9512 if (nm(t.props) && !e.el.__isMounted) { 9513 ry(() => { 9514 nS.process(e, t, n, l, r, i, s, o, a, u), delete e.el.__isMounted; 9515 }, i); 9516 return; 9517 } 9518 t.el = e.el, t.targetStart = e.targetStart; 9519 let c = t.anchor = e.anchor, 9520 d = t.target = e.target, 9521 g = t.targetAnchor = e.targetAnchor, 9522 m = nv(e.props), 9523 y = m ? n : d; 9524 if ("svg" === s || n_(d) ? s = "svg" : ("mathml" === s || ny(d)) && (s = "mathml"), S ? (p(e.dynamicChildren, S, y, r, i, s, o), rk(e, t, !0)) : a || f(e, t, y, m ? c : g, r, i, s, o, !1), _) m ? t.props && e.props && t.props.to !== e.props.to && (t.props.to = e.props.to) : nC(t, n, c, u, 1);else if ((t.props && t.props.to) !== (e.props && e.props.to)) { 9525 let e = t.target = nb(t.props, h); 9526 e && nC(t, e, null, u, 0); 9527 } else m && nC(t, d, g, u, 1); 9528 nE(t, _); 9529 } 9530 }, 9531 remove(e, t, n, { 9532 um: l, 9533 o: { 9534 remove: r 9535 } 9536 }, i) { 9537 let { 9538 shapeFlag: s, 9539 children: o, 9540 anchor: a, 9541 targetStart: u, 9542 targetAnchor: c, 9543 target: f, 9544 props: p 9545 } = e; 9546 if (f && (r(u), r(c)), i && r(a), 16 & s) { 9547 let e = i || !nv(p); 9548 for (let r = 0; r < o.length; r++) { 9549 let i = o[r]; 9550 l(i, t, n, e, !!i.dynamicChildren); 9551 } 9552 } 9553 }, 9554 move: nC, 9555 hydrate: function (e, t, n, l, r, i, { 9556 o: { 9557 nextSibling: s, 9558 parentNode: o, 9559 querySelector: a, 9560 insert: u, 9561 createText: c 9562 } 9563 }, f) { 9564 let p = t.target = nb(t.props, a); 9565 if (p) { 9566 let a = nv(t.props), 9567 d = p._lpa || p.firstChild; 9568 if (16 & t.shapeFlag) { 9569 if (a) t.anchor = f(s(e), t, o(e), n, l, r, i), t.targetStart = d, t.targetAnchor = d && s(d);else { 9570 t.anchor = s(e); 9571 let o = d; 9572 for (; o;) { 9573 if (o && 8 === o.nodeType) { 9574 if ("teleport start anchor" === o.data) t.targetStart = o;else if ("teleport anchor" === o.data) { 9575 t.targetAnchor = o, p._lpa = t.targetAnchor && s(t.targetAnchor); 9576 break; 9577 } 9578 } 9579 o = s(o); 9580 } 9581 t.targetAnchor || nw(p, t, c, u), f(d && s(d), t, p, n, l, r, i); 9582 } 9583 } 9584 nE(t, a); 9585 } 9586 return t.anchor && s(t.anchor); 9587 } 9588 }; 9589function nC(e, t, n, { 9590 o: { 9591 insert: l 9592 }, 9593 m: r 9594}, i = 2) { 9595 0 === i && l(e.targetAnchor, t, n); 9596 let { 9597 el: s, 9598 anchor: o, 9599 shapeFlag: a, 9600 children: u, 9601 props: c 9602 } = e, 9603 f = 2 === i; 9604 if (f && l(s, t, n), (!f || nv(c)) && 16 & a) for (let e = 0; e < u.length; e++) r(u[e], t, n, 2); 9605 f && l(o, t, n); 9606} 9607let nx = (/* unused pure expression or super */ null && (nS)); 9608function nE(e, t) { 9609 let n = e.ctx; 9610 if (n && n.ut) { 9611 let l, r; 9612 for (t ? (l = e.el, r = e.anchor) : (l = e.targetStart, r = e.targetAnchor); l && l !== r;) 1 === l.nodeType && l.setAttribute("data-v-owner", n.uid), l = l.nextSibling; 9613 n.ut(); 9614 } 9615} 9616function nw(e, t, n, l) { 9617 let r = t.targetStart = n(""), 9618 i = t.targetAnchor = n(""); 9619 return r[nh] = i, e && (l(r, e), l(i, e)), i; 9620} 9621let nk = Symbol("_leaveCb"), 9622 nT = Symbol("_enterCb"); 9623function nA() { 9624 let e = { 9625 isMounted: !1, 9626 isLeaving: !1, 9627 isUnmounting: !1, 9628 leavingVNodes: new Map() 9629 }; 9630 return lf(() => { 9631 e.isMounted = !0; 9632 }), lh(() => { 9633 e.isUnmounting = !0; 9634 }), e; 9635} 9636let nR = [Function, Array], 9637 nN = { 9638 mode: String, 9639 appear: Boolean, 9640 persisted: Boolean, 9641 onBeforeEnter: nR, 9642 onEnter: nR, 9643 onAfterEnter: nR, 9644 onEnterCancelled: nR, 9645 onBeforeLeave: nR, 9646 onLeave: nR, 9647 onAfterLeave: nR, 9648 onLeaveCancelled: nR, 9649 onBeforeAppear: nR, 9650 onAppear: nR, 9651 onAfterAppear: nR, 9652 onAppearCancelled: nR 9653 }, 9654 nO = e => { 9655 let t = e.subTree; 9656 return t.component ? nO(t.component) : t; 9657 }; 9658function nP(e) { 9659 let t = e[0]; 9660 if (e.length > 1) { 9661 for (let n of e) if (n.type !== r2) { 9662 t = n; 9663 break; 9664 } 9665 } 9666 return t; 9667} 9668let nM = { 9669 name: "BaseTransition", 9670 props: nN, 9671 setup(e, { 9672 slots: t 9673 }) { 9674 let n = ik(), 9675 l = nA(); 9676 return () => { 9677 let r = t.default && nU(t.default(), !0); 9678 if (!r || !r.length) return; 9679 let i = nP(r),
9680 s = tS(e), 9681 { 9682 mode: o 9683 } = s; 9684 if (l.isLeaving) return nD(i); 9685 let a = nF(i); 9686 if (!a) return nD(i); 9687 let u = nL(a, s, l, n, e => u = e); 9688 a.type !== r2 && nV(a, u); 9689 let c = n.subTree && nF(n.subTree); 9690 if (c && c.type !== r2 && !ii(a, c) && nO(n).type !== r2) { 9691 let e = nL(c, s, l, n); 9692 if (nV(c, e), "out-in" === o && a.type !== r2) return l.isLeaving = !0, e.afterLeave = () => { 9693 l.isLeaving = !1, 8 & n.job.flags || n.update(), delete e.afterLeave, c = void 0; 9694 }, nD(i); 9695 "in-out" === o && a.type !== r2 ? e.delayLeave = (e, t, n) => { 9696 nI(l, c)[String(c.key)] = c, e[nk] = () => { 9697 t(), e[nk] = void 0, delete u.delayedLeave, c = void 0; 9698 }, u.delayedLeave = () => { 9699 n(), delete u.delayedLeave, c = void 0; 9700 }; 9701 } : c = void 0; 9702 } else c && (c = void 0); 9703 return i; 9704 }; 9705 } 9706}; 9707function nI(e, t) { 9708 let { 9709 leavingVNodes: n 9710 } = e, 9711 l = n.get(t.type); 9712 return l || (l = Object.create(null), n.set(t.type, l)), l; 9713} 9714function nL(e, t, n, l, r) { 9715 let { 9716 appear: i, 9717 mode: s, 9718 persisted: o = !1, 9719 onBeforeEnter: a, 9720 onEnter: u, 9721 onAfterEnter: c, 9722 onEnterCancelled: f, 9723 onBeforeLeave: p, 9724 onLeave: d, 9725 onAfterLeave: h, 9726 onLeaveCancelled: g, 9727 onBeforeAppear: m, 9728 onAppear: _, 9729 onAfterAppear: y, 9730 onAppearCancelled: b 9731 } = t, 9732 S = String(e.key), 9733 C = nI(n, e), 9734 x = (e, t) => { 9735 e && tQ(e, l, 9, t); 9736 }, 9737 E = (e, t) => { 9738 let n = t[1]; 9739 x(e, t), k(e) ? e.every(e => e.length <= 1) && n() : e.length <= 1 && n(); 9740 }, 9741 w = { 9742 mode: s, 9743 persisted: o, 9744 beforeEnter(t) { 9745 let l = a; 9746 if (!n.isMounted) { 9747 if (!i) return; 9748 l = m || a; 9749 } 9750 t[nk] && t[nk](!0); 9751 let r = C[S]; 9752 r && ii(e, r) && r.el[nk] && r.el[nk](), x(l, [t]); 9753 }, 9754 enter(e) { 9755 let t = u, 9756 l = c, 9757 r = f; 9758 if (!n.isMounted) { 9759 if (!i) return; 9760 t = _ || u, l = y || c, r = b || f; 9761 } 9762 let s = !1, 9763 o = e[nT] = t => { 9764 s || (s = !0, t ? x(r, [e]) : x(l, [e]), w.delayedLeave && w.delayedLeave(), e[nT] = void 0); 9765 }; 9766 t ? E(t, [e, o]) : o(); 9767 }, 9768 leave(t, l) { 9769 let r = String(e.key); 9770 if (t[nT] && t[nT](!0), n.isUnmounting) return l(); 9771 x(p, [t]); 9772 let i = !1, 9773 s = t[nk] = n => { 9774 i || (i = !0, l(), n ? x(g, [t]) : x(h, [t]), t[nk] = void 0, C[r] !== e || delete C[r]); 9775 }; 9776 C[r] = e, d ? E(d, [t, s]) : s(); 9777 }, 9778 clone(e) { 9779 let i = nL(e, t, n, l, r); 9780 return r && r(i), i; 9781 } 9782 }; 9783 return w; 9784} 9785function nD(e) { 9786 if (le(e)) return (e = id(e)).children = null, e; 9787} 9788function nF(e) { 9789 if (!le(e)) return ng(e.type) && e.children ? nP(e.children) : e; 9790 let { 9791 shapeFlag: t, 9792 children: n 9793 } = e; 9794 if (n) { 9795 if (16 & t) return n[0]; 9796 if (32 & t && O(n.default)) return n.default(); 9797 } 9798} 9799function nV(e, t) { 9800 6 & e.shapeFlag && e.component ? (e.transition = t, nV(e.component.subTree, t)) : 128 & e.shapeFlag ? (e.ssContent.transition = t.clone(e.ssContent), e.ssFallback.transition = t.clone(e.ssFallback)) : e.transition = t; 9801} 9802function nU(e, t = !1, n) { 9803 let l = [], 9804 r = 0; 9805 for (let i = 0; i < e.length; i++) { 9806 let s = e[i], 9807 o = null == n ? s.key : String(n) + String(null != s.key ? s.key : i); 9808 s.type === r0 ? (128 & s.patchFlag && r++, l = l.concat(nU(s.children, t, o))) : (t || s.type !== r2) && l.push(null != o ? id(s, { 9809 key: o 9810 }) : s); 9811 } 9812 if (r > 1) for (let e = 0; e < l.length; e++) l[e].patchFlag = -2; 9813 return l; 9814} 9815function nj(e, t) { 9816 return O(e) ? C({ 9817 name: e.name 9818 }, t, { 9819 setup: e 9820 }) : e; 9821} 9822function nB() { 9823 let e = ik(); 9824 return e ? (e.appContext.config.idPrefix || "v") + "-" + e.ids[0] + e.ids[1]++ : ""; 9825} 9826function n$(e) { 9827 e.ids = [e.ids[0] + e.ids[2]++ + "-", 0, 0]; 9828} 9829function nH(e) { 9830 let t = ik(), 9831 n = tT(null); 9832 return t && Object.defineProperty(t.refs === g ? t.refs = {} : t.refs, e, { 9833 enumerable: !0, 9834 get: () => n.value, 9835 set: e => n.value = e 9836 }), n; 9837} 9838function nW(e, t, n, l, r = !1) { 9839 if (k(e)) { 9840 e.forEach((e, i) => nW(e, t && (k(t) ? t[i] : t), n, l, r)); 9841 return; 9842 } 9843 if (n5(l) && !r) { 9844 512 & l.shapeFlag && l.type.__asyncResolved && l.component.subTree.component && nW(e, t, n, l.component.subTree); 9845 return; 9846 } 9847 let i = 4 & l.shapeFlag ? iV(l.component) : l.el, 9848 s = r ? null : i, 9849 { 9850 i: o, 9851 r: a 9852 } = e, 9853 u = t && t.r, 9854 c = o.refs === g ? o.refs = {} : o.refs, 9855 f = o.setupState, 9856 p = tS(f), 9857 d = f === g ? () => !1 : e => w(p, e); 9858 if (null != u && u !== a && (P(u) ? (c[u] = null, d(u) && (f[u] = null)) : tw(u) && (u.value = null)), O(a)) tY(a, o, 12, [s, c]);else { 9859 let t = P(a), 9860 l = tw(a); 9861 if (t || l) { 9862 let o = () => { 9863 if (e.f) { 9864 let n = t ? d(a) ? f[a] : c[a] : a.value; 9865 r ? k(n) && x(n, i) : k(n) ? n.includes(i) || n.push(i) : t ? (c[a] = [i], d(a) && (f[a] = c[a])) : (a.value = [i], e.k && (c[e.k] = a.value)); 9866 } else t ? (c[a] = s, d(a) && (f[a] = s)) : l && (a.value = s, e.k && (c[e.k] = s)); 9867 }; 9868 s ? (o.id = -1, ry(o, n)) : o(); 9869 } 9870 } 9871} 9872let nK = (/* unused pure expression or super */ null && (!1)), 9873 nz = () => { 9874 nK || (console.error("Hydration completed but contains mismatches."), nK = !0); 9875 }, 9876 nq = e => e.namespaceURI.includes("svg") && "foreignObject" !== e.tagName, 9877 nG = e => e.namespaceURI.includes("MathML"),
9878 nJ = e => { 9879 if (1 === e.nodeType) { 9880 if (nq(e)) return "svg"; 9881 if (nG(e)) return "mathml"; 9882 } 9883 }, 9884 nX = e => 8 === e.nodeType; 9885function nZ(e) { 9886 let { 9887 mt: t, 9888 p: n, 9889 o: { 9890 patchProp: l, 9891 createText: r, 9892 nextSibling: i, 9893 parentNode: s, 9894 remove: o, 9895 insert: a, 9896 createComment: u 9897 } 9898 } = e, 9899 c = (n, l, o, u, y, b = !1) => { 9900 b = b || !!l.dynamicChildren; 9901 let S = nX(n) && "[" === n.data, 9902 C = () => h(n, l, o, u, y, S), 9903 { 9904 type: x, 9905 ref: E, 9906 shapeFlag: w, 9907 patchFlag: k 9908 } = l, 9909 T = n.nodeType; 9910 l.el = n, -2 === k && (b = !1, l.dynamicChildren = null); 9911 let A = null; 9912 switch (x) { 9913 case r1: 9914 3 !== T ? "" === l.children ? (a(l.el = r(""), s(n), n), A = n) : A = C() : (n.data !== l.children && (nz(), n.data = l.children), A = i(n)); 9915 break; 9916 case r2: 9917 _(n) ? (A = i(n), m(l.el = n.content.firstChild, n, o)) : A = 8 !== T || S ? C() : i(n); 9918 break; 9919 case r6: 9920 if (S && (T = (n = i(n)).nodeType), 1 === T || 3 === T) { 9921 A = n; 9922 let e = !l.children.length; 9923 for (let t = 0; t < l.staticCount; t++) e && (l.children += 1 === A.nodeType ? A.outerHTML : A.data), t === l.staticCount - 1 && (l.anchor = A), A = i(A); 9924 return S ? i(A) : A; 9925 } 9926 C(); 9927 break; 9928 case r0: 9929 A = S ? d(n, l, o, u, y, b) : C(); 9930 break; 9931 default: 9932 if (1 & w) A = 1 === T && l.type.toLowerCase() === n.tagName.toLowerCase() || _(n) ? f(n, l, o, u, y, b) : C();else if (6 & w) { 9933 l.slotScopeIds = y; 9934 let e = s(n); 9935 if (A = S ? g(n) : nX(n) && "teleport start" === n.data ? g(n, n.data, "teleport end") : i(n), t(l, e, null, o, u, nJ(e), b), n5(l) && !l.type.__asyncResolved) { 9936 let t; 9937 S ? (t = ic(r0)).anchor = A ? A.previousSibling : e.lastChild : t = 3 === n.nodeType ? ih("") : ic("div"), t.el = n, l.component.subTree = t; 9938 } 9939 } else 64 & w ? A = 8 !== T ? C() : l.type.hydrate(n, l, o, u, y, b, e, p) : 128 & w && (A = l.type.hydrate(n, l, o, u, nJ(s(n)), y, b, e, c)); 9940 } 9941 return null != E && nW(E, null, u, l), A; 9942 }, 9943 f = (e, t, n, r, i, s) => { 9944 s = s || !!t.dynamicChildren; 9945 let { 9946 type: a, 9947 props: u, 9948 patchFlag: c, 9949 shapeFlag: f, 9950 dirs: d, 9951 transition: h 9952 } = t, 9953 g = "input" === a || "option" === a; 9954 if (g || -1 !== c) { 9955 let a; 9956 d && nd(t, null, n, "created"); 9957 let y = !1; 9958 if (_(e)) { 9959 y = rw(null, h) && n && n.vnode.props && n.vnode.props.appear; 9960 let l = e.content.firstChild; 9961 y && h.beforeEnter(l), m(l, e, n), t.el = e = l; 9962 } 9963 if (16 & f && !(u && (u.innerHTML || u.textContent))) { 9964 let l = p(e.firstChild, t, e, n, r, i, s); 9965 for (; l;) { 9966 n0(e, 1) || nz(); 9967 let t = l; 9968 l = l.nextSibling, o(t); 9969 } 9970 } else if (8 & f) { 9971 let n = t.children; 9972 "\n" === n[0] && ("PRE" === e.tagName || "TEXTAREA" === e.tagName) && (n = n.slice(1)), e.textContent !== n && (n0(e, 0) || nz(), e.textContent = t.children); 9973 } 9974 if (u) { 9975 if (g || !s || 48 & c) { 9976 let t = e.tagName.includes("-"); 9977 for (let r in u) (g && (r.endsWith("value") || "indeterminate" === r) || b(r) && !B(r) || "." === r[0] || t) && l(e, r, null, u[r], void 0, n); 9978 } else if (u.onClick) l(e, "onClick", null, u.onClick, void 0, n);else if (4 & c && tm(u.style)) for (let e in u.style) u.style[e]; 9979 } 9980 (a = u && u.onVnodeBeforeMount) && iS(a, n, t), d && nd(t, null, n, "beforeMount"), ((a = u && u.onVnodeMounted) || d || y) && rY(() => { 9981 a && iS(a, n, t), y && h.enter(e), d && nd(t, null, n, "mounted"); 9982 }, r); 9983 } 9984 return e.nextSibling; 9985 }, 9986 p = (e, t, l, s, o, u, f) => { 9987 f = f || !!t.dynamicChildren; 9988 let p = t.children, 9989 d = p.length; 9990 for (let t = 0; t < d; t++) { 9991 let h = f ? p[t] : p[t] = im(p[t]), 9992 g = h.type === r1; 9993 e ? (g && !f && t + 1 < d && im(p[t + 1]).type === r1 && (a(r(e.data.slice(h.children.length)), l, i(e)), e.data = h.children), e = c(e, h, s, o, u, f)) : g && !h.children ? a(h.el = r(""), l) : (n0(l, 1) || nz(), n(null, h, l, null, s, o, nJ(l), u)); 9994 } 9995 return e; 9996 }, 9997 d = (e, t, n, l, r, o) => { 9998 let { 9999 slotScopeIds: c 10000 } = t; 10001 c && (r = r ? r.concat(c) : c); 10002 let f = s(e), 10003 d = p(i(e), t, f, n, l, r, o); 10004 return d && nX(d) && "]" === d.data ? i(t.anchor = d) : (nz(), a(t.anchor = u("]"), f, d), d); 10005 }, 10006 h = (e, t, l, r, a, u) => { 10007 if (n0(e.parentElement, 1) || nz(), t.el = null, u) { 10008 let t = g(e); 10009 for (;;) { 10010 let n = i(e); 10011 if (n && n !== t) o(n);else break; 10012 } 10013 } 10014 let c = i(e), 10015 f = s(e); 10016 return o(e), n(null, t, f, c, l, r, nJ(f), a), l && (l.vnode.el = t.el, rK(l, t.el)), c; 10017 }, 10018 g = (e, t = "[", n = "]") => { 10019 let l = 0; 10020 for (; e;) if ((e = i(e)) && nX(e) && (e.data === t && l++, e.data === n)) { 10021 if (0 === l) return i(e); 10022 l--; 10023 } 10024 return e; 10025 }, 10026 m = (e, t, n) => { 10027 let l = t.parentNode; 10028 l && l.replaceChild(e, t); 10029 let r = n; 10030 for (; r;) r.vnode.el === t && (r.vnode.el = r.subTree.el = e), r = r.parent; 10031 }, 10032 _ = e => 1 === e.nodeType && "TEMPLATE" === e.tagName; 10033 return [(e, t) => { 10034 if (!t.hasChildNodes()) { 10035 n(null, e, t), nl(), t._vnode = e; 10036 return; 10037 } 10038 c(t.firstChild, e, null, null, null), nl(), t._vnode = e; 10039 }, c]; 10040} 10041let nY = "data-allow-mismatch", 10042 nQ = { 10043 0: "text", 10044 1: "children", 10045 2: "class", 10046 3: "style", 10047 4: "attribute" 10048 }; 10049function n0(e, t) { 10050 if (0 === t || 1 === t) for (; e && !e.hasAttribute(nY);) e = e.parentElement; 10051 let n = e && e.getAttribute(nY); 10052 if (null == n) return !1; 10053 if ("" === n) return !0; 10054 { 10055 let e = n.split(","); 10056 return !!(0 === t && e.includes("children")) || n.split(",").includes(nQ[t]); 10057 } 10058} 10059let n1 = ee().requestIdleCallback || (e => setTimeout(e, 1)), 10060 n2 = ee().cancelIdleCallback || (e => clearTimeout(e)), 10061 n6 = (e = 1e4) => t => { 10062 let n = n1(t, { 10063 timeout: e 10064 }); 10065 return () => n2(n); 10066 }, 10067 n4 = e => (t, n) => { 10068 let l = new IntersectionObserver(e => { 10069 for (let n of e) if (n.isIntersecting) { 10070 l.disconnect(), t(); 10071 break; 10072 } 10073 }, e); 10074 return n(e => { 10075 if (e instanceof Element) { 10076 if (function (e) { 10077 let { 10078 top: t, 10079 left: n, 10080 bottom: l, 10081 right: r 10082 } = e.getBoundingClientRect(), 10083 { 10084 innerHeight: i, 10085 innerWidth: s 10086 } = window; 10087 return (t > 0 && t < i || l > 0 && l < i) && (n > 0 && n < s || r > 0 && r < s); 10088 }(e)) return t(), l.disconnect(), !1; 10089 l.observe(e); 10090 } 10091 }), () => l.disconnect(); 10092 }, 10093 n8 = e => t => { 10094 if (e) { 10095 let n = matchMedia(e); 10096 if (!n.matches) return n.addEventListener("change", t, { 10097 once: !0 10098 }), () => n.removeEventListener("change", t); 10099 t(); 10100 } 10101 }, 10102 n3 = (e = []) => (t, n) => { 10103 P(e) && (e = [e]); 10104 let l = !1, 10105 r = e => { 10106 l || (l = !0, i(), t(), e.target.dispatchEvent(new e.constructor(e.type, e))); 10107 }, 10108 i = () => { 10109 n(t => { 10110 for (let n of e) t.removeEventListener(n, r); 10111 }); 10112 }; 10113 return n(t => { 10114 for (let n of e) t.addEventListener(n, r, { 10115 once: !0 10116 }); 10117 }), i; 10118 }, 10119 n5 = e => !!e.type.__asyncLoader; 10120function n9(e) { 10121 let t; 10122 O(e) && (e = { 10123 loader: e 10124 }); 10125 let { 10126 loader: n, 10127 loadingComponent: l, 10128 errorComponent: r, 10129 delay: i = 200, 10130 hydrate: s, 10131 timeout: o, 10132 suspensible: a = !0, 10133 onError: u 10134 } = e, 10135 c = null, 10136 f = 0, 10137 p = () => (f++, c = null, d()), 10138 d = () => { 10139 let e; 10140 return c || (e = c = n().catch(e => { 10141 if (e = e instanceof Error ? e : Error(String(e)), u) return new Promise((t, n) => { 10142 u(e, () => t(p()), () => n(e), f + 1); 10143 }); 10144 throw e; 10145 }).then(n => e !== c && c ? c : (n && (n.__esModule || "Module" === n[Symbol.toStringTag]) && (n = n.default), t = n, n))); 10146 }; 10147 return nj({ 10148 name: "AsyncComponentWrapper", 10149 __asyncLoader: d, 10150 __asyncHydrate(e, n, l) { 10151 let r = s ? () => { 10152 let t = s(l, t => function (e, t) { 10153 if (nX(e) && "[" === e.data) { 10154 let n = 1, 10155 l = e.nextSibling; 10156 for (; l;) { 10157 if (1 === l.nodeType) { 10158 if (!1 === t(l)) break; 10159 } else if (nX(l)) { 10160 if ("]" === l.data) { 10161 if (0 == --n) break; 10162 } else "[" === l.data && n++; 10163 } 10164 l = l.nextSibling; 10165 } 10166 } else t(e); 10167 }(e, t)); 10168 t && (n.bum || (n.bum = [])).push(t); 10169 } : l; 10170 t ? r() : d().then(() => !n.isUnmounted && r()); 10171 }, 10172 get __asyncResolved() { 10173 return t; 10174 }, 10175 setup() { 10176 let e = iw; 10177 if (n$(e), t) return () => n7(t, e); 10178 let n = t => { 10179 c = null, t0(t, e, 13, !r); 10180 }; 10181 if (a && e.suspense || iN) return d().then(t => () => n7(t, e)).catch(e => (n(e), () => r ? ic(r, { 10182 error: e 10183 }) : null)); 10184 let s = tk(!1), 10185 u = tk(), 10186 f = tk(!!i); 10187 return i && setTimeout(() => { 10188 f.value = !1; 10189 }, i), null != o && setTimeout(() => { 10190 if (!s.value && !u.value) { 10191 let e = Error(`Async component timed out after ${o}ms.`); 10192 n(e), u.value = e; 10193 } 10194 }, o), d().then(() => { 10195 s.value = !0, e.parent && le(e.parent.vnode) && e.parent.update(
10195); 10196 }).catch(e => { 10197 n(e), u.value = e; 10198 }), () => s.value && t ? n7(t, e) : u.value && r ? ic(r, { 10199 error: u.value 10200 }) : l && !f.value ? ic(l) : void 0; 10201 } 10202 }); 10203} 10204function n7(e, t) { 10205 let { 10206 ref: n, 10207 props: l, 10208 children: r, 10209 ce: i 10210 } = t.vnode, 10211 s = ic(e, l, r); 10212 return s.ref = n, s.ce = i, delete t.vnode.ce, s; 10213} 10214let le = e => e.type.__isKeepAlive, 10215 lt = { 10216 name: "KeepAlive", 10217 __isKeepAlive: !0, 10218 props: { 10219 include: [String, RegExp, Array], 10220 exclude: [String, RegExp, Array], 10221 max: [String, Number] 10222 }, 10223 setup(e, { 10224 slots: t 10225 }) { 10226 let n = ik(), 10227 l = n.ctx; 10228 if (!l.renderer) return () => { 10229 let e = t.default && t.default(); 10230 return e && 1 === e.length ? e[0] : e; 10231 }; 10232 let r = new Map(), 10233 i = new Set(), 10234 s = null, 10235 o = n.suspense, 10236 { 10237 renderer: { 10238 p: a, 10239 m: u, 10240 um: c, 10241 o: { 10242 createElement: f 10243 } 10244 } 10245 } = l, 10246 p = f("div"); 10247 function d(e) { 10248 ls(e), c(e, n, o, !0); 10249 } 10250 function h(e) { 10251 r.forEach((t, n) => { 10252 let l = iU(t.type); 10253 l && !e(l) && g(n); 10254 }); 10255 } 10256 function g(e) { 10257 let t = r.get(e); 10258 !t || s && ii(t, s) ? s && ls(s) : d(t), r.delete(e), i.delete(e); 10259 } 10260 l.activate = (e, t, n, l, r) => { 10261 let i = e.component; 10262 u(e, t, n, 0, o), a(i.vnode, e, t, n, i, o, l, e.slotScopeIds, r), ry(() => { 10263 i.isDeactivated = !1, i.a && X(i.a); 10264 let t = e.props && e.props.onVnodeMounted; 10265 t && iS(t, i.parent, e); 10266 }, o); 10267 }, l.deactivate = e => { 10268 let t = e.component; 10269 rT(t.m), rT(t.a), u(e, p, null, 1, o), ry(() => { 10270 t.da && X(t.da); 10271 let n = e.props && e.props.onVnodeUnmounted; 10272 n && iS(n, t.parent, e), t.isDeactivated = !0; 10273 }, o); 10274 }, rM(() => [e.include, e.exclude], ([e, t]) => { 10275 e && h(t => ln(e, t)), t && h(e => !ln(t, e)); 10276 }, { 10277 flush: "post", 10278 deep: !0 10279 }); 10280 let m = null, 10281 _ = () => { 10282 null != m && (rz(n.subTree.type) ? ry(() => { 10283 r.set(m, lo(n.subTree)); 10284 }, n.subTree.suspense) : r.set(m, lo(n.subTree))); 10285 }; 10286 return lf(_), ld(_), lh(() => { 10287 r.forEach(e => { 10288 let { 10289 subTree: t, 10290 suspense: l 10291 } = n, 10292 r = lo(t); 10293 if (e.type === r.type && e.key === r.key) { 10294 ls(r); 10295 let e = r.component.da; 10296 e && ry(e, l); 10297 return; 10298 } 10299 d(e); 10300 }); 10301 }), () => { 10302 if (m = null, !t.default) return s = null; 10303 let n = t.default(), 10304 l = n[0]; 10305 if (n.length > 1) return s = null, n; 10306 if (!ir(l) || !(4 & l.shapeFlag) && !(128 & l.shapeFlag)) return s = null, l; 10307 let o = lo(l); 10308 if (o.type === r2) return s = null, o; 10309 let a = o.type, 10310 u = iU(n5(o) ? o.type.__asyncResolved || {} : a), 10311 { 10312 include: c, 10313 exclude: f, 10314 max: p 10315 } = e; 10316 if (c && (!u || !ln(c, u)) || f && u && ln(f, u)) return o.shapeFlag &= -257, s = o, l; 10317 let d = null == o.key ? a : o.key, 10318 h = r.get(d); 10319 return o.el && (o = id(o), 128 & l.shapeFlag && (l.ssContent = o)), m = d, h ? (o.el = h.el, o.component = h.component, o.transition && nV(o, o.transition), o.shapeFlag |= 512, i.delete(d), i.add(d)) : (i.add(d), p && i.size > parseInt(p, 10) && g(i.values().next().value)), o.shapeFlag |= 256, s = o, rz(l.type) ? l : o; 10320 }; 10321 } 10322 }; 10323function ln(e, t) { 10324 return k(e) ? e.some(e => ln(e, t)) : P(e) ? e.split(",").includes(t) : !!N(e) && (e.lastIndex = 0, e.test(t)); 10325} 10326function ll(e, t) { 10327 li(e, "a", t); 10328} 10329function lr(e, t) { 10330 li(e, "da", t); 10331} 10332function li(e, t, n = iw) { 10333 let l = e.__wdc || (e.__wdc = () => { 10334 let t = n; 10335 for (; t;) { 10336 if (t.isDeactivated) return; 10337 t = t.parent; 10338 } 10339 return e(); 10340 }); 10341 if (la(t, l, n), n) { 10342 let e = n.parent; 10343 for (; e && e.parent;) le(e.parent.vnode) && function (e, t, n, l) { 10344 let r = la(t, e, l, !0); 10345 lg(() => { 10346 x(l[t], r); 10347 }, n); 10348 }(l, t, n, e), e = e.parent; 10349 } 10350} 10351function ls(e) { 10352 e.shapeFlag &= -257, e.shapeFlag &= -513; 10353} 10354function lo(e) { 10355 return 128 & e.shapeFlag ? e.ssContent : e; 10356} 10357function la(e, t, n = iw, l = !1) { 10358 if (n) { 10359 let r = n[e] || (n[e] = []), 10360 i = t.__weh || (t.__weh = (...l) => { 10361 eM(); 10362 let r = iT(n), 10363 i = tQ(t, n, e, l); 10364 return r(), eI(), i; 10365 }); 10366 return l ? r.unshift(i) : r.push(i), i; 10367 } 10368} 10369let lu = e => (t, n = iw) => { 10370 iN && "sp" !== e || la(e, (...e) => t(...e), n); 10371 }, 10372 lc = lu("bm"), 10373 lf = lu("m"), 10374 lp = lu("bu"), 10375 ld = lu("u"),
10376 lh = lu("bum"), 10377 lg = lu("um"), 10378 lv = lu("sp"), 10379 lm = lu("rtg"), 10380 l_ = lu("rtc"); 10381function ly(e, t = iw) { 10382 la("ec", e, t); 10383} 10384let lb = "components"; 10385function lS(e, t) { 10386 return lw(lb, e, !0, t) || e; 10387} 10388let lC = Symbol.for("v-ndc"); 10389function lx(e) { 10390 return P(e) ? lw(lb, e, !1) || e : e || lC; 10391} 10392function lE(e) { 10393 return lw("directives", e); 10394} 10395function lw(e, t, n = !0, l = !1) { 10396 let r = ni || iw; 10397 if (r) { 10398 let n = r.type; 10399 if (e === lb) { 10400 let e = iU(n, !1); 10401 if (e && (e === t || e === W(t) || e === q(W(t)))) return n; 10402 } 10403 let i = lk(r[e] || n[e], t) || lk(r.appContext[e], t); 10404 return !i && l ? n : i; 10405 } 10406} 10407function lk(e, t) { 10408 return e && (e[t] || e[W(t)] || e[q(W(t))]); 10409} 10410function lT(e, t, n, l) { 10411 let r; 10412 let i = n && n[l], 10413 s = k(e); 10414 if (s || P(e)) { 10415 let n = s && tm(e), 10416 l = !1; 10417 n && (l = !ty(e), e = ez(e)), r = Array(e.length); 10418 for (let n = 0, s = e.length; n < s; n++) r[n] = t(l ? tx(e[n]) : e[n], n, void 0, i && i[n]); 10419 } else if ("number" == typeof e) { 10420 r = Array(e); 10421 for (let n = 0; n < e; n++) r[n] = t(n + 1, n, void 0, i && i[n]); 10422 } else if (I(e)) { 10423 if (e[Symbol.iterator]) r = Array.from(e, (e, n) => t(e, n, void 0, i && i[n]));else { 10424 let n = Object.keys(e); 10425 r = Array(n.length); 10426 for (let l = 0, s = n.length; l < s; l++) { 10427 let s = n[l]; 10428 r[l] = t(e[s], s, l, i && i[l]); 10429 } 10430 } 10431 } else r = []; 10432 return n && (n[l] = r), r; 10433} 10434function lA(e, t) { 10435 for (let n = 0; n < t.length; n++) { 10436 let l = t[n]; 10437 if (k(l)) for (let t = 0; t < l.length; t++) e[l[t].name] = l[t].fn;else l && (e[l.name] = l.key ? (...e) => { 10438 let t = l.fn(...e); 10439 return t && (t.key = l.key), t; 10440 } : l.fn); 10441 } 10442 return e; 10443} 10444function lR(e, t, n = {}, l, r) { 10445 if (ni.ce || ni.parent && n5(ni.parent) && ni.parent.ce) return "default" !== t && (n.name = t), r3(), il(r0, null, [ic("slot", n, l && l())], 64); 10446 let i = e[t]; 10447 i && i._c && (i._d = !1), r3(); 10448 let s = i && lN(i(n)), 10449 o = n.key || s && s.key, 10450 a = il(r0, { 10451 key: (o && !M(o) ? o : `_${t}`) + (!s && l ? "_fb" : "") 10452 }, s || (l ? l() : []), s && 1 === e._ ? 64 : -2); 10453 return !r && a.scopeId && (a.slotScopeIds = [a.scopeId + "-s"]), i && i._c && (i._d = !0), a; 10454} 10455function lN(e) { 10456 return e.some(e => !ir(e) || !!(e.type !== r2 && (e.type !== r0 || lN(e.children)))) ? e : null; 10457} 10458function lO(e, t) { 10459 let n = {}; 10460 for (let l in e) n[t && /[A-Z]/.test(l) ? `on:${l}` : G(l)] = e[l]; 10461 return n; 10462} 10463let lP = e => e ? iR(e) ? iV(e) : lP(e.parent) : null, 10464 lM = C(Object.create(null), { 10465 $: e => e, 10466 $el: e => e.vnode.el, 10467 $data: e => e.data, 10468 $props: e => e.props, 10469 $attrs: e => e.attrs, 10470 $slots: e => e.slots, 10471 $refs: e => e.refs, 10472 $parent: e => lP(e.parent), 10473 $root: e => lP(e.root), 10474 $host: e => e.ce, 10475 $emit: e => e.emit, 10476 $options: e => l0(e), 10477 $forceUpdate: e => e.f || (e.f = () => { 10478 t7(e.update); 10479 }), 10480 $nextTick: e => e.n || (e.n = t9.bind(e.proxy)), 10481 $watch: e => rL.bind(e) 10482 }), 10483 lI = (e, t) => e !== g && !e.__isScriptSetup && w(e, t), 10484 lL = { 10485 get({ 10486 _: e 10487 }, t) { 10488 let n, l, r; 10489 if ("__v_skip" === t) return !0; 10490 let { 10491 ctx: i, 10492 setupState: s, 10493 data: o, 10494 props: a, 10495 accessCache: u, 10496 type: c, 10497 appContext: f 10498 } = e; 10499 if ("$" !== t[0]) { 10500 let l = u[t]; 10501 if (void 0 !== l) switch (l) { 10502 case 1: 10503 return s[t]; 10504 case 2: 10505 return o[t]; 10506 case 4: 10507 return i[t]; 10508 case 3: 10509 return a[t]; 10510 } else { 10511 if (lI(s, t)) return u[t] = 1, s[t]; 10512 if (o !== g && w(o, t)) return u[t] = 2, o[t]; 10513 if ((n = e.propsOptions[0]) && w(n, t)) return u[t] = 3, a[t]; 10514 if (i !== g && w(i, t)) return u[t] = 4, i[t]; 10515 lY && (u[t] = 0); 10516 } 10517 } 10518 let p = lM[t]; 10519 return p ? ("$attrs" === t && eH(e.attrs, "get", ""), p(e)) : (l = c.__cssModules) && (l = l[t]) ? l : i !== g && w(i, t) ? (u[t] = 4, i[t]) : w(r = f.config.globalProperties, t) ? r[t] : void 0; 10520 }, 10521 set({ 10522 _: e 10523 }, t, n) { 10524 let { 10525 data: l, 10526 setupState: r, 10527 ctx: i 10528 } = e; 10529 return lI(r, t) ? (r[t] = n, !0) : l !== g && w(l, t) ? (l[t] = n, !0) : !w(e.props, t) && !("$" === t[0] && t.slice(1) in e) && (i[t] = n, !0); 10530 }, 10531 has({ 10532 _: { 10533 data: e, 10534 setupState: t, 10535 accessCache: n, 10536 ctx: l, 10537 appContext: r, 10538 propsOptions: i 10539 } 10540 }, s) { 10541 let o; 10542 return !!n[s] || e !== g && w(e, s) || lI(t, s) || (o = i[0]) && w(o, s) || w(l, s) || w(lM, s) || w(r.config.globalProperties, s); 10543 }, 10544 defineProperty(e, t, n) { 10545 return null != n.get ? e._.accessCache[t] = 0 : w(n, "value") && this.set(e, t, n.value, null), Reflect.defineProperty(e, t, n); 10546 } 10547 }, 10548 lD = C({}, lL, { 10549 get(e, t) { 10550 if (t !== Symbol.unscopables) return lL.get(e, t, e); 10551 }, 10552 has: (e, t) => "_" !== t[0] && !et(t) 10553 }); 10554function lF() { 10555 return null; 10556} 10557function lV() { 10558 return null; 10559} 10560function lU(e) {} 10561function lj(e) {} 10562function lB() { 10563 return null; 10564} 10565function l$() {} 10566function lH(e, t) { 10567 return null; 10568} 10569function lW() { 10570 return lz().slots; 10571} 10572function lK() { 10573 return lz().attrs; 10574} 10575function lz() { 10576 let e = ik(); 10577 return e.setupContext || (e.setupContext = iF(e)); 10578} 10579function lq(e) { 10580 return k(e) ? e.reduce((e, t) => (e[t] = null, e), {}) : e; 10581} 10582function lG(e, t) { 10583 let n = lq(e); 10584 for (let e in t) { 10585 if (e.startsWith("__skip")) continue; 10586 let l = n[e]; 10587 l ? k(l) || O(l) ? l = n[e] = { 10588 type: l, 10589 default: t[e] 10590 } : l.default = t[e] : null === l && (l = n[e] = { 10591 default: t[e] 10592 }), l && t[`__skip_${e}`] && (l.skipFactory = !0); 10593 } 10594 return n; 10595} 10596function lJ(e, t) {
10597 return e && t ? k(e) && k(t) ? e.concat(t) : C({}, lq(e), lq(t)) : e || t; 10598} 10599function lX(e, t) { 10600 let n = {}; 10601 for (let l in e) t.includes(l) || Object.defineProperty(n, l, { 10602 enumerable: !0, 10603 get: () => e[l] 10604 }); 10605 return n; 10606} 10607function lZ(e) { 10608 let t = ik(), 10609 n = e(); 10610 return iA(), L(n) && (n = n.catch(e => { 10611 throw iT(t), e; 10612 })), [n, () => iT(t)]; 10613} 10614let lY = !0; 10615function lQ(e, t, n) { 10616 tQ(k(e) ? e.map(e => e.bind(t.proxy)) : e.bind(t.proxy), t, n); 10617} 10618function l0(e) { 10619 let t; 10620 let n = e.type, 10621 { 10622 mixins: l, 10623 extends: r 10624 } = n, 10625 { 10626 mixins: i, 10627 optionsCache: s, 10628 config: { 10629 optionMergeStrategies: o 10630 } 10631 } = e.appContext, 10632 a = s.get(n); 10633 return a ? t = a : i.length || l || r ? (t = {}, i.length && i.forEach(e => l1(t, e, o, !0)), l1(t, n, o)) : t = n, I(n) && s.set(n, t), t; 10634} 10635function l1(e, t, n, l = !1) { 10636 let { 10637 mixins: r, 10638 extends: i 10639 } = t; 10640 for (let s in i && l1(e, i, n, !0), r && r.forEach(t => l1(e, t, n, !0)), t) if (l && "expose" === s) ;else { 10641 let l = l2[s] || n && n[s]; 10642 e[s] = l ? l(e[s], t[s]) : t[s]; 10643 } 10644 return e; 10645} 10646let l2 = { 10647 data: l6, 10648 props: l5, 10649 emits: l5, 10650 methods: l3, 10651 computed: l3, 10652 beforeCreate: l8, 10653 created: l8, 10654 beforeMount: l8, 10655 mounted: l8, 10656 beforeUpdate: l8, 10657 updated: l8, 10658 beforeDestroy: l8, 10659 beforeUnmount: l8, 10660 destroyed: l8, 10661 unmounted: l8, 10662 activated: l8, 10663 deactivated: l8, 10664 errorCaptured: l8, 10665 serverPrefetch: l8, 10666 components: l3, 10667 directives: l3, 10668 watch: function (e, t) { 10669 if (!e) return t; 10670 if (!t) return e; 10671 let n = C(Object.create(null), e); 10672 for (let l in t) n[l] = l8(e[l], t[l]); 10673 return n; 10674 }, 10675 provide: l6, 10676 inject: function (e, t) { 10677 return l3(l4(e), l4(t)); 10678 } 10679}; 10680function l6(e, t) { 10681 return t ? e ? function () { 10682 return C(O(e) ? e.call(this, this) : e, O(t) ? t.call(this, this) : t); 10683 } : t : e; 10684} 10685function l4(e) { 10686 if (k(e)) { 10687 let t = {}; 10688 for (let n = 0; n < e.length; n++) t[e[n]] = e[n]; 10689 return t; 10690 } 10691 return e; 10692} 10693function l8(e, t) { 10694 return e ? [...new Set([].concat(e, t))] : t; 10695} 10696function l3(e, t) { 10697 return e ? C(Object.create(null), e, t) : t; 10698} 10699function l5(e, t) { 10700 return e ? k(e) && k(t) ? [...new Set([...e, ...t])] : C(Object.create(null), lq(e), lq(null != t ? t : {})) : t; 10701} 10702function l9() { 10703 return { 10704 app: null, 10705 config: { 10706 isNativeTag: y, 10707 performance: !1, 10708 globalProperties: {}, 10709 optionMergeStrategies: {}, 10710 errorHandler: void 0, 10711 warnHandler: void 0, 10712 compilerOptions: {} 10713 }, 10714 mixins: [], 10715 components: {}, 10716 directives: {}, 10717 provides: Object.create(null), 10718 optionsCache: new WeakMap(), 10719 propsCache: new WeakMap(), 10720 emitsCache: new WeakMap() 10721 }; 10722} 10723let l7 = 0, 10724 re = null; 10725function rt(e, t) { 10726 if (iw) { 10727 let n = iw.provides, 10728 l = iw.parent && iw.parent.provides; 10729 l === n && (n = iw.provides = Object.create(l)), n[e] = t; 10730 } 10731} 10732function rn(e, t, n = !1) { 10733 let l = iw || ni; 10734 if (l || re) { 10735 let r = re ? re._context.provides : l ? null == l.parent ? l.vnode.appContext && l.vnode.appContext.provides : l.parent.provides : void 0; 10736 if (r && e in r) return r[e]; 10737 if (arguments.length > 1) return n && O(t) ? t.call(l && l.proxy) : t; 10738 } 10739} 10740function rl() { 10741 return !!(iw || ni || re); 10742} 10743let rr = {}, 10744 ri = () => Object.create(rr), 10745 rs = e => Object.getPrototypeOf(e) === rr; 10746function ro(e, t, n, l) { 10747 let r; 10748 let [i, s] = e.propsOptions, 10749 o = !1; 10750 if (t) for (let a in t) { 10751 let u; 10752 if (B(a)) continue;
10753 let c = t[a]; 10754 i && w(i, u = W(a)) ? s && s.includes(u) ? (r || (r = {}))[u] = c : n[u] = c : rj(e.emitsOptions, a) || a in l && c === l[a] || (l[a] = c, o = !0); 10755 } 10756 if (s) { 10757 let t = tS(n), 10758 l = r || g; 10759 for (let r = 0; r < s.length; r++) { 10760 let o = s[r]; 10761 n[o] = ra(i, t, o, l[o], e, !w(l, o)); 10762 } 10763 } 10764 return o; 10765} 10766function ra(e, t, n, l, r, i) { 10767 let s = e[n]; 10768 if (null != s) { 10769 let e = w(s, "default"); 10770 if (e && void 0 === l) { 10771 let e = s.default; 10772 if (s.type !== Function && !s.skipFactory && O(e)) { 10773 let { 10774 propsDefaults: i 10775 } = r; 10776 if (n in i) l = i[n];else { 10777 let s = iT(r); 10778 l = i[n] = e.call(null, t), s(); 10779 } 10780 } else l = e; 10781 r.ce && r.ce._setProp(n, l); 10782 } 10783 s[0] && (i && !e ? l = !1 : s[1] && ("" === l || l === z(n)) && (l = !0)); 10784 } 10785 return l; 10786} 10787let ru = new WeakMap(); 10788function rc(e) { 10789 return !("$" === e[0] || B(e)); 10790} 10791let rf = e => "_" === e[0] || "$stable" === e, 10792 rp = e => k(e) ? e.map(im) : [im(e)], 10793 rd = (e, t, n) => { 10794 if (t._n) return t; 10795 let l = nf((...e) => rp(t(...e)), n); 10796 return l._c = !1, l; 10797 }, 10798 rh = (e, t, n) => { 10799 let l = e._ctx; 10800 for (let n in e) { 10801 if (rf(n)) continue; 10802 let r = e[n]; 10803 if (O(r)) t[n] = rd(n, r, l);else if (null != r) { 10804 let e = rp(r); 10805 t[n] = () => e; 10806 } 10807 } 10808 }, 10809 rg = (e, t) => { 10810 let n = rp(t); 10811 e.slots.default = () => n; 10812 }, 10813 rv = (e, t, n) => { 10814 for (let l in t) (n || "_" !== l) && (e[l] = t[l]); 10815 }, 10816 rm = (e, t, n) => { 10817 let l = e.slots = ri(); 10818 if (32 & e.vnode.shapeFlag) { 10819 let e = t._; 10820 e ? (rv(l, t, n), n && Z(l, "_", e, !0)) : rh(t, l); 10821 } else t && rg(e, t); 10822 }, 10823 r_ = (e, t, n) => { 10824 let { 10825 vnode: l, 10826 slots: r 10827 } = e, 10828 i = !0, 10829 s = g; 10830 if (32 & l.shapeFlag) { 10831 let e = t._; 10832 e ? n && 1 === e ? i = !1 : rv(r, t, n) : (i = !t.$stable, rh(t, r)), s = t; 10833 } else t && (rg(e, t), s = { 10834 default: 1 10835 }); 10836 if (i) for (let e in r) rf(e) || null != s[e] || delete r[e]; 10837 }, 10838 ry = rY; 10839function rb(e) { 10840 return rC(e); 10841} 10842function rS(e) { 10843 return rC(e, nZ); 10844} 10845function rC(e, t) { 10846 var n; 10847 let l, r; 10848 ee().__VUE__ = !0; 10849 let { 10850 insert: i, 10851 remove: s, 10852 patchProp: o, 10853 createElement: a, 10854 createText: u, 10855 createComment: c, 10856 setText: f, 10857 setElementText: p, 10858 parentNode: d, 10859 nextSibling: h, 10860 setScopeId: y = _, 10861 insertStaticContent: b 10862 } = e, 10863 S = (e, t, n, l = null, r = null, i = null, s, o = null, a = !!t.dynamicChildren) => { 10864 if (e === t) return; 10865 e && !ii(e, t) && (l = er(e), Y(e, r, i, !0), e = null), -2 === t.patchFlag && (a = !1, t.dynamicChildren = null); 10866 let { 10867 type: u, 10868 ref: c, 10869 shapeFlag: f 10870 } = t; 10871 switch (u) { 10872 case r1: 10873 x(e, t, n, l); 10874 break; 10875 case r2: 10876 E(e, t, n, l); 10877 break; 10878 case r6: 10879 null == e && k(t, n, l, s); 10880 break; 10881 case r0: 10882 V(e, t, n, l, r, i, s, o, a); 10883 break; 10884 default: 10885 1 & f ? R(e, t, n, l, r, i, s, o, a) : 6 & f ? U(e, t, n, l, r, i, s, o, a) : 64 & f ? u.process(e, t, n, l, r, i, s, o, a, eo) : 128 & f && u.process(e, t, n, l, r, i, s, o, a, eo); 10886 } 10887 null != c && r && nW(c, e && e.ref, i, t || e, !t); 10888 }, 10889 x = (e, t, n, l) => { 10890 if (null == e) i(t.el = u(t.children), n, l);else { 10891 let n = t.el = e.el; 10892 t.children !== e.children && f(n, t.children); 10893 } 10894 }, 10895 E = (e, t, n, l) => { 10896 null == e ? i(t.el = c(t.children || ""), n, l) : t.el = e.el; 10897 }, 10898 k = (e, t, n, l) => { 10899 [e.el, e.anchor] = b(e.children, t, n, l, e.el, e.anchor); 10900 }, 10901 T = ({ 10902 el: e, 10903 anchor: t 10904 }, n, l) => { 10905 let r; 10906 for (; e && e !== t;) r = h(e), i(e, n, l), e = r; 10907 i(t, n, l); 10908 }, 10909 A = ({ 10910 el: e, 10911 anchor: t 10912 }) => { 10913 let n; 10914 for (; e && e !== t;) n = h(e), s(e), e = n; 10915 s(t); 10916 }, 10917 R = (e, t, n, l, r, i, s, o, a) => { 10918 "svg" === t.type ? s = "svg" : "math" === t.type && (s = "mathml"), null == e ? N(t, n, l, r, i, s, o, a) : L(e, t, r, i, s, o, a); 10919 }, 10920 N = (e, t, n, l, r, s, u, c) => { 10921 let f, d; 10922 let { 10923 props: h, 10924 shapeFlag: g, 10925 transition: m, 10926 dirs: _ 10927 } = e; 10928 if (f = e.el = a(e.type, s, h && h.is, h), 8 & g ? p(f, e.children) : 16 & g && M(e.children, f, null, l, r, rx(e, s), u, c), _ && nd(e, null, l, "created"), P(f, e, e.scopeId, u, l), h) { 10929 for (let e in h) "value" === e || B(e) || o(f, e, null, h[e], s, l); 10930 "value" in h && o(f, "value", null, h.value, s), (d = h.onVnodeBeforeMount) && iS(d, l, e); 10931 } 10932 _ && nd(e, null, l, "beforeMount"); 10933 let y = rw(r, m); 10934 y && m.beforeEnter(f), i(f, t, n), ((d = h && h.onVnodeMounted) || y || _) && ry(() => { 10935 d && iS(d, l, e), y && m.enter(f), _ && nd(e, null, l, "mounted"); 10936 }, r); 10937 }, 10938 P = (e, t, n, l, r) => { 10939 if (n && y(e, n), l) for (let t = 0; t < l.length; t++) y(e, l[t]); 10940 if (r) { 10941 let n = r.subTree; 10942 if (t === n || rz(n.type) && (n.ssContent === t || n.ssFallback === t)) { 10943 let t = r.vnode; 10944 P(e, t, t.scopeId, t.slotScopeIds, r.parent); 10945 } 10946 } 10947 }, 10948 M = (e, t, n, l, r, i, s, o, a = 0) => { 10949 for (let u = a; u < e.length; u++) S(null, e[u] = o ? i_(e[u]) : im(e[u]), t, n, l, r, i, s, o); 10950 }, 10951 L = (e, t, n, l, r, i, s) => { 10952 let a; 10953 let u = t.el = e.el, 10954 { 10955 patchFlag: c, 10956 dynamicChildren: f, 10957 dirs: d 10958 } = t; 10959 c |= 16 & e.patchFlag; 10960 let h = e.props || g, 10961 m = t.props || g; 10962 if (n && rE(n, !1), (a = m.onVnodeBeforeUpdate) && iS(a, n, t, e), d && nd(t, e, n, "beforeUpdate"), n && rE(n, !0), (h.innerHTML && null == m.innerHTML || h.textContent && null == m.textContent) && p(u, ""), f ? D(e.dynamicChildren, f, u, n, l, rx(t, r), i) : s || q(e, t, u, null, n, l, rx(t, r), i, !1), c > 0) { 10963 if (16 & c) F(u, h, m, n, r);else if (2 & c && h.class !== m.class && o(u, "class", null, m.class, r), 4 & c && o(u, "style", h.style, m.style, r), 8 & c) { 10964 let e = t.dynamicProps; 10965 for (let t = 0; t < e.length; t++) { 10966 let l = e[t], 10967 i = h[l], 10968 s = m[l]; 10969 (s !== i || "value" === l) && o(u, l, i, s, r, n); 10970 } 10971 } 10972 1 & c && e.children !== t.children && p(u, t.children); 10973 } else s || null != f || F(u, h, m, n, r); 10974 ((a = m.onVnodeUpdated) || d) && ry(() => { 10975 a && iS(a, n, t, e), d && nd(t, e, n, "updated"); 10976 }, l); 10977 }, 10978 D = (e, t, n, l, r, i, s) => { 10979 for (let o = 0; o < t.length; o++) { 10980 let a = e[o], 10981 u = t[o], 10982 c = a.el && (a.type === r0 || !ii(a, u) || 70 & a.shapeFlag) ? d(a.el) : n; 10983 S(a, u, c, null, l, r, i, s, !0); 10984 } 10985 }, 10986 F = (e, t, n, l, r) => { 10987 if (t !== n) { 10988 if (t !== g) for (let i in t) B(i) || i in n || o(e, i, t[i], null, r, l); 10989 for (let i in n) { 10990 if (B(i)) continue; 10991 let s = n[i], 10992 a = t[i]; 10993 s !== a && "value" !== i && o(e, i, a, s, r, l); 10994 } 10995 "value" in n && o(e, "value", t.value, n.value, r); 10996 } 10997 }, 10998 V = (e, t, n, l, r, s, o, a, c) => { 10999 let f = t.el = e ? e.el : u(""), 11000 p = t.anchor = e ? e.anchor : u(""), 11001 { 11002 patchFlag: d, 11003 dynamicChildren: h, 11004 slotScopeIds: g 11005 } = t; 11006 g && (a = a ? a.concat(g) : g), null == e ? (i(f, n, l), i(p, n, l), M(t.children || [], n, p, r, s, o, a, c)) : d > 0 && 64 & d && h && e.dynamicChildren ? (D(e.dynamicChildren, h, n, r, s, o, a), (null != t.key || r && t === r.subTree) && rk(e, t, !0)) : q(e, t, n, p, r, s, o, a, c); 11007 }, 11008 U = (e, t, n, l, r, i, s, o, a) => { 11009 t.slotScopeIds = o, null == e ? 512 & t.shapeFlag ? r.ctx.activate(t, n, l, s, a) : j(t, n, l, r, i, s, a) : $(e, t, a); 11010 }, 11011 j = (e, t, n, l, r, i, s) => { 11012 let o = e.component = iE(e, l, r); 11013 le(e) && (o.ctx.renderer = eo), iO(o, !1, s), o.asyncDep ? (r && r.registerDep(o, H, s), e.el || E(null, o.subTree = ic(r2), t, n)) : H(o, e, t, n, r, i, s); 11014 }, 11015 $ = (e, t, n) => { 11016 let l = t.component = e.component; 11017 if (function (e, t, n) { 11018 let { 11019 props: l, 11020 children: r, 11021 component: i 11022 } = e, 11023 { 11024 props: s, 11025 children: o, 11026 patchFlag: a 11027 } = t, 11028 u = i.emitsOptions; 11029 if (t.dirs || t.transition) return !0; 11030 if (!n || !(a >= 0)) return (!!r || !!o) && (!o || !o.$stable) || l !== s && (l ? !s || rW(l, s, u) : !!s); 11031 if (1024 & a) return !0; 11032 if (16 & a) return l ? rW(l, s, u) : !!s; 11033 if (8 & a) { 11034 let e = t.dynamicProps; 11035 for (let t = 0; t < e.length; t++) { 11036 let n = e[t]; 11037 if (s[n] !== l[n] && !rj(u, n)) return !0; 11038 } 11039 } 11040 return !1; 11041 }(e, t, n)) { 11042 if (l.asyncDep && !l.asyncResolved) { 11043 K(l, t, n); 11044 return; 11045 }
11046 l.next = t, l.update(); 11047 } else t.el = e.el, l.vnode = t; 11048 }, 11049 H = (e, t, n, l, i, s, o) => { 11050 let a = () => { 11051 if (e.isMounted) { 11052 let t, 11053 { 11054 next: n, 11055 bu: l, 11056 u: r, 11057 parent: u, 11058 vnode: c 11059 } = e; 11060 { 11061 let t = function e(t) { 11062 let n = t.subTree.component; 11063 if (n) return n.asyncDep && !n.asyncResolved ? n : e(n); 11064 }(e); 11065 if (t) { 11066 n && (n.el = c.el, K(e, n, o)), t.asyncDep.then(() => { 11067 e.isUnmounted || a(); 11068 }); 11069 return; 11070 } 11071 } 11072 let f = n; 11073 rE(e, !1), n ? (n.el = c.el, K(e, n, o)) : n = c, l && X(l), (t = n.props && n.props.onVnodeBeforeUpdate) && iS(t, u, n, c), rE(e, !0); 11074 let p = rB(e), 11075 h = e.subTree; 11076 e.subTree = p, S(h, p, d(h.el), er(h), e, i, s), n.el = p.el, null === f && rK(e, p.el), r && ry(r, i), (t = n.props && n.props.onVnodeUpdated) && ry(() => iS(t, u, n, c), i); 11077 } else { 11078 let o; 11079 let { 11080 el: a, 11081 props: u 11082 } = t, 11083 { 11084 bm: c, 11085 m: f, 11086 parent: p, 11087 root: d, 11088 type: h 11089 } = e, 11090 g = n5(t); 11091 if (rE(e, !1), c && X(c), !g && (o = u && u.onVnodeBeforeMount) && iS(o, p, t), rE(e, !0), a && r) { 11092 let t = () => { 11093 e.subTree = rB(e), r(a, e.subTree, e, i, null); 11094 }; 11095 g && h.__asyncHydrate ? h.__asyncHydrate(a, e, t) : t(); 11096 } else { 11097 d.ce && d.ce._injectChildStyle(h); 11098 let r = e.subTree = rB(e); 11099 S(null, r, n, l, e, i, s), t.el = r.el; 11100 } 11101 if (f && ry(f, i), !g && (o = u && u.onVnodeMounted)) { 11102 let e = t; 11103 ry(() => iS(o, p, e), i); 11104 } 11105 (256 & t.shapeFlag || p && n5(p.vnode) && 256 & p.vnode.shapeFlag) && e.a && ry(e.a, i), e.isMounted = !0, t = n = l = null; 11106 } 11107 }; 11108 e.scope.on(); 11109 let u = e.effect = new eb(a); 11110 e.scope.off(); 11111 let c = e.update = u.run.bind(u), 11112 f = e.job = u.runIfDirty.bind(u); 11113 f.i = e, f.id = e.uid, u.scheduler = () => t7(f), rE(e, !0), c(); 11114 }, 11115 K = (e, t, n) => { 11116 t.component = e; 11117 let l = e.vnode.props; 11118 e.vnode = t, e.next = null, function (e, t, n, l) { 11119 let { 11120 props: r, 11121 attrs: i, 11122 vnode: { 11123 patchFlag: s 11124 } 11125 } = e, 11126 o = tS(r), 11127 [a] = e.propsOptions, 11128 u = !1; 11129 if ((l || s > 0) && !(16 & s)) { 11130 if (8 & s) { 11131 let n = e.vnode.dynamicProps; 11132 for (let l = 0; l < n.length; l++) { 11133 let s = n[l]; 11134 if (rj(e.emitsOptions, s)) continue; 11135 let c = t[s]; 11136 if (a) { 11137 if (w(i, s)) c !== i[s] && (i[s] = c, u = !0);else { 11138 let t = W(s); 11139 r[t] = ra(a, o, t, c, e, !1); 11140 } 11141 } else c !== i[s] && (i[s] = c, u = !0); 11142 } 11143 } 11144 } else { 11145 let l; 11146 for (let s in ro(e, t, r, i) && (u = !0), o) t && (w(t, s) || (l = z(s)) !== s && w(t, l)) || (a ? n && (void 0 !== n[s] || void 0 !== n[l]) && (r[s] = ra(a, o, s, void 0, e, !0)) : delete r[s]); 11147 if (i !== o) for (let e in i) t && w(t, e) || (delete i[e], u = !0); 11148 } 11149 u && eW(e.attrs, "set", ""); 11150 }(e, t.props, l, n), r_(e, t.children, n), eM(), nn(e), eI(); 11151 }, 11152 q = (e, t, n, l, r, i, s, o, a = !1) => { 11153 let u = e && e.children, 11154 c = e ? e.shapeFlag : 0, 11155 f = t.children, 11156 { 11157 patchFlag: d, 11158 shapeFlag: h 11159 } = t; 11160 if (d > 0) { 11161 if (128 & d) { 11162 J(u, f, n, l, r, i, s, o, a); 11163 return; 11164 } 11165 if (256 & d) { 11166 G(u, f, n, l, r, i, s, o, a); 11167 return; 11168 } 11169 } 11170 8 & h ? (16 & c && el(u, r, i), f !== u && p(n, f)) : 16 & c ? 16 & h ? J(u, f, n, l, r, i, s, o, a) : el(u, r, i, !0) : (8 & c && p(n, ""), 16 & h && M(f, n, l, r, i, s, o, a)); 11171 }, 11172 G = (e, t, n, l, r, i, s, o, a) => { 11173 let u; 11174 e = e || m, t = t || m; 11175 let c = e.length, 11176 f = t.length, 11177 p = Math.min(c, f); 11178 for (u = 0; u < p; u++) { 11179 let l = t[u] = a ? i_(t[u]) : im(t[u]); 11180 S(e[u], l, n, null, r, i, s, o, a); 11181 } 11182 c > f ? el(e, r, i, !0, !1, p) : M(t, n, l, r, i, s, o, a, p); 11183 }, 11184 J = (e, t, n, l, r, i, s, o, a) => { 11185 let u = 0, 11186 c = t.length, 11187 f = e.length - 1, 11188 p = c - 1; 11189 for (; u <= f && u <= p;) { 11190 let l = e[u], 11191 c = t[u] = a ? i_(t[u]) : im(t[u]); 11192 if (ii(l, c)) S(l, c, n, null, r, i, s, o, a);else break; 11193 u++; 11194 } 11195 for (; u <= f && u <= p;) { 11196 let l = e[f], 11197 u = t[p] = a ? i_(t[p]) : im(t[p]); 11198 if (ii(l, u)) S(l, u, n, null, r, i, s, o, a);else break; 11199 f--, p--; 11200 } 11201 if (u > f) { 11202 if (u <= p) { 11203 let e = p + 1, 11204 f = e < c ? t[e].el : l; 11205 for (; u <= p;) S(null, t[u] = a ? i_(t[u]) : im(t[u]), n, f, r, i, s, o, a), u++; 11206 } 11207 } else if (u > p) for (; u <= f;) Y(e[u], r, i, !0), u++;else { 11208 let d; 11209 let h = u, 11210 g = u, 11211 _ = new Map(); 11212 for (u = g; u <= p; u++) { 11213 let e = t[u] = a ? i_(t[u]) : im(t[u]); 11214 null != e.key && _.set(e.key, u); 11215 } 11216 let y = 0, 11217 b = p - g + 1, 11218 C = !1, 11219 x = 0, 11220 E = Array(b); 11221 for (u = 0; u < b; u++) E[u] = 0; 11222 for (u = h; u <= f; u++) { 11223 let l; 11224 let c = e[u]; 11225 if (y >= b) { 11226 Y(c, r, i, !0); 11227 continue; 11228 } 11229 if (null != c.key) l = _.get(c.key);else for (d = g; d <= p; d++) if (0 === E[d - g] && ii(c, t[d])) { 11230 l = d; 11231 break; 11232 } 11233 void 0 === l ? Y(c, r, i, !0) : (E[l - g] = u + 1, l >= x ? x = l : C = !0, S(c, t[l], n, null, r, i, s, o, a), y++); 11234 } 11235 let w = C ? function (e) { 11236 let t, n, l, r, i; 11237 let s = e.slice(), 11238 o = [0], 11239 a = e.length; 11240 for (t = 0; t < a; t++) { 11241 let a = e[t]; 11242 if (0 !== a) { 11243 if (e[n = o[o.length - 1]] < a) { 11244 s[t] = n, o.push(t); 11245 continue; 11246 } 11247 for (l = 0, r = o.length - 1; l < r;) e[o[i = l + r >> 1]] < a ? l = i + 1 : r = i; 11248 a < e[o[l]] && (l > 0 && (s[t] = o[l - 1]), o[l] = t); 11249 } 11250 } 11251 for (l = o.length, r = o[l - 1]; l-- > 0;
11251) o[l] = r, r = s[r]; 11252 return o; 11253 }(E) : m; 11254 for (d = w.length - 1, u = b - 1; u >= 0; u--) { 11255 let e = g + u, 11256 f = t[e], 11257 p = e + 1 < c ? t[e + 1].el : l; 11258 0 === E[u] ? S(null, f, n, p, r, i, s, o, a) : C && (d < 0 || u !== w[d] ? Z(f, n, p, 2) : d--); 11259 } 11260 } 11261 }, 11262 Z = (e, t, n, l, r = null) => { 11263 let { 11264 el: s, 11265 type: o, 11266 transition: a, 11267 children: u, 11268 shapeFlag: c 11269 } = e; 11270 if (6 & c) { 11271 Z(e.component.subTree, t, n, l); 11272 return; 11273 } 11274 if (128 & c) { 11275 e.suspense.move(t, n, l); 11276 return; 11277 } 11278 if (64 & c) { 11279 o.move(e, t, n, eo); 11280 return; 11281 } 11282 if (o === r0) { 11283 i(s, t, n); 11284 for (let e = 0; e < u.length; e++) Z(u[e], t, n, l); 11285 i(e.anchor, t, n); 11286 return; 11287 } 11288 if (o === r6) { 11289 T(e, t, n); 11290 return; 11291 } 11292 if (2 !== l && 1 & c && a) { 11293 if (0 === l) a.beforeEnter(s), i(s, t, n), ry(() => a.enter(s), r);else { 11294 let { 11295 leave: e, 11296 delayLeave: l, 11297 afterLeave: r 11298 } = a, 11299 o = () => i(s, t, n), 11300 u = () => { 11301 e(s, () => { 11302 o(), r && r(); 11303 }); 11304 }; 11305 l ? l(s, o, u) : u(); 11306 } 11307 } else i(s, t, n); 11308 }, 11309 Y = (e, t, n, l = !1, r = !1) => { 11310 let i; 11311 let { 11312 type: s, 11313 props: o, 11314 ref: a, 11315 children: u, 11316 dynamicChildren: c, 11317 shapeFlag: f, 11318 patchFlag: p, 11319 dirs: d, 11320 cacheIndex: h 11321 } = e; 11322 if (-2 === p && (r = !1), null != a && nW(a, null, n, e, !0), null != h && (t.renderCache[h] = void 0), 256 & f) { 11323 t.ctx.deactivate(e); 11324 return; 11325 } 11326 let g = 1 & f && d, 11327 m = !n5(e); 11328 if (m && (i = o && o.onVnodeBeforeUnmount) && iS(i, t, e), 6 & f) en(e.component, n, l);else { 11329 if (128 & f) { 11330 e.suspense.unmount(n, l); 11331 return; 11332 } 11333 g && nd(e, null, t, "beforeUnmount"), 64 & f ? e.type.remove(e, t, n, eo, l) : c && !c.hasOnce && (s !== r0 || p > 0 && 64 & p) ? el(c, t, n, !1, !0) : (s === r0 && 384 & p || !r && 16 & f) && el(u, t, n), l && Q(e); 11334 } 11335 (m && (i = o && o.onVnodeUnmounted) || g) && ry(() => { 11336 i && iS(i, t, e), g && nd(e, null, t, "unmounted"); 11337 }, n); 11338 }, 11339 Q = e => { 11340 let { 11341 type: t, 11342 el: n, 11343 anchor: l, 11344 transition: r 11345 } = e; 11346 if (t === r0) { 11347 et(n, l); 11348 return; 11349 } 11350 if (t === r6) { 11351 A(e); 11352 return; 11353 } 11354 let i = () => { 11355 s(n), r && !r.persisted && r.afterLeave && r.afterLeave(); 11356 }; 11357 if (1 & e.shapeFlag && r && !r.persisted) { 11358 let { 11359 leave: t, 11360 delayLeave: l 11361 } = r, 11362 s = () => t(n, i); 11363 l ? l(e.el, i, s) : s(); 11364 } else i(); 11365 }, 11366 et = (e, t) => { 11367 let n; 11368 for (; e !== t;) n = h(e), s(e), e = n; 11369 s(t); 11370 }, 11371 en = (e, t, n) => { 11372 let { 11373 bum: l, 11374 scope: r, 11375 job: i, 11376 subTree: s, 11377 um: o, 11378 m: a, 11379 a: u 11380 } = e; 11381 rT(a), rT(u), l && X(l), r.stop(), i && (i.flags |= 8, Y(s, e, t, n)), o && ry(o, t), ry(() => { 11382 e.isUnmounted = !0; 11383 }, t), t && t.pendingBranch && !t.isUnmounted && e.asyncDep && !e.asyncResolved && e.suspenseId === t.pendingId && (t.deps--, 0 === t.deps && t.resolve()); 11384 }, 11385 el = (e, t, n, l = !1, r = !1, i = 0) => { 11386 for (let s = i; s < e.length; s++) Y(e[s], t, n, l, r); 11387 }, 11388 er = e => { 11389 if (6 & e.shapeFlag) return er(e.component.subTree); 11390 if (128 & e.shapeFlag) return e.suspense.next(); 11391 let t = h(e.anchor || e.el), 11392 n = t && t[nh]; 11393 return n ? h(n) : t; 11394 }, 11395 ei = !1, 11396 es = (e, t, n) => { 11397 null == e ? t._vnode && Y(t._vnode, null, null, !0) : S(t._vnode || null, e, t, null, null, null, n), t._vnode = e, ei || (ei = !0, nn(), nl(), ei = !1); 11398 }, 11399 eo = { 11400 p: S, 11401 um: Y, 11402 m: Z, 11403 r: Q, 11404 mt: j, 11405 mc: M, 11406 pc: q, 11407 pbc: D, 11408 n: er, 11409 o: e 11410 }; 11411 return t && ([l, r] = t(eo)), { 11412 render: es, 11413 hydrate: l, 11414 createApp: (n = l, function (e, t = null) { 11415 O(e) || (e = C({}, e)), null == t || I(t) || (t = null); 11416 let l = l9(), 11417 r = new WeakSet(), 11418 i = [], 11419 s = !1, 11420 o = l.app = { 11421 _uid: l7++, 11422 _component: e, 11423 _props: t, 11424 _container: null, 11425 _context: l, 11426 _instance: null, 11427 version: iK, 11428 get config() { 11429 return l.config; 11430 }, 11431 set config(v) {}, 11432 use: (e, ...t) =>
11432 (r.has(e) || (e && O(e.install) ? (r.add(e), e.install(o, ...t)) : O(e) && (r.add(e), e(o, ...t))), o), 11433 mixin: e => (l.mixins.includes(e) || l.mixins.push(e), o), 11434 component: (e, t) => t ? (l.components[e] = t, o) : l.components[e], 11435 directive: (e, t) => t ? (l.directives[e] = t, o) : l.directives[e], 11436 mount(r, i, a) { 11437 if (!s) { 11438 let u = o._ceVNode || ic(e, t); 11439 return u.appContext = l, !0 === a ? a = "svg" : !1 === a && (a = void 0), i && n ? n(u, r) : es(u, r, a), s = !0, o._container = r, r.__vue_app__ = o, iV(u.component); 11440 } 11441 }, 11442 onUnmount(e) { 11443 i.push(e); 11444 }, 11445 unmount() { 11446 s && (tQ(i, o._instance, 16), es(null, o._container), delete o._container.__vue_app__); 11447 }, 11448 provide: (e, t) => (l.provides[e] = t, o), 11449 runWithContext(e) { 11450 let t = re; 11451 re = o; 11452 try { 11453 return e(); 11454 } finally { 11455 re = t; 11456 } 11457 } 11458 }; 11459 return o; 11460 }) 11461 }; 11462} 11463function rx({ 11464 type: e, 11465 props: t 11466}, n) { 11467 return "svg" === n && "foreignObject" === e || "mathml" === n && "annotation-xml" === e && t && t.encoding && t.encoding.includes("html") ? void 0 : n; 11468} 11469function rE({ 11470 effect: e, 11471 job: t 11472}, n) { 11473 n ? (e.flags |= 32, t.flags |= 4) : (e.flags &= -33, t.flags &= -5); 11474} 11475function rw(e, t) { 11476 return (!e || e && !e.pendingBranch) && t && !t.persisted; 11477} 11478function rk(e, t, n = !1) { 11479 let l = e.children, 11480 r = t.children; 11481 if (k(l) && k(r)) for (let e = 0; e < l.length; e++) { 11482 let t = l[e], 11483 i = r[e]; 11484 !(1 & i.shapeFlag) || i.dynamicChildren || ((i.patchFlag <= 0 || 32 === i.patchFlag) && ((i = r[e] = i_(r[e])).el = t.el), n || -2 === i.patchFlag || rk(t, i)), i.type === r1 && (i.el = t.el); 11485 } 11486} 11487function rT(e) { 11488 if (e) for (let t = 0; t < e.length; t++) e[t].flags |= 8; 11489} 11490let rA = Symbol.for("v-scx"), 11491 rR = () => rn(rA); 11492function rN(e, t) { 11493 return rI(e, null, t); 11494} 11495function rO(e, t) { 11496 return rI(e, null, { 11497 flush: "post" 11498 }); 11499} 11500function rP(e, t) { 11501 return rI(e, null, { 11502 flush: "sync" 11503 }); 11504} 11505function rM(e, t, n) { 11506 return rI(e, t, n); 11507} 11508function rI(e, t, n = g) { 11509 let l; 11510 let { 11511 immediate: r, 11512 deep: i, 11513 flush: s, 11514 once: o 11515 } = n, 11516 a = C({}, n), 11517 u = t && r || !t && "post" !== s; 11518 if (iN) { 11519 if ("sync" === s) { 11520 let e = rR(); 11521 l = e.__watcherHandles || (e.__watcherHandles = []); 11522 } else if (!u) { 11523 let e = () => {}; 11524 return e.stop = _, e.resume = _, e.pause = _, e; 11525 } 11526 } 11527 let c = iw; 11528 a.call = (e, t, n) => tQ(e, c, t, n); 11529 let f = !1; 11530 "post" === s ? a.scheduler = e => { 11531 ry(e, c && c.suspense); 11532 } : "sync" !== s && (f = !0, a.scheduler = (e, t) => { 11533 t ? e() : t7(e); 11534 }), a.augmentJob = e => { 11535 t && (e.flags |= 4), f && (e.flags |= 2, c && (e.id = c.uid, e.i = c)); 11536 }; 11537 let d = function (e, t, n = g) { 11538 let l, r, i, s; 11539 let { 11540 immediate: o, 11541 deep: a, 11542 once: u, 11543 scheduler: c, 11544 augmentJob: f, 11545 call: d 11546 } = n, 11547 h = e => a ? e : ty(e) || !1 === a || 0 === a ? tJ(e, 1) : tJ(e), 11548 m = !1, 11549 y = !1; 11550 if (tw(e) ? (r = () => e.value, m = ty(e)) : tm(e) ? (r = () => h(e), m = !0) : k(e) ? (y = !0, m = e.some(e => tm(e) || ty(e)), r = () => e.map(e => tw(e) ? e.value : tm(e) ? h(e) : O(e) ? d ? d(e, 2) : e() : void 0)) : r = O(e) ? t ? d ? () => d(e, 2) : e : () => { 11551 if (i) { 11552 eM(); 11553 try { 11554 i(); 11555 } finally { 11556 eI(); 11557 } 11558 } 11559 let t = p; 11560 p = l; 11561 try { 11562 return d ? d(e, 3, [s]) : e(s); 11563 } finally { 11564 p = t; 11565 } 11566 } : _, t && a) { 11567 let e = r, 11568 t = !0 === a ? 1 / 0 : a; 11569 r = () => tJ(e(), t); 11570 } 11571 let b = em(), 11572 S = () => { 11573 l.stop(), b && b.active && x(b.effects, l); 11574 }; 11575 if (u && t) { 11576 let e = t; 11577 t = (...t) => { 11578 e(...t), S(); 11579 }; 11580 } 11581 let C = y ? Array(e.length).fill(tK) : tK, 11582 E = e => { 11583 if (1 & l.flags && (l.dirty || e)) { 11584 if (t) { 11585 let e = l.run(); 11586 if (a || m || (y ? e.some((e, t) => J(e, C[t])) : J(e, C))) { 11587 i && i(); 11588 let n = p; 11589 p = l; 11590 try { 11591 let n = [e, C === tK ? void 0 : y && C[0] === tK ? [] : C, s]; 11592 d ? d(t, 3, n) : t(...n), C = e; 11593 } finally { 11594 p = n; 11595 } 11596 } 11597 } else l.run(); 11598 } 11599 }; 11600 return f && f(E), (l = new eb(r)).scheduler = c ? () => c(E, !1) : E, s = e => tG(e, !1, l), i = l.onStop = () => { 11601 let e = tz.get(l); 11602 if (e) { 11603 if (d) d(e, 4);else for (let t of e) t(); 11604 tz.delete(l); 11605 } 11606 }, t ? o ? E(!0) : C = l.run() : c ? c(E.bind(null, !0), !0) : l.run(), S.pause = l.pause.bind(l), S.resume = l.resume.bind(l), S.stop = S, S; 11607 }(e, t, a); 11608 return iN && (l ? l.push(d) : u && d()), d; 11609} 11610function rL(e, t, n) { 11611 let l; 11612 let r = this.proxy, 11613 i = P(e) ? e.includes(".") ? rD(r, e) : () => r[e] : e.bind(r, r); 11614 O(t) ? l = t : (l = t.handler, n = t); 11615 let s = iT(this), 11616 o = rI(i, l.bind(r), n); 11617 return s(), o; 11618} 11619function rD(e, t) { 11620 let n = t.split("."); 11621 return () => { 11622 let t = e; 11623 for (let e = 0; e < n.length && t; e++) t = t[n[e]]; 11624 return t; 11625 }; 11626} 11627function rF(e, t, n = g) { 11628 let l = ik(), 11629 r = W(t), 11630 i = z(t), 11631 s = rV(e, r), 11632 o = tD((s, o) => { 11633 let a, u; 11634 let c = g; 11635 return rP(() => { 11636 let t = e[r]; 11637 J(a, t) && (a = t, o()); 11638 }), { 11639 get: () => (s(), n.get ? n.get(a) : a), 11640 set(e) { 11641 let s = n.set ? n.set(e) : e; 11642 if (!J(s, a) && !(c !== g && J(e, c))) return; 11643 let f = l.vnode.props; 11644 f && (t in f || r in f || i in f) && (`onUpdate:${t}` in f || `onUpdate:${r}` in f || `onUpdate:${i}` in f) || (a = e, o()), l.emit(`update:${t}`, s), J(e, s) && J(e, c) && !J(s, u) && o(), c = e, u = s; 11645 } 11646 }; 11647 }); 11648 return o[Symbol.iterator] = () => { 11649 let e = 0; 11650 return { 11651 next: () => e < 2 ? { 11652 value: e++ ? s || g : o, 11653 done: !1 11654 } : { 11655 done: !0 11656 } 11657 }; 11658 }, o; 11659} 11660let rV = (e, t) => "modelValue" === t || "model-value" === t ? e.modelModifiers : e[`${t}Modifiers`] || e[`${W(t)}Modifiers`] || e[`${z(t)}Modifiers`]; 11661function rU(e, t, ...n) { 11662 let l; 11663 if (e.isUnmounted) return; 11664 let r = e.vnode.props || g, 11665 i = n, 11666 s = t.startsWith("update:"), 11667 o = s && rV(r, t.slice(7));
11668 o && (o.trim && (i = n.map(e => P(e) ? e.trim() : e)), o.number && (i = n.map(Y))); 11669 let a = r[l = G(t)] || r[l = G(W(t))]; 11670 !a && s && (a = r[l = G(z(t))]), a && tQ(a, e, 6, i); 11671 let u = r[l + "Once"]; 11672 if (u) { 11673 if (e.emitted) { 11674 if (e.emitted[l]) return; 11675 } else e.emitted = {}; 11676 e.emitted[l] = !0, tQ(u, e, 6, i); 11677 } 11678} 11679function rj(e, t) { 11680 return !!(e && b(t)) && (w(e, (t = t.slice(2).replace(/Once$/, ""))[0].toLowerCase() + t.slice(1)) || w(e, z(t)) || w(e, t)); 11681} 11682function rB(e) { 11683 let t, n; 11684 let { 11685 type: l, 11686 vnode: r, 11687 proxy: i, 11688 withProxy: s, 11689 propsOptions: [o], 11690 slots: a, 11691 attrs: u, 11692 emit: c, 11693 render: f, 11694 renderCache: p, 11695 props: d, 11696 data: h, 11697 setupState: g, 11698 ctx: m, 11699 inheritAttrs: _ 11700 } = e, 11701 y = no(e); 11702 try { 11703 if (4 & r.shapeFlag) { 11704 let e = s || i; 11705 t = im(f.call(e, e, p, d, g, h, m)), n = u; 11706 } else t = im(l.length > 1 ? l(d, { 11707 attrs: u, 11708 slots: a, 11709 emit: c 11710 }) : l(d, null)), n = l.props ? u : r$(u); 11711 } catch (n) { 11712 r4.length = 0, t0(n, e, 1), t = ic(r2); 11713 } 11714 let b = t; 11715 if (n && !1 !== _) { 11716 let e = Object.keys(n), 11717 { 11718 shapeFlag: t 11719 } = b; 11720 e.length && 7 & t && (o && e.some(S) && (n = rH(n, o)), b = id(b, n, !1, !0)); 11721 } 11722 return r.dirs && ((b = id(b, null, !1, !0)).dirs = b.dirs ? b.dirs.concat(r.dirs) : r.dirs), r.transition && nV(b, r.transition), t = b, no(y), t; 11723} 11724let r$ = e => { 11725 let t; 11726 for (let n in e) ("class" === n || "style" === n || b(n)) && ((t || (t = {}))[n] = e[n]); 11727 return t; 11728 }, 11729 rH = (e, t) => { 11730 let n = {}; 11731 for (let l in e) S(l) && l.slice(9) in t || (n[l] = e[l]); 11732 return n; 11733 }; 11734function rW(e, t, n) { 11735 let l = Object.keys(t); 11736 if (l.length !== Object.keys(e).length) return !0; 11737 for (let r = 0; r < l.length; r++) { 11738 let i = l[r]; 11739 if (t[i] !== e[i] && !rj(n, i)) return !0; 11740 } 11741 return !1; 11742} 11743function rK({ 11744 vnode: e, 11745 parent: t 11746}, n) { 11747 for (; t;) { 11748 let l = t.subTree; 11749 if (l.suspense && l.suspense.activeBranch === e && (l.el = e.el), l === e) (e = t.vnode).el = n, t = t.parent;else break; 11750 } 11751} 11752let rz = e => e.__isSuspense, 11753 rq = 0, 11754 rG = { 11755 name: "Suspense", 11756 __isSuspense: !0, 11757 process(e, t, n, l, r, i, s, o, a, u) { 11758 if (null == e) !function (e, t, n, l, r, i, s, o, a) { 11759 let { 11760 p: u, 11761 o: { 11762 createElement: c 11763 } 11764 } = a, 11765 f = c("div"), 11766 p = e.suspense = rX(e, r, l, t, f, n, i, s, o, a); 11767 u(null, p.pendingBranch = e.ssContent, f, null, l, p, i, s), p.deps > 0 ? (rJ(e, "onPending"), rJ(e, "onFallback"), u(null, e.ssFallback, t, n, l, null, i, s), rQ(p, e.ssFallback)) : p.resolve(!1, !0); 11768 }(t, n, l, r, i, s, o, a, u);else { 11769 if (i && i.deps > 0 && !e.suspense.isInFallback) { 11770 t.suspense = e.suspense, t.suspense.vnode = t, t.el = e.el; 11771 return; 11772 } 11773 !function (e, t, n, l, r, i, s, o, { 11774 p: a, 11775 um: u, 11776 o: { 11777 createElement: c 11778 } 11779 }) { 11780 let f = t.suspense = e.suspense; 11781 f.vnode = t, t.el = e.el; 11782 let p = t.ssContent, 11783 d = t.ssFallback, 11784 { 11785 activeBranch: h, 11786 pendingBranch: g, 11787 isInFallback: m, 11788 isHydrating: _ 11789 } = f; 11790 if (g) f.pendingBranch = p, ii(p, g) ? (a(g, p, f.hiddenContainer, null, r, f, i, s, o), f.deps <= 0 ? f.resolve() : m && !_ && (a(h, d, n, l, r, null, i, s, o), rQ(f, d))) : (f.pendingId = rq++, _ ? (f.isHydrating = !1, f.activeBranch = g) : u(g, r, f), f.deps = 0, f.effects.length = 0, f.hiddenContainer = c("div"), m ? (a(null, p, f.hiddenContainer, null, r, f, i, s, o), f.deps <= 0 ? f.resolve() : (a(h, d, n, l, r, null, i, s, o), rQ(f, d))) : h && ii(p, h) ? (a(h, p, n, l, r, f, i, s, o), f.resolve(!0)) : (a(null, p, f.hiddenContainer, null, r, f, i, s, o), f.deps <= 0 && f.resolve()));else if (h && ii(p, h)) a(h, p, n, l, r, f, i, s, o), rQ(f, p);else if (rJ(t, "onPending"), f.pendingBranch = p, 512 & p.shapeFlag ? f.pendingId = p.component.suspenseId : f.pendingId = rq++, a(null, p, f.hiddenContainer, null, r, f, i, s, o), f.deps <= 0) f.resolve();else { 11791 let { 11792 timeout: e, 11793 pendingId: t 11794 } = f; 11795 e > 0 ? setTimeout(() => { 11796 f.pendingId === t && f.fallback(d); 11797 }, e) : 0 === e && f.fallback(d); 11798 } 11799 }(e, t, n, l, r, s, o, a, u); 11800 } 11801 }, 11802 hydrate: function (e, t, n, l, r, i, s, o, a) { 11803 let u = t.suspense = rX(t, l, n, e.parentNode, document.createElement("div"), null, r, i, s, o, !0), 11804 c = a(e, u.pendingBranch = t.ssContent, n, u, i, s); 11805 return 0 === u.deps && u.resolve(!1, !0), c; 11806 }, 11807 normalize: function (e) { 11808 let { 11809 shapeFlag: t, 11810 children: n 11811 } = e, 11812 l = 32 & t; 11813 e.ssContent = rZ(l ? n.default : n), e.ssFallback = l ? rZ(n.fallback) : ic(r2); 11814 } 11815 }; 11816function rJ(e, t) { 11817 let n = e.props && e.props[t]; 11818 O(n) && n(); 11819} 11820function rX(e, t, n, l, r, i, s, o, a, u, c = !1) { 11821 let f; 11822 let { 11823 p: p, 11824 m: d, 11825 um: h, 11826 n: g, 11827 o: { 11828 parentNode: m, 11829 remove: _ 11830 } 11831 } = u, 11832 y = function (e) { 11833 let t = e.props && e.props.suspensible; 11834 return null != t && !1 !== t; 11835 }(e); 11836 y && t && t.pendingBranch && (f = t.pendingId, t.deps++); 11837 let b = e.props ? Q(e.props.timeout) : void 0, 11838 S = i, 11839 C = { 11840 vnode: e, 11841 parent: t, 11842 parentComponent: n, 11843 namespace: s, 11844 container: l, 11845 hiddenContainer: r, 11846 deps: 0, 11847 pendingId: rq++, 11848 timeout: "number" == typeof b ? b : -1, 11849 activeBranch: null, 11850 pendingBranch: null, 11851 isInFallback: !c, 11852 isHydrating: c, 11853 isUnmounted: !1, 11854 effects: [], 11855 resolve(e = !1, n = !1) { 11856 let { 11857 vnode: l, 11858 activeBranch: r, 11859 pendingBranch: s, 11860 pendingId: o, 11861 effects: a, 11862 parentComponent: u, 11863 container: c 11864 } = C, 11865 p = !1; 11866 C.isHydrating ? C.isHydrating = !1 : e || ((p = r && s.transition && "out-in" === s.transition.mode) && (r.transition.afterLeave = () => { 11867 o === C.pendingId && (d(s, c, i === S ? g(r) : i, 0), nt(a)); 11868 }), r && (m(r.el) === c && (i = g(r)), h(r, u, C, !0)), p || d(s, c, i, 0)), rQ(C, s), C.pendingBranch = null, C.isInFallback = !1; 11869 let _ = C.parent, 11870 b = !1; 11871 for (; _;) { 11872 if (_.pendingBranch) { 11873 _.effects.push(...a), b = !0; 11874 break; 11875 } 11876 _ = _.parent; 11877 } 11878 b || p || nt(a), C.effects = [], y && t && t.pendingBranch && f === t.pendingId && (t.deps--, 0 !== t.deps || n || t.resolve()), rJ(l, "onResolve"); 11879 }, 11880 fallback(e) { 11881 if (!C.pendingBranch) return; 11882 let { 11883 vnode: t, 11884 activeBranch: n, 11885 parentComponent: l, 11886 container: r, 11887 namespace: i 11888 } = C; 11889 rJ(t, "onFallback"); 11890 let s = g(n), 11891 u = () => { 11892 C.isInFallback && (p(null, e, r, s, l, null, i, o, a), rQ(C, e)); 11893 }, 11894 c = e.transition && "out-in" === e.transition.mode; 11895 c && (n.transition.afterLeave = u), C.isInFallback = !0, h(n, l, null, !0), c || u(); 11896 }, 11897 move(e, t, n) { 11898 C.activeBranch && d(C.activeBranch, e, t, n), C.container = e; 11899 }, 11900 next: () => C.activeBranch && g(C.activeBranch), 11901 registerDep(e, t, n) { 11902 let l = !!C.pendingBranch; 11903 l && C.deps++; 11904 let r = e.vnode.el;
11905 e.asyncDep.catch(t => { 11906 t0(t, e, 0); 11907 }).then(i => { 11908 if (e.isUnmounted || C.isUnmounted || C.pendingId !== e.suspenseId) return; 11909 e.asyncResolved = !0; 11910 let { 11911 vnode: o 11912 } = e; 11913 iP(e, i, !1), r && (o.el = r); 11914 let a = !r && e.subTree.el; 11915 t(e, o, m(r || e.subTree.el), r ? null : g(e.subTree), C, s, n), a && _(a), rK(e, o.el), l && 0 == --C.deps && C.resolve(); 11916 }); 11917 }, 11918 unmount(e, t) { 11919 C.isUnmounted = !0, C.activeBranch && h(C.activeBranch, n, e, t), C.pendingBranch && h(C.pendingBranch, n, e, t); 11920 } 11921 }; 11922 return C; 11923} 11924function rZ(e) { 11925 let t; 11926 if (O(e)) { 11927 let n = r9 && e._c; 11928 n && (e._d = !1, r3()), e = e(), n && (e._d = !0, t = r8, r5()); 11929 } 11930 return k(e) && (e = function (e, t = !0) { 11931 let n; 11932 for (let t = 0; t < e.length; t++) { 11933 let l = e[t]; 11934 if (!ir(l)) return; 11935 if (l.type !== r2 || "v-if" === l.children) { 11936 if (n) return; 11937 n = l; 11938 } 11939 } 11940 return n; 11941 }(e)), e = im(e), t && !e.dynamicChildren && (e.dynamicChildren = t.filter(t => t !== e)), e; 11942} 11943function rY(e, t) { 11944 t && t.pendingBranch ? k(e) ? t.effects.push(...e) : t.effects.push(e) : nt(e); 11945} 11946function rQ(e, t) { 11947 e.activeBranch = t; 11948 let { 11949 vnode: n, 11950 parentComponent: l 11951 } = e, 11952 r = t.el; 11953 for (; !r && t.component;) r = (t = t.component.subTree).el; 11954 n.el = r, l && l.subTree === n && (l.vnode.el = r, rK(l, r)); 11955} 11956let r0 = Symbol.for("v-fgt"), 11957 r1 = Symbol.for("v-txt"), 11958 r2 = Symbol.for("v-cmt"), 11959 r6 = Symbol.for("v-stc"), 11960 r4 = [], 11961 r8 = null; 11962function r3(e = !1) { 11963 r4.push(r8 = e ? null : []); 11964} 11965function r5() { 11966 r4.pop(), r8 = r4[r4.length - 1] || null; 11967} 11968let r9 = 1; 11969function r7(e, t = !1) { 11970 r9 += e, e < 0 && r8 && t && (r8.hasOnce = !0); 11971} 11972function ie(e) { 11973 return e.dynamicChildren = r9 > 0 ? r8 || m : null, r5(), r9 > 0 && r8 && r8.push(e), e; 11974} 11975function it(e, t, n, l, r, i) { 11976 return ie(iu(e, t, n, l, r, i, !0)); 11977} 11978function il(e, t, n, l, r) { 11979 return ie(ic(e, t, n, l, r, !0)); 11980} 11981function ir(e) { 11982 return !!e && !0 === e.__v_isVNode; 11983} 11984function ii(e, t) { 11985 return e.type === t.type && e.key === t.key; 11986} 11987function is(e) {} 11988let io = ({ 11989 key: e 11990 }) => null != e ? e : null, 11991 ia = ({ 11992 ref: e, 11993 ref_key: t, 11994 ref_for: n 11995 }) => ("number" == typeof e && (e = "" + e), null != e ? P(e) || tw(e) || O(e) ? { 11996 i: ni, 11997 r: e, 11998 k: t, 11999 f: !!n 12000 } : e : null); 12001function iu(e, t = null, n = null, l = 0, r = null, i = e === r0 ? 0 : 1, s = !1, o = !1) { 12002 let a = { 12003 __v_isVNode: !0, 12004 __v_skip: !0, 12005 type: e, 12006 props: t, 12007 key: t && io(t), 12008 ref: t && ia(t), 12009 scopeId: ns, 12010 slotScopeIds: null, 12011 children: n, 12012 component: null, 12013 suspense: null, 12014 ssContent: null, 12015 ssFallback: null, 12016 dirs: null, 12017 transition: null, 12018 el: null, 12019 anchor: null, 12020 target: null, 12021 targetStart: null, 12022 targetAnchor: null, 12023 staticCount: 0, 12024 shapeFlag: i, 12025 patchFlag: l, 12026 dynamicProps: r, 12027 dynamicChildren: null, 12028 appContext: null, 12029 ctx: ni 12030 }; 12031 return o ? (iy(a, n), 128 & i && e.normalize(a)) : n && (a.shapeFlag |= P(n) ? 8 : 16), r9 > 0 && !s && r8 && (a.patchFlag > 0 || 6 & i) && 32 !== a.patchFlag && r8.push(a), a; 12032} 12033let ic = function (e, t = null, n = null, l = 0, r = null, i = !1) { 12034 var s; 12035 if (e && e !== lC || (e = r2), ir(e)) { 12036 let l = id(e, t, !0); 12037 return n && iy(l, n), r9 > 0 && !i && r8 && (6 & l.shapeFlag ? r8[r8.indexOf(e)] = l : r8.push(l)), l.patchFlag = -2, l; 12038 } 12039 if (O(s = e) && "__vccOpts" in s && (e = e.__vccOpts), t) { 12040 let { 12041 class: e, 12042 style: n 12043 } = t = ip(t); 12044 e && !P(e) && (t.class = es(e)), I(n) && (tb(n) && !k(n) && (n = C({}, n)), t.style = en(n)); 12045 } 12046 let o = P(e) ? 1 : rz(e) ? 128 : ng(e) ? 64 : I(e) ? 4 : O(e) ? 2 : 0; 12047 return iu(e, t, n, l, r, o, i, !0); 12048}; 12049function ip(e) { 12050 return e ? tb(e) || rs(e) ? C({}, e) : e : null; 12051} 12052function id(e, t, n = !1, l = !1) { 12053 let { 12054 props: r, 12055 ref: i, 12056 patchFlag: s, 12057 children: o, 12058 transition: a 12059 } = e, 12060 u = t ? ib(r || {}, t) : r, 12061 c = { 12062 __v_isVNode: !0, 12063 __v_skip: !0, 12064 type: e.type, 12065 props: u, 12066 key: u && io(u), 12067 ref: t && t.ref ? n && i ? k(i) ? i.concat(ia(t)) : [i, ia(t)] : ia(t) : i, 12068 scopeId: e.scopeId, 12069 slotScopeIds: e.slotScopeIds, 12070 children: o, 12071 target: e.target, 12072 targetStart: e.targetStart, 12073 targetAnchor: e.targetAnchor, 12074 staticCount: e.staticCount, 12075 shapeFlag: e.shapeFlag, 12076 patchFlag: t && e.type !== r0 ? -1 === s ? 16 : 16 | s : s, 12077 dynamicProps: e.dynamicProps, 12078 dynamicChildren: e.dynamicChildren, 12079 appContext: e.appContext, 12080 dirs: e.dirs, 12081 transition: a, 12082 component: e.component, 12083 suspense: e.suspense, 12084 ssContent: e.ssContent && id(e.ssContent), 12085 ssFallback: e.ssFallback && id(e.ssFallback), 12086 el: e.el, 12087 anchor: e.anchor, 12088 ctx: e.ctx, 12089 ce: e.ce 12090 }; 12091 return a && l && nV(c, a.clone(c)), c; 12092} 12093function ih(e = " ", t = 0) { 12094 return ic(r1, null, e, t); 12095} 12096function ig(e, t) { 12097 let n = ic(r6, null, e); 12098 return n.staticCount = t, n; 12099} 12100function iv(e = "", t = !1) { 12101 return t ? (r3(), il(r2, null, e)) : ic(r2, null, e); 12102} 12103function im(e) { 12104 return null == e || "boolean" == typeof e ? ic(r2) : k(e) ? ic(r0, null, e.slice()) : ir(e) ? i_(e) : ic(r1, null, String(e)); 12105} 12106function i_(e) { 12107 return null === e.el && -1 !== e.patchFlag || e.memo ? e : id(e); 12108} 12109function iy(e, t) { 12110 let n = 0, 12111 { 12112 shapeFlag: l 12113 } = e; 12114 if (null == t) t = null;else if (k(t)) n = 16;else if ("object" == typeof t) { 12115 if (65 & l) { 12116 let n = t.default; 12117 n && (n._c && (n._d = !1), iy(e, n()), n._c && (n._d = !0)); 12118 return; 12119 } 12120 { 12121 n = 32; 12122 let l = t._; 12123 l || rs(t) ? 3 === l && ni && (1 === ni.slots._ ? t._ = 1 : (t._ = 2, e.patchFlag |= 1024)) : t._ctx = ni; 12124 } 12125 } else O(t) ? (t = { 12126 default: t, 12127 _ctx: ni 12128 }, n = 32) : (t = String(t), 64 & l ? (n = 16, t = [ih(t)]) : n = 8); 12129 e.children = t, e.shapeFlag |= n; 12130} 12131function ib(...e) { 12132 let t = {}; 12133 for (let n = 0; n < e.length; n++) { 12134 let l = e[n]; 12135 for (let e in l) if ("class" === e) t.class !== l.class && (t.class = es([t.class, l.class]));else if ("style" === e) t.style = en([t.style, l.style]);else if (b(e)) { 12136 let n = t[e], 12137 r = l[e]; 12138 r && n !== r && !(k(n) && n.includes(r)) && (t[e] = n ? [].concat(n, r) : r); 12139 } else "" !== e && (t[e] = l[e]); 12140 } 12141 return t; 12142} 12143function iS(e, t, n, l = null) { 12144 tQ(e, t, 7, [n, l]); 12145} 12146let iC = l9(), 12147 ix = 0; 12148function iE(e, t, n) { 12149 let l = e.type, 12150 r = (t ? t.appContext : e.appContext) || iC, 12151 i = { 12152 uid: ix++, 12153 vnode: e, 12154 type: l, 12155 parent: t, 12156 appContext: r, 12157 root: null, 12158 next: null, 12159 subTree: null, 12160 effect: null, 12161 update: null, 12162 job: null, 12163 scope: new eg(!0), 12164 render: null, 12165 proxy: null, 12166 exposed: null, 12167 exposeProxy: null, 12168 withProxy: null, 12169 provides: t ? t.provides : Object.create(r.provides), 12170 ids: t ? t.ids : ["", 0, 0], 12171 accessCache: null, 12172 renderCache: [], 12173 components: null, 12174 directives: null, 12175 propsOptions: function e(t, n, l = !1) { 12176 let r = l ? ru : n.propsCache, 12177 i = r.get(t); 12178 if (i) return i; 12179 let s = t.props, 12180 o = {}, 12181 a = [], 12182 u = !1; 12183 if (!O(t)) { 12184 let r = t => { 12185 u = !0; 12186 let [l, r] = e(t, n, !0); 12187 C(o, l), r && a.push(...r); 12188 }; 12189 !l && n.mixins.length && n.mixins.forEach(r), t.extends && r(t.extends), t.mixins && t.mixins.forEach(r); 12190 } 12191 if (!s && !u) return I(t) && r.set(t, m), m; 12192 if (k(s)) for (let e = 0; e < s.length; e++) { 12193 let t = W(s[e]); 12194 rc(t) && (o[t] = g); 12195 } else if (s) for (let e in s) { 12196 let t = W(e); 12197 if (rc(t)) { 12198 let n = s[e], 12199 l = o[t] = k(n) || O(n) ? { 12200 type: n 12201 } : C({}, n), 12202 r = l.type, 12203 i = !1, 12204 u = !0; 12205 if (k(r)) for (let e = 0; e < r.length; ++e) { 12206 let t = r[e], 12207 n = O(t) && t.name; 12208 if ("Boolean" === n) { 12209 i = !0; 12210 break; 12211 } 12212 "String" === n && (u = !1); 12213 } else i = O(r) && "Boolean" === r.name; 12214 l[0] = i, l[1] = u, (i || w(l, "default")) && a.push(t); 12215 } 12216 } 12217 let c = [o, a]; 12218 return I(t) && r.set(t, c), c; 12219 }(l, r), 12220 emitsOptions: function e(t, n, l = !1) { 12221 let r = n.emitsCache, 12222 i = r.get(t); 12223 if (void 0 !== i) return i; 12224 let s = t.emits, 12225 o = {}, 12226 a = !1; 12227 if (!O(t)) { 12228 let r = t => { 12229 let l = e(t, n, !0); 12230 l && (a = !0, C(o, l)); 12231 }; 12232 !l && n.mixins.length && n.mixins.forEach(r), t.extends && r(t.extends), t.mixins && t.mixins.forEach(r); 12233 }
12234 return s || a ? (k(s) ? s.forEach(e => o[e] = null) : C(o, s), I(t) && r.set(t, o), o) : (I(t) && r.set(t, null), null); 12235 }(l, r), 12236 emit: null, 12237 emitted: null, 12238 propsDefaults: g, 12239 inheritAttrs: l.inheritAttrs, 12240 ctx: g, 12241 data: g, 12242 props: g, 12243 attrs: g, 12244 slots: g, 12245 refs: g, 12246 setupState: g, 12247 setupContext: null, 12248 suspense: n, 12249 suspenseId: n ? n.pendingId : 0, 12250 asyncDep: null, 12251 asyncResolved: !1, 12252 isMounted: !1, 12253 isUnmounted: !1, 12254 isDeactivated: !1, 12255 bc: null, 12256 c: null, 12257 bm: null, 12258 m: null, 12259 bu: null, 12260 u: null, 12261 um: null, 12262 bum: null, 12263 da: null, 12264 a: null, 12265 rtg: null, 12266 rtc: null, 12267 ec: null, 12268 sp: null 12269 }; 12270 return i.ctx = { 12271 _: i 12272 }, i.root = t ? t.root : i, i.emit = rU.bind(null, i), e.ce && e.ce(i), i; 12273} 12274let iw = null, 12275 ik = () => iw || ni; 12276{ 12277 let e = ee(), 12278 t = (t, n) => { 12279 let l; 12280 return (l = e[t]) || (l = e[t] = []), l.push(n), e => { 12281 l.length > 1 ? l.forEach(t => t(e)) : l[0](e); 12282 }; 12283 }; 12284 o = t("__VUE_INSTANCE_SETTERS__", e => iw = e), a = t("__VUE_SSR_SETTERS__", e => iN = e); 12285} 12286let iT = e => { 12287 let t = iw; 12288 return o(e), e.scope.on(), () => { 12289 e.scope.off(), o(t); 12290 }; 12291 }, 12292 iA = () => { 12293 iw && iw.scope.off(), o(null); 12294 }; 12295function iR(e) { 12296 return 4 & e.vnode.shapeFlag; 12297} 12298let iN = !1; 12299function iO(e, t = !1, n = !1) { 12300 t && a(t); 12301 let { 12302 props: l, 12303 children: r 12304 } = e.vnode, 12305 i = iR(e); 12306 !function (e, t, n, l = !1) { 12307 let r = {}, 12308 i = ri(); 12309 for (let n in e.propsDefaults = Object.create(null), ro(e, t, r, i), e.propsOptions[0]) n in r || (r[n] = void 0); 12310 n ? e.props = l ? r : td(r) : e.type.props ? e.props = r : e.props = i, e.attrs = i; 12311 }(e, l, i, t), rm(e, r, n); 12312 let s = i ? function (e, t) { 12313 let n = e.type; 12314 e.accessCache = Object.create(null), e.proxy = new Proxy(e.ctx, lL); 12315 let { 12316 setup: l 12317 } = n; 12318 if (l) { 12319 eM(); 12320 let n = e.setupContext = l.length > 1 ? iF(e) : null, 12321 r = iT(e), 12322 i = tY(l, e, 0, [e.props, n]), 12323 s = L(i); 12324 if (eI(), r(), (s || e.sp) && !n5(e) && n$(e), s) { 12325 if (i.then(iA, iA), t) return i.then(n => { 12326 iP(e, n, t); 12327 }).catch(t => { 12328 t0(t, e, 0); 12329 }); 12330 e.asyncDep = i; 12331 } else iP(e, i, t); 12332 } else iL(e, t); 12333 }(e, t) : void 0; 12334 return t && a(!1), s; 12335} 12336function iP(e, t, n) { 12337 O(t) ? e.type.__ssrInlineRender ? e.ssrRender = t : e.render = t : I(t) && (e.setupState = tI(t)), iL(e, n); 12338} 12339function iM(e) { 12340 u = e, c = e => { 12341 e.render._rc && (e.withProxy = new Proxy(e.ctx, lD)); 12342 }; 12343} 12344let iI = () => !u; 12345function iL(e, t, n) { 12346 let l = e.type; 12347 if (!e.render) { 12348 if (!t && u && !l.render) { 12349 let t = l.template || l0(e).template; 12350 if (t) { 12351 let { 12352 isCustomElement: n, 12353 compilerOptions: r 12354 } = e.appContext.config, 12355 { 12356 delimiters: i, 12357 compilerOptions: s 12358 } = l, 12359 o = C(C({ 12360 isCustomElement: n, 12361 delimiters: i 12362 }, r), s); 12363 l.render = u(t, o); 12364 } 12365 } 12366 e.render = l.render || _, c && c(e); 12367 } 12368 { 12369 let t = iT(e); 12370 eM(); 12371 try { 12372 !function (e) { 12373 let t = l0(e), 12374 n = e.proxy, 12375 l = e.ctx; 12376 lY = !1, t.beforeCreate && lQ(t.beforeCreate, e, "bc"); 12377 let { 12378 data: r, 12379 computed: i, 12380 methods: s, 12381 watch: o, 12382 provide: a, 12383 inject: u, 12384 created: c, 12385 beforeMount: f, 12386 mounted: p, 12387 beforeUpdate: d, 12388 updated: h, 12389 activated: g, 12390 deactivated: m, 12391 beforeDestroy: y, 12392 beforeUnmount: b, 12393 destroyed: S, 12394 unmounted: C, 12395 render: x, 12396 renderTracked: E, 12397 renderTriggered: w, 12398 errorCaptured: T, 12399 serverPrefetch: A, 12400 expose: R, 12401 inheritAttrs: N, 12402 components: M, 12403 directives: L, 12404 filters: D 12405 } = t; 12406 if (u && function (e, t, n = _) { 12407 for (let n in k(e) && (e = l4(e)), e) { 12408 let l; 12409 let r = e[n]; 12410 tw(l = I(r) ? "default" in r ? rn(r.from || n, r.default, !0) : rn(r.from || n) : rn(r)) ? Object.defineProperty(t, n, { 12411 enumerable: !0, 12412 configurable: !0, 12413 get: () => l.value, 12414 set: e => l.value = e 12415 }) : t[n] = l; 12416 } 12417 }(u, l, null), s) for (let e in s) { 12418 let t = s[e]; 12419 O(t) && (l[e] = t.bind(n)); 12420 } 12421 if (r) { 12422 let t = r.call(n, n); 12423 I(t) && (e.data = tp(t)); 12424 } 12425 if (lY = !0, i) for (let e in i) { 12426 let t = i[e], 12427 r = O(t) ? t.bind(n, n) : O(t.get) ? t.get.bind(n, n) : _, 12428 s = ij({ 12429 get: r, 12430 set: !O(t) && O(t.set) ? t.set.bind(n) : _ 12431 }); 12432 Object.defineProperty(l, e, { 12433 enumerable: !0, 12434 configurable: !0, 12435 get: () => s.value, 12436 set: e => s.value = e 12437 }); 12438 } 12439 if (o) for (let e in o) !function e(t, n, l, r) { 12440 let i = r.includes(".") ? rD(l, r) : () => l[r]; 12441 if (P(t)) { 12442 let e = n[t]; 12443 O(e) && rM(i, e); 12444 } else if (O(t)) rM(i, t.bind(l));else if (I(t)) { 12445 if (k(t)) t.forEach(t => e(t, n, l, r));else { 12446 let e = O(t.handler) ? t.handler.bind(l) : n[t.handler]; 12447 O(e) && rM(i, e, t); 12448 } 12449 } 12450 }(o[e], l, n, e); 12451 if (a) { 12452 let e = O(a) ? a.call(n) : a; 12453 Reflect.ownKeys(e).forEach(t => { 12454 rt(t, e[t]); 12455 }); 12456 } 12457 function F(e, t) { 12458 k(t) ? t.forEach(t => e(t.bind(n))) : t && e(t.bind(n)); 12459 } 12460 if (c && lQ(c, e, "c"), F(lc, f), F(lf, p), F(lp, d), F(ld, h), F(ll, g), F(lr, m), F(ly, T), F(l_, E), F(lm, w), F(lh, b), F(lg, C), F(lv, A), k(R)) { 12461 if (R.length) { 12462 let t = e.exposed || (e.exposed = {}); 12463 R.forEach(e => { 12464 Object.defineProperty(t, e, { 12465 get: () => n[e], 12466 set: t => n[e] = t 12467 }); 12468 }); 12469 } else e.exposed || (e.exposed = {}); 12470 } 12471 x && e.render === _ && (e.render = x), null != N && (e.inheritAttrs = N), M && (e.components = M), L && (e.directives = L), A && n$
12471(e); 12472 }(e); 12473 } finally { 12474 eI(), t(); 12475 } 12476 } 12477} 12478let iD = { 12479 get: (e, t) => (eH(e, "get", ""), e[t]) 12480}; 12481function iF(e) { 12482 return { 12483 attrs: new Proxy(e.attrs, iD), 12484 slots: e.slots, 12485 emit: e.emit, 12486 expose: t => { 12487 e.exposed = t || {}; 12488 } 12489 }; 12490} 12491function iV(e) { 12492 return e.exposed ? e.exposeProxy || (e.exposeProxy = new Proxy(tI(tC(e.exposed)), { 12493 get: (t, n) => n in t ? t[n] : n in lM ? lM[n](e) : void 0, 12494 has: (e, t) => t in e || t in lM 12495 })) : e.proxy; 12496} 12497function iU(e, t = !0) { 12498 return O(e) ? e.displayName || e.name : e.name || t && e.__name; 12499} 12500let ij = (e, t) => function (e, t, n = !1) { 12501 let l, r; 12502 return O(e) ? l = e : (l = e.get, r = e.set), new t$(l, r, n); 12503}(e, 0, iN); 12504function iB(e, t, n) { 12505 let l = arguments.length; 12506 return 2 !== l ? (l > 3 ? n = Array.prototype.slice.call(arguments, 2) : 3 === l && ir(n) && (n = [n]), ic(e, t, n)) : !I(t) || k(t) ? ic(e, null, t) : ir(t) ? ic(e, null, [t]) : ic(e, t); 12507} 12508function i$() {} 12509function iH(e, t, n, l) { 12510 let r = n[l]; 12511 if (r && iW(r, e)) return r; 12512 let i = t(); 12513 return i.memo = e.slice(), i.cacheIndex = l, n[l] = i; 12514} 12515function iW(e, t) { 12516 let n = e.memo; 12517 if (n.length != t.length) return !1; 12518 for (let e = 0; e < n.length; e++) if (J(n[e], t[e])) return !1; 12519 return r9 > 0 && r8 && r8.push(e), !0; 12520} 12521let iK = "3.5.13", 12522 iz = (/* unused pure expression or super */ null && (_)), 12523 iq = null, 12524 iG = void 0, 12525 iJ = (/* unused pure expression or super */ null && (_)), 12526 iX = { 12527 createComponentInstance: iE, 12528 setupComponent: iO, 12529 renderComponentRoot: rB, 12530 setCurrentRenderingInstance: no, 12531 isVNode: ir, 12532 normalizeVNode: im, 12533 getComponentPublicInstance: iV, 12534 ensureValidVNode: lN, 12535 pushWarningContext: function (e) {}, 12536 popWarningContext: function () {} 12537 }, 12538 iZ = null, 12539 iY = null, 12540 iQ = null, 12541 i0 = "undefined" != typeof window && window.trustedTypes; 12542if (i0) try { 12543 d = i0.createPolicy("vue", { 12544 createHTML: e => e 12545 }); 12546} catch (e) {} 12547let i1 = d ? e => d.createHTML(e) : e => e, 12548 i2 = "undefined" != typeof document ? document : null, 12549 i6 = i2 && i2.createElement("template"), 12550 i4 = "transition", 12551 i8 = "animation", 12552 i3 = Symbol("_vtc"), 12553 i5 = { 12554 name: String, 12555 type: String, 12556 css: { 12557 type: Boolean, 12558 default: !0 12559 }, 12560 duration: [String, Number, Object], 12561 enterFromClass: String, 12562 enterActiveClass: String, 12563 enterToClass: String, 12564 appearFromClass: String, 12565 appearActiveClass: String, 12566 appearToClass: String, 12567 leaveFromClass: String, 12568 leaveActiveClass: String, 12569 leaveToClass: String 12570 }, 12571 i9 = C({}, nN, i5), 12572 i7 = ((e = (e, { 12573 slots: t 12574 }) => iB(nM, sn(e), t)).displayName = "Transition", e.props = i9, e), 12575 se = (e, t = []) => { 12576 k(e) ? e.forEach(e => e(...t)) : e && e(...t); 12577 }, 12578 st = e => !!e && (k(e) ? e.some(e => e.length > 1) : e.length > 1); 12579function sn(e) { 12580 let t = {}; 12581 for (let n in e) n in i5 || (t[n] = e[n]); 12582 if (!1 === e.css) return t; 12583 let { 12584 name: n = "v", 12585 type: l, 12586 duration: r, 12587 enterFromClass: i = `${n}-enter-from`, 12588 enterActiveClass: s = `${n}-enter-active`, 12589 enterToClass: o = `${n}-enter-to`, 12590 appearFromClass: a = i, 12591 appearActiveClass: u = s, 12592 appearToClass: c = o, 12593 leaveFromClass: f = `${n}-leave-from`, 12594 leaveActiveClass: p = `${n}-leave-active`, 12595 leaveToClass: d = `${n}-leave-to` 12596 } = e, 12597 h = function (e) { 12598 if (null == e) return null; 12599 if (I(e)) return [Q(e.enter), Q(e.leave)]; 12600 { 12601 let t = Q(e); 12602 return [t, t]; 12603 } 12604 }(r), 12605 g = h && h[0], 12606 m = h && h[1], 12607 { 12608 onBeforeEnter: _, 12609 onEnter: y, 12610 onEnterCancelled: b, 12611 onLeave: S, 12612 onLeaveCancelled: x, 12613 onBeforeAppear: E = _, 12614 onAppear: w = y, 12615 onAppearCancelled: k = b 12616 } = t, 12617 T = (e, t, n, l) => { 12618 e._enterCancelled = l, sr(e, t ? c : o), sr(e, t ? u : s), n && n(); 12619 }, 12620 A = (e, t) => { 12621 e._isLeaving = !1, sr(e, f), sr(e, d), sr(e, p), t && t(); 12622 }, 12623 R = e => (t, n) => { 12624 let r = e ? w : y, 12625 s = () =>
12625 T(t, e, n); 12626 se(r, [t, s]), si(() => { 12627 sr(t, e ? a : i), sl(t, e ? c : o), st(r) || so(t, l, g, s); 12628 }); 12629 }; 12630 return C(t, { 12631 onBeforeEnter(e) { 12632 se(_, [e]), sl(e, i), sl(e, s); 12633 }, 12634 onBeforeAppear(e) { 12635 se(E, [e]), sl(e, a), sl(e, u); 12636 }, 12637 onEnter: R(!1), 12638 onAppear: R(!0), 12639 onLeave(e, t) { 12640 e._isLeaving = !0; 12641 let n = () => A(e, t); 12642 sl(e, f), e._enterCancelled ? (sl(e, p), sf()) : (sf(), sl(e, p)), si(() => { 12643 e._isLeaving && (sr(e, f), sl(e, d), st(S) || so(e, l, m, n)); 12644 }), se(S, [e, n]); 12645 }, 12646 onEnterCancelled(e) { 12647 T(e, !1, void 0, !0), se(b, [e]); 12648 }, 12649 onAppearCancelled(e) { 12650 T(e, !0, void 0, !0), se(k, [e]); 12651 }, 12652 onLeaveCancelled(e) { 12653 A(e), se(x, [e]); 12654 } 12655 }); 12656} 12657function sl(e, t) { 12658 t.split(/\s+/).forEach(t => t && e.classList.add(t)), (e[i3] || (e[i3] = new Set())).add(t); 12659} 12660function sr(e, t) { 12661 t.split(/\s+/).forEach(t => t && e.classList.remove(t)); 12662 let n = e[i3]; 12663 n && (n.delete(t), n.size || (e[i3] = void 0)); 12664} 12665function si(e) { 12666 requestAnimationFrame(() => { 12667 requestAnimationFrame(e); 12668 }); 12669} 12670let ss = 0; 12671function so(e, t, n, l) { 12672 let r = e._endId = ++ss, 12673 i = () => { 12674 r === e._endId && l(); 12675 }; 12676 if (null != n) return setTimeout(i, n); 12677 let { 12678 type: s, 12679 timeout: o, 12680 propCount: a 12681 } = sa(e, t); 12682 if (!s) return l(); 12683 let u = s + "end", 12684 c = 0, 12685 f = () => { 12686 e.removeEventListener(u, p), i(); 12687 }, 12688 p = t => { 12689 t.target === e && ++c >= a && f(); 12690 }; 12691 setTimeout(() => { 12692 c < a && f(); 12693 }, o + 1), e.addEventListener(u, p); 12694} 12695function sa(e, t) { 12696 let n = window.getComputedStyle(e), 12697 l = e => (n[e] || "").split(", "), 12698 r = l(`${i4}Delay`), 12699 i = l(`${i4}Duration`), 12700 s = su(r, i), 12701 o = l(`${i8}Delay`), 12702 a = l(`${i8}Duration`), 12703 u = su(o, a), 12704 c = null, 12705 f = 0, 12706 p = 0; 12707 t === i4 ? s > 0 && (c = i4, f = s, p = i.length) : t === i8 ? u > 0 && (c = i8, f = u, p = a.length) : p = (c = (f = Math.max(s, u)) > 0 ? s > u ? i4 : i8 : null) ? c === i4 ? i.length : a.length : 0; 12708 let d = c === i4 && /\b(transform|all)(,|$)/.test(l(`${i4}Property`).toString()); 12709 return { 12710 type: c, 12711 timeout: f, 12712 propCount: p, 12713 hasTransform: d 12714 }; 12715} 12716function su(e, t) { 12717 for (; e.length < t.length;) e = e.concat(e); 12718 return Math.max(...t.map((t, n) => sc(t) + sc(e[n]))); 12719} 12720function sc(e) { 12721 return "auto" === e ? 0 : 1e3 * Number(e.slice(0, -1).replace(",", ".")); 12722} 12723function sf() { 12724 return document.body.offsetHeight; 12725} 12726let sp = Symbol("_vod"), 12727 sd = Symbol("_vsh"), 12728 sh = { 12729 beforeMount(e, { 12730 value: t 12731 }, { 12732 transition: n 12733 }) { 12734 e[sp] = "none" === e.style.display ? "" : e.style.display, n && t ? n.beforeEnter(e) : sg(e, t); 12735 }, 12736 mounted(e, { 12737 value: t 12738 }, { 12739 transition: n 12740 }) { 12741 n && t && n.enter(e); 12742 }, 12743 updated(e, { 12744 value: t, 12745 oldValue: n 12746 }, { 12747 transition: l 12748 }) { 12749 !t != !n && (l ? t ? (l.beforeEnter(e), sg(e, !0), l.enter(e)) : l.leave(e, () => { 12750 sg(e, !1); 12751 }) : sg(e, t)); 12752 }, 12753 beforeUnmount(e, { 12754 value: t 12755 }) { 12756 sg(e, t); 12757 } 12758 }; 12759function sg(e, t) { 12760 e.style.display = t ? e[sp] : "none", e[sd] = !t; 12761} 12762let sv = Symbol(""); 12763function sm(e) { 12764 let t = ik(); 12765 if (!t) return; 12766 let n = t.ut = (n = e(t.proxy)) => { 12767 Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e => s_(e, n)); 12768 }, 12769 l = () => { 12770 let l = e(t.proxy); 12771 t.ce ? s_(t.ce, l) : function e(t, n) { 12772 if (128 & t.shapeFlag) { 12773 let l = t.suspense; 12774 t = l.activeBranch, l.pendingBranch && !l.isHydrating && l.effects.push(() => { 12775 e(l.activeBranch, n); 12776 }); 12777 } 12778 for (; t.component;) t = t.component.subTree; 12779 if (1 & t.shapeFlag && t.el) s_(t.el, n);else if (t.type === r0) t.children.forEach(t => e(t, n));else if (t.type === r6) { 12780 let { 12781 el: e, 12782 anchor: l 12783 } = t; 12784 for (; e && (s_(e, n), e !== l);) e = e.nextSibling; 12785 } 12786 }(t.subTree, l), n(l); 12787 }; 12788 lp(() => { 12789 nt(l); 12790 }), lf(() => { 12791 rM(l, _, { 12792 flush: "post" 12793 }); 12794 let e = new MutationObserver(l); 12795 e.observe(t.subTree.el.parentNode, { 12796 childList: !0 12797 }), lg(() => e.disconnect()); 12798 }); 12799} 12800function s_(e, t) { 12801 if (1 === e.nodeType) { 12802 let n = e.style, 12803 l = ""; 12804 for (let e in t) n.setProperty(`--${e}`, t[e]), l += `--${e}: ${t[e]};`; 12805 n[sv] = l; 12806 } 12807} 12808let sy = /(^|;)\s*display\s*:/, 12809 sb = /\s*!important$/; 12810function sS(e, t, n) {
12811 if (k(n)) n.forEach(n => sS(e, t, n));else if (null == n && (n = ""), t.startsWith("--")) e.setProperty(t, n);else { 12812 let l = function (e, t) { 12813 let n = sx[t]; 12814 if (n) return n; 12815 let l = W(t); 12816 if ("filter" !== l && l in e) return sx[t] = l; 12817 l = q(l); 12818 for (let n = 0; n < sC.length; n++) { 12819 let r = sC[n] + l; 12820 if (r in e) return sx[t] = r; 12821 } 12822 return t; 12823 }(e, t); 12824 sb.test(n) ? e.setProperty(z(l), n.replace(sb, ""), "important") : e[l] = n; 12825 } 12826} 12827let sC = ["Webkit", "Moz", "ms"], 12828 sx = {}, 12829 sE = "http://www.w3.org/1999/xlink"; 12830function sw(e, t, n, l, r, i = ea(t)) { 12831 l && t.startsWith("xlink:") ? null == n ? e.removeAttributeNS(sE, t.slice(6, t.length)) : e.setAttributeNS(sE, t, n) : null == n || i && !(n || "" === n) ? e.removeAttribute(t) : e.setAttribute(t, i ? "" : M(n) ? String(n) : n); 12832} 12833function sk(e, t, n, l, r) { 12834 if ("innerHTML" === t || "textContent" === t) { 12835 null != n && (e[t] = "innerHTML" === t ? i1(n) : n); 12836 return; 12837 } 12838 let i = e.tagName; 12839 if ("value" === t && "PROGRESS" !== i && !i.includes("-")) { 12840 let l = "OPTION" === i ? e.getAttribute("value") || "" : e.value, 12841 r = null == n ? "checkbox" === e.type ? "on" : "" : String(n); 12842 l === r && "_value" in e || (e.value = r), null == n && e.removeAttribute(t), e._value = n; 12843 return; 12844 } 12845 let s = !1; 12846 if ("" === n || null == n) { 12847 let l = typeof e[t]; 12848 if ("boolean" === l) { 12849 var o; 12850 n = !!(o = n) || "" === o; 12851 } else null == n && "string" === l ? (n = "", s = !0) : "number" === l && (n = 0, s = !0); 12852 } 12853 try { 12854 e[t] = n; 12855 } catch (e) {} 12856 s && e.removeAttribute(r || t); 12857} 12858function sT(e, t, n, l) { 12859 e.addEventListener(t, n, l); 12860} 12861let sA = Symbol("_vei"), 12862 sR = /(?:Once|Passive|Capture)$/, 12863 sN = 0, 12864 sO = Promise.resolve(), 12865 sP = () => sN || (sO.then(() => sN = 0), sN = Date.now()), 12866 sM = e => 111 === e.charCodeAt(0) && 110 === e.charCodeAt(1) && e.charCodeAt(2) > 96 && 123 > e.charCodeAt(2), 12867 sI = {}; 12868function sL(e, t, n) { 12869 let l = nj(e, t); 12870 U(l) && C(l, t); 12871 class r extends sV { 12872 constructor(e) { 12873 super(l, e, n); 12874 } 12875 } 12876 return r.def = l, r; 12877} 12878let sD = (e, t) => sL(e, t, op), 12879 sF = "undefined" != typeof HTMLElement ? HTMLElement : class {}; 12880class sV extends sF { 12881 constructor(e, t = {}, n = of) { 12882 super(), this._def = e, this._props = t, this._createApp = n, this._isVueCE = !0, this._instance = null, this._app = null, this._nonce = this._def.nonce, this._connected = !1, this._resolved = !1, this._numberProps = null, this._styleChildren = new WeakSet(), this._ob = null, this.shadowRoot && n !== of ? this._root = this.shadowRoot : !1 !== e.shadowRoot ? (this.attachShadow({ 12883 mode: "open" 12884 }), this._root = this.shadowRoot) : this._root = this, this._def.__asyncLoader || this._resolveProps(this._def); 12885 } 12886 connectedCallback() { 12887 if (!this.isConnected) return; 12888 this.shadowRoot || this._parseSlots(), this._connected = !0; 12889 let e = this; 12890 for (; e = e && (e.parentNode || e.host);) if (e instanceof sV) { 12891 this._parent = e; 12892 break; 12893 } 12894 this._instance || (this._resolved ? (this._setParent(), this._update()) : e && e._pendingResolve ? this._pendingResolve = e._pendingResolve.then(() => { 12895 this._pendingResolve = void 0, this._resolveDef(); 12896 }) : this._resolveDef()); 12897 } 12898 _setParent(e = this._parent) { 12899 e && (this._instance.parent = e._instance, this._instance.provides = e._instance.provides); 12900 } 12901 disconnectedCallback() { 12902 this._connected = !1, t9(() => { 12903 this._connected || (this._ob && (this._ob.disconnect(), this._ob = null), this._app && this._app.unmount(), this._instance && (this._instance.ce = void 0), this._app = this._instance = null); 12904 }); 12905 } 12906 _resolveDef() { 12907 if (this._pendingResolve) return; 12908 for (let e = 0; e < this.attributes.length; e++) this._setAttr(this.attributes[e].name); 12909 this._ob = new MutationObserver(e => { 12910 for (let t of e) this._setAttr(t.attributeName); 12911 }), this._ob.observe(this, { 12912 attributes: !0 12913 }); 12914 let e = (e, t = !1) => { 12915 let n; 12916 this._resolved = !0, this._pendingResolve = void 0; 12917 let { 12918 props: l, 12919 styles: r 12920 } = e; 12921 if (l && !k(l)) for (let e in l) { 12922 let t = l[e]; 12923 (t === Number || t && t.type === Number) && (e in this._props && (this._props[e] = Q(this._props[e])), (n || (n = Object.create(null)))[W(e)] = !0); 12924 } 12925 this._numberProps = n, t && this._resolveProps(e), this.shadowRoot && this._applyStyles(r), this._mount(e); 12926 }, 12927 t = this._def.__asyncLoader; 12928 t ? this._pendingResolve = t().then(t => e(this._def = t, !0)) : e(this._def); 12929 }
12930 _mount(e) { 12931 this._app = this._createApp(e), e.configureApp && e.configureApp(this._app), this._app._ceVNode = this._createVNode(), this._app.mount(this._root); 12932 let t = this._instance && this._instance.exposed; 12933 if (t) for (let e in t) w(this, e) || Object.defineProperty(this, e, { 12934 get: () => tO(t[e]) 12935 }); 12936 } 12937 _resolveProps(e) { 12938 let { 12939 props: t 12940 } = e, 12941 n = k(t) ? t : Object.keys(t || {}); 12942 for (let e of Object.keys(this)) "_" !== e[0] && n.includes(e) && this._setProp(e, this[e]); 12943 for (let e of n.map(W)) Object.defineProperty(this, e, { 12944 get() { 12945 return this._getProp(e); 12946 }, 12947 set(t) { 12948 this._setProp(e, t, !0, !0); 12949 } 12950 }); 12951 } 12952 _setAttr(e) { 12953 if (e.startsWith("data-v-")) return; 12954 let t = this.hasAttribute(e), 12955 n = t ? this.getAttribute(e) : sI, 12956 l = W(e); 12957 t && this._numberProps && this._numberProps[l] && (n = Q(n)), this._setProp(l, n, !1, !0); 12958 } 12959 _getProp(e) { 12960 return this._props[e]; 12961 } 12962 _setProp(e, t, n = !0, l = !1) { 12963 if (t !== this._props[e] && (t === sI ? delete this._props[e] : (this._props[e] = t, "key" === e && this._app && (this._app._ceVNode.key = t)), l && this._instance && this._update(), n)) { 12964 let n = this._ob; 12965 n && n.disconnect(), !0 === t ? this.setAttribute(z(e), "") : "string" == typeof t || "number" == typeof t ? this.setAttribute(z(e), t + "") : t || this.removeAttribute(z(e)), n && n.observe(this, { 12966 attributes: !0 12967 }); 12968 } 12969 } 12970 _update() { 12971 ou(this._createVNode(), this._root); 12972 } 12973 _createVNode() { 12974 let e = {}; 12975 this.shadowRoot || (e.onVnodeMounted = e.onVnodeUpdated = this._renderSlots.bind(this)); 12976 let t = ic(this._def, C(e, this._props)); 12977 return this._instance || (t.ce = e => { 12978 this._instance = e, e.ce = this, e.isCE = !0; 12979 let t = (e, t) => { 12980 this.dispatchEvent(new CustomEvent(e, U(t[0]) ? C({ 12981 detail: t 12982 }, t[0]) : { 12983 detail: t 12984 })); 12985 }; 12986 e.emit = (e, ...n) => { 12987 t(e, n), z(e) !== e && t(z(e), n); 12988 }, this._setParent(); 12989 }), t; 12990 } 12991 _applyStyles(e, t) { 12992 if (!e) return; 12993 if (t) { 12994 if (t === this._def || this._styleChildren.has(t)) return; 12995 this._styleChildren.add(t); 12996 } 12997 let n = this._nonce; 12998 for (let t = e.length - 1; t >= 0; t--) { 12999 let l = document.createElement("style"); 13000 n && l.setAttribute("nonce", n), l.textContent = e[t], this.shadowRoot.prepe
13000nd(l); 13001 } 13002 } 13003 _parseSlots() { 13004 let e; 13005 let t = this._slots = {}; 13006 for (; e = this.firstChild;) { 13007 let n = 1 === e.nodeType && e.getAttribute("slot") || "default"; 13008 (t[n] || (t[n] = [])).push(e), this.removeChild(e); 13009 } 13010 } 13011 _renderSlots() { 13012 let e = (this._teleportTarget || this).querySelectorAll("slot"), 13013 t = this._instance.type.__scopeId; 13014 for (let n = 0; n < e.length; n++) { 13015 let l = e[n], 13016 r = l.getAttribute("name") || "default", 13017 i = this._slots[r], 13018 s = l.parentNode; 13019 if (i) for (let e of i) { 13020 if (t && 1 === e.nodeType) { 13021 let n; 13022 let l = t + "-s", 13023 r = document.createTreeWalker(e, 1); 13024 for (e.setAttribute(l, ""); n = r.nextNode();) n.setAttribute(l, ""); 13025 } 13026 s.insertBefore(e, l); 13027 } else for (; l.firstChild;) s.insertBefore(l.firstChild, l); 13028 s.removeChild(l); 13029 } 13030 } 13031 _injectChildStyle(e) { 13032 this._applyStyles(e.styles, e); 13033 } 13034 _removeChildStyle(e) {} 13035} 13036function sU(e) { 13037 let t = ik(); 13038 return t && t.ce || null; 13039} 13040function sj() { 13041 let e = sU(); 13042 return e && e.shadowRoot; 13043} 13044function sB(e = "$style") { 13045 { 13046 let t = ik(); 13047 if (!t) return g; 13048 let n = t.type.__cssModules; 13049 return n && n[e] || g; 13050 } 13051} 13052let s$ = new WeakMap(), 13053 sH = new WeakMap(), 13054 sW = Symbol("_moveCb"), 13055 sK = Symbol("_enterCb"), 13056 sz = (t = { 13057 name: "TransitionGroup", 13058 props: C({}, i9, { 13059 tag: String, 13060 moveClass: String 13061 }), 13062 setup(e, { 13063 slots: t 13064 }) { 13065 let n, l; 13066 let r = ik(), 13067 i = nA(); 13068 return ld(() => { 13069 if (!n.length) return; 13070 let t = e.moveClass || `${e.name || "v"}-move`; 13071 if (!function (e, t, n) { 13072 let l = e.cloneNode(), 13073 r = e[i3]; 13074 r && r.forEach(e => { 13075 e.split(/\s+/).forEach(e => e && l.classList.remove(e)); 13076 }), n.split(/\s+/).forEach(e => e && l.classList.add(e)), l.style.display = "none"; 13077 let i = 1 === t.nodeType ? t : t.parentNode; 13078 i.appendChild(l); 13079 let { 13080 hasTransform: s 13081 } = sa(l); 13082 return i.removeChild(l), s; 13083 }(n[0].el, r.vnode.el, t)) return; 13084 n.forEach(sq), n.forEach(sG); 13085 let l = n.filter(sJ); 13086 sf(), l.forEach(e => { 13087 let n = e.el, 13088 l = n.style; 13089 sl(n, t), l.transform = l.webkitTransform = l.transitionDuration = ""; 13090 let r = n[sW] = e => { 13091 (!e || e.target === n) && (!e || /transform$/.test(e.propertyName)) && (n.removeEventListener("transitionend", r), n[sW] = null, sr(n, t)); 13092 }; 13093 n.addEventListener("transitionend", r); 13094 }); 13095 }), () => { 13096 let s = tS(e), 13097 o = sn(s), 13098 a = s.tag || r0; 13099 if (n = [], l) for (let e = 0; e < l.length; e++) { 13100 let t = l[e]; 13101 t.el && t.el instanceof Element && (n.push(t), nV(t, nL(t, o, i, r)), s$.set(t, t.el.getBoundingClientRect())); 13102 } 13103 l = t.default ? nU(t.default()) : []; 13104 for (let e = 0; e < l.length; e++) { 13105 let t = l[e]; 13106 null != t.key && nV(t, nL(t, o, i, r)); 13107 } 13108 return ic(a, null, l); 13109 }; 13110 } 13111 }, delete t.props.mode, t); 13112function sq(e) { 13113 let t = e.el; 13114 t[sW] && t[sW](), t[sK] && t[sK](); 13115} 13116function sG(e) { 13117 sH.set(e, e.el.getBoundingClientRect()); 13118} 13119function sJ(e) { 13120 let t = s$.get(e), 13121 n = sH.get(e), 13122 l = t.left - n.left, 13123 r = t.top - n.top; 13124 if (l || r) { 13125 let t = e.el.style; 13126 return t.transform = t.webkitTransform = `translate(${l}px,${r}px)`, t.transitionDuration = "0s", e; 13127 } 13128} 13129let sX = e => { 13130 let t = e.props["onUpdate:modelValue"] || !1; 13131 return k(t) ? e => X(t, e) : t; 13132}; 13133function sZ(e) { 13134 e.target.composing = !0; 13135} 13136function sY(e) { 13137 let t = e.target; 13138 t.composing && (t.composing = !1, t.dispatchEvent(new Event("input"))); 13139} 13140let sQ = Symbol("_assign"), 13141 s0 = { 13142 created(e, { 13143 modifiers: { 13144 lazy: t, 13145 trim: n, 13146 number: l 13147 } 13148 }, r) { 13149 e[sQ] = sX(r); 13150 let i = l || r.props && "number" === r.props.type; 13151 sT(e, t ? "change" : "input", t => { 13152 if (t.target.composing) return; 13153 let l = e.value; 13154 n && (l = l.trim()), i && (l = Y(l)), e[sQ](l); 13155 }), n && sT(e, "change", () => { 13156 e.value = e.value.trim(); 13157 }), t || (sT(e, "compositionstart", sZ), sT(e, "compositionend", sY), sT(e, "change", sY)); 13158 }, 13159 mounted(e, { 13160 value: t 13161 }) { 13162 e.value = null == t ? "" : t; 13163 }, 13164 beforeUpdate(e, { 13165 value: t, 13166 oldValue: n, 13167 modifiers: { 13168 lazy: l, 13169 trim: r, 13170 number: i 13171 } 13172 }, s) { 13173 if (e[sQ] = sX(s), e.composing) return; 13174 let o = (i || "number" === e.type) && !/^0\d/.test(e.value) ? Y(e.value) : e.value, 13175 a = null == t ? "" : t; 13176 o === a || document.activeElement === e && "range" !== e.type && (l && t === n || r && e.value.trim() === a) || (e.value = a); 13177 } 13178 }, 13179 s1 = { 13180 deep: !0, 13181 created(e, t, n) { 13182 e[sQ] = sX(n), sT(e, "change", () => { 13183 let t = e._modelValue, 13184 n = s3(e), 13185 l = e.checked, 13186 r = e[sQ]; 13187 if (k(t)) { 13188 let e = ec(t, n), 13189 i = -1 !== e; 13190 if (l && !i) r(t.concat(n));else if (!l && i) { 13191 let n = [...t]; 13192 n.splice(e, 1), r(n); 13193 } 13194 } else if (A(t)) { 13195 let e = new Set(t); 13196 l ? e.add(n) : e.delete(n), r(e); 13197 } else r(s5(e, l)); 13198 }); 13199 }, 13200 mounted: s2, 13201 beforeUpdate(e, t, n) { 13202 e[sQ] = sX(n), s2(e, t, n); 13203 } 13204 }; 13205function s2(e, { 13206 value: t, 13207 oldValue: n 13208}, l) { 13209 let r; 13210 if (e._modelValue = t, k(t)) r = ec(t, l.props.value) > -1;else if (A(t)) r = t.has(l.props.value);else { 13211 if (t === n) return; 13212 r = eu(t, s5(e, !0)); 13213 } 13214 e.checked !== r && (e.checked = r); 13215} 13216let s6 = { 13217 created(e, { 13218 value: t 13219 }, n) { 13220 e.checked = eu(t, n.props.value), e[sQ] = sX(n), sT(e, "change", () => { 13221 e[sQ](s3(e)); 13222 }); 13223 }, 13224 beforeUpdate(e, { 13225 value: t, 13226 oldValue: n 13227 }, l) { 13228 e[sQ] = sX(l), t !== n && (e.checked = eu(t, l.props.value)); 13229 } 13230 }, 13231 s4 = { 13232 deep: !0, 13233 created(e, { 13234 value: t, 13235 modifiers: { 13236 number: n 13237 } 13238 }, l) { 13239 let r = A(t); 13240 sT(e, "change", () => { 13241 let t = Array.prototype.filter.call(e.options, e => e.selected).map(e => n ? Y(s3(e)) : s3(e)); 13242 e[sQ](e.multiple ? r ? new Set(t) : t : t[0]), e._assigning = !0, t9(() => { 13243 e._assigning = !1; 13244 }); 13245 }), e[sQ] = sX(l); 13246 }, 13247 mounted(e, { 13248 value: t 13249 }) { 13250 s8(e, t); 13251 }, 13252 beforeUpdate(e, t, n) { 13253 e[sQ] = sX(n); 13254 }, 13255 updated(e, { 13256 value: t 13257 }) { 13258 e._assigning || s8(e, t); 13259 } 13260 }; 13261function s8(e, t) { 13262 let n = e.multiple, 13263 l = k(t); 13264 if (!n || l || A(t)) { 13265 for (let r = 0, i = e.options.length; r < i; r++) { 13266 let i = e.options[r], 13267 s = s3(i); 13268 if (n) { 13269 if (l) { 13270 let e = typeof s; 13271 "string" === e || "number" === e ? i.selected = t.some(e => String(e) === String(s)) : i.selected = ec(t, s) > -1; 13272 } else i.selected = t.has(s); 13273 } else if (eu(s3(i), t)) { 13274 e.selectedIndex !== r && (e.selectedIndex = r); 13275 return; 13276 } 13277 } 13278 n || -1 === e.selectedIndex || (e.selectedIndex = -1); 13279 } 13280} 13281function s3(e) { 13282 return "_value" in e ? e._value : e.value; 13283} 13284function s5(e, t) { 13285 let n = t ? "_trueValue" : "_falseValue"; 13286 return n in e ? e[n] : t; 13287} 13288let s9 = { 13289 created(e, t, n) { 13290 oe(e, t, n, null, "created"); 13291 }, 13292 mounted(e, t, n) { 13293 oe(e, t, n, null, "mounted"); 13294 }, 13295 beforeUpdate(e, t, n, l) { 13296 oe(e, t, n, l, "beforeUpdate"); 13297 }, 13298 updated(e, t, n, l) { 13299 oe(e, t, n, l, "updated"); 13300 } 13301}; 13302function s7(e, t) { 13303 switch (e) { 13304 case "SELECT": 13305 return s4; 13306 case "TEXTAREA": 13307 return s0; 13308 default: 13309 switch (t) { 13310 case "checkbox": 13311 return s1; 13312 case "radio": 13313 return s6; 13314 default: 13315 return s0; 13316 } 13317 } 13318} 13319function oe(e, t, n, l, r) { 13320 let i = s7(e.tagName, n.props && n.props.type)[r]; 13321 i && i(e, t, n, l); 13322} 13323let ot = ["ctrl", "shift", "alt", "meta"], 13324 on = { 13325 stop: e => e.stopPropagation(), 13326 prevent: e => e.preventDefault(), 13327 self: e => e.target !== e.currentTarget, 13328 ctrl: e => !e.ctrlKey, 13329 shift: e => !e.shiftKey, 13330 alt: e => !e.altKey, 13331 meta: e => !e.metaKey, 13332 left: e => "button" in e && 0 !== e.button, 13333 middle: e => "button" in e && 1 !== e.button, 13334 right: e => "button" in e && 2 !== e.button, 13335 exact: (e, t) => ot.some(n => e[`${n}Key`] && !t.includes(n)) 13336 }, 13337 ol = (e, t) => { 13338 let n = e._withMods || (e._withMods = {}), 13339 l = t.join("."); 13340 return n[l] || (n[l] = (n, ...l) => { 13341 for (let e = 0; e < t.length; e++) { 13342 let l = on[t[e]]; 13343 if (l && l(n, t)) return; 13344 } 13345 return e(n, ...l); 13346 }); 13347 }, 13348 or = { 13349 esc: "escape", 13350 space: " ", 13351 up: "arrow-up", 13352 left: "arrow-left", 13353 right: "arrow-right", 13354 down: "arrow-down", 13355 delete: "backspace" 13356 }, 13357 oi = (e, t) => { 13358 let n = e._withKeys || (e._withKeys = {}), 13359 l = t.join("."); 13360 return n[l] || (n[l] = n => { 13361 if (!("key" in n)) return; 13362 let l = z(n.key); 13363 if (t.some(e => e === l || or[e] === l)) return e(n); 13364 }); 13365 }, 13366 os = C({ 13367 patchProp: (e, t, n, l, r, i) => { 13368 let s = "svg" === r; 13369 "class" === t ? function (e, t, n) { 13370 let l = e[i3]; 13371 l && (t = (t ? [t, ...l] : [...l]).join(" ")), null == t ? e.removeAttribute("class") : n ? e.setAttribute("class", t) : e.className = t; 13372 }(e, l, s) : "style" === t ? function (e, t, n) { 13373 let l = e.style, 13374 r = P(n), 13375 i = !1; 13376 if (n && !r) { 13377 if (t) { 13378 if (P(t)) for (let e of t.split(";")) { 13379 let t = e.slice(0, e.indexOf(":")).trim(); 13380 null == n[t] && sS(l, t, ""); 13381 } else for (let e in t) null == n[e] && sS(l, e, ""); 13382 } 13383 for (let e in n) "display" === e && (i = !0), sS(l, e, n[e]); 13384 } else if (r) { 13385 if (t !== n) { 13386 let e = l[sv]; 13387 e && (n += ";" + e), l.cssText = n, i = sy.test(n); 13388 } 13389 } else t && e.removeAttribute("style");
13390 sp in e && (e[sp] = i ? l.display : "", e[sd] && (l.display = "none")); 13391 }(e, n, l) : b(t) ? S(t) || function (e, t, n, l, r = null) { 13392 let i = e[sA] || (e[sA] = {}), 13393 s = i[t]; 13394 if (l && s) s.value = l;else { 13395 let [n, o] = function (e) { 13396 let t; 13397 if (sR.test(e)) { 13398 let n; 13399 for (t = {}; n = e.match(sR);) e = e.slice(0, e.length - n[0].length), t[n[0].toLowerCase()] = !0; 13400 } 13401 return [":" === e[2] ? e.slice(3) : z(e.slice(2)), t]; 13402 }(t); 13403 l ? sT(e, n, i[t] = function (e, t) { 13404 let n = e => { 13405 if (e._vts) { 13406 if (e._vts <= n.attached) return; 13407 } else e._vts = Date.now(); 13408 tQ(function (e, t) { 13409 if (!k(t)) return t; 13410 { 13411 let n = e.stopImmediatePropagation; 13412 return e.stopImmediatePropagation = () => { 13413 n.call(e), e._stopped = !0; 13414 }, t.map(e => t => !t._stopped && e && e(t)); 13415 } 13416 }(e, n.value), t, 5, [e]); 13417 }; 13418 return n.value = e, n.attached = sP(), n; 13419 }(l, r), o) : s && (!function (e, t, n, l) { 13420 e.removeEventListener(t, n, l); 13421 }(e, n, s, o), i[t] = void 0); 13422 } 13423 }(e, t, 0, l, i) : ("." === t[0] ? (t = t.slice(1), 0) : "^" === t[0] ? (t = t.slice(1), 1) : !function (e, t, n, l) { 13424 if (l) return !!("innerHTML" === t || "textContent" === t || t in e && sM(t) && O(n)); 13425 if ("spellcheck" === t || "draggable" === t || "translate" === t || "form" === t || "list" === t && "INPUT" === e.tagName || "type" === t && "TEXTAREA" === e.tagName) return !1; 13426 if ("width" === t || "height" === t) { 13427 let t = e.tagName; 13428 if ("IMG" === t || "VIDEO" === t || "CANVAS" === t || "SOURCE" === t) return !1; 13429 } 13430 return !(sM(t) && P(n)) && t in e; 13431 }(e, t, l, s)) ? e._isVueCE && (/[A-Z]/.test(t) || !P(l)) ? sk(e, W(t), l, i, t) : ("true-value" === t ? e._trueValue = l : "false-value" === t && (e._falseValue = l), sw(e, t, l, s)) : (sk(e, t, l), e.tagName.includes("-") || "value" !== t && "checked" !== t && "selected" !== t || sw(e, t, l, s, i, "value" !== t)); 13432 } 13433 }, { 13434 insert: (e, t, n) => { 13435 t.insertBefore(e, n || null); 13436 }, 13437 remove: e => { 13438 let t = e.parentNode; 13439 t && t.removeChild(e); 13440 }, 13441 createElement: (e, t, n, l) => { 13442 let r = "svg" === t ? i2.createElementNS("http://www.w3.org/2000/svg", e) : "mathml" === t ? i2.createElementNS("http://www.w3.org/1998/Math/MathML", e) : n ? i2.createElement(e, { 13443 is: n 13444 }) : i2.createElement(e); 13445 return "select" === e && l && null != l.multiple && r.setAttribute("multiple", l.multiple), r; 13446 }, 13447 createText: e => i2.createTextNode(e), 13448 createComment: e => i2.createComment(e), 13449 setText: (e, t) => { 13450 e.nodeValue = t; 13451 }, 13452 setElementText: (e, t) => { 13453 e.textContent = t; 13454 }, 13455 parentNode: e => e.parentNode, 13456 nextSibling: e => e.nextSibling, 13457 querySelector: e => i2.querySelector(e), 13458 setScopeId(e, t) { 13459 e.setAttribute(t, ""); 13460 }, 13461 insertStaticContent(e, t, n, l, r, i) { 13462 let s = n ? n.previousSibling : t.lastChild; 13463 if (r && (r === i || r.nextSibling)) for (; t.insertBefore(r.cloneNode(!0), n), r !== i && (r = r.nextSibling););else { 13464 i6.innerHTML = i1("svg" === l ? `<svg>${e}</svg>` : "mathml" === l ? `<math>${e}</math>` : e); 13465 let r = i6.content; 13466 if ("svg" === l || "mathml" === l) { 13467 let e = r.firstChild; 13468 for (; e.firstChild;) r.appendChild(e.firstChild); 13469 r.removeChild(e); 13470 } 13471 t.insertBefore(r, n); 13472 } 13473 return [s ? s.nextSibling : t.firstChild, n ? n.previousSibling : t.lastChild]; 13474 } 13475 }), 13476 oo = (/* unused pure expression or super */ null && (!1)); 13477function oa() { 13478 return f = oo ? f : rS(os), oo = !0, f; 13479} 13480let ou = (...e) => { 13481 (f || (f = rb(os))).render(...e); 13482 }, 13483 oc = (...e) => { 13484 oa().hydrate(...e); 13485 }, 13486 of = (...e) => { 13487 let t = (f || (f = rb(os))).createApp(...e), 13488 { 13489 mount: n 13490 } = t; 13491 return t.mount = e => { 13492 let l = oh(e); 13493 if (!l) return; 13494 let r = t._component; 13495 O(r) || r.render || r.template || (r.template = l.innerHTML), 1 === l.nodeType && (l.textContent = ""); 13496 let i = n(l, !1, od(l)); 13497 return l instanceof Element && (l.removeAttribute("v-cloak"), l.setAttribute("data-v-app", "")), i; 13498 }, t; 13499 }, 13500 op = (...e) => { 13501 let t = oa().createApp(...e), 13502 { 13503 mount: n 13504 } = t; 13505 return t.mount = e => { 13506 let t = oh(e); 13507 if (t) return n(t, !0, od(t)); 13508 }, t; 13509 }; 13510function od(e) { 13511 return e instanceof SVGElement ? "svg" : "function" == typeof MathMLElement && e instanceof MathMLElement ? "mathml" : void 0; 13512} 13513function oh(e) { 13514 return P(e) ? document.querySelector(e) : e; 13515} 13516let og = (/* unused pure expression or super */ null && (!1)), 13517 ov = () => { 13518 og || (og = !0, s0.getSSRProps = ({ 13519 value: e 13520 }) => ({ 13521 value: e 13522 }), s6.getSSRProps = ({ 13523 value: e 13524 }, t) => { 13525 if (t.props && eu(t.props.value, e)) return { 13526 checked: !0 13527 }; 13528 }, s1.getSSRProps = ({ 13529 value: e 13530 }, t) => { 13531 if (k(e)) { 13532 if (t.props && ec(e, t.props.value) > -1) return { 13533 checked: !0 13534 }; 13535 } else if (A(e)) { 13536 if (t.props && e.has(t.props.value)) return { 13537 checked: !0 13538 }; 13539 } else if (e) return { 13540 checked: !0 13541 }; 13542 }, s9.getSSRProps = (e, t) => { 13543 if ("string" != typeof t.type) return; 13544 let n = s7(t.type.toUpperCase(), t.props && t.props.type); 13545 if (n.getSSRProps) return n.getSSRProps(e, t); 13546 }, sh.getSSRProps = ({ 13547 value: e 13548 }) => { 13549 if (!e) return { 13550 style: { 13551 display: "none" 13552 } 13553 }; 13554 }); 13555 }, 13556 om = () => {}; 13557 13558 13559/***/ }), 13560 13561/***/ 3643: 13562/***/ ((module, __webpack_exports__, __webpack_require__) => { 13563 13564"use strict"; 13565__webpack_require__.r(__webpack_exports__); 13566/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13567/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 13568/* harmony export */ }); 13569/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 13570/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 13571/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 13572/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 13573// Imports 13574 13575 13576var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 13577// Module
13578___CSS_LOADER_EXPORT___.push([module.id, `.vehicle-card .oem-toyota__tdg--srp-card-overview.vehicle-overview{grid-template-areas:"title tdg-heart dropdown" "identifiers identifiers identifiers" "specs specs specs";grid-area:tdg-heart;grid-template-columns:1fr repeat(2, auto);column-gap:.8rem}.oem-toyota__tdg--srp-card-heart-wrapper{margin-top:.5rem}`, ""]); 13579// Exports 13580/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 13581 13582 13583/***/ }), 13584 13585/***/ 3677: 13586/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13587 13588"use strict"; 13589/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13590/* harmony export */ S: () => (/* binding */ RefinementType) 13591/* harmony export */ }); 13592var RefinementType; 13593(function (RefinementType) { 13594 RefinementType["Year"] = "Year"; 13595 RefinementType["Make"] = "Make"; 13596 RefinementType["Model"] = "Model"; 13597 RefinementType["Trim"] = "Trim"; 13598 RefinementType["PriceRange"] = "PriceRange"; 13599 RefinementType["PriceAndPayment"] = "PriceAndPayment"; 13600 RefinementType["Mileage"] = "Mileage"; 13601 RefinementType["Mileagerange"] = "Mileagerange"; 13602 RefinementType["Location"] = "Location"; 13603 RefinementType["Dealership"] = "Dealership"; 13604 RefinementType["Bodystyle"] = "Bodystyle"; 13605 RefinementType["Extcolor"] = "Extcolor"; 13606 RefinementType["Intcolor"] = "Intcolor"; 13607 RefinementType["CityMpgRange"] = "CityMpgRange"; 13608 RefinementType["HwyMpgRange"] = "HwyMpgRange"; 13609 RefinementType["Cylinder"] = "Cylinder"; 13610 RefinementType["Displacement"] = "Displacement"; 13611 RefinementType["Transmission"] = "Transmission"; 13612 RefinementType["Features"] = "Features"; 13613 RefinementType["Fueltype"] = "Fueltype"; 13614 RefinementType["DriveTrainType"] = "DriveTrainType"; 13615 RefinementType["Tags"] = "Tags"; 13616 RefinementType["VehicleType"] = "VehicleType"; 13617 RefinementType["BodyType"] = "BodyType"; 13618 RefinementType["Packages"] = "Packages"; 13619 RefinementType["LeasePriceRange"] = "LeasePriceRange"; 13620 RefinementType["FinancePriceRange"] = "FinancePriceRange"; 13621 RefinementType["VehicleCondition"] = "VehicleCondition"; 13622 RefinementType["ModelAndTrim"] = "ModelAndTrim"; 13623 RefinementType["FamilyModelAndTrim"] = "FamilyModelAndTrim"; 13624 RefinementType["CpoTier"] = "CpoTier"; 13625 RefinementType["CarBravo"] = "CarBravo"; 13626 RefinementType["Availability"] = "Availability"; 13627 RefinementType["BedLength"] = "BedLength"; 13628 RefinementType["YearRange"] = "YearRange"; 13629 RefinementType["RangeRange"] = "RangeRange"; 13630 RefinementType["InTransit"] = "intransit"; 13631 RefinementType["InProduction"] = "inproduction"; 13632 RefinementType["InStock"] = "instock"; 13633 RefinementType["Special"] = "Special"; 13634 RefinementType["Cpo"] = "Cpo"; 13635 RefinementType["carfax1owner"] = "carfax1owner"; 13636 RefinementType["commercialvehicle"] = "commercialvehicle"; 13637 RefinementType["searchValet"] = "q"; 13638 RefinementType["VehicleStageText"] = "VehicleStageText"; 13639 RefinementType["SignalsForYou"] = "signalsforyou"; 13640 RefinementType["Manufacturer"] = "Manufacturer"; 13641 RefinementType["WeightRange"] = "WeightRange"; 13642 RefinementType["LengthRange"] = "LengthRange"; 13643 RefinementType["Class"] = "Class"; 13644 RefinementType["SlideRange"] = "SlideRange"; 13645 RefinementType["RvType"] = "rvType"; 13646 RefinementType["RvBrand"] = "RvBrand"; 13647 RefinementType["SleepsRange"] = "SleepsRange"; 13648 RefinementType["LocationName"] = "LocationName"; 13649})(RefinementType || (RefinementType = {})); 13650 13651 13652/***/ }), 13653 13654/***/ 3743: 13655/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13656 13657"use strict"; 13658/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13659/* harmony export */ m: () => (/* binding */ DropdownType) 13660/* harmony export */ }); 13661/* unused harmony export CustomDropdownModel */ 13662class CustomDropdownModel { 13663} 13664var DropdownType; 13665(function (DropdownType) { 13666 DropdownType[DropdownType["Pagination"] = 0] = "Pagination"; 13667 DropdownType[DropdownType["SearchValet"] = 1] = "SearchValet"; 13668 DropdownType[DropdownType["SearchSort"] = 2] = "SearchSort"; 13669})(DropdownType || (DropdownType = {})); 13670 13671 13672/***/ }), 13673 13674/***/ 3807: 13675/***/ ((module, __webpack_exports__, __webpack_require__) => { 13676 13677"use strict"; 13678__webpack_require__.r(__webpack_exports__); 13679/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13680/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 13681/* harmony export */ }); 13682/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 13683/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 13684/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 13685/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 13686// Imports 13687 13688 13689var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 13690// Module
13691___CSS_LOADER_EXPORT___.push([module.id, `.vehicle-card-deck .invalid-props{background-color:#f1ddab;border:2px solid #debe6f;border-radius:.25rem;padding:1rem}.vehicle-card-deck .invalid-props__warning{font-size:1.5em;font-weight:700}.vehicle-card-deck__no-vehicles{font-weight:700}`, ""]); 13692// Exports 13693/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 13694 13695 13696/***/ }), 13697 13698/***/ 3845: 13699/***/ ((module, __webpack_exports__, __webpack_require__) => { 13700 13701"use strict"; 13702__webpack_require__.r(__webpack_exports__); 13703/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13704/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 13705/* harmony export */ }); 13706/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 13707/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 13708/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 13709/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 13710// Imports 13711 13712 13713var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 13714// Module 13715___CSS_LOADER_EXPORT___.push([module.id, ` 13716.vehicle-location { 13717 display: flex; 13718 align-items: start; 13719 gap: 4px; 13720} 13721.location-text { 13722 font-size: var(--location-text-font-size, 1.2rem); 13723} 13724`, ""]); 13725// Exports 13726/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 13727 13728 13729/***/ }), 13730 13731/***/ 3884: 13732/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 13733 13734"use strict"; 13735 13736 13737Object.defineProperty(exports, "__esModule", ({ 13738 value: true 13739})); 13740exports.typeConstraint = exports.namedConstraint = exports.taggedConstraint = exports.traverseAncerstors = void 0; 13741var METADATA_KEY = __webpack_require__(4725); 13742var metadata_1 = __webpack_require__(8390); 13743var traverseAncerstors = function (request, constraint) { 13744 var parent = request.parentRequest; 13745 if (parent !== null) { 13746 return constraint(parent) ? true : traverseAncerstors(parent, constraint); 13747 } else { 13748 return false; 13749 } 13750}; 13751exports.traverseAncerstors = traverseAncerstors; 13752var taggedConstraint = function (key) { 13753 return function (value) { 13754 var constraint = function (request) { 13755 return request !== null && request.target !== null && request.target.matchesTag(key)(value); 13756 }; 13757 constraint.metaData = new metadata_1.Metadata(key, value); 13758 return constraint; 13759 }; 13760}; 13761exports.taggedConstraint = taggedConstraint; 13762var namedConstraint = taggedConstraint(METADATA_KEY.NAMED_TAG); 13763exports.namedConstraint = namedConstraint; 13764var typeConstraint = function (type) { 13765 return function (request) { 13766 var binding = null; 13767 if (request !== null) { 13768 binding = request.bindings[0]; 13769 if (typeof type === "string") { 13770 var serviceIdentifier = binding.serviceIdentifier; 13771 return serviceIdentifier === type; 13772 } else { 13773 var constructor = request.bindings[0].implementationType; 13774 return type === constructor; 13775 } 13776 } 13777 return false; 13778 }; 13779}; 13780exports.typeConstraint = typeConstraint; 13781 13782/***/ }), 13783 13784/***/ 3902: 13785/***/ ((module, __webpack_exports__, __webpack_require__) => { 13786 13787"use strict"; 13788__webpack_require__.r(__webpack_exports__); 13789/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13790/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 13791/* harmony export */ }); 13792/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 13793/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 13794/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 13795/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 13796// Imports 13797 13798 13799var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 13800// Module
13801___CSS_LOADER_EXPORT___.push([module.id, ` 13802.modal-close[data-v-2f35092b] { 13803 display: flex; 13804 flex-direction: row-reverse; 13805 position: relative; 13806 z-index: 1; 13807 padding: 2em; 13808 top: 5em; 13809} 13810`, ""]); 13811// Exports 13812/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 13813 13814 13815/***/ }), 13816 13817/***/ 3907: 13818/***/ ((module, __webpack_exports__, __webpack_require__) => { 13819 13820"use strict"; 13821__webpack_require__.r(__webpack_exports__); 13822/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13823/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 13824/* harmony export */ }); 13825/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 13826/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 13827/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 13828/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 13829// Imports 13830 13831 13832var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 13833// Module 13834___CSS_LOADER_EXPORT___.push([module.id, `.location-dot[data-v-df36362e]{margin-top:var(--location-dot-top-spacing, 2px)}.location-dot path[data-v-df36362e]{fill:var(--location-dot-color, var(--cta-background-color))}`, ""]); 13835// Exports 13836/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 13837 13838 13839/***/ }), 13840 13841/***/ 3925: 13842/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13843 13844"use strict"; 13845/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13846/* harmony export */ U: () => (/* binding */ EvnVideoPlayer) 13847/* harmony export */ }); 13848/* harmony import */ var _services_toggles_iToggleService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4478); 13849/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260); 13850/* harmony import */ var _types_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5644); 13851var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 13852 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 13853 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 13854 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 13855 return c > 3 && r && Object.defineProperty(target, key, r), r; 13856}; 13857var __metadata = (undefined && undefined.__metadata) || function (k, v) { 13858 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 13859}; 13860var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 13861 return function (target, key) { decorator(target, key, paramIndex); } 13862}; 13863var _a; 13864 13865 13866 13867let EvnVideoPlayer = class EvnVideoPlayer { 13868 constructor(toggleService) { 13869 this.toggleService = toggleService; 13870 } 13871 /** 13872 * @param eventType The event to listen for to initialize the EVN video player. 13873 */ 13874 initialize(eventType) { 13875 const domContentLoaded = 'DOMContentLoaded'; 13876 const loading = 'loading'; 13877 if ((eventType === domContentLoaded && document.readyState === loading) 13878 || eventType !== domContentLoaded) { 13879 document.addEventListener(eventType, () => { 13880 this.initEventListenersAndObservers(); 13881 }); 13882 return; 13883 } 13884 this.initEventListenersAndObservers(); 13885 } 13886 initEventListenersAndObservers() { 13887 this.addLoadEvnVideoPlayerEvent(); 13888 this.initInlineEvnVideo(); 13889 } 13890 //Ford EVN video player inline video initialization. 13891 addLoadEvnVideoPlayerEvent() { 13892 const evnVideoPlayerModal = document.getElementById("evnVideoPlayerModal"); 13893 if (evnVideoPlayerModal) { 13894 $('#evnVideoPlayerModal').on('shown.bs.modal', function (event) { 13895 //@ts-ignore 13896 const element = event.relatedTarget; 13897 if (element.dataset.videoId) { 13898 window.evnVideoPlayer.initialize({ 13899 selector: "#evn-video-player-container", 13900 videoId: element.dataset.videoId, 13901 embed: "first", 13902 videoJsPlayerOptions: { 13903 autoplay: 'muted', 13904 loop: true 13905 } 13906 }); 13907 } 13908 }); 13909 const observer = new MutationObserver(() => { 13910 if (evnVideoPlayerModal.style.display === "none") { 13911 Array.from(window.evnVideoPlayer._players).forEac
13911h(function (player) { 13912 if (!player.videoPlayer.isDisposed_) { 13913 player.videoPlayer.dispose(); 13914 } 13915 }); 13916 } 13917 }); 13918 const config = { attributes: true, attributeFilter: ['style'] }; 13919 observer.observe(evnVideoPlayerModal, config); 13920 } 13921 } 13922 /** 13923 * This is currently only used on the VDP behind the EnableCosmosVdpGalleryMod toggle 13924 */ 13925 initInlineEvnVideo() { 13926 const videoContainerElem = document.querySelector("#do-video-container[data-video-player-type='evn']"); 13927 if (videoContainerElem && videoContainerElem.dataset.videoFeedUrl) { 13928 let options = { 13929 root: document.querySelector(".hero-carousel__items"), 13930 threshold: 0.9, 13931 }; 13932 const observer = new IntersectionObserver((entries) => { 13933 entries.forEach((entry) => { 13934 if (entry.isIntersecting) { 13935 window.evnVideoPlayer.initialize({ 13936 selector: "#do-video-container", 13937 videoId: videoContainerElem.dataset.videoFeedUrl, 13938 embed: "first", 13939 videoJsPlayerOptions: { 13940 autoplay: 'muted', 13941 loop: true 13942 } 13943 }); 13944 observer.disconnect(); 13945 } 13946 }); 13947 }, options); 13948 observer.observe(videoContainerElem); 13949 } 13950 } 13951}; 13952EvnVideoPlayer = __decorate([ 13953 (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .injectable */ ._G)(), 13954 __param(0, (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .inject */ .WQ)(_types_types__WEBPACK_IMPORTED_MODULE_1__/* .TYPES */ .Q.IToggleService)), 13955 __metadata("design:paramtypes", [typeof (_a = typeof _services_toggles_iToggleService__WEBPACK_IMPORTED_MODULE_2__/* .IToggleService */ .F !== "undefined" && _services_toggles_iToggleService__WEBPACK_IMPORTED_MODULE_2__/* .IToggleService */ .F) === "function" ? _a : Object]) 13956], EvnVideoPlayer); 13957 13958 13959 13960/***/ }), 13961 13962/***/ 3960: 13963/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 13964 13965// style-loader: Adds some css to the DOM by adding a <style> tag 13966 13967// load the styles 13968var content = __webpack_require__(8595); 13969if(content.__esModule) content = content.default; 13970if(typeof content === 'string') content = [[module.id, content, '']]; 13971if(content.locals) module.exports = content.locals; 13972// add the styles to the DOM 13973var add = (__webpack_require__(8449)/* ["default"] */ .A) 13974var update = add("795727d0", content, false, {}); 13975// Hot Module Replacement 13976if(false) {} 13977 13978/***/ }), 13979 13980/***/ 4081: 13981/***/ ((__unused_webpack_module, exports) => { 13982 13983"use strict"; 13984 13985 13986Object.defineProperty(exports, "__esModule", ({ 13987 value: true 13988})); 13989exports.BindingCount = void 0; 13990var BindingCount = { 13991 MultipleBindingsAvailable: 2, 13992 NoBindingsAvailable: 0, 13993 OnlyOneBindingAvailable: 1 13994}; 13995exports.BindingCount = BindingCount; 13996 13997/***/ }), 13998 13999/***/ 4131: 14000/***/ ((__unused_webpack_module, exports) => { 14001 14002"use strict"; 14003 14004 14005Object.defineProperty(exports, "__esModule", ({ 14006 value: true 14007})); 14008exports.QueryableString = void 0; 14009var QueryableString = function () { 14010 function QueryableString(str) { 14011 this.str = str; 14012 } 14013 QueryableString.prototype.startsWith = function (searchString) { 14014 return this.str.indexOf(searchString) === 0; 14015 }; 14016 QueryableString.prototype.endsWith = function (searchString) { 14017 var reverseString = ""; 14018 var reverseSearchString = searchString.split("").reverse().join(""); 14019 reverseString = this.str.split("").reverse().join(""); 14020 return this.startsWith.call({ 14021 str: reverseString 14022 }, reverseSearchString); 14023 }; 14024 QueryableString.prototype.contains = function (searchString) { 14025 return this.str.indexOf(searchString) !== -1; 14026 }; 14027 QueryableString.prototype.equals = function (compareString) { 14028 return this.str === compareString; 14029 }; 14030 QueryableString.prototype.value = function () { 14031 return this.str; 14032 }; 14033 return QueryableString; 14034}(); 14035exports.QueryableString = QueryableString; 14036 14037/***/ }), 14038 14039/***/ 4208: 14040/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14041 14042"use strict"; 14043/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14044/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 14045/* harmony export */ }); 14046/** 14047 * A collection of shims that provide minimal functionality of the ES6 collections. 14048 * 14049 * These implementations are not meant to be used outside of the ResizeObserver 14050 * modules as they cover only a limited range of use cases. 14051 */ 14052/* eslint-disable require-jsdoc, valid-jsdoc */ 14053var MapShim = function () { 14054 if (typeof Map !== 'undefined') { 14055 return Map; 14056 } 14057 /** 14058 * Returns index in provided array that matches the specified key. 14059 * 14060 * @param {Array<Array>} arr 14061 * @param {*} key 14062 * @returns {number} 14063 */ 14064 function getIndex(arr, key) { 14065 var result = -1; 14066 arr.some(function (entry, index) { 14067 if (entry[0] === key) { 14068 result = index; 14069 return true; 14070 } 14071 return false;
vendor: 4,341 bytes, lines 14072-14232
14072 }); 14073 return result; 14074 } 14075 return /** @class */function () { 14076 function class_1() { 14077 this.__entries__ = []; 14078 } 14079 Object.defineProperty(class_1.prototype, "size", { 14080 /** 14081 * @returns {boolean} 14082 */ 14083 get: function () { 14084 return this.__entries__.length; 14085 }, 14086 enumerable: true, 14087 configurable: true 14088 }); 14089 /** 14090 * @param {*} key 14091 * @returns {*} 14092 */ 14093 class_1.prototype.get = function (key) { 14094 var index = getIndex(this.__entries__, key); 14095 var entry = this.__entries__[index]; 14096 return entry && entry[1]; 14097 }; 14098 /** 14099 * @param {*} key 14100 * @param {*} value 14101 * @returns {void} 14102 */ 14103 class_1.prototype.set = function (key, value) { 14104 var index = getIndex(this.__entries__, key); 14105 if (~index) { 14106 this.__entries__[index][1] = value; 14107 } else { 14108 this.__entries__.push([key, value]); 14109 } 14110 }; 14111 /** 14112 * @param {*} key 14113 * @returns {void} 14114 */ 14115 class_1.prototype.delete = function (key) { 14116 var entries = this.__entries__; 14117 var index = getIndex(entries, key); 14118 if (~index) { 14119 entries.splice(index, 1); 14120 } 14121 }; 14122 /** 14123 * @param {*} key 14124 * @returns {void} 14125 */ 14126 class_1.prototype.has = function (key) { 14127 return !!~getIndex(this.__entries__, key); 14128 }; 14129 /** 14130 * @returns {void} 14131 */ 14132 class_1.prototype.clear = function () { 14133 this.__entries__.splice(0); 14134 }; 14135 /** 14136 * @param {Function} callback 14137 * @param {*} [ctx=null] 14138 * @returns {void} 14139 */ 14140 class_1.prototype.forEach = function (callback, ctx) { 14141 if (ctx === void 0) { 14142 ctx = null; 14143 } 14144 for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) { 14145 var entry = _a[_i]; 14146 callback.call(ctx, entry[1], entry[0]); 14147 } 14148 }; 14149 return class_1; 14150 }(); 14151}(); 14152 14153/** 14154 * Detects whether window and document objects are available in current environment. 14155 */ 14156var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; 14157 14158// Returns global object of a current environment. 14159var global$1 = function () { 14160 if (typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.Math === Math) { 14161 return __webpack_require__.g; 14162 } 14163 if (typeof self !== 'undefined' && self.Math === Math) { 14164 return self; 14165 } 14166 if (typeof window !== 'undefined' && window.Math === Math) { 14167 return window; 14168 } 14169 // eslint-disable-next-line no-new-func 14170 return Function('return this')(); 14171}(); 14172 14173/** 14174 * A shim for the requestAnimationFrame which falls back to the setTimeout if 14175 * first one is not supported. 14176 * 14177 * @returns {number} Requests' identifier. 14178 */ 14179var requestAnimationFrame$1 = function () { 14180 if (typeof requestAnimationFrame === 'function') { 14181 // It's required to use a bounded function because IE sometimes throws 14182 // an "Invalid calling object" error if rAF is invoked without the global 14183 // object on the left hand side. 14184 return requestAnimationFrame.bind(global$1); 14185 } 14186 return function (callback) { 14187 return setTimeout(function () { 14188 return callback(Date.now()); 14189 }, 1000 / 60); 14190 }; 14191}(); 14192 14193// Defines minimum timeout before adding a trailing call. 14194var trailingTimeout = 2; 14195/** 14196 * Creates a wrapper function which ensures that provided callback will be 14197 * invoked only once during the specified delay period. 14198 * 14199 * @param {Function} callback - Function to be invoked after the delay period. 14200 * @param {number} delay - Delay after which to invoke callback. 14201 * @returns {Function} 14202 */ 14203function throttle(callback, delay) { 14204 var leadingCall = false, 14205 trailingCall = false, 14206 lastCallTime = 0; 14207 /** 14208 * Invokes the original callback function and schedules new invocation if 14209 * the "proxy" was called during current request. 14210 * 14211 * @returns {void} 14212 */ 14213 function resolvePending() { 14214 if (leadingCall) { 14215 leadingCall = false; 14216 callback(); 14217 } 14218 if (trailingCall) { 14219 proxy(); 14220 } 14221 } 14222 /** 14223 * Callback invoked after the specified delay. It will further postpone 14224 * invocation of the original function delegating it to the 14225 * requestAnimationFrame. 14226 * 14227 * @returns {void} 14228 */ 14229 function timeoutCallback() { 14230 requestAnimationFrame$1(resolvePending); 14231 } 14232 /**
vendor: 4,503 bytes, lines 14233-14367
14233 * Schedules invocation of the original function. 14234 * 14235 * @returns {void} 14236 */ 14237 function proxy() { 14238 var timeStamp = Date.now(); 14239 if (leadingCall) { 14240 // Reject immediately following calls. 14241 if (timeStamp - lastCallTime < trailingTimeout) { 14242 return; 14243 } 14244 // Schedule new call to be in invoked when the pending one is resolved. 14245 // This is important for "transitions" which never actually start 14246 // immediately so there is a chance that we might miss one if change 14247 // happens amids the pending invocation. 14248 trailingCall = true; 14249 } else { 14250 leadingCall = true; 14251 trailingCall = false; 14252 setTimeout(timeoutCallback, delay); 14253 } 14254 lastCallTime = timeStamp; 14255 } 14256 return proxy; 14257} 14258 14259// Minimum delay before invoking the update of observers. 14260var REFRESH_DELAY = 20; 14261// A list of substrings of CSS properties used to find transition events that 14262// might affect dimensions of observed elements. 14263var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; 14264// Check if MutationObserver is available. 14265var mutationObserverSupported = typeof MutationObserver !== 'undefined'; 14266/** 14267 * Singleton controller class which handles updates of ResizeObserver instances. 14268 */ 14269var ResizeObserverController = /** @class */function () { 14270 /** 14271 * Creates a new instance of ResizeObserverController. 14272 * 14273 * @private 14274 */ 14275 function ResizeObserverController() { 14276 /** 14277 * Indicates whether DOM listeners have been added. 14278 * 14279 * @private {boolean} 14280 */ 14281 this.connected_ = false; 14282 /** 14283 * Tells that controller has subscribed for Mutation Events. 14284 * 14285 * @private {boolean} 14286 */ 14287 this.mutationEventsAdded_ = false; 14288 /** 14289 * Keeps reference to the instance of MutationObserver. 14290 * 14291 * @private {MutationObserver} 14292 */ 14293 this.mutationsObserver_ = null; 14294 /** 14295 * A list of connected observers. 14296 * 14297 * @private {Array<ResizeObserverSPI>} 14298 */ 14299 this.observers_ = []; 14300 this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); 14301 this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); 14302 } 14303 /** 14304 * Adds observer to observers list. 14305 * 14306 * @param {ResizeObserverSPI} observer - Observer to be added. 14307 * @returns {void} 14308 */ 14309 ResizeObserverController.prototype.addObserver = function (observer) { 14310 if (!~this.observers_.indexOf(observer)) { 14311 this.observers_.push(observer); 14312 } 14313 // Add listeners if they haven't been added yet. 14314 if (!this.connected_) { 14315 this.connect_(); 14316 } 14317 }; 14318 /** 14319 * Removes observer from observers list. 14320 * 14321 * @param {ResizeObserverSPI} observer - Observer to be removed. 14322 * @returns {void} 14323 */ 14324 ResizeObserverController.prototype.removeObserver = function (observer) { 14325 var observers = this.observers_; 14326 var index = observers.indexOf(observer); 14327 // Remove observer if it's present in registry. 14328 if (~index) { 14329 observers.splice(index, 1); 14330 } 14331 // Remove listeners if controller has no connected observers. 14332 if (!observers.length && this.connected_) { 14333 this.disconnect_(); 14334 } 14335 }; 14336 /** 14337 * Invokes the update of observers. It will continue running updates insofar 14338 * it detects changes. 14339 * 14340 * @returns {void} 14341 */ 14342 ResizeObserverController.prototype.refresh = function () { 14343 var changesDetected = this.updateObservers_(); 14344 // Continue running updates if changes have been detected as there might 14345 // be future ones caused by CSS transitions. 14346 if (changesDetected) { 14347 this.refresh(); 14348 } 14349 }; 14350 /** 14351 * Updates every observer from observers list and notifies them of queued 14352 * entries. 14353 * 14354 * @private 14355 * @returns {boolean} Returns "true" if any observer has detected changes in 14356 * dimensions of it's elements. 14357 */ 14358 ResizeObserverController.prototype.updateObservers_ = function () { 14359 // Collect observers that have active observations. 14360 var activeObservers = this.observers_.filter(function (observer) { 14361 return observer.gatherActive(), observer.hasActive(); 14362 }); 14363 // Deliver notifications in a separate cycle in order to avoid any 14364 // collisions between observers, e.g. when multiple instances of 14365 // ResizeObserver are tracking the same element and the callback of one 14366 // of them changes content dimensions of the observed target. Sometimes 14367 // this may result in notifications being blocked for the rest of observers.
vendor: 8,171 bytes, lines 14368-14606
14368 activeObservers.forEach(function (observer) { 14369 return observer.broadcastActive(); 14370 }); 14371 return activeObservers.length > 0; 14372 }; 14373 /** 14374 * Initializes DOM listeners. 14375 * 14376 * @private 14377 * @returns {void} 14378 */ 14379 ResizeObserverController.prototype.connect_ = function () { 14380 // Do nothing if running in a non-browser environment or if listeners 14381 // have been already added. 14382 if (!isBrowser || this.connected_) { 14383 return; 14384 } 14385 // Subscription to the "Transitionend" event is used as a workaround for 14386 // delayed transitions. This way it's possible to capture at least the 14387 // final state of an element. 14388 document.addEventListener('transitionend', this.onTransitionEnd_); 14389 window.addEventListener('resize', this.refresh); 14390 if (mutationObserverSupported) { 14391 this.mutationsObserver_ = new MutationObserver(this.refresh); 14392 this.mutationsObserver_.observe(document, { 14393 attributes: true, 14394 childList: true, 14395 characterData: true, 14396 subtree: true 14397 }); 14398 } else { 14399 document.addEventListener('DOMSubtreeModified', this.refresh); 14400 this.mutationEventsAdded_ = true; 14401 } 14402 this.connected_ = true; 14403 }; 14404 /** 14405 * Removes DOM listeners. 14406 * 14407 * @private 14408 * @returns {void} 14409 */ 14410 ResizeObserverController.prototype.disconnect_ = function () { 14411 // Do nothing if running in a non-browser environment or if listeners 14412 // have been already removed. 14413 if (!isBrowser || !this.connected_) { 14414 return; 14415 } 14416 document.removeEventListener('transitionend', this.onTransitionEnd_); 14417 window.removeEventListener('resize', this.refresh); 14418 if (this.mutationsObserver_) { 14419 this.mutationsObserver_.disconnect(); 14420 } 14421 if (this.mutationEventsAdded_) { 14422 document.removeEventListener('DOMSubtreeModified', this.refresh); 14423 } 14424 this.mutationsObserver_ = null; 14425 this.mutationEventsAdded_ = false; 14426 this.connected_ = false; 14427 }; 14428 /** 14429 * "Transitionend" event handler. 14430 * 14431 * @private 14432 * @param {TransitionEvent} event 14433 * @returns {void} 14434 */ 14435 ResizeObserverController.prototype.onTransitionEnd_ = function (_a) { 14436 var _b = _a.propertyName, 14437 propertyName = _b === void 0 ? '' : _b; 14438 // Detect whether transition may affect dimensions of an element. 14439 var isReflowProperty = transitionKeys.some(function (key) { 14440 return !!~propertyName.indexOf(key); 14441 }); 14442 if (isReflowProperty) { 14443 this.refresh(); 14444 } 14445 }; 14446 /** 14447 * Returns instance of the ResizeObserverController. 14448 * 14449 * @returns {ResizeObserverController} 14450 */ 14451 ResizeObserverController.getInstance = function () { 14452 if (!this.instance_) { 14453 this.instance_ = new ResizeObserverController(); 14454 } 14455 return this.instance_; 14456 }; 14457 /** 14458 * Holds reference to the controller's instance. 14459 * 14460 * @private {ResizeObserverController} 14461 */ 14462 ResizeObserverController.instance_ = null; 14463 return ResizeObserverController; 14464}(); 14465 14466/** 14467 * Defines non-writable/enumerable properties of the provided target object. 14468 * 14469 * @param {Object} target - Object for which to define properties. 14470 * @param {Object} props - Properties to be defined. 14471 * @returns {Object} Target object. 14472 */ 14473var defineConfigurable = function (target, props) { 14474 for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) { 14475 var key = _a[_i]; 14476 Object.defineProperty(target, key, { 14477 value: props[key], 14478 enumerable: false, 14479 writable: false, 14480 configurable: true 14481 }); 14482 } 14483 return target; 14484}; 14485 14486/** 14487 * Returns the global object associated with provided element. 14488 * 14489 * @param {Object} target 14490 * @returns {Object} 14491 */ 14492var getWindowOf = function (target) { 14493 // Assume that the element is an instance of Node, which means that it 14494 // has the "ownerDocument" property from which we can retrieve a 14495 // corresponding global object. 14496 var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; 14497 // Return the local global object if it's not possible extract one from 14498 // provided element. 14499 return ownerGlobal || global$1; 14500}; 14501 14502// Placeholder of an empty content rectangle. 14503var emptyRect = createRectInit(0, 0, 0, 0); 14504/** 14505 * Converts provided string to a number. 14506 * 14507 * @param {number|string} value 14508 * @returns {number} 14509 */ 14510function toFloat(value) { 14511 return parseFloat(value) || 0; 14512} 14513/** 14514 * Extracts borders size from provided styles. 14515 * 14516 * @param {CSSStyleDeclaration} styles 14517 * @param {...string} positions - Borders positions (top, right, ...) 14518 * @returns {number} 14519 */ 14520function getBordersSize(styles) { 14521 var positions = []; 14522 for (var _i = 1; _i < arguments.length; _i++) { 14523 positions[_i - 1] = arguments[_i]; 14524 } 14525 return positions.reduce(function (size, position) { 14526 var value = styles['border-' + position + '-width']; 14527 return size + toFloat(value); 14528 }, 0); 14529} 14530/** 14531 * Extracts paddings sizes from provided styles. 14532 * 14533 * @param {CSSStyleDeclaration} styles 14534 * @returns {Object} Paddings box. 14535 */ 14536function getPaddings(styles) { 14537 var positions = ['top', 'right', 'bottom', 'left']; 14538 var paddings = {}; 14539 for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { 14540 var position = positions_1[_i]; 14541 var value = styles['padding-' + position]; 14542 paddings[position] = toFloat(value); 14543 } 14544 return paddings; 14545} 14546/** 14547 * Calculates content rectangle of provided SVG element. 14548 * 14549 * @param {SVGGraphicsElement} target - Element content rectangle of which needs 14550 * to be calculated. 14551 * @returns {DOMRectInit} 14552 */ 14553function getSVGContentRect(target) { 14554 var bbox = target.getBBox(); 14555 return createRectInit(0, 0, bbox.width, bbox.height); 14556} 14557/** 14558 * Calculates content rectangle of provided HTMLElement. 14559 * 14560 * @param {HTMLElement} target - Element for which to calculate the content rectangle. 14561 * @returns {DOMRectInit} 14562 */ 14563function getHTMLElementContentRect(target) { 14564 // Client width & height properties can't be 14565 // used exclusively as they provide rounded values. 14566 var clientWidth = target.clientWidth, 14567 clientHeight = target.clientHeight; 14568 // By this condition we can catch all non-replaced inline, hidden and 14569 // detached elements. Though elements with width & height properties less 14570 // than 0.5 will be discarded as well. 14571 // 14572 // Without it we would need to implement separate methods for each of 14573 // those cases and it's not possible to perform a precise and performance 14574 // effective test for hidden elements. E.g. even jQuery's ':visible' filter 14575 // gives wrong results for elements with width & height less than 0.5. 14576 if (!clientWidth && !clientHeight) { 14577 return emptyRect; 14578 } 14579 var styles = getWindowOf(target).getComputedStyle(target); 14580 var paddings = getPaddings(styles); 14581 var horizPad = paddings.left + paddings.right; 14582 var vertPad = paddings.top + paddings.bottom; 14583 // Computed styles of width & height are being used because they are the 14584 // only dimensions available to JS that contain non-rounded values. It could 14585 // be possible to utilize the getBoundingClientRect if only it's data wasn't 14586 // affected by CSS transformations let alone paddings, borders and scroll bars. 14587 var width = toFloat(styles.width), 14588 height = toFloat(styles.height); 14589 // Width & height include paddings and borders when the 'border-box' box 14590 // model is applied (except for IE). 14591 if (styles.boxSizing === 'border-box') { 14592 // Following conditions are required to handle Internet Explorer which 14593 // doesn't include paddings and borders to computed CSS dimensions. 14594 // 14595 // We can say that if CSS dimensions + paddings are equal to the "client" 14596 // properties then it's either IE, and thus we don't need to subtract 14597 // anything, or an element merely doesn't have paddings/borders styles. 14598 if (Math.round(width + horizPad) !== clientWidth) { 14599 width -= getBordersSize(styles, 'left', 'right') + horizPad; 14600 } 14601 if (Math.round(height + vertPad) !== clientHeight) { 14602 height -= getBordersSize(styles, 'top', 'bottom') + vertPad; 14603 } 14604 } 14605 // Following steps can't be applied to the document's root element as its 14606 // client[Width/Height] properties represent viewport area of the window.
vendor: 6,521 bytes, lines 14607-14802
14607 // Besides, it's as well not necessary as the <html> itself neither has 14608 // rendered scroll bars nor it can be clipped. 14609 if (!isDocumentElement(target)) { 14610 // In some browsers (only in Firefox, actually) CSS width & height 14611 // include scroll bars size which can be removed at this step as scroll 14612 // bars are the only difference between rounded dimensions + paddings 14613 // and "client" properties, though that is not always true in Chrome. 14614 var vertScrollbar = Math.round(width + horizPad) - clientWidth; 14615 var horizScrollbar = Math.round(height + vertPad) - clientHeight; 14616 // Chrome has a rather weird rounding of "client" properties. 14617 // E.g. for an element with content width of 314.2px it sometimes gives 14618 // the client width of 315px and for the width of 314.7px it may give 14619 // 314px. And it doesn't happen all the time. So just ignore this delta 14620 // as a non-relevant. 14621 if (Math.abs(vertScrollbar) !== 1) { 14622 width -= vertScrollbar; 14623 } 14624 if (Math.abs(horizScrollbar) !== 1) { 14625 height -= horizScrollbar; 14626 } 14627 } 14628 return createRectInit(paddings.left, paddings.top, width, height); 14629} 14630/** 14631 * Checks whether provided element is an instance of the SVGGraphicsElement. 14632 * 14633 * @param {Element} target - Element to be checked. 14634 * @returns {boolean} 14635 */ 14636var isSVGGraphicsElement = function () { 14637 // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement 14638 // interface. 14639 if (typeof SVGGraphicsElement !== 'undefined') { 14640 return function (target) { 14641 return target instanceof getWindowOf(target).SVGGraphicsElement; 14642 }; 14643 } 14644 // If it's so, then check that element is at least an instance of the 14645 // SVGElement and that it has the "getBBox" method. 14646 // eslint-disable-next-line no-extra-parens 14647 return function (target) { 14648 return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function'; 14649 }; 14650}(); 14651/** 14652 * Checks whether provided element is a document element (<html>). 14653 * 14654 * @param {Element} target - Element to be checked. 14655 * @returns {boolean} 14656 */ 14657function isDocumentElement(target) { 14658 return target === getWindowOf(target).document.documentElement; 14659} 14660/** 14661 * Calculates an appropriate content rectangle for provided html or svg element. 14662 * 14663 * @param {Element} target - Element content rectangle of which needs to be calculated. 14664 * @returns {DOMRectInit} 14665 */ 14666function getContentRect(target) { 14667 if (!isBrowser) { 14668 return emptyRect; 14669 } 14670 if (isSVGGraphicsElement(target)) { 14671 return getSVGContentRect(target); 14672 } 14673 return getHTMLElementContentRect(target); 14674} 14675/** 14676 * Creates rectangle with an interface of the DOMRectReadOnly. 14677 * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly 14678 * 14679 * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions. 14680 * @returns {DOMRectReadOnly} 14681 */ 14682function createReadOnlyRect(_a) { 14683 var x = _a.x, 14684 y = _a.y, 14685 width = _a.width, 14686 height = _a.height; 14687 // If DOMRectReadOnly is available use it as a prototype for the rectangle. 14688 var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object; 14689 var rect = Object.create(Constr.prototype); 14690 // Rectangle's properties are not writable and non-enumerable. 14691 defineConfigurable(rect, { 14692 x: x, 14693 y: y, 14694 width: width, 14695 height: height, 14696 top: y, 14697 right: x + width, 14698 bottom: height + y, 14699 left: x 14700 }); 14701 return rect; 14702} 14703/** 14704 * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates. 14705 * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit 14706 * 14707 * @param {number} x - X coordinate. 14708 * @param {number} y - Y coordinate. 14709 * @param {number} width - Rectangle's width. 14710 * @param {number} height - Rectangle's height. 14711 * @returns {DOMRectInit} 14712 */ 14713function createRectInit(x, y, width, height) { 14714 return { 14715 x: x, 14716 y: y, 14717 width: width, 14718 height: height 14719 }; 14720} 14721 14722/** 14723 * Class that is responsible for computations of the content rectangle of 14724 * provided DOM element and for keeping track of it's changes. 14725 */ 14726var ResizeObservation = /** @class */function () { 14727 /** 14728 * Creates an instance of ResizeObservation. 14729 * 14730 * @param {Element} target - Element to be observed. 14731 */ 14732 function ResizeObservation(target) { 14733 /** 14734 * Broadcasted width of content rectangle. 14735 * 14736 * @type {number} 14737 */ 14738 this.broadcastWidth = 0; 14739 /** 14740 * Broadcasted height of content rectangle. 14741 * 14742 * @type {number} 14743 */ 14744 this.broadcastHeight = 0; 14745 /** 14746 * Reference to the last observed content rectangle. 14747 * 14748 * @private {DOMRectInit} 14749 */ 14750 this.contentRect_ = createRectInit(0, 0, 0, 0); 14751 this.target = target; 14752 } 14753 /** 14754 * Updates content rectangle and tells whether it's width or height properties 14755 * have changed since the last broadcast. 14756 * 14757 * @returns {boolean} 14758 */ 14759 ResizeObservation.prototype.isActive = function () { 14760 var rect = getContentRect(this.target); 14761 this.contentRect_ = rect; 14762 return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight; 14763 }; 14764 /** 14765 * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data 14766 * from the corresponding properties of the last observed content rectangle. 14767 * 14768 * @returns {DOMRectInit} Last observed content rectangle. 14769 */ 14770 ResizeObservation.prototype.broadcastRect = function () { 14771 var rect = this.contentRect_; 14772 this.broadcastWidth = rect.width; 14773 this.broadcastHeight = rect.height; 14774 return rect; 14775 }; 14776 return ResizeObservation; 14777}(); 14778var ResizeObserverEntry = /** @class */function () { 14779 /** 14780 * Creates an instance of ResizeObserverEntry. 14781 * 14782 * @param {Element} target - Element that is being observed. 14783 * @param {DOMRectInit} rectInit - Data of the element's content rectangle. 14784 */ 14785 function ResizeObserverEntry(target, rectInit) { 14786 var contentRect = createReadOnlyRect(rectInit); 14787 // According to the specification following properties are not writable 14788 // and are also not enumerable in the native implementation. 14789 // 14790 // Property accessors are not being used as they'd require to define a 14791 // private WeakMap storage which may cause memory leaks in browsers that 14792 // don't support this type of collections. 14793 defineConfigurable(this, { 14794 target: target, 14795 contentRect: contentRect 14796 }); 14797 } 14798 return ResizeObserverEntry; 14799}(); 14800var ResizeObserverSPI = /** @class */function () { 14801 /** 14802 * Creates a new instance of ResizeObserver.
14803 * 14804 * @param {ResizeObserverCallback} callback - Callback function that is invoked 14805 * when one of the observed elements changes it's content dimensions. 14806 * @param {ResizeObserverController} controller - Controller instance which 14807 * is responsible for the updates of observer. 14808 * @param {ResizeObserver} callbackCtx - Reference to the public 14809 * ResizeObserver instance which will be passed to callback function. 14810 */ 14811 function ResizeObserverSPI(callback, controller, callbackCtx) { 14812 /** 14813 * Collection of resize observations that have detected changes in dimensions 14814 * of elements. 14815 * 14816 * @private {Array<ResizeObservation>} 14817 */ 14818 this.activeObservations_ = []; 14819 /** 14820 * Registry of the ResizeObservation instances. 14821 * 14822 * @private {Map<Element, ResizeObservation>} 14823 */ 14824 this.observations_ = new MapShim(); 14825 if (typeof callback !== 'function') { 14826 throw new TypeError('The callback provided as parameter 1 is not a function.'); 14827 } 14828 this.callback_ = callback; 14829 this.controller_ = controller; 14830 this.callbackCtx_ = callbackCtx; 14831 } 14832 /** 14833 * Starts observing provided element. 14834 * 14835 * @param {Element} target - Element to be observed. 14836 * @returns {void} 14837 */ 14838 ResizeObserverSPI.prototype.observe = function (target) { 14839 if (!arguments.length) { 14840 throw new TypeError('1 argument required, but only 0 present.'); 14841 } 14842 // Do nothing if current environment doesn't have the Element interface. 14843 if (typeof Element === 'undefined' || !(Element instanceof Object)) { 14844 return; 14845 } 14846 if (!(target instanceof getWindowOf(target).Element)) { 14847 throw new TypeError('parameter 1 is not of type "Element".'); 14848 } 14849 var observations = this.observations_; 14850 // Do nothing if element is already being observed. 14851 if (observations.has(target)) { 14852 return; 14853 } 14854 observations.set(target, new ResizeObservation(target)); 14855 this.controller_.addObserver(this); 14856 // Force the update of observations. 14857 this.controller_.refresh(); 14858 }; 14859 /** 14860 * Stops observing provided element. 14861 * 14862 * @param {Element} target - Element to stop observing. 14863 * @returns {void} 14864 */ 14865 ResizeObserverSPI.prototype.unobserve = function (target) { 14866 if (!arguments.length) { 14867 throw new TypeError('1 argument required, but only 0 present.'); 14868 } 14869 // Do nothing if current environment doesn't have the Element interface. 14870 if (typeof Element === 'undefined' || !(Element instanceof Object)) { 14871 return; 14872 } 14873 if (!(target instanceof getWindowOf(target).Element)) { 14874 throw new TypeError('parameter 1 is not of type "Element".'); 14875 } 14876 var observations = this.observations_; 14877 // Do nothing if element is not being observed. 14878 if (!observations.has(target)) { 14879 return; 14880 } 14881 observations.delete(target); 14882 if (!observations.size) { 14883 this.controller_.removeObserver(this); 14884 } 14885 }; 14886 /** 14887 * Stops observing all elements. 14888 * 14889 * @returns {void} 14890 */ 14891 ResizeObserverSPI.prototype.disconnect = function () { 14892 this.clearActive(); 14893 this.observations_.clear(); 14894 this.controller_.removeObserver(this); 14895 }; 14896 /** 14897 * Collects observation instances the associated element of which has changed 14898 * it's content rectangle. 14899 * 14900 * @returns {void} 14901 */ 14902 ResizeObserverSPI.prototype.gatherActive = function () { 14903 var _this = this; 14904 this.clearActive(); 14905 this.observations_.forEach(function (observation) { 14906 if (observation.isActive()) { 14907 _this.activeObservations_.push(observation); 14908 } 14909 }); 14910 }; 14911 /** 14912 * Invokes initial callback function with a list of ResizeObserverEntry 14913 * instances collected from active resize observations. 14914 * 14915 * @returns {void} 14916 */ 14917 ResizeObserverSPI.prototype.broadcastActive = function () { 14918 // Do nothing if observer doesn't have active observations. 14919 if (!this.hasActive()) { 14920 return; 14921 } 14922 var ctx = this.callbackCtx_; 14923 // Create ResizeObserverEntry instance for every active observation. 14924 var entries = this.activeObservations_.map(function (observation) { 14925 return new ResizeObserverEntry(observation.target, observation.broadcastRect()); 14926 }); 14927 this.callback_.call(ctx, entries, ctx); 14928 this.clearActive(); 14929 }; 14930 /** 14931 * Clears the collection of active observations. 14932 * 14933 * @returns {void} 14934 */ 14935 ResizeObserverSPI.prototype.clearActive = function () { 14936 this.activeObservations_.splice(0); 14937 }; 14938 /** 14939 * Tells whether observer has active observations. 14940 * 14941 * @returns {boolean} 14942 */ 14943 ResizeObserverSPI.prototype.hasActive = function () { 14944 return this.activeObservations_.length > 0; 14945 }; 14946 return ResizeObserverSPI; 14947}(); 14948 14949// Registry of internal observers. If WeakMap is not available use current shim 14950// for the Map collection as it has all required methods and because WeakMap 14951// can't be fully polyfilled anyway. 14952var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim(); 14953/**
14954 * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation 14955 * exposing only those methods and properties that are defined in the spec. 14956 */ 14957var ResizeObserver = /** @class */function () { 14958 /** 14959 * Creates a new instance of ResizeObserver. 14960 * 14961 * @param {ResizeObserverCallback} callback - Callback that is invoked when 14962 * dimensions of the observed elements change. 14963 */ 14964 function ResizeObserver(callback) { 14965 if (!(this instanceof ResizeObserver)) { 14966 throw new TypeError('Cannot call a class as a function.'); 14967 } 14968 if (!arguments.length) { 14969 throw new TypeError('1 argument required, but only 0 present.'); 14970 } 14971 var controller = ResizeObserverController.getInstance(); 14972 var observer = new ResizeObserverSPI(callback, controller, this); 14973 observers.set(this, observer); 14974 } 14975 return ResizeObserver; 14976}(); 14977// Expose public methods of ResizeObserver. 14978['observe', 'unobserve', 'disconnect'].forEach(function (method) { 14979 ResizeObserver.prototype[method] = function () { 14980 var _a; 14981 return (_a = observers.get(this))[method].apply(_a, arguments); 14982 }; 14983}); 14984var index = function () { 14985 // Export existing implementation if available. 14986 if (typeof global$1.ResizeObserver !== 'undefined') { 14987 return global$1.ResizeObserver; 14988 } 14989 return ResizeObserver; 14990}(); 14991/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (index); 14992 14993/***/ }), 14994 14995/***/ 4387: 14996/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 14997 14998"use strict"; 14999 15000 15001Object.defineProperty(exports, "__esModule", ({ 15002 value: true 15003})); 15004exports.getBindingDictionary = exports.createMockRequest = exports.plan = void 0; 15005var binding_count_1 = __webpack_require__(4081); 15006var ERROR_MSGS = __webpack_require__(7718); 15007var literal_types_1 = __webpack_require__(7802); 15008var METADATA_KEY = __webpack_require__(4725); 15009var exceptions_1 = __webpack_require__(8229); 15010var serialization_1 = __webpack_require__(7911); 15011var context_1 = __webpack_require__(8528); 15012var metadata_1 = __webpack_require__(8390); 15013var plan_1 = __webpack_require__(3104); 15014var reflection_utils_1 = __webpack_require__(9592); 15015var request_1 = __webpack_require__(9034); 15016var target_1 = __webpack_require__(154); 15017function getBindingDictionary(cntnr) { 15018 return cntnr._bindingDictionary; 15019} 15020exports.getBindingDictionary = getBindingDictionary; 15021function _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) { 15022 var metadataKey = isMultiInject ? METADATA_KEY.MULTI_INJECT_TAG : METADATA_KEY.INJECT_TAG; 15023 var injectMetadata = new metadata_1.Metadata(metadataKey, serviceIdentifier); 15024 var target = new target_1.Target(targetType, name, serviceIdentifier, injectMetadata); 15025 if (key !== undefined) { 15026 var tagMetadata = new metadata_1.Metadata(key, value); 15027 target.metadata.push(tagMetadata); 15028 } 15029 return target; 15030} 15031function _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) { 15032 var bindings = getBindings(context.container, target.serviceIdentifier); 15033 var activeBindings = []; 15034 if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable && context.container.options.autoBindInjectable && typeof target.serviceIdentifier === "function" && metadataReader.getConstructorMetadata(target.serviceIdentifier).compilerGeneratedMetadata) { 15035 context.container.bind(target.serviceIdentifier).toSelf(); 15036 bindings = getBindings(context.container, target.serviceIdentifier); 15037 } 15038 if (!avoidConstraints) { 15039 activeBindings = bindings.filter(function (binding) { 15040 var request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target); 15041 return binding.constraint(request); 15042 }); 15043 } else { 15044 activeBindings = bindings; 15045 } 15046 _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container); 15047 return activeBindings; 15048} 15049function _validateActiveBindingCount(serviceIdentifier, bindings, target, container) { 15050 switch (bindings.length) { 15051 case binding_count_1.BindingCount.NoBindingsAvailable: 15052 if (target.isOptional()) { 15053 return bindings; 15054 } else { 15055 var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier); 15056 var msg = ERROR_MSGS.NOT_REGISTERED; 15057 msg += serialization_1.listMetadataForTarget(serviceIdentifierString, target); 15058 msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings); 15059 throw new Error(msg); 15060 } 15061 case binding_count_1.BindingCount.OnlyOneBindingAvailable: 15062 if (!target.isArray()) { 15063 return bindings; 15064 } 15065 case binding_count_1.BindingCount.MultipleBindingsAvailable: 15066 default: 15067 if (!target.isArray()) { 15068 var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier); 15069 var msg = ERROR_MSGS.AMBIGUOUS_MATCH + " " + serviceIdentifierString; 15070 msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings); 15071 throw new Error(msg); 15072 } else { 15073 return bindings; 15074 } 15075 } 15076} 15077function _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) { 15078 var activeBindings; 15079 var childRequest; 15080 if (parentRequest === null) { 15081 activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target); 15082 childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target); 15083 var thePlan = new plan_1.Plan(context, childRequest); 15084 context.addPlan(thePlan); 15085 } else { 15086 activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target); 15087 childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target); 15088 }
15089 activeBindings.forEach(function (binding) { 15090 var subChildRequest = null; 15091 if (target.isArray()) { 15092 subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target); 15093 } else { 15094 if (binding.cache) { 15095 return; 15096 } 15097 subChildRequest = childRequest; 15098 } 15099 if (binding.type === literal_types_1.BindingTypeEnum.Instance && binding.implementationType !== null) { 15100 var dependencies = reflection_utils_1.getDependencies(metadataReader, binding.implementationType); 15101 if (!context.container.options.skipBaseClassChecks) { 15102 var baseClassDependencyCount = reflection_utils_1.getBaseClassDependencyCount(metadataReader, binding.implementationType); 15103 if (dependencies.length < baseClassDependencyCount) { 15104 var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH(reflection_utils_1.getFunctionName(binding.implementationType)); 15105 throw new Error(error); 15106 } 15107 } 15108 dependencies.forEach(function (dependency) { 15109 _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency); 15110 }); 15111 } 15112 }); 15113} 15114function getBindings(container, serviceIdentifier) { 15115 var bindings = []; 15116 var bindingDictionary = getBindingDictionary(container); 15117 if (bindingDictionary.hasKey(serviceIdentifier)) { 15118 bindings = bindingDictionary.get(serviceIdentifier); 15119 } else if (container.parent !== null) { 15120 bindings = getBindings(container.parent, serviceIdentifier); 15121 } 15122 return bindings; 15123} 15124function plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) { 15125 if (avoidConstraints === void 0) { 15126 avoidConstraints = false; 15127 } 15128 var context = new context_1.Context(container); 15129 var target = _createTarget(isMultiInject, targetType, serviceIdentifier, "", key, value); 15130 try { 15131 _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target); 15132 return context; 15133 } catch (error) { 15134 if (exceptions_1.isStackOverflowExeption(error)) { 15135 if (context.plan) { 15136 serialization_1.circularDependencyToException(context.plan.rootRequest); 15137 } 15138 } 15139 throw error; 15140 } 15141} 15142exports.plan = plan; 15143function createMockRequest(container, serviceIdentifier, key, value) { 15144 var target = new target_1.Target(literal_types_1.TargetTypeEnum.Variable, "", serviceIdentifier, new metadata_1.Metadata(key, value)); 15145 var context = new context_1.Context(container); 15146 var request = new request_1.Request(serviceIdentifier, context, null, [], target); 15147 return request; 15148} 15149exports.createMockRequest = createMockRequest; 15150 15151/***/ }), 15152 15153/***/ 4423: 15154/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15155 15156"use strict"; 15157/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15158/* harmony export */ A: () => (/* binding */ SpaHelpers) 15159/* harmony export */ }); 15160class SpaHelpers { 15161 static ParseHtmlAttrs(attrs) { 15162 const attrsArray = attrs.match(/[A-za-z0-9\-]*=([\']([^\s\']|[ ])*[\']|[\"]([^\s\"]|[ ])*[\"])/g); 15163 const attrsObj = {}; 15164 attrsArray === null || attrsArray === void 0 ? void 0 : attrsArray.forEach(attr => { 15165 const attrKey = attr.match(/[A-za-z0-9\-]*=/)[0].split("=")[0]; 15166 const attrValue = attr.match(/=([\']([^\s\']|[ ])*[\']|[\"]([^\s\"]|[ ])*[\"])/)[0]; 15167 attrsObj[attrKey] = attrValue.substring(2, attrValue.length - 1); 15168 }); 15169 return attrsObj; 15170 } 15171 static loadScript(url) { 15172 const script = document.createElement('script'); 15173 script.src = url; 15174 document.body.appendChild(script); 15175 } 15176 static requiredAsterisk(isRequired) { 15177 return isRequired ? "*" : ""; 15178 } 15179 static requiredAttribute(isRequired) { 15180 return isRequired ? true : null; 15181 } 15182} 15183 15184 15185/***/ }), 15186 15187/***/ 4478: 15188/***/ (() => { 15189 15190"use strict"; 15191 15192 15193 15194/***/ }), 15195 15196/***/ 4506: 15197/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 15198 15199// style-loader: Adds some css to the DOM by adding a <style> tag 15200 15201// load the styles 15202var content = __webpack_require__(8043);
15203if(content.__esModule) content = content.default; 15204if(typeof content === 'string') content = [[module.id, content, '']]; 15205if(content.locals) module.exports = content.locals; 15206// add the styles to the DOM 15207var add = (__webpack_require__(8449)/* ["default"] */ .A) 15208var update = add("490f52aa", content, false, {}); 15209// Hot Module Replacement 15210if(false) {} 15211 15212/***/ }), 15213 15214/***/ 4533: 15215/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 15216 15217"use strict"; 15218 15219 15220Object.defineProperty(exports, "__esModule", ({ 15221 value: true 15222})); 15223exports.BindingWhenSyntax = void 0; 15224var binding_on_syntax_1 = __webpack_require__(5078); 15225var constraint_helpers_1 = __webpack_require__(3884); 15226var BindingWhenSyntax = function () { 15227 function BindingWhenSyntax(binding) { 15228 this._binding = binding; 15229 } 15230 BindingWhenSyntax.prototype.when = function (constraint) { 15231 this._binding.constraint = constraint; 15232 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15233 }; 15234 BindingWhenSyntax.prototype.whenTargetNamed = function (name) { 15235 this._binding.constraint = constraint_helpers_1.namedConstraint(name); 15236 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15237 }; 15238 BindingWhenSyntax.prototype.whenTargetIsDefault = function () { 15239 this._binding.constraint = function (request) { 15240 var targetIsDefault = request.target !== null && !request.target.isNamed() && !request.target.isTagged(); 15241 return targetIsDefault; 15242 }; 15243 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15244 }; 15245 BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) { 15246 this._binding.constraint = constraint_helpers_1.taggedConstraint(tag)(value); 15247 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15248 }; 15249 BindingWhenSyntax.prototype.whenInjectedInto = function (parent) { 15250 this._binding.constraint = function (request) { 15251 return constraint_helpers_1.typeConstraint(parent)(request.parentRequest); 15252 }; 15253 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15254 }; 15255 BindingWhenSyntax.prototype.whenParentNamed = function (name) { 15256 this._binding.constraint = function (request) { 15257 return constraint_helpers_1.namedConstraint(name)(request.parentRequest); 15258 }; 15259 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15260 }; 15261 BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) { 15262 this._binding.constraint = function (request) { 15263 return constraint_helpers_1.taggedConstraint(tag)(value)(request.parentRequest); 15264 }; 15265 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15266 }; 15267 BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) { 15268 this._binding.constraint = function (request) { 15269 return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor)); 15270 }; 15271 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15272 }; 15273 BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) { 15274 this._binding.constraint = function (request) { 15275 return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor)); 15276 }; 15277 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15278 }; 15279 BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) { 15280 this._binding.constraint = function (request) { 15281 return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name)); 15282 }; 15283 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15284 }; 15285 BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) { 15286 this._binding.constraint = function (request) { 15287 return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name)); 15288 }; 15289 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15290 }; 15291 BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) { 15292 this._binding.constraint = function (request) { 15293 return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value)); 15294 }; 15295 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15296 };
15297 BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) { 15298 this._binding.constraint = function (request) { 15299 return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value)); 15300 }; 15301 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15302 }; 15303 BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) { 15304 this._binding.constraint = function (request) { 15305 return constraint_helpers_1.traverseAncerstors(request, constraint); 15306 }; 15307 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15308 }; 15309 BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) { 15310 this._binding.constraint = function (request) { 15311 return !constraint_helpers_1.traverseAncerstors(request, constraint); 15312 }; 15313 return new binding_on_syntax_1.BindingOnSyntax(this._binding); 15314 }; 15315 return BindingWhenSyntax; 15316}(); 15317exports.BindingWhenSyntax = BindingWhenSyntax; 15318 15319/***/ }), 15320 15321/***/ 4567: 15322/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15323 15324"use strict"; 15325/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15326/* harmony export */ C: () => (/* binding */ VehicleImageCarousel) 15327/* harmony export */ }); 15328/* unused harmony export Direction */ 15329/* harmony import */ var _utilities_performanceHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9185); 15330var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 15331 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 15332 return new (P || (P = Promise))(function (resolve, reject) { 15333 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 15334 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 15335 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 15336 step((generator = generator.apply(thisArg, _arguments || [])).next()); 15337 }); 15338}; 15339 15340var Direction; 15341(function (Direction) { 15342 Direction[Direction["LeftRight"] = 0] = "LeftRight"; 15343 Direction[Direction["UpDown"] = 1] = "UpDown"; 15344})(Direction || (Direction = {})); 15345var CarouselItemType; 15346(function (CarouselItemType) { 15347 CarouselItemType["image"] = "image"; 15348 CarouselItemType["video"] = "video"; 15349 CarouselItemType["interior360"] = "interior360"; 15350 CarouselItemType["spincar"] = "spincar"; 15351}
15351)(CarouselItemType || (CarouselItemType = {})); 15352/* 15353 * Description: VehicleImageCarousel is a carousel component that consists of 15354 * both mobile and desktop views. 15355 * 15356 * carouselParent: wrapper element that contains the entire carousel 15357 * rootClassName: the classname for the hero-images. Default: hero-carousel 15358 */ 15359class VehicleImageCarousel { 15360 constructor(carouselParent, rootClassName, thumbnailDesktopScrollContainer, thumbnailDesktopScrollDirection, thumbnailMobileScrollableContainer, thumbnailMobileScrollDirection, carouselItemsContainerWidth) { 15361 var _a, _b; 15362 this._buttonClassName = ""; 15363 this._carouselItemContainer = "hero-carousel__items"; 15364 this._currentIndex = 0; 15365 this._carouselScroll = { 15366 isMouseDown: false, 15367 isScrolling: false, 15368 x1: 0, 15369 x2: 0 15370 }; 15371 this._selectedThumbnailClasses = ["border-cta", "thumbnail--selected"]; 15372 this._hiddenClass = "hidden"; 15373 this._touchSwipe = false; 15374 this.scrollSlides = (elem) => { 15375 var _a, _b; 15376 const slideIndex = parseInt((_b = (_a = elem.dataset) === null || _a === void 0 ? void 0 : _a.carouselIndex) !== null && _b !== void 0 ? _b : "0"); 15377 if (this._currentIndex !== slideIndex) { 15378 this.goToSlide(slideIndex, this._touchSwipe); 15379 } 15380 }; 15381 this.selectThumbnail = (selected) => __awaiter(this, void 0, void 0, function* () { 15382 this.observeHeroImageScrolling(false); 15383 const slideIndex = Array.from(selected.parentElement.querySelectorAll(".thumbnail")).indexOf(selected); 15384 yield this.goToSlide(slideIndex, false); 15385 //give some time for the smooth scrolling to finish so we don"t 15386 //prematurely fire observer upates when the thumbnails trigger a 15387 //scroll of the hero images 15388 window.setTimeout(() => { 15389 this.observeHeroImageScrolling(true); 15390 }, 1000); 15391 }); 15392 /* TEMPORARY - only initialize if carousel is not in SPA (SPA component has its own TS) */ 15393 const isCosmosSpa = (_b = (_a = document.querySelector('.hero-carousel')) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.contains('hero-carousel--component'); 15394 if (!isCosmosSpa) { 15395 this.initialize(carouselParent, rootClassName, thumbnailDesktopScrollContainer, thumbnailDesktopScrollDirection, thumbnailMobileScrollableContainer, thumbnailMobileScrollDirection, carouselItemsContainerWidth); 15396 } 15397 } 15398 initialize(carouselParent, rootClassName, thumbnailDesktopScrollContainer, thumbnailDesktopScrollDirection, thumbnailMobileScrollableContainer, thumbnailMobileScrollDirection, carouselItemsContainerWidth) { 15399 return __awaiter(this, void 0, void 0, function* () { 15400 //setup scrolling for related thumbnails 15401 this._desktopThumbsScrollable = thumbnailDesktopScrollContainer ? true : false; 15402 this._mobileThumbsScrollable = thumbnailMobileScrollableContainer ? true : false; 15403 this._thumbnailDesktopScrollContainer = thumbnailDesktopScrollContainer; 15404 this._thumbnailDesktopScrollDirection = thumbnailDesktopScrollDirection; 15405 this._thumbnailMobileScrollableContainer = thumbnailMobileScrollableContainer; 15406 this._thumbnailMobileScrollDirection = thumbnailMobileScrollDirection; 15407 this.carouselParent = carouselParent !== null && carouselParent !== void 0 ? carouselParent : document.querySelector("body"); 15408 this.rootClassName = rootClassName !== null && rootClassName !== void 0 ? rootClassName : "hero-carousel"; 15409 yield this.getElements(carouselItemsContainerWidth); 15410 this._scrollX = 0; 15411 if (this._carouselImageCount === 0 && this._controls) { 15412 this._controls.classList.add(this._hiddenClass); 15413 } 15414 this.toggleControls(); 15415 this.addListeners(this, "mouse"); 15416 if (this._desktopThumbsScrollable) { 15417 this.addSelectedClasses(this._desktopThumbnails[this._currentIndex]); 15418 } 15419 if (this._mobileThumbsScrollable) {
15420 this.addSelectedClasses(this._mobileThumbnails[this._currentIndex]); 15421 } 15422 }); 15423 } 15424 getElements(containerWidth) { 15425 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; 15426 return __awaiter(this, void 0, void 0, function* () { 15427 this._carouselElement = (_a = this.carouselParent.querySelector(`.${this.rootClassName}`)) !== null && _a !== void 0 ? _a : null; 15428 this._counterBadgeElement = (_b = this.carouselParent.querySelector(".hero-carousel__image-counter")) !== null && _b !== void 0 ? _b : null; 15429 this._counter = (_c = this.carouselParent.querySelector(".image-counter__current")) !== null && _c !== void 0 ? _c : null; 15430 this._buttonClassName = `${this.rootClassName}__controls`; 15431 //carousel controls 15432 this._controls = (_d = this._carouselElement.querySelector(`.${this._buttonClassName}`)) !== null && _d !== void 0 ? _d : null; 15433 this._previousButton = this.getButton(this._controls, "previous"); 15434 this._nextButton = this.getButton(this._controls, "next"); 15435 this._items = this.carouselParent.querySelectorAll(`.${this.rootClassName} .${this.rootClassName}__item`); 15436 this._carouselImageCount = this._items.length; 15437 this._dots = this.carouselParent.querySelectorAll(".dot"); 15438 //mobile thumbnail controls 15439 this._thumbnailMobileScrollableContainerElem = (_e = this.carouselParent.querySelector(`.${this._thumbnailMobileScrollableContainer}`)) !== null && _e !== void 0 ? _e : this.carouselParent.querySelector(".thumbnails--mobile"); 15440 if (this._thumbnailMobileScrollableContainerElem) { 15441 this._mobileThumbnails = this._thumbnailMobileScrollableContainerElem.querySelectorAll(".thumbnail"); 15442 this._controlsThumbsMobile = (_f = this._thumbnailMobileScrollableContainerElem.querySelector(`.${this._buttonClassName}`)) !== null && _f !== void 0 ? _f : null; 15443 this._previousButtonThumbsMobile = this.getButton(this._controlsThumbsMobile, "previous"); 15444 this._nextButtonThumbsMobile = this.getButton(this._controlsThumbsMobile, "next"); 15445 } 15446 //desktop thumbnail controls 15447 this._thumbnailDesktopScrollContainerElem = (_g = this.carouselParent.querySelector(`.${this._thumbnailDesktopScrollContainer}`)) !== null && _g !== void 0 ? _g : this.carouselParent.querySelector(".thumbnails--desktop"); 15448 if (this._thumbnailDesktopScrollContainerElem) { 15449 this._desktopThumbnails = this._thumbnailDesktopScrollContainerElem.querySelectorAll(".thumbnail"); 15450 this._controlsThumbsDesktop = (_h = this._thumbnailDesktopScrollContainerElem.querySelector(`.${this._buttonClassName}`)) !== null && _h !== void 0 ? _h : null; 15451 this._previousButtonThumbsDesktop = this.getButton(this._controlsThumbsDesktop, "previous"); 15452 this._nextButtonThumbsDesktop = this.getButton(this._controlsThumbsDesktop, "next"); 15453 } 15454 //SITESAA-3503: if we don't pass in a container width, then calculate it. 15455 if (containerWidth) { 15456 this._containerWidth = containerWidth; 15457 } 15458 else { 15459 let containerElem = (_k = (_j = this.carouselParent) === null || _j === void 0 ? void 0 : _j.querySelector(`.${this._carouselItemContainer}`)) !== null && _k !== void 0 ? _k : null; 15460 yield (0,_utilities_performanceHelpers__WEBPACK_IMPORTED_MODULE_0__/* .doBeforeNextRepaint */ .L
15460)(() => { 15461 this._containerWidth = containerElem === null || containerElem === void 0 ? void 0 : containerElem.getBoundingClientRect().width; 15462 }); 15463 } 15464 }); 15465 } 15466 getButton(controls, buttonName) { 15467 var _a, _b; 15468 if (!controls) { 15469 return null; 15470 } 15471 let btn = (_a = controls.querySelector(`.${this._buttonClassName}--${buttonName}`)) !== null && _a !== void 0 ? _a : null; 15472 if (!btn) { 15473 return null; 15474 } 15475 // CONPLAT-1944 15476 // get the big outer button if EnableBiggerHover = true 15477 if (btn && btn.classList.contains("cursorPointer")) { 15478 return btn; 15479 } 15480 // otherwise, return the inner button 15481 return (_b = btn.querySelector("button")) !== null && _b !== void 0 ? _b : null; 15482 } 15483 addListeners(carousel, eventType) { 15484 var _a, _b, _c; 15485 const clickEvent = eventType === "mouse" ? "click" : "touchend"; 15486 const page = document.querySelector('.vdp'); 15487 page === null || page === void 0 ? void 0 : page.setAttribute("data-dotagging-affiliation", window.DlronGlobal_DealerName); 15488 if (carousel._previousButton) { 15489 carousel._previousButton.setAttribute("data-dotagging-affiliation", window.DlronGlobal_DealerName); 15490 carousel._previousButton.addEventListener(clickEvent, (e) => { 15491 e.preventDefault(); 15492 if (!carousel._carouselScroll.isScrolling) { 15493 carousel.goToPreviousSlide(); 15494 } 15495 }); 15496 } 15497 if (carousel._nextButton) { 15498 carousel._nextButton.setAttribute("data-dotagging-affiliation", window.DlronGlobal_DealerName); 15499 carousel._nextButton.addEventListener(clickEvent, (e) => { 15500 e.preventDefault(); 15501 if (!carousel._carouselScroll.isScrolling) { 15502 carousel.goToNextSlide(); 15503 } 15504 }); 15505 } 15506 if (carousel._previousButtonThumbsMobile) { 15507 carousel._previousButtonThumbsMobile.addEventListener(clickEvent, (e) => { 15508 e.preventDefault(); 15509 if (!carousel._carouselScroll.isScrolling) { 15510 carousel.goToPreviousSlide(); 15511 } 15512 }); 15513 } 15514 if (carousel._nextButtonThumbsMobile) { 15515 carousel._nextButtonThumbsMobile.setAttribute("data-dotagging-affiliation", window.DlronGlobal_DealerName); 15516 carousel._nextButtonThumbsMobile.addEventListener(clickEvent, (e) => { 15517 e.preventDefault(); 15518 if (!carousel._carouselScroll.isScrolling) { 15519 carousel.goToNextSlide(); 15520 } 15521 }); 15522 } 15523 if (carousel._previousButtonThumbsDesktop) { 15524 carousel._previousButtonThumbsDesktop.setAttribute("data-dotagging-affiliation", window.DlronGlobal_DealerName); 15525 carousel._previousButtonThumbsDesktop.addEventListener(clickEvent, (e) => { 15526 e.preventDefault(); 15527 if (!carousel._carouselScroll.isScrolling) { 15528 carousel.goToPreviousSlide(); 15529 } 15530 }); 15531 } 15532 if (carousel._nextButtonThumbsDesktop) { 15533 carousel._nextButtonThumbsDesktop.setAttribute("data-dotagging-affiliation", window.DlronGlobal_DealerName); 15534 carousel._nextButtonThumbsDesktop.addEventListener(clickEvent, (e) => { 15535 e.preventDefault(); 15536 if (!carousel._carouselScroll.isScrolling) { 15537 carousel.goToNextSlide(); 15538 } 15539 }); 15540 } 15541 const containerElem = (_a = this.carouselParent.querySelector(`.${this._carouselItemContainer}`)) !== null && _a !== void 0 ? _a : null; 15542 if (containerElem) { 15543 const swipeObserver = new ResizeObserver((entries) => { 15544 for (let entry of entries) { 15545 this._containerWidth = entry.contentRect.width; 15546 this._scrollX = this._currentIndex * this._containerWidth; 15547 entry.target.scrollTo({ left: this._scrollX, behavior: "smooth" }); 15548 } 15549 }); 15550 swipeObserver.observe(containerElem); 15551 } 15552 // We only want to throw events from IntersectionObserver if it is a result of 15553 // a touch swipe 15554 this.carouselParent.querySelector(`.hero-carousel__items`).addEventListener("touchstart", (ev) => { 15555 this._touchSwipe = true; 15556 }); 15557 //intersection observer to capture hero image scroll events to track 15558 //image counts and thumbnail hilighting on mobile 15559 let firstAfterPageLoad = true; 15560 this._heroIntersectionObserver = new IntersectionObserver((entries) => {
15561 entries.forEach((entry) => { 15562 //We check the window's width to make sure this is only used when in mobile view 15563 if (entry.isIntersecting && window.innerWidth < 992) { 15564 // we don't want to send the event when the page loads on each first photo 15565 if (firstAfterPageLoad) { 15566 firstAfterPageLoad = false; 15567 } 15568 else { 15569 this.scrollSlides(entry.target); 15570 } 15571 this._touchSwipe = false; 15572 } 15573 }); 15574 }, { 15575 root: this.carouselParent.querySelector(`.${this.rootClassName} .hero-carousel__items`), 15576 threshold: 0.51, 15577 }); 15578 this.observeHeroImageScrolling(true); 15579 // When clicking on a thumbnail, it scrolls the carousel to the image that 15580 // matches the thumbnail 15581 (_b = this._desktopThumbnails) === null || _b === void 0 ? void 0 : _b.forEach((element) => { 15582 if (this._desktopThumbsScrollable) { 15583 element.addEventListener(clickEvent, (e) => __awaiter(this, void 0, void 0, function* () { 15584 e.preventDefault(); 15585 const selected = e.target.closest(".thumbnail"); 15586 this.selectThumbnail(selected); 15587 })); 15588 } 15589 }); 15590 (_c = this._mobileThumbnails) === null || _c === void 0 ? void 0 : _c.forEach((element) => { 15591 if (this._mobileThumbsScrollable) { 15592 element.addEventListener(clickEvent, (e) => __awaiter(this, void 0, void 0, function* () { 15593 e.preventDefault(); 15594 const selected = e.target.closest(".thumbnail"); 15595 this.selectThumbnail(selected); 15596 })); 15597 } 15598 }); 15599 } 15600 observeHeroImageScrolling(observe) { 15601 this.carouselParent.querySelectorAll(`.${this.rootClassName} .hero-carousel__items .hero-carousel__item`).forEach((elem) => { 15602 if (observe) { 15603 this._heroIntersectionObserver.observe(elem); 15604 } 15605 else { 15606 this._heroIntersectionObserver.unobserve(elem); 15607 } 15608 }); 15609 } 15610 removeSelectedClasses(thumbnail) { 15611 if (thumbnail) { 15612 thumbnail.classList.remove(...this._selectedThumbnailClasses); 15613 } 15614 } 15615 addSelectedClasses(thumbnail) { 15616 if (thumbnail) { 15617 thumbnail.classList.add(...this._selectedThumbnailClasses); 15618 } 15619 } 15620 goToPreviousSlide() { 15621 let slideIndex = this._currentIndex - 1; 15622 if (slideIndex === -1) { 15623 slideIndex = this._carouselImageCount - 1; 15624 } 15625 this.goToSlide(slideIndex, false); 15626 } 15627 goToNextSlide() { 15628 let slideIndex = this._currentIndex + 1; 15629 if (slideIndex === this._carouselImageCount) { 15630 slideIndex = 0; 15631 } 15632 this.goToSlide(slideIndex, false); 15633 } 15634 goToSlide(slideIndex, scrollEvent) { 15635 return __awaiter(this, void 0, void 0, function* () { 15636 if (this._mobileThumbsScrollable) { 15637 this.removeSelectedClasses(this._mobileThumbnails[this._currentIndex]); 15638 } 15639 if (this._desktopThumbsScrollable) { 15640 this.removeSelectedClasses(this._desktopThumbnails[this._currentIndex]); 15641 } 15642 if (this._dots.length > 0) { 15643 this.updateDots(this._currentIndex, slideIndex); 15644 } 15645 if (scrollEvent) { 15646 this.dispatchSwipeImageTagging(slideIndex); 15647 } 15648 this._currentIndex = slideIndex; 15649 //scroll the carousel hero image 15650 if (!scrollEvent) { 15651 yield this.scrollIntoView(this._items[this._currentIndex], this._carouselItemContainer, Direction.LeftRight); 15652 } 15653 //scroll thumbnails into view 15654 if (this._mobileThumbsScrollable) { 15655 const thumbnail = this._mobileThumbnails[this._currentIndex]; 15656 this.addSelectedClasses(thumbnail); 15657 yield this.scrollIntoView(thumbnail, this._thumbnailMobileScrollableContainer, this._thumbnailMobileScrollDirection); 15658 } 15659 if (this._desktopThumbsScrollable) { 15660 const thumbnail = this._desktopThumbnails[this._currentIndex]; 15661 this.addSelectedClasses(thumbnail); 15662 yield this.scrollIntoView(thumbnail, this._thumbnailDesktopScrollContainer, this._thumbnailDesktopScrollDirection); 15663 } 15664 this.toggleControls(); 15665 if (this._dots.length === 0) { 15666 this.updateCounter(); 15667 } 15668 //show/hide special items type, TPIs like spincar, videos, etc. 15669 this.renderCarouselContent(); 15670 }); 15671 } 15672 getCurrentItemElement() { 15673 return this._items[this._currentIndex]; 15674 } 15675 getSelectedItemType() { 15676 const currentItem = this.getCurrentItemElement(); 15677 if (!currentItem) { 15678 return CarouselItemType.image; 15679 } 15680 switch (currentItem.dataset.carouselContentType) { 15681 case "video": 15682 return CarouselItemType.video; 15683 case "360interior": 15684 return CarouselItemType.interior360; 15685 case "spincar": 15686 return CarouselItemType.spincar; 15687 default: 15688 return CarouselItemType.image; 15689 } 15690 } 15691 renderCarouselContent() {
15692 const selectedItemType = this.getSelectedItemType(); 15693 } 15694 toggleControls() { 15695 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; 15696 const isFirstSlide = this._currentIndex === 0; 15697 const isLastSlide = this._currentIndex === this._carouselImageCount - 1; 15698 (_a = this._previousButton) === null || _a === void 0 ? void 0 : _a.classList.remove(this._hiddenClass); 15699 (_b = this._nextButton) === null || _b === void 0 ? void 0 : _b.classList.remove(this._hiddenClass); 15700 if (this._previousButton) { 15701 this._previousButton.disabled = false; 15702 } 15703 if (this._nextButton) { 15704 this._nextButton.disabled = false; 15705 } 15706 (_c = this._previousButtonThumbsMobile) === null || _c === void 0 ? void 0 : _c.classList.remove(this._hiddenClass); 15707 (_d = this._nextButtonThumbsMobile) === null || _d === void 0 ? void 0 : _d.classList.remove(this._hiddenClass); 15708 (_e = this._nextButtonThumbsDesktop) === null || _e === void 0 ? void 0 : _e.classList.remove(this._hiddenClass); 15709 (_f = this._previousButtonThumbsDesktop) === null || _f === void 0 ? void 0 : _f.classList.remove(this._hiddenClass); 15710 if (isFirstSlide) { 15711 (_g = this._previousButton) === null || _g === void 0 ? void 0 : _g.classList.add(this._hiddenClass); 15712 if (this._previousButton) { 15713 this._previousButton.disabled = true; 15714 } 15715 (_h = this._previousButtonThumbsDesktop) === null || _h === void 0 ? void 0 : _h.classList.add(this._hiddenClass); 15716 (_j = this._previousButtonThumbsMobile) === null || _j === void 0 ? void 0 : _j.classList.add(this._hiddenClass); 15717 } 15718 if (isLastSlide) { 15719 (_k = this._nextButton) === null || _k === void 0 ? void 0 : _k.classList.add(this._hiddenClass); 15720 if (this._nextButton) { 15721 this._nextButton.disabled = true; 15722 } 15723 (_l = this._nextButtonThumbsMobile) === null || _l === void 0 ? void 0 : _l.classList.add(this._hiddenClass); 15724 (_m = this._nextButtonThumbsDesktop) === null || _m === void 0 ? void 0 : _m.classList.add(this._hiddenClass); 15725 } 15726 } 15727 updateDots(currentIndex, nextIndex) { 15728 const dot = this._dots[currentIndex]; 15729 dot === null || dot === void 0 ? void 0 : dot.classList.remove("active"); 15730 const nextDot = this._dots[nextIndex]; 15731 nextDot === null || nextDot === void 0 ? void 0 : nextDot.classList.add("active"); 15732 } 15733 updateCounter() { 15734 var _a, _b; 15735 const totalImageCountRaw = (_b = (_a = this._counterBadgeElement) === null || _a === void 0 ? void 0 : _a.dataset) === null || _b === void 0 ? void 0 : _b.imageCount; 15736 let totalImageCount = 0; 15737 let newIndex = this._currentIndex; 15738 if (totalImageCountRaw != null) { 15739 totalImageCount = parseInt(totalImageCountRaw); 15740 } 15741 /* +1 to account for 0-based index */ 15742 if (!isNaN(totalImageCount) 15743 && totalImageCount > 0 15744 && this._currentIndex + 1 > totalImageCount) { 15745 newIndex = this._currentIndex - 1; 15746 } 15747 /* +1 to account for 0-based index */ 15748 this._counter.innerHTML = (newIndex + 1).toString(); 15749 } 15750 scrollIntoView(elem, containerSelector, scrollDirection) { 15751 return __awaiter(this, void 0, void 0, function* () { 15752 //NOTE: scrollIntoView() does not play well when scrolling multiple elements simultaneously 15753 // so we have opted to leverage scrollTo which does allow this 15754 // Additionally, scrollable items that are hidden will have a getBoundingClientRect() of 0. 15755 // So, after scrolling the carousel in desktop view switching to mobile view will not show 15756 // the highlighted thumbnail because we could not scroll it into view since it was hidden 15757 if (!elem) { 15758 return; 15759 } 15760 let containerElem = this.carouselParent.querySelector(`.${containerSelector}`); 15761 if (!containerElem) { 15762 return; 15763 } 15764 let position; 15765 if (scrollDirection === Direction.LeftRight) { 15766 yield (0,_utilities_performanceHelpers__WEBPACK_IMPORTED_MODULE_0__/* .doBeforeNextRepaint */ .L
15766)(() => { 15767 position = elem.offsetLeft - (containerElem.getBoundingClientRect().width - elem.getBoundingClientRect().width) / 2; 15768 }); 15769 containerElem.scrollTo({ left: position, behavior: "smooth" }); 15770 } 15771 else { 15772 yield (0,_utilities_performanceHelpers__WEBPACK_IMPORTED_MODULE_0__/* .doBeforeNextRepaint */ .L)(() => { 15773 position = elem.offsetTop - (containerElem.getBoundingClientRect().height - elem.getBoundingClientRect().height) / 2; 15774 }); 15775 containerElem.scrollTo({ top: position, behavior: "smooth" }); 15776 } 15777 }); 15778 } 15779 scrollToItem(item) { 15780 var _a, _b; 15781 const elem = item; 15782 const index = (_b = parseInt((_a = elem === null || elem === void 0 ? void 0 : elem.dataset) === null || _a === void 0 ? void 0 : _a.imageNum)) !== null && _b !== void 0 ? _b : 0; 15783 this.goToSlide(index - 1, false); 15784 } 15785 dispatchSwipeImageTagging(slideIndex) { 15786 let eventAction; 15787 let eventActionResult; 15788 if (this._currentIndex < slideIndex) { 15789 eventAction = "swipe_left"; 15790 eventActionResult = "increase"; 15791 } 15792 else if (this._currentIndex > slideIndex) { 15793 eventAction = "swipe_right"; 15794 eventActionResult = "decrease"; 15795 } 15796 else { 15797 return; 15798 } 15799 const taggingVehicleDetailsElement = this._carouselElement.closest("[data-vehicle-information]"); 15800 const imageLinkElement = taggingVehicleDetailsElement.querySelector(`[tabindex] a`); 15801 if (taggingVehicleDetailsElement && imageLinkElement) { 15802 const elementDataset = taggingVehicleDetailsElement.dataset; 15803 const SwipeEventData = { 15804 affiliation: `${elementDataset.dotaggingAffiliation || ""}`, 15805 card_name: `${elementDataset.dotaggingCardName || ""}`, 15806 context: `${elementDataset.dotaggingContext || ""}`, 15807 department: `${elementDataset.dotaggingDepartment || ""}`,
15808 element_color: `${elementDataset.dotaggingElementColor || ""}`, 15809 element_order: `${slideIndex + 1}`, 15810 element_position: `${elementDataset.dotaggingElementPosition || ""}`, 15811 element_subtype: "image", 15812 element_text: `${elementDataset.dotaggingElementText || ""}`, 15813 element_title: `${elementDataset.dotaggingElementTitle || ""}`, 15814 element_type: `${elementDataset.dotaggingElementType || ""}`, 15815 event: "media_interaction", 15816 event_action: `${eventAction}`, 15817 event_action_result: `${eventActionResult}`, 15818 event_location: `${elementDataset.dotaggingEventLocation || ""}`, 15819 event_owner: `${imageLinkElement.dataset.dotaggingEventOwner || ""}`, 15820 flow_name: `${elementDataset.dotaggingFlowName || ""}`, 15821 flow_outcome: `${elementDataset.dotaggingFlowOutcome || ""}`, 15822 flow_stage: `${elementDataset.dotaggingFlowStage || ""}`, 15823 item_category: `${elementDataset.dotaggingItemCategory || ""}`, 15824 item_color: `${elementDataset.dotaggingItemColor || ""}`, 15825 item_condition: `${elementDataset.dotaggingItemCondition || ""}`, 15826 item_fuel_type: `${elementDataset.dotaggingItemFuelType || ""}`, 15827 item_id: `${elementDataset.dotaggingItemId || ""}`, 15828 item_make: `${elementDataset.dotaggingItemMake || ""}`, 15829 item_model: `${elementDataset.dotaggingItemModel || ""}`, 15830 item_number: `${elementDataset.dotaggingItemNumber || ""}`, 15831 item_order: `${elementDataset.dotaggingItemOrder || ""}`, 15832 item_price: `${elementDataset.dotaggingPrice || ""}`, 15833 item_type: `${elementDataset.dotaggingItemType || ""}`, 15834 item_variant: `${elementDataset.dotaggingItemVariant || ""}`, 15835 item_year: `${elementDataset.dotaggingItemYear || ""}`, 15836 link_url: `${imageLinkElement.getAttribute("href") || ""}`, 15837 media_type: "gallery", 15838 product_name: "SRP 2.0|Vehicle Item Details", 15839 }; 15840 this._carouselElement.dispatchEvent(new CustomEvent("dotagging.event", { 15841 bubbles: true, 15842 detail: { 15843 data: SwipeEventData 15844 } 15845 })); 15846 } 15847 } 15848} 15849 15850 15851/***/ }), 15852 15853/***/ 4693: 15854/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 15855 15856// style-loader: Adds some css to the DOM by adding a <style> tag 15857 15858// load the styles 15859var content = __webpack_require__(2966); 15860if(content.__esModule) content = content.default; 15861if(typeof content === 'string') content = [[module.id, content, '']]; 15862if(content.locals) module.exports = content.locals; 15863// add the styles to the DOM 15864var add = (__webpack_require__(8449)/* ["default"] */ .A) 15865var update = add("0094c034", content, false, {}); 15866// Hot Module Replacement 15867if(false) {} 15868 15869/***/ }), 15870 15871/***/ 4725: 15872/***/ ((__unused_webpack_module, exports) => { 15873 15874"use strict"; 15875 15876 15877Object.defineProperty(exports, "__esModule", ({ 15878 value: true 15879})); 15880exports.POST_CONSTRUCT = exports.DESIGN_PARAM_TYPES = exports.PARAM_TYPES = exports.TAGGED_PROP = exports.TAGGED = exports.MULTI_INJECT_TAG = exports.INJECT_TAG = exports.OPTIONAL_TAG = exports.UNMANAGED_TAG = exports.NAME_TAG = exports.NAMED_TAG = void 0; 15881exports.NAMED_TAG = "named"; 15882exports.NAME_TAG = "name"; 15883exports.UNMANAGED_TAG = "unmanaged"; 15884exports.OPTIONAL_TAG = "optional"; 15885exports.INJECT_TAG = "inject"; 15886exports.MULTI_INJECT_TAG = "multi_inject"; 15887exports.TAGGED = "inversify:tagged"; 15888exports.TAGGED_PROP = "inversify:tagged_props"; 15889exports.PARAM_TYPES = "inversify:paramtypes"; 15890exports.DESIGN_PARAM_TYPES = "design:paramtypes"; 15891exports.POST_CONSTRUCT = "post_construct"; 15892 15893/***/ }), 15894 15895/***/ 4984: 15896/***/ ((__unused_webpack_module, exports) => { 15897 15898"use strict"; 15899 15900 15901Object.defineProperty(exports, "__esModule", ({ 15902 value: true 15903})); 15904exports.multiBindToService = void 0; 15905exports.multiBindToService = function (container) { 15906 return function (service) { 15907 return function () { 15908 var types = []; 15909 for (var _i = 0; _i < arguments.length; _i++) { 15910 types[_i] = arguments[_i]; 15911 }
15912 return types.forEach(function (t) { 15913 return container.bind(t).toService(service); 15914 }); 15915 }; 15916 }; 15917}; 15918 15919/***/ }), 15920 15921/***/ 4999: 15922/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15923 15924"use strict"; 15925 15926// EXPORTS 15927__webpack_require__.d(__webpack_exports__, { 15928 H: () => (/* binding */ ShareVehicleModal) 15929}); 15930 15931;// ./src/components/smsForm/smsForm.ts 15932var SpecialType; 15933(function (SpecialType) { 15934 SpecialType[SpecialType["new"] = 1] = "new"; 15935 SpecialType[SpecialType["cpo"] = 2] = "cpo"; 15936 SpecialType[SpecialType["used"] = 3] = "used"; 15937 SpecialType[SpecialType["serviceAndParts"] = 4] = "serviceAndParts"; 15938 SpecialType[SpecialType["general"] = 5] = "general"; 15939 SpecialType[SpecialType["symphony"] = 7] = "symphony"; 15940 SpecialType[SpecialType["default"] = 0] = "default"; 15941})(SpecialType || (SpecialType = {})); 15942class SmsForm { 15943 get isVehicleBasedLead() { 15944 return this._isVehicleBasedLead; 15945 } 15946 set smsComponentSuccessCallback(callback) { 15947 this._smsComponentSuccessCallback = callback; 15948 } 15949 set smsComponentErrorCallback(callback) { 15950 this._smsComponentErrorCallback = callback; 15951 } 15952 constructor(data) { 15953 this._isMobile = false; 15954 this._isVehicleBasedLead = false; 15955 this.clearLeadData = (leadDataElements) => { 15956 leadDataElements.forEach(dataElement => { 15957 dataElement.value = ""; 15958 }); 15959 if (this._leadData.isVehicleBasedLead) { 15960 if (this._leadVinElement) { 15961 this._leadVinElement.value = ""; 15962 } 15963 if (this._altIdElement) { 15964 this._altIdElement.value = ""; 15965 } 15966 } 15967 }; 15968 this.specialTypeToLeadSource = () => { 15969 const leadData = this._leadData; 15970 const isMobile = this._isMobile; 15971 const specialType = this.getInputElementValue(this._specialTypeElement); 15972 switch (parseInt(specialType)) { 15973 case SpecialType.new: 15974 return (isMobile) ? leadData.leadSources.OfferMobileNew : leadData.leadSources.OfferDesktopNew; 15975 case SpecialType.symphony: 15976 return (isMobile) ? leadData.leadSources.SymphonyOfferMobile : leadData.leadSources.SymphonyOfferDesktop; 15977 case SpecialType.cpo: 15978 return (isMobile) ? leadData.leadSources.OfferMobileCertifiedPreOwned : leadData.leadSources.OfferDesktopCertifiedPreOwned; 15979 case SpecialType.used: 15980 return (isMobile) ? leadData.leadSources.OfferMobileUsed
15980: leadData.leadSources.OfferDesktopUsed; 15981 case SpecialType.serviceAndParts: 15982 return (isMobile) ? leadData.leadSources.OfferMobileServiceAndParts : leadData.leadSources.OfferDesktopServiceAndParts; 15983 case SpecialType.general: 15984 return (isMobile) ? leadData.leadSources.OfferMobileGeneral : leadData.leadSources.OfferDesktopGeneral; 15985 default: return SpecialType.default; 15986 } 15987 }; 15988 this.specialTypeToLeadType = () => { 15989 const leadData = this._leadData; 15990 const specialType = this.getInputElementValue(this._specialTypeElement); 15991 switch (parseInt(specialType)) { 15992 case SpecialType.new: 15993 case SpecialType.symphony: 15994 return leadData.leadTypes.NewCar; 15995 case SpecialType.cpo: 15996 case SpecialType.used: 15997 return leadData.leadTypes.UsedCar; 15998 case SpecialType.serviceAndParts: 15999 return leadData.leadTypes.Service; 16000 case SpecialType.general: 16001 return leadData.leadTypes.GeneralContact; 16002 default: return SpecialType.default; 16003 } 16004 }; 16005 this._smsLeadDataElementId = data.smsLeadDataElementId; 16006 this._smsComponentElementId = data.smsComponentElementId; 16007 this._smsComponentLeadDataFormId = data.smsComponentLeadDataFormId; 16008 this._smsLeadFormSubmitFunctionName = data.smsLeadFormSubmitFunctionName; 16009 this._smsComponentButtonElement = data.smsComponentButtonElement; 16010 this._trackingEventCategory_smsSubmitButtonClick = data.trackingEventCategory_smsSubmitButtonClick; 16011 this._trackingEventCategory_smsComponentButtonClick = data.trackingEventCategory_smsComponentButtonClick; 16012 this._trackingEventCategory_smsLeadExists = data.rackingEventCategory_smsLeadExists; 16013 this._leadDataElements = data.leadDataElements; 16014 this.getLeadElements(); 16015 this.initialize(); 16016 } 16017 initialize() { 16018 const failureErrorMsg = this.getLeadData(); 16019 if (failureErrorMsg.length > 0) { 16020 console.error(failureErrorMsg); 16021 } 16022 this._isVehicleBasedLead = this._leadData.isVehicleBasedLead; 16023 this._isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); 16024 this._lead = (this._isMobile) ? this._leadData.mobile : this._leadData.desktop; 16025 // Make local references to class variables to avoid issues with 'this' in callbacks 16026 const leadData = this._leadData; 16027 const lead = this._lead; 16028 this.initializeDealeronLead(lead, leadData); 16029 this.initializeSmsComponentButton(leadData); 16030 } 16031 getLeadElements() { 16032 this._leadPhoneElement = this.getElementByIdHelper("smslead_phone"); 16033 this._leadVinElement = this.getElementByIdHelper("smslead_vin"); 16034 this._altIdElement = this.getElementByIdHelper("smslead_altid"); 16035 this._specialTypeElement = this.getElementByIdHelper("smslead_specialType"); 16036 this._vehicleIdElement = this.getElementByIdHelper("smslead_vehicleid"); 16037 this._couponElement = this.getElementByIdHelper("smslead_coupon"); 16038 this._commentAdditionElement = this.getElementByIdHelper("smslead_commentAddition"); 16039 this._vehicleNameElement = this.getElementByIdHelper("smslead_vehicleName"); 16040 this._specialDetailsUriElement = this.getElementByIdHelper("smslead_specialDetailsUri"); 16041 } 16042 getElementByIdHelper(elementId) { 16043 return document.querySelector(`#${this._smsComponentElementId} #${elementId}`); 16044 } 16045 getLeadData() { 16046 const leadDataScript = document.getElementById(this._smsLeadDataElementId); 16047 let errorMsg = ""; 16048 if (leadDataScript) { 16049 try { 16050 const scriptText = leadDataScript.text; 16051 this._leadData = JSON.parse(scriptText); 16052 } 16053 catch (err) { 16054 errorMsg = "Error parsing lead data JSON for smsForm.js- failed to initialize smsFormComponent."; 16055 } 16056 } 16057 else { 16058 errorMsg = `#${this._smsLeadDataElementId} does not exist - failed to initialize smsFormComponent.`; 16059 } 16060 return errorMsg; 16061 } 16062 initializeDealeronLead(lead, leadData) { 16063 var _a;
16064 const submitOptions = this.getSubmitOptions(lead, leadData); 16065 window.DealeronLead.addSubmissionMethod(this._smsLeadFormSubmitFunctionName, submitOptions); 16066 window.DealeronLead.initialize(`#${this._smsComponentElementId} #${this._smsComponentLeadDataFormId}`, this._smsLeadFormSubmitFunctionName); 16067 (_a = this._leadPhoneElement) === null || _a === void 0 ? void 0 : _a.addEventListener("focus", function () { 16068 window.DealeronLead.begin(); 16069 const leadSourceName = lead.id; 16070 window.trackerHook({ trackId: leadSourceName }); 16071 }); 16072 } 16073 getSubmitOptions(lead, leadData) { 16074 let phoneNum; 16075 const clearLeadData = this.clearLeadData; 16076 return { 16077 leadSource: (leadData.isDqlSpecialBasedLead) ? this.specialTypeToLeadSource : lead.id, 16078 leadType: (leadData.isDqlSpecialBasedLead) ? this.specialTypeToLeadType : leadData.leadType, 16079 additionalData: this.getAdditionalData(phoneNum), 16080 successCallback: this.smsSubmitSuccessCallback(phoneNum, lead, clearLeadData), 16081 errorCallback: this.smsSubmitErrorCallback(), 16082 endpoint: "/api/lead/sms/#TOKEN#" 16083 }; 16084 } 16085 getAdditionalData(phoneNum) { 16086 return () => { 16087 var _a, _b; 16088 let vin = ""; 16089 let altId = ""; 16090 let vehicleId = ""; 16091 if (this._leadData.isVehicleBasedLead) { 16092 vin = this.getInputElementValue(this._leadVinElement); 16093 altId = this.getInputElementValue(this._altIdElement); 16094 vehicleId = this.getInputElementValue(this._vehicleIdElement); 16095 } 16096 let comments = ""; 16097 for (let id in this._leadData.additionalFields) { 16098 const comment = this.getInputElementValue(document.querySelector(`#${this._smsComponentElementId} #smslead_${id}`)); 16099 comments += `${this._leadData.additionalFields[id]}: ${comment}; `; 16100 } 16101 if (this._leadData.isCouponBasedLead) { 16102 const coupon = this.getInputElementValue(this._couponElement); 16103 comments += `Coupon: ${coupon}; `; 16104 } 16105 if (this._leadData.isDqlSpecialBasedLead) { 16106 const commentAddition = this.getInputElementValue(this._commentAdditionElement); 16107 comments += `${commentAddition}, SMS: yes, URL: ${window.location.href}; `; 16108 } 16109 const optOut = document.querySelector(`#${this._smsComponentElementId} #${this._smsComponentLeadDataFormId}#optOut`); 16110 if (optOut) { 16111 comments += `Do Not Sell Personal Info: ${optOut.checked}`; 16112 } 16113 const specialDetailsUri = (_b = (_a = this._specialDetailsUriElement) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : window.location.href; 16114 let pathName = (this._leadData.isDqlSpecialBasedLead) ? specialDetailsUri : window.location.href; 16115 pathName = pathName.replace(/\#/gi, ""); 16116 phoneNum = window.dataList["Phone"].replace(/\D/gi, ""); 16117 return { 16118 Vin: vin, 16119 AltDealerId: altId, 16120 VehicleId: vehicleId, 16121 MessageLink: pathName, 16122 Comments: comments 16123 }; 16124 }; 16125 } 16126 smsSubmitSuccessCallback(phoneNum, lead, clearLeadData) { 16127 return (data) => { 16128 const vehicleName = this.getInputElementValue(this._vehicleNameElement); 16129 const vin = this.getInputElementValue(this._leadVinElement); 16130 const leadSourceName = lead.id; 16131 clearLeadData(this._leadDataElements); 16132 let response; 16133 try { 16134 response = JSON.parse(data); 16135 } 16136 catch (err) { 16137 response = { leadId: "-1", leadSource: "" }; 16138 } 16139 window.ResetTracker(); 16140 window.trackerHook({ trackId: leadSourceName, actionType: "click" }); 16141 if (parseInt(response.leadId, 10) != -1) { 16142 let eventValue = ""; 16143 } 16144 else { 16145 window.DealeronLead.token.value = null; 16146 } 16147 this._smsComponentSuccessCallback(); 16148 }; 16149 } 16150 smsSubmitErrorCallback() { 16151 return () => { 16152 this._smsComponentErrorCallback(); 16153 }; 16154 } 16155 initializeSmsComponentButton(leadData) { 16156 const _this = this; 16157 const lead = this._lead; 16158 const buttonElements = document.querySelectorAll(`[data-type="${this._smsComponentButtonElement}"]`);
16159 buttonElements.forEach(function (buttonElement) { 16160 buttonElement.addEventListener("click", function (e) { 16161 e.preventDefault(); 16162 const vehicleName = buttonElement.dataset.vehicleName; 16163 _this.setValuesOnSmsComponent(buttonElement, leadData, vehicleName); 16164 }); 16165 }); 16166 } 16167 setValuesOnSmsComponent(buttonElement, leadData, vehicleName) { 16168 var _a, _b, _c, _d, _e, _f, _g; 16169 if (leadData.isVehicleBasedLead) { 16170 const vin = (_a = buttonElement.dataset.vin) !== null && _a !== void 0 ? _a : ""; 16171 const altId = (_b = buttonElement.dataset.altid) !== null && _b !== void 0 ? _b : ""; 16172 const vehicleId = (_c = buttonElement.dataset.vehicleId) !== null && _c !== void 0 ? _c : ""; 16173 // hidden elements 16174 if (this._leadVinElement) { 16175 this._leadVinElement.value = vin; 16176 } 16177 if (this._altIdElement) { 16178 this._altIdElement.value = altId; 16179 } 16180 if (this._vehicleIdElement) { 16181 this._vehicleIdElement.value = vehicleId; 16182 } 16183 if (this._vehicleNameElement) { 16184 this._vehicleNameElement.value = vehicleName; 16185 } 16186 } 16187 else if (leadData.isCouponBasedLead) { 16188 const coupon = (_d = buttonElement.dataset.coupon) !== null && _d !== void 0 ? _d : ""; 16189 if (this._couponElement) { 16190 this._couponElement.value = coupon; 16191 } 16192 } 16193 else if (leadData.isDqlSpecialBasedLead) { 16194 const specialType = (_e = buttonElement.dataset.dataSpecialType) !== null && _e !== void 0 ? _e : ""; 16195 const commentAddition = (_f = buttonElement.dataset.dataCommentAddition) !== null && _f !== void 0 ? _f : ""; 16196 const specialDetailsUri = (_g = buttonElement.dataset.dataSpecialDetailsUri) !== null && _g !== void 0 ? _g : ""; 16197 if (this._specialTypeElement) { 16198 this._specialTypeElement.value = specialType; 16199 } 16200 if (this._commentAdditionElement) { 16201 this._commentAdditionElement.value = commentAddition; 16202 } 16203 if (this._specialDetailsUriElement) { 16204 this._specialDetailsUriElement.value = specialDetailsUri; 16205 } 16206 } 16207 } 16208 getInputElementValue(element) { 16209 var _a; 16210 return (_a = element === null || element === void 0 ? void 0 : element.value) !== null && _a !== void 0 ? _a : ""; 16211 } 16212} 16213 16214// EXTERNAL MODULE: ./src/services/toggles/toggleService.ts + 1 modules 16215var toggleService = __webpack_require__(7363); 16216// EXTERNAL MODULE: ./src/services/toggles/iToggleService.ts 16217var iToggleService = __webpack_require__(4478); 16218// EXTERNAL MODULE: ./node_modules/inversify/lib/inversify.js 16219var inversify = __webpack_require__(260); 16220// EXTERNAL MODULE: ./src/types/types.ts 16221var types = __webpack_require__(5644); 16222;// ./src/components/shareVehicleModal/shareVehicleModal.ts 16223var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 16224 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 16225 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 16226 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 16227 return c > 3 && r && Object.defineProperty(target, key, r), r; 16228}; 16229var __metadata = (undefined && undefined.__metadata) || function (k, v) { 16230 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 16231}; 16232var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 16233 return function (target, key) { decorator(target, key, paramIndex); } 16234}; 16235var _a; 16236// @ts-nocheck 16237 16238 16239 16240 16241 16242let ShareVehicleModal = class ShareVehicleModal { 16243 constructor(toggleService) { 16244 this.referenceErrorMsg = "element does not exist - failed to initialize Share Vehicle modal."; 16245 this.COPY_BUTTON_TOGGLE_CLASS = "share-vehicle__button--copied"; 16246 this._toggleService = toggleService; 16247 } 16248 initialize() { 16249 if (!this.modalExists()) { 16250 throw new ReferenceError(`${this._shareVehicleModalElementId} ${this.referenceErrorMsg}`); 16251 } 16252 this.emailRefactorToggleStatus = this._toggleService.getToggleStatus(toggleService/* Toggle */.lM.EmailRefactor); 16253 this.initializePrivateVariables(); 16254 this.initializeModal(); 16255 } 16256 initializePrivateVariables() { 16257 this._submitButtonId = "shareVehicleLeadSubmit"; 16258 this._additionalLeadDataBlockId = "shareVehicleLeadExpanded"; 16259 this._shareVehicleBtnElement = "share-vehicle-button"; 16260 this._leadDataElements = document.querySelectorAll(` 16261 #${this._shareVehicleModalElementId} #smslead_phone, 16262 #${this._additionalLeadDataBlockId} input, 16263 #${this._additionalLeadDataBlockId} select`); 16264 this._smsForm = new SmsForm(this.getSmsFormParamObject()); 16265 this._smsForm.smsComponentSuccessCallback = this.smsSubmitSuccessCallback(this._submitButtonId, this._shareVehicleModalElementId); 16266 this._smsForm.smsComponentErrorCallback = this.smsSubmitErrorCallback(this._submitButtonId); 16267 this._emailAFriendForm = this._modal.querySelector("form#emailFriendForm"); 16268 } 16269 modalExists() { 16270 this._shareVehicleModalElementId = "shareVehicleModal"; 16271 this._modal = document.getElementById(this._shareVehicleModalElementId); 16272 return this._modal !== null; 16273 } 16274 initializeEmailAFriend() { 16275 if (!this._emailAFriendForm) { 16276 return; 16277 } 16278 let endpoint = ""; 16279 let additionalData = null; 16280 if (this._isCompareModal) { 16281 endpoint = `/api/vhcliaa/email-vehicle-compare/${window.DlronGlobal_DealerId}`; 16282 additionalData = (form) => { 16283 const optOutCheckbox = form.querySelector("#optOut"); 16284 const optedOut = optOutCheckbox && optOutCheckbox.checked; 16285 const friendsName = form.querySelector("#emailFriend_friendName").value; 16286 const friendsEmail = form.querySelector("#emailFriend_friendEmail").value; 16287 const comments = form.querySelector("#emailFriend_Comments").value; 16288 const firstName = form.querySelector("#emailFriend_yourName").value; 16289 const email = form.querySelector("#emailFriend_yourEmail").value; 16290 const sendCopy = form.querySelector("#sendCopy").checked; 16291 const link = form.querySelector("#emailFriend_Url").value; 16292 return { 16293 Comments: optedOut ? `${comments}, Do Not Sell Personal Info: true` : comments, 16294 FriendsName: friendsName,
16295 FriendsEmail: friendsEmail, 16296 FirstName: firstName, 16297 Email: email, 16298 SendCopy: sendCopy, 16299 Link: link 16300 }; 16301 }; 16302 } 16303 else if (this.emailRefactorToggleStatus) { 16304 endpoint = `/api/vhcliaa/email-a-friend/${window.DlronGlobal_DealerId}`; 16305 additionalData = (form) => { 16306 const optOutCheckbox = form.querySelector("#optOut"); 16307 const optedOut = optOutCheckbox && optOutCheckbox.checked; 16308 const friendsName = form.querySelector("#emailFriend_friendName").value; 16309 const friendsEmail = form.querySelector("#emailFriend_friendEmail").value; 16310 const comments = form.querySelector("#emailFriend_Comments").value; 16311 const firstName = form.querySelector("#emailFriend_yourName").value; 16312 const email = form.querySelector("#emailFriend_yourEmail").value; 16313 const sendCopy = form.querySelector("#sendCopy").checked; 16314 return { 16315 VehicleId: form.dataset.vehicleId, 16316 Vin: form.dataset.vin, 16317 Comments: optedOut ? `${comments}, Do Not Sell Personal Info: true` : comments, 16318 FriendsName: friendsName, 16319 FriendsEmail: friendsEmail, 16320 FirstName: firstName, 16321 Email: email, 16322 SendCopy: sendCopy 16323 }; 16324 }; 16325 } 16326 else { 16327 endpoint = "/api/lead/emailFriend/#TOKEN#"; 16328 additionalData = (form) => { 16329 const optOutCheckbox = form.querySelector("#optOut"); 16330 const optedOut = optOutCheckbox && optOutCheckbox.checked; 16331 const comment = form.querySelector("#emailFriend_Comments").value; 16332 return { 16333 VehicleId: form.dataset.vehicleId, 16334 Vin: form.dataset.vin, 16335 Comments: optedOut ? `${comment}, Do Not Sell Personal Info: true` : comment 16336 }; 16337 }; 16338 } 16339 const submitOptions = { 16340 submitCoreValues: false, 16341 endpoint: endpoint, 16342 successCallback: () => { 16343 window.jQuery(this._modal).modal("hide"); 16344 }, 16345 additionalData: additionalData 16346 }; 16347 window.DealeronLead.addSubmissionMethod("emailFriendSubmitOptions", submitOptions); 16348 window.DealeronLead.initialize(this._emailAFriendForm, "emailFriendSubmitOptions"); 16349 const friendEmailField = this._emailAFriendForm.querySelector("#emailFriend_friendEmail"); 16350 if (friendEmailField) { 16351 friendEmailField.addEventListener("focusout", window.DealeronLead.begin); 16352 } 16353 } 16354 getSmsFormParamObject() { 16355 return { 16356 smsLeadDataElementId: "shareVehicleLeadData", 16357 smsComponentElementId: this._shareVehicleModalElementId, 16358 smsComponentLeadDataFormId: "shareVehicleLeadForm", 16359 smsLeadFormSubmitFunctionName: "smsShareVehicleModalSubmit", 16360 smsComponentButtonElement: this._shareVehicleBtnElement, 16361 trackingEventCategory_smsSubmitButtonClick: "Share-Vehicle-Modal-Submit", 16362 rackingEventCategory_smsLeadExists: "Share-Vehicle-Modal-Lead", 16363 trackingEventCategory_smsComponentButtonClick: "Share-Vehicle-Button", 16364 leadDataElements: this._leadDataElements 16365 }; 16366 } 16367 initializeModal() { 16368 var _a; 16369 jQuery(`#${this._shareVehicleModalElementId}`).on("show.bs.modal", (event) => { 16370 var _a; 16371 const shareVehicleButtonElement = event.relatedTarget; 16372 const vin = shareVehicleButtonElement.dataset.vin; 16373 const vehicleId = shareVehicleButtonElement.dataset.vehicleId; 16374 if (this._emailAFriendForm) { 16375 this._emailAFriendForm.dataset.vin = vin; 16376 this._emailAFriendForm.dataset.vehicleId = vehicleId; 16377 } 16378 const vehicleName = (_a = shareVehicleButtonElement.dataset.vehicleName) !== null && _a !== void 0 ? _a : ""; 16379 this.updateModalTitle(vehicleName); 16380 this.updateHTMLValueHelper("shareVehicleModalTitleVehicleName", vehicleName, "textContent"); 16381 if (document.querySelector(".vehicle-compare-container")) { 16382 this.toggleTextOptions(false); 16383 this._isCompareModal = true; 16384 } 16385 this.initializeEmailAFriend(); 16386 }); 16387 jQuery(`#${this._shareVehicleModalElementId}`).on("hide.bs.modal", (event) => { 16388 if (document.querySelector(".vehicle-compare-container")) { 16389 this.toggleTextOptions(true); 16390 } 16391 this._isCompareModal = false;
16392 this.clearForms(); 16393 }); 16394 (_a = document.getElementById("shareVehicleLeadPortion")) === null || _a === void 0 ? void 0 : _a.addEventListener("change", (event) => { 16395 this.toggleLeadExpansion(event); 16396 }); 16397 } 16398 toggleLeadExpansion(event) { 16399 const target = event.target; 16400 if (target.checked) { 16401 jQuery(`#${this._additionalLeadDataBlockId}`).slideDown(); 16402 } 16403 else { 16404 jQuery(`#${this._additionalLeadDataBlockId}`).slideUp(); 16405 } 16406 } 16407 smsSubmitSuccessCallback(submitButtonId, shareVehicleModalElementId) { 16408 return () => { 16409 var _a; 16410 (_a = document.getElementById(submitButtonId)) === null || _a === void 0 ? void 0 : _a.removeAttribute("disabled"); 16411 jQuery(`#${shareVehicleModalElementId}`).modal("hide"); 16412 }; 16413 } 16414 smsSubmitErrorCallback(submitButtonId) { 16415 return () => { 16416 var _a; 16417 alert("An error occurred sending the message. Please try again."); 16418 (_a = document.getElementById(submitButtonId)) === null || _a === void 0 ? void 0 : _a.removeAttribute("disabled"); 16419 }; 16420 } 16421 updateModalTitle(vehicleName) { 16422 if (this._smsForm.isVehicleBasedLead) { 16423 const formTitleNameElement = document.querySelector(`#${this._shareVehicleModalElementId} #shareVehicleModalTitleVehicleName`); 16424 if (formTitleNameElement) { 16425 formTitleNameElement.innerHTML = vehicleName; 16426 } 16427 } 16428 } 16429 updateHTMLValueHelper(elementId, htmlContent, valueKey) { 16430 const updateElement = document.getElementById(elementId); 16431 if (updateElement) { 16432 updateElement[valueKey] = htmlContent; 16433 } 16434 } 16435 // Added as part of DO-25632 16436 toggleTextOptions(showTextOptions) { 16437 let textForm = document.querySelector(".share-panel--text-me"); 16438 if (textForm) { 16439 let modal = document.querySelector(`#${this._shareVehicleModalElementId}`); 16440 let body = document.querySelector(".share-vehicle__body"); 16441 let panels = document.querySelector(".share-vehicle__panels"); 16442 let accordionToggles = document.querySelectorAll(".share-panel__toggle"); 16443 let emailContent = document.querySelector("#emailFriendContent"); 16444 let panelLabels = document.querySelectorAll(".panel-label"); 16445 // show text form 16446 if (showTextOptions) { 16447 modal.classList.remove("share-vehicle--1-forms"); 16448 modal.classList.add("share-vehicle--2-forms"); 16449 body.classList.remove("share-vehicle__body--single-panel"); 16450 panels.classList.remove("share-vehicle__panels--single-panel"); 16451 textForm.classList.remove("hide-text-me-panel"); 16452 accordionToggles.forEach((item) => { 16453 item.classList.remove("hide-text-me-panel"); 16454 }); 16455 emailContent.classList.add("collapse");
16456 panelLabels.forEach((item) => { 16457 item.classList.remove("hidden"); 16458 }); 16459 } 16460 // hide text form 16461 else { 16462 modal.classList.remove("share-vehicle--2-forms"); 16463 modal.classList.add("share-vehicle--1-forms"); 16464 body.classList.add("share-vehicle__body--single-panel"); 16465 panels.classList.add("share-vehicle__panels--single-panel"); 16466 textForm.classList.add("hide-text-me-panel"); 16467 accordionToggles.forEach((item) => { 16468 item.classList.add("hide-text-me-panel"); 16469 }); 16470 emailContent.classList.remove("collapse"); 16471 panelLabels.forEach((item) => { 16472 item.classList.add("hidden"); 16473 }); 16474 } 16475 } 16476 } 16477 clearForms() { 16478 let modalElem = document.querySelector(`#${this._shareVehicleModalElementId}`); 16479 modalElem.querySelectorAll("input:not([type='hidden'])").forEach((elem) => elem.value = ""); 16480 modalElem.querySelectorAll("textarea").forEach((elem) => elem.value = ""); 16481 modalElem.querySelectorAll(".has-error").forEach((elem) => { 16482 if (elem.nodeName.toLocaleLowerCase() === "label") { 16483 elem.parentElement.removeChild(elem); 16484 } 16485 else { 16486 elem.classList.remove('has-error'); 16487 } 16488 }); 16489 modalElem.querySelectorAll('.has-success').forEach((elem) => elem.classList.remove('has-success')); 16490 document.getElementById('btnSubmit').removeAttribute('disabled'); 16491 } 16492}; 16493ShareVehicleModal = __decorate([ 16494 (0,inversify/* injectable */._G)(), 16495 __param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 16496 __metadata("design:paramtypes", [typeof (_a = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? _a : Object]) 16497], ShareVehicleModal); 16498 16499 16500 16501/***/ }), 16502 16503/***/ 5078: 16504/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 16505 16506"use strict"; 16507 16508 16509Object.defineProperty(exports, "__esModule", ({ 16510 value: true 16511})); 16512exports.BindingOnSyntax = void 0; 16513var binding_when_syntax_1 = __webpack_require__(4533); 16514var BindingOnSyntax = function () { 16515 function BindingOnSyntax(binding) { 16516 this._binding = binding; 16517 } 16518 BindingOnSyntax.prototype.onActivation = function (handler) { 16519 this._binding.onActivation = handler; 16520 return new binding_when_syntax_1.BindingWhenSyntax(this._binding); 16521 }; 16522 return BindingOnSyntax; 16523}(); 16524exports.BindingOnSyntax = BindingOnSyntax; 16525 16526/***/ }), 16527 16528/***/ 5141: 16529/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16530 16531"use strict"; 16532/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16533/* harmony export */ I: () => (/* binding */ ToggleFetcher) 16534/* harmony export */ }); 16535/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260); 16536var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 16537 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 16538 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 16539 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 16540 return c > 3 && r && Object.defineProperty(target, key, r), r; 16541}; 16542var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 16543 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 16544 return new (P || (P = Promise))(function (resolve, reject) { 16545 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 16546 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 16547 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 16548 step((generator = generator.apply(thisArg, _arguments || [])).next()); 16549 }); 16550}; 16551 16552let ToggleFetcher = class ToggleFetcher { 16553 fetch() { 16554 return __awaiter(this, void 0, void 0, function* () { 16555 const url = `/api/vhcliaa/config/get-all-toggles/${window.DlronGlobal_DealerId}`; 16556 if (window._toggleFetcherToggles && window._toggleFetcherToggles[url] !== undefined && window._toggleFetcherToggles[url] !== null) { 16557 return window._toggleFetcherToggles[url]; 16558 } 16559 let togglesPromise = this.getResponse(url); 16560 window._toggleFetcherToggles = {}; 16561 window._toggleFetcherToggles[url] = togglesPromise; 16562 return togglesPromise; 16563 }); 16564 } 16565 getResponse(url) { 16566 return __awaiter(this, void 0, void 0, function* () { 16567 let promise; 16568 if (window._toggleFetcherCache && window._toggleFetcherCache[url] !== undefined && window._toggleFetcherCache[url] !== null) { 16569 promise = window._toggleFetcherCache[url]; 16570 window._toggleFetcherCache[url] = undefined; //make sure to consume response only once 16571 } 16572 try { 16573 if (!promise) { 16574 promise = fetch(url); 16575 } 16576 const response = yield promise; 16577 if (response.ok) { 16578 const responseData = yield response.json(); 16579 return responseData; 16580 } 16581 else { 16582 throw new Error(`Error: ${response.status} for endpoint ${url}`); 16583 } 16584 } 16585 catch (error) { 16586 console.error(new Error(`Error fetching toggles from ${url}: ${error.message}`)); 16587 return {}; 16588 } 16589 }); 16590 } 16591}; 16592ToggleFetcher = __decorate([ 16593 (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .injectable */ ._G)() 16594], ToggleFetcher); 16595 16596 16597 16598/***/ }), 16599 16600/***/ 5326: 16601/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 16602 16603// style-loader: Adds some css to the DOM by adding a <style> tag 16604 16605// load the styles
16606var content = __webpack_require__(3643); 16607if(content.__esModule) content = content.default; 16608if(typeof content === 'string') content = [[module.id, content, '']]; 16609if(content.locals) module.exports = content.locals; 16610// add the styles to the DOM 16611var add = (__webpack_require__(8449)/* ["default"] */ .A) 16612var update = add("553aa9e5", content, false, {}); 16613// Hot Module Replacement 16614if(false) {} 16615 16616/***/ }), 16617 16618/***/ 5426: 16619/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 16620 16621"use strict"; 16622 16623 16624Object.defineProperty(exports, "__esModule", ({ 16625 value: true 16626})); 16627exports.MetadataReader = void 0; 16628var METADATA_KEY = __webpack_require__(4725); 16629var MetadataReader = function () { 16630 function MetadataReader() {} 16631 MetadataReader.prototype.getConstructorMetadata = function (constructorFunc) { 16632 var compilerGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, constructorFunc); 16633 var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc); 16634 return { 16635 compilerGeneratedMetadata: compilerGeneratedMetadata, 16636 userGeneratedMetadata: userGeneratedMetadata || {} 16637 }; 16638 }; 16639 MetadataReader.prototype.getPropertiesMetadata = function (constructorFunc) { 16640 var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc) || []; 16641 return userGeneratedMetadata; 16642 }; 16643 return MetadataReader; 16644}(); 16645exports.MetadataReader = MetadataReader; 16646 16647/***/ }), 16648 16649/***/ 5467: 16650/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16651 16652"use strict"; 16653 16654// EXPORTS 16655__webpack_require__.d(__webpack_exports__, { 16656 o: () => (/* binding */ useGlobalStore) 16657}); 16658 16659// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm-browser.prod.js 16660var vue_runtime_esm_browser_prod = __webpack_require__(3568); 16661// EXTERNAL MODULE: ./node_modules/pinia/dist/pinia.mjs + 1 modules 16662var pinia = __webpack_require__(1774); 16663// EXTERNAL MODULE: ./src/components/spaCosmos/utilities/SpaHelpers.ts 16664var SpaHelpers = __webpack_require__(4423); 16665;// ./src/infrastructure/vue/vehicleCardDeck/vehicleStore.ts 16666 16667 16668 16669const useVehicleStore = (0,pinia/* defineStore */.nY)('vehicle', () => { 16670 const isConsumerReportsScriptLoaded = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 16671 const loadingVehicles = (0,vue_runtime_esm_browser_prod/* ref */.KR)(true); 16672 const isLoadingVehicles = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => loadingVehicles.value); 16673 function setLoadingVehicles(value) { 16674 loadingVehicles.value = value; 16675 } 16676 function addConsumerReportsScript() { 16677 if (!isConsumerReportsScriptLoaded.value) { 16678 const url = "/resources/vhcliaa/components/consumerReports/consumerReports.js"; 16679 SpaHelpers/* SpaHelpers */.A.loadScript(`${url}?v=${window.DlronGlobal_PlatformVersion}`); 16680 isConsumerReportsScriptLoaded.value = true; 16681 } 16682 } 16683 return { 16684 isLoadingVehicles, 16685 setLoadingVehicles, 16686 addConsumerReportsScript 16687 }; 16688}); 16689 16690// EXTERNAL MODULE: ./src/core/enums/industry.ts 16691var industry = __webpack_require__(8586); 16692;// ./src/infrastructure/vue/vehicleCardDeck/globalStore.ts 16693 16694 16695 16696 16697const useGlobalStore = (0,pinia/* defineStore */.nY)('global', () => { 16698 const vehicleStore = useVehicleStore(); 16699 const isMobile = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 16700 const activeVehicleDropdown = (0,vue_runtime_esm_browser_prod/* ref */.KR)(null); 16701 const getActiveVehicleDropdown = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => activeVehicleDropdown.value); 16702 function setActiveVehicleDropdown(value) { 16703 activeVehicleDropdown.value = value; 16704 } 16705 const isProgrammaticScroll = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 16706 function updateProgramaticScroll(value) { 16707 isProgrammaticScroll.value = value; 16708 } 16709 const getIndustry = (0,vue_runtime_esm_browser_prod/* ref */.KR)(industry/* Industry */.j.Automotive); 16710 function setIndustry(value) { 16711 getIndustry.value = value; 16712 } 16713 return { 16714 vehicleStore, 16715 getActiveVehicleDropdown, 16716 setActiveVehicleDropdown, 16717 isMobile, 16718 isProgrammaticScroll, 16719 updateProgramaticScroll, 16720 getIndustry, 16721 setIndustry 16722 }; 16723}); 16724 16725 16726/***/ }), 16727 16728/***/ 5517: 16729/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 16730 16731"use strict"; 16732 16733 16734Object.defineProperty(exports, "__esModule", ({ 16735 value: true 16736})); 16737exports.AsyncContainerModule = exports.ContainerModule = void 0; 16738var id_1 = __webpack_require__(8418); 16739var ContainerModule = function () { 16740 function ContainerModule(registry) { 16741 this.id = id_1.id(); 16742 this.registry = registry; 16743 } 16744 return ContainerModule; 16745}(); 16746exports.ContainerModule = ContainerModule; 16747var AsyncContainerModule = function () { 16748 function AsyncContainerModule(registry) { 16749 this.id = id_1.id(); 16750 this.registry = registry; 16751 } 16752 return AsyncContainerModule; 16753}(); 16754exports.AsyncContainerModule = AsyncContainerModule; 16755 16756/***/ }), 16757 16758/***/ 5577: 16759/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 16760 16761// style-loader: Adds some css to the DOM by adding a <style> tag 16762 16763// load the styles
16764var content = __webpack_require__(3807); 16765if(content.__esModule) content = content.default; 16766if(typeof content === 'string') content = [[module.id, content, '']]; 16767if(content.locals) module.exports = content.locals; 16768// add the styles to the DOM 16769var add = (__webpack_require__(8449)/* ["default"] */ .A) 16770var update = add("83861cfe", content, false, {}); 16771// Hot Module Replacement 16772if(false) {} 16773 16774/***/ }), 16775 16776/***/ 5644: 16777/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16778 16779"use strict"; 16780/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16781/* harmony export */ Q: () => (/* binding */ TYPES), 16782/* harmony export */ x: () => (/* binding */ PROVIDERS) 16783/* harmony export */ }); 16784//Types used in our non-vue architecture for DI support 16785const TYPES = { 16786 IToggleService: Symbol.for("IToggleService"), 16787 ITranslationService: Symbol.for("ITranslationService"), 16788 IOemVehicleStatusService: Symbol.for("IOemVehicleStatusService"), 16789 IFilterPanel: Symbol.for("IFilterPanel"), 16790 IInventoryWasabi: Symbol.for("IInventoryWasabi"), 16791 IWasabiFilterState: Symbol.for("IWasabiFilterState"), 16792 IFilterState: Symbol.for("IFilterState"), 16793 SearchResultsPageWasabi: Symbol.for("SearchResultsPageWasabi"), 16794 InventoryLineupPageWasabi: Symbol.for("LineupPage"), 16795 IToggleFetcher: Symbol.for("IToggleFetcher"), 16796 ITranslationFetcher: Symbol.for("ITranslationFetcher"), 16797 SrpWasabiGeneral: Symbol.for("SrpWasabiGeneral"), 16798 VehicleCardWasabi: Symbol.for("VehicleCardWasabi"), 16799 RangeFilterCosmos: Symbol.for("RangeFilterCosmos"), 16800 VehicleDetailsPageHoisin: Symbol.for("VehicleDetailsPageHoisin"), 16801 IVehicleService: Symbol.for("IVehicleService"), 16802 IFilterService: Symbol.for("IFilterService"), 16803 IPriceStakSynchronizer: Symbol.for("PriceStakSynchronizer"), 16804 ShareVehicleModel: Symbol.for("ShareVehicleModel"), 16805 EvnVideoPlayer: Symbol.for("EvnVideoPlayer"), 16806 IPersonalizationService: Symbol.for("IPersonalizationService"), 16807 IStoreProvider: Symbol.for("IStoreProvider"), 16808 VehiclePricestakDisclaimerModal: Symbol.for("VehiclePricestakDisclaimerModal"), 16809 TdgConfirmAndContactButtons: Symbol.for("TdgConfirmAndContactButtons"), 16810 ILocationSortModalService: Symbol.for("ILocationSortModalService"), 16811 INavbarSearchService: Symbol.for("INavbarSearchService"), 16812}; 16813const PROVIDERS = { 16814 ToggleService: Symbol.for("ToggleService"), 16815 TranslationService: Symbol.for("TranslationService"), 16816 OemVehicleStatusService: Symbol.for("OemVehicleStatusService"), 16817 FilterPanel: Symbol.for("FilterPanel"), 16818 VehicleCardWasabi: Symbol.for("VehicleCardWasabi"), 16819 RangeFilterCosmos: Symbol.for("RangeFilterCosmos"), 16820 VehicleService: Symbol.for("VehicleService"), 16821 PriceStakSynchronizer: Symbol.for("PriceStakSynchronizer"), 16822 ShareVehicleModel: Symbol.for("ShareVehicleModel"), 16823 PersonalizationService: Symbol.for("PersonalizationService"), 16824 StoreProvider: Symbol.for("StoreProvider"), 16825 VehiclePricestakDisclaimerModal: Symbol.for("VehiclePricestakDisclaimerModal"), 16826 TdgConfirmAndContactButtons: Symbol.for("TdgConfirmAndContactButtons"), 16827 LocationSortModalService: Symbol.for("ILocationSortModalService"), 16828 NavbarSearchService: Symbol.for("NavbarSearchService"), 16829}; 16830 16831 16832 16833/***/ }), 16834 16835/***/ 6055: 16836/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16837 16838"use strict"; 16839 16840// EXPORTS 16841__webpack_require__.d(__webpack_exports__, { 16842 P: () => (/* binding */ useFilterStore) 16843}); 16844 16845// EXTERNAL MODULE: ./node_modules/pinia/dist/pinia.mjs + 1 modules 16846var pinia = __webpack_require__(1774); 16847// EXTERNAL MODULE: ./src/inversify.config.ts + 24 modules 16848var inversify_config = __webpack_require__(3239); 16849// EXTERNAL MODULE: ./src/types/types.ts 16850var types = __webpack_require__(5644); 16851// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm-browser.prod.js 16852var vue_runtime_esm_browser_prod = __webpack_require__(3568); 16853// EXTERNAL MODULE: ./src/components/spaCosmos/searchFilters/filterPanel/refinementType.ts 16854var refinementType = __webpack_require__(3677); 16855// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/globalStore.ts + 11 modules
16856var cosmosSrp_globalStore = __webpack_require__(3551); 16857// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/customEvents.ts 16858var customEvents = __webpack_require__(9600); 16859// EXTERNAL MODULE: ./node_modules/lodash.debounce/index.js 16860var lodash_debounce = __webpack_require__(730); 16861var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce); 16862// EXTERNAL MODULE: ./src/utilities/urlHelpers.ts 16863var urlHelpers = __webpack_require__(7324); 16864;// ./src/utilities/filterHelpers.ts 16865class FilterHelpers { 16866} 16867//NOTE: Because our filters are a combination of queryString and ES values, we can 16868// have a mix of encoded and decoded values. These helpers will do comparisons 16869// on the decoded values to help account for these issues. 16870// Example: The Location filter can have the following values: 16871// Somewhere, MI 16872// Nowhere, MD 16873// When we put these together as a multi-select filter, we get the following queryString 16874// ?location=Somewhere%2C%20MI,Nowhere%2C%20MD 16875// Note that in this instance, we have to keep the commas in the values encoded, but we 16876// split on the comma between each value. 16877// 16878// Because of complicated scenarios like this, we have hand coded methods to handle the 16879// querystring filters instead of being able to rely on the built in methods like URLSearchParams. 16880FilterHelpers.arrayIncludes = (array, value) => { 16881 if (!array) { 16882 return false; 16883 } 16884 const decodedArray = array.map(item => decodeURIComponent(item)) || []; 16885 const decodedValue = decodeURIComponent(value); 16886 const containsDecodedValue = decodedArray.includes(decodedValue); 16887 return containsDecodedValue; 16888}; 16889FilterHelpers.arrayIndexOf = (array, value) => { 16890 if (!array) { 16891 return -1; 16892 } 16893 const decodedArray = array.map(item => decodeURIComponent(item)) || []; 16894 const decodedValue = decodeURIComponent(value); 16895 const indexOfDecodedValue = decodedArray.indexOf(decodedValue); 16896 return indexOfDecodedValue; 16897}; 16898// NOTE: the startwiths is used explicitly for handling ModelAndTrim filters. 16899FilterHelpers.arraySomeModelAndTrim = (array, value) => { 16900 if (!array) { 16901 return false; 16902 } 16903 const decodedArray = array.map(item => decodeURIComponent(item)) || []; 16904 const decodedValue = decodeURIComponent(value); 16905 const indexOfDecodedValue = decodedArray.some((item) => item.startsWith(`${decodedValue}: `)); 16906 return indexOfDecodedValue; 16907}; 16908 16909;// ./src/infrastructure/vue/cosmosSrp/filterStore.ts 16910var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 16911 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 16912 return new (P || (P = Promise))(function (resolve, reject) { 16913 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 16914 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 16915 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 16916 step((generator = generator.apply(thisArg, _arguments || [])).next()); 16917 }); 16918}; 16919 16920 16921 16922 16923 16924 16925 16926 16927 16928 16929function getFamilyKey(make, family) { 16930 return `${make}::${family}`; 16931} 16932function parseFamilyKey(familyKey) { 16933 const makeEnd = familyKey.indexOf('::'); 16934 return { make: familyKey.slice(0, makeEnd), family: familyKey.slice(makeEnd + 2) }; 16935} 16936const useFilterStore = (0,pinia/* defineStore */.nY)('filter', () => { 16937 const globalStore = (0,cosmosSrp_globalStore/* useGlobalStore */.o)(); 16938 const filterService = inversify_config/* doIocContainer */.E.get(types/* TYPES */.Q.IFilterService); 16939 const loadingFilters = (0,vue_runtime_esm_browser_prod/* ref */.KR)(true); 16940 //this stores the most recent filter (aka refinementtype) that the user interacted with 16941 const currentFilter = (0,vue_runtime_esm_browser_prod/* ref */.KR)(null); 16942 const isWaitingToFilterVehicles = (0,vue_runtime_esm_browser_prod/* ref */.KR)(false); 16943 const currentSelectFiltersLabel = (0,vue_runtime_esm_browser_prod/* ref */.KR)(""); 16944 /* IMPORTANT NOTES ABOUT FILTER STATE */ 16945 //This holds the entirey of the selected filters and other non refinement url parameters 16946 //because we fetch stuff and we need to know the state of toggles and such we want to keep track of everything 16947 //so if you need to know something that involves ONLY vehicle refinement filters, you'll need to run it 16948 //through a isRefinement() check. 16949 // DO NOT MUTATE this directly. Use the queuedFilters to push things in and out of here. 16950 // Deliberate exception: normalizeBooleanFilterValue corrects an existing value in place, without 16951 // going through queuedFilters/getFilters(), specifically to avoid triggering a redundant search. 16952 const selectedFilters = (0,vue_runtime_esm_browser_prod/* reactive */.Kh)({}); 16953 //We work with a queue so we can support both dynamic filtering and non-dynamic filtering 16954 //Always put stuff in the queue, then process the queue to move it to the actual selected filters. 16955 const queuedFilters = (0,vue_runtime_esm_browser_prod/* reactive */.Kh)({}); 16956 // Tracks which models and trims are selected under each family. 16957 // Keyed by "Make::Family". This is UI-only metadata â the actual search uses the flat unique list in queuedFilters. 16958 const familyModelSelections = (0,vue_runtime_esm_browser_prod/* reactive */.Kh)({}); 16959 const FamilyModelSelectionsStorageKey = 'cosmosSrp_familyModelSelections'; 16960 (0,vue_runtime_esm_browser_prod/* watch */.wB)(familyModelSelections, (newVal) => { 16961 sessionStorage.setItem(FamilyModelSelectionsStorageKey, JSON.stringify(newVal)); 16962 }, { deep: true }); 16963 //GETTERS 16964 const isMobileOrTablet = (0,vue_runtime_esm_browser_prod/* ref */.KR)(window.innerWidth < 992); 16965 const getSelectedFilters = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => selectedFilters); 16966 const getQueuedFilters = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => queuedFilters); 16967 const isDynamicFilteringEnabled = () => filterService.isDynamicFilteringEnabled(globalStore.getSrpModel.SrpPageSettingsModel.SrpFilterType, globalStore.getSrpModel.UiLocation); 16968 const isDynamicFilteringAndNotMobile = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => isDynamicFilteringEnabled() && !isMobileOrTablet.value); 16969 const getCurrentFilter = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => currentFilter.value); 16970 const isLoadingFilters = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => loadingFilters.value); 16971 const hideZeroCountFiltersToggle = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => filterService.hideZeroCountFilters()); 16972 const hideZeroCountFilters = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => hideZeroCountFiltersToggle.value || globalStore.getSrpModel.FilterPanelModel.HideZeroMatchFilters); 16973 const getShowPrimaryMakeFirst = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => globalStore.getSrpModel.FilterPanelModel.ShowPrimaryMakeRefinementFirst); 16974 const getCurrentSelectFiltersLabel = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => currentSelectFiltersLabel.value); 16975 //our filter state tracks ALL querystring params 16976 //so we need to know if any vehicle refinements are selected 16977 const hasAppliedFilters = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 16978 for (let key in selectedFilters) { 16979 if (isRefinementType(key)) { 16980 return true; 16981 } 16982 } 16983 return false;
16984 }); 16985 //get the count of all of the vehicle refinement filters 16986 const getTotalRefinementFilterCount = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 16987 let count = 0; 16988 for (const key in selectedFilters) { 16989 if (selectedFilters.hasOwnProperty(key) && isRefinementType(key)) { 16990 count += selectedFilters[key].length; 16991 } 16992 } 16993 return count; 16994 }); 16995 const getTotalQueuedRefinementFilterCount = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 16996 let count = 0; 16997 for (const key in queuedFilters) { 16998 if (queuedFilters.hasOwnProperty(key) && isRefinementType(key)) { 16999 count += queuedFilters[key].length; 17000 } 17001 } 17002 return count; 17003 }); 17004 const getWaitingToFilterVehicles = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => { 17005 if (isDynamicFilteringAndNotMobile.value) { 17006 return false; 17007 } 17008 return isWaitingToFilterVehicles.value; 17009 }); 17010 //METHODS 17011 function setup() { 17012 var _a; 17013 return __awaiter(this, void 0, void 0, function* () { 17014 if ((_a = window === null || window === void 0 ? void 0 : window.DealeronCookie) === null || _a === void 0 ? void 0 : _a.getItem("DLRON_LOCATION_MODAL_USED")) { 17015 checkForLocationSort(); 17016 } 17017 parseQueryString(true); 17018 restoreFamilySelectionsFromCache(); 17019 }); 17020 } 17021 const displayFilterItemCheckbox = (vehicleCount, checkboxFilter = null, shouldShow = true) => { 17022 var _a; 17023 if (hideZeroCountFilters.value && vehicleCount === 0) { 17024 return false; 17025 } 17026 return (_a = checkboxFilter === null || checkboxFilter === void 0 ? void 0 : checkboxFilter.ShowCheckboxFilter) !== null && _a !== void 0 ? _a : shouldShow; 17027 }; 17028 //determine if a key is a vehicle refinement filter 17029 function isRefinementType(key) { 17030 const inputLowerCase = key.toLowerCase(); 17031 // Use the enum instead of an array 17032 return Object.values(refinementType/* RefinementType */.S).some(item => item.toLowerCase() === inputLowerCase); 17033 }
17034 function getCosmosSrpFilters(updateUrlNow = true, removingSearchQuery = false) { 17035 return __awaiter(this, void 0, void 0, function* () { 17036 try { 17037 loadingFilters.value = true; 17038 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.FilterLoadStart)); 17039 // See DO-36952. On mobile, we need to check if the search valet has been updated and bypass the check for dynamic filtering 17040 const hasSearchValetUpdate = getQueuedFilters.value.hasOwnProperty("q") || getQueryStringKeyValuePairs().some(f => f.key === "q"); 17041 // If we are using dynamic filtering and not on mobile and not removing a filter pill, we want to call getFilteredVehicle 17042 const shouldCallGetFilteredVehicles = isDynamicFilteringAndNotMobile.value || (hasSearchValetUpdate && !removingSearchQuery); 17043 //scroll vehicles to the top of the vehicles list as soon as possible. 17044 if (shouldCallGetFilteredVehicles) { 17045 globalStore.vehicleStore.srpScrollTop(); 17046 yield (0,vue_runtime_esm_browser_prod/* nextTick */.dY)(); 17047 } 17048 //process any queued filters 17049 processFilterQueue(updateUrlNow); 17050 //then parse the querystring to get the current state of the filters 17051 parseQueryString(); 17052 //go fetch everything about filters from the server 17053 const response = yield getFiltersFromFilterService(); 17054 setFilterModel(response); 17055 loadingFilters.value = false; 17056 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.FilterLoadEnd, { detail: getSelectedFilters.value })); 17057 if (shouldCallGetFilteredVehicles) { 17058 globalStore.vehicleStore.getFilteredVehicles(); 17059 } 17060 } 17061 catch (error) { 17062 loadingFilters.value = false; 17063 console.error(`Error fetching data: ${error}`); 17064 } 17065 }); 17066 } 17067 function getFiltersFromFilterService() { 17068 return __awaiter(this, void 0, void 0, function* () { 17069 const response = yield filterService.getFilters(globalStore.getSrpModel.DealerModel.DealerId, globalStore.getSrpModel.PageId, globalStore.getDynamicCountsSearch); 17070 return response; 17071 }); 17072 } 17073 function setFilterModel(data) { 17074 Object.assign(globalStore.getSrpModel.FilterPanelModel, data); 17075 } 17076 //manually extract the querystring params because we allow dealers to use unsafe characters 17077 function getQueryStringKeyValuePairs() { 17078 const queryString = window.location.href.split('?'); 17079 if (!queryString || queryString.length < 2) { 17080 return []; 17081 } 17082 // Split the query string into key-value pairs 17083 const pairs = queryString[1].split('#')[0].split('&'); 17084 // Map each pair into an object 17085 const params = pairs.map((pair) => { 17086 // Split the key and value (with potential trailing =) 17087 const [key, ...valueParts] = pair.split('='); 17088 // Join the value parts (keeping trailing =) 17089 const value = valueParts.join('='); 17090 //we can't use decodeURIComponent because we allow dealers to use unsafe characters 17091 return { 17092 key: key, 17093 value: value 17094 }; 17095 }); 17096 return params; 17097 } 17098 function parseQueryString(init = false) { 17099 //HACK: because we allow dealers to use unsafe querystring characters we can't use 17100 // the URLSearchParams object because it will overwrite our manual encoding rules 17101 const params = getQueryStringKeyValuePairs(); 17102 const updateParms = new Object(); 17103 for (const parm in params) { 17104 const [key, value] = [params[parm].key, params[parm].value]; 17105 let values = []; 17106 switch (key.toLowerCase()) { 17107 case 'modelandtrim': 17108 case 'rvbrand': 17109 // Split by exclamation mark (!) to separate different Model:Trim sets 17110 const modelTrimSets = value.split('!'); 17111 for (const modelTrimSet of modelTrimSets) { 17112 // Split by colon (:) to separate Model and Trims 17113 const [model, trims] = modelTrimSet.split(':'); 17114 // Split Trims by comma (,) to get individual Trims 17115 if (trims && trims.length > 0) { 17116 const trimArray = trims.split(','); 17117 for (const trim of trimArray) { 17118 values.push(`${model}: ${trim}`); // Create an object for each Model:Trim 17119 } 17120 } 17121 else { 17122 values.push(`${model}`); 17123 } 17124 } 17125 break; 17126 case 'familymodelandtrim': { 17127 // Format: FAMILY:MODEL[:TRIM1,TRIM2]!FAMILY2:MODEL2[...] 17128 // Entries stored as "FAMILY: MODEL" or "FAMILY: MODEL: TRIM" 17129 const familyModelTrimSets = value.split('!'); 17130 for (const set of familyModelTrimSets) { 17131 const pieces = set.split(':'); 17132 const family = pieces[0]; 17133 const model = pieces[1]; 17134 if (!family || !model) { 17135 continue; 17136 } 17137 if (pieces[2] && pieces[2].length > 0) { 17138 const trimArray = pieces[2].split(','); 17139 for (const trim of trimArray) { 17140 values.push(`${family}: ${model}: ${trim}`); 17141 } 17142 } 17143 else { 17144 values.push(`${family}: ${model}`); 17145 } 17146 } 17147 break; 17148 } 17149 default: 17150 if (value) { 17151 values = value.split(','); // Split values by comma (default delimiter) 17152 } 17153 else { 17154 //handle queryString params that don't have a value
17155 values = [null]; 17156 } 17157 break; 17158 } 17159 updateParms[key] = values; 17160 } 17161 //on setup we want to update the queued filters to be updated. After this we 17162 //we only want to update the selected filters when we process the queue 17163 if (init) { 17164 syncObjects(queuedFilters, updateParms); 17165 } 17166 syncObjects(selectedFilters, updateParms); 17167 } 17168 //do all our filter work on the queues so we can delay applying filters 17169 //in the case that dynamic filtering is disabled. 17170 function removeFilter(filterKey, filterValue, isAllTrimsClick, isClearFilterPillClick) { 17171 //We don't care about the value of For You, just that we have the key 17172 if (filterKey === refinementType/* RefinementType */.S.SignalsForYou) { 17173 delete queuedFilters[filterKey]; 17174 return true; 17175 } 17176 filterValue = EncodeFilterValue(filterKey, filterValue); 17177 if (filterValue === undefined && queuedFilters.hasOwnProperty(filterKey)) { 17178 delete queuedFilters[filterKey]; 17179 if (filterKey === 'q' && globalStore.injectBestMatchSortOption) { 17180 globalStore.injectBestMatchSortOption(false); 17181 } 17182 return true; 17183 } 17184 else if (queuedFilters.hasOwnProperty(filterKey) && Array.isArray(queuedFilters[filterKey])) { 17185 const index = FilterHelpers.arrayIndexOf(queuedFilters[filterKey], filterValue); 17186 let syncFamilyOnModelAndTrim = false;
17187 if (index !== -1) { 17188 //remove the item 17189 queuedFilters[filterKey].splice(index, 1); 17190 if (filterKey === 'q') { 17191 clearBestMatchSort(); 17192 if (globalStore.injectBestMatchSortOption) { 17193 globalStore.injectBestMatchSortOption(false); 17194 } 17195 } 17196 //If the filter has no values then delete it from queued filters 17197 if (queuedFilters[filterKey].length === 0) { 17198 delete queuedFilters[filterKey]; 17199 } 17200 //If we are removing a search valet pill/query we need to clear the search input as well. 17201 if (isClearFilterPillClick && filterKey === 'q') { 17202 document.dispatchEvent(new Event(customEvents/* CosmosSrpCustomEvents */.A.SearchValetCleared)); 17203 } 17204 if (isDynamicFilteringAndNotMobile.value || isClearFilterPillClick) { 17205 processFilterQueue(); 17206 } 17207 if (filterKey === refinementType/* RefinementType */.S.ModelAndTrim || filterKey === refinementType/* RefinementType */.S.RvBrand) { 17208 syncFamilyOnModelAndTrim = true; 17209 } 17210 } 17211 //ModelAndTrim entries are in the format of "ModelName: TrimName". We know if we're removing a trim 17212 // by checking `startsWith("Model :"). Model/Trim are special in that we either have just 17213 // the model name, or we have only a list of "ModelName: TrimName" items. Not both. 17214 if ((filterKey === refinementType/* RefinementType */.S.ModelAndTrim || filterKey === refinementType/* RefinementType */.S.RvBrand) && !isClearFilterPillClick) { 17215 //handle trim removal - if we remove the final trim for a model add the model back in 17216 if (filterValue.indexOf(": ") > -1) { 17217 const model = filterValue.split(": ")[0]; 17218 if (!FilterHelpers.arraySomeModelAndTrim(queuedFilters[filterKey], model)) { 17219 addFilter(filterKey, model); 17220 } 17221 } 17222 else { 17223 //handle model removal - we need to remove all trims for this model because we're removing the model 17224 if (queuedFilters[filterKey]) { 17225 queuedFilters[filterKey] = queuedFilters[filterKey].filter(function (item) { 17226 //when working with filters we always need to compare decoded values 17227 return !decodeURIComponent(item).startsWith(`${decodeURIComponent(filterValue)}: `); 17228 }); 17229 } 17230 //The all trims button is never "uncheckable", per se, it clears all the trims 17231 //and set us back to just the model. Because of this it will remove the model 17232 //from the filter state so we need to add it back 17233 if (isAllTrimsClick) { 17234 queuedFilters[filterKey].push(filterValue); 17235 } 17236 } 17237 } 17238 // FamilyModelAndTrim entries are in the format "FAMILY: MODEL" (bare) or "FAMILY: MODEL: TRIM" (trim). 17239 // Unlike ModelAndTrim, bare entries already contain ": " so we discriminate by part count, not presence of ": ". 17240 if (filterKey === refinementType/* RefinementType */.S.FamilyModelAndTrim && !isClearFilterPillClick) { 17241 const parts = filterValue.split(': '); 17242 if (parts.length === 3) { 17243 // Removing a trim â restore bare "FAMILY: MODEL" if no other trims remain for it 17244 const familyModel = `${parts[0]}: ${parts[1]}`; 17245 if (!FilterHelpers.arraySomeModelAndTrim(queuedFilters[filterKey], familyModel)) { 17246 addFilter(filterKey, familyModel); 17247 } 17248 } 17249 else { 17250 // Removing bare "FAMILY: MODEL" â remove all associated "FAMILY: MODEL: TRIM" entries 17251 if (queuedFilters[filterKey]) { 17252 queuedFilters[filterKey] = queuedFilters[filterKey].filter(function (item) { 17253 return !decodeURIComponent(item).startsWith(`${decodeURIComponent(filterValue)}: `); 17254 }); 17255 } 17256 if (isAllTrimsClick) { 17257 queuedFilters[filterKey].push(filterValue); 17258 } 17259 } 17260 } 17261 if (queuedFilters[filterKey] && queuedFilters[filterKey].length === 0) { 17262 delete queuedFilters[filterKey]; 17263 } 17264 if (queuedFilters[filterKey] && queuedFilters[filterKey].length === 0) { 17265 delete queuedFilters[filterKey]; 17266 } 17267 // Sync after the auto-add block so mobile's model re-add is visible in queuedFilters 17268 if (syncFamilyOnModelAndTrim) { 17269 syncFamilySelectionsAfterRemoval(filterKey, filterValue); 17270 } 17271 return true; 17272 } 17273 return false;
17274 } 17275 function isBestMatchSortValue(sortValue) { 17276 if (!sortValue) { 17277 return false; 17278 } 17279 const decodedSortValue = decodeURIComponent(sortValue) 17280 .replace(/\+/g, ' ') 17281 .trim() 17282 .toLowerCase(); 17283 return decodedSortValue.startsWith('relevance ') 17284 || decodedSortValue.includes('st=relevance ') 17285 || decodedSortValue.includes('&st=relevance ') 17286 || decodedSortValue.includes('?st=relevance '); 17287 } 17288 function clearBestMatchSort() { 17289 if (!queuedFilters.hasOwnProperty('st') || !Array.isArray(queuedFilters['st'])) { 17290 return; 17291 } 17292 if (queuedFilters['st'].some((sortValue) => isBestMatchSortValue(sortValue))) { 17293 delete queuedFilters['st']; 17294 } 17295 } 17296 function clearSortState() { 17297 if (queuedFilters.hasOwnProperty('st')) { 17298 delete queuedFilters['st']; 17299 } 17300 if (selectedFilters.hasOwnProperty('st')) { 17301 delete selectedFilters['st']; 17302 } 17303 } 17304 //Common place to encode filter values before adding the qs value to the filter object. 17305 //***IF YOU ADD AN ENTRY TO THE ENCODE PLEASE MAKE SURE TO MAKE A DECODE ENTRY BELOW */ 17306 function EncodeFilterValue(filterKey, filterValue) { 17307 //Check to make sure the filterValue is a string before encoding. 17308 //If it is not a string it is most likly a filter object, so we don't want to encode it. 17309 if (typeof filterValue === 'string') { 17310 let newFilterValue = filterValue; 17311 // Replace registered html 17312 newFilterValue = newFilterValue.replace(/<sup>®<\/sup>/g, "*REGISTERED"); 17313 // Replace trademark html 17314 newFilterValue = newFilterValue.replace(/<sup>™<\/sup>/g, "*TRADEMARK"); 17315 // Replace registered inline ® 17316 newFilterValue = newFilterValue.replace(/\u00AE/g, "*REGINLINE"); 17317 // Replace trademark inline ⢠17318 newFilterValue = newFilterValue.replace(/\u2122/g, "*TMINLINE"); 17319 // Replace ampersand with encoded ampersand 17320 newFilterValue = newFilterValue.replace(/&/g, "%26"); 17321 // Replace comma with encoded comma 17322 newFilterValue = newFilterValue.replace(/,/g, "%2C"); 17323 // Replace comma with encoded semicolon 17324 newFilterValue = newFilterValue.replace(/;/g, "%3B"); 17325 // Lincoln's "Competitive+" tier puts a literal "+" in the value. A bare "+" in the 17326 // query string is decoded as a space server-side, so the search would never match the tier. 17327 // Scoped to cpotier - no other filter's values carry a "+" that reaches this path. 17328 if ((filterKey === null || filterKey === void 0 ? void 0 : filterKey.toLowerCase()) === "cpotier") { 17329 newFilterValue = newFilterValue.replace(/\+/g, "%2B"); 17330 } 17331 return newFilterValue; 17332 } 17333 return filterValue; 17334 } 17335 function DecodeFilterValue(filterKey, filterValue) { 17336 //Check to make sure the filterValue is a string before encoding. 17337 //If it is not a string it is most likly a filter object, so we don't want to encode it. 17338 if (typeof filterValue === 'string') { 17339 let newFilterValue = filterValue; 17340 // Decode encoded registered html 17341 newFilterValue = newFilterValue.replace(/\*REGISTERED/g, "<sup>®</sup>"); 17342 // Decode encoded trademark html 17343 newFilterValue = newFilterValue.replace(/\*TRADEMARK/g, "<sup>™</sup>"); 17344 // Decode encoded inline registered 17345 newFilterValue = newFilterValue.replace(/\*REGINLINE/g, "\u00AE"); 17346 // Decode encoded inline trademark 17347 newFilterValue = newFilterValue.replace(/\*TMINLINE/g, "\u2122"); 17348 // Decode encoded ampersand 17349 newFilterValue = newFilterValue.replace(/%26/g, "&"); 17350 // Decode encoded comma 17351 newFilterValue = newFilterValue.replace(/%2C/g, ","); 17352 // Decode encoded semicolon 17353 newFilterValue = newFilterValue.replace(/%3B/g, ";"); 17354 // Decode encoded space 17355 newFilterValue = newFilterValue.replace(/%20/g, " "); 17356 // Mirror of the cpotier "+" encoding in EncodeFilterValue, so filter pills and 17357 // comparisons show the tier as "Competitive+" rather than "Competitive%2B". 17358 if ((filterKey === null || filterKey === void 0 ? void 0 : filterKey.toLowerCase()) === "cpotier") { 17359 newFilterValue = newFilterValue.replace(/%2B/gi, "+"); 17360 } 17361 return newFilterValue; 17362 } 17363 return filterValue; 17364 } 17365 function addFilter(filterKey, filterValue) { 17366 filterValue = EncodeFilterValue(filterKey, filterValue); 17367 if (queuedFilters.hasOwnProperty(filterKey)) { 17368 if (filterKey.indexOf("range") > -1) { 17369 delete queuedFilters[filterKey]; 17370 } 17371 //don't add the value if it already exists 17372 if (Array.isArray(queuedFilters[filterKey])) { 17373 const index = FilterHelpers.arrayIndexOf(queuedFilters[filterKey], filterValue); 17374 if (index > -1) { 17375 return false;
17376 } 17377 } 17378 } 17379 if (filterKey === refinementType/* RefinementType */.S.ModelAndTrim || filterKey === refinementType/* RefinementType */.S.RvBrand) { 17380 //if we're adding a trim and there were no other trims selected for this model 17381 // then we need to remove the model entry. Model/Trim are special in that we either have just 17382 // the model name, or we have only a list of "ModelName: TrimName" items. Not both. 17383 if (filterValue.indexOf(": ") > -1) { 17384 const model = filterValue.split(": ")[0]; 17385 if (isFilterSelected(filterKey, model)) { 17386 const index = FilterHelpers.arrayIndexOf(queuedFilters[filterKey], model); 17387 if (index !== -1) { 17388 queuedFilters[filterKey].splice(index, 1); 17389 } 17390 } 17391 } 17392 } 17393 // FamilyModelAndTrim: adding a trim "FAMILY: MODEL: TRIM" removes the bare "FAMILY: MODEL" entry if present. 17394 // Adding a bare "FAMILY: MODEL" entry (parts.length === 2) needs no special handling. 17395 if (filterKey === refinementType/* RefinementType */.S.FamilyModelAndTrim) { 17396 const parts = filterValue.split(': '); 17397 if (parts.length === 3) { 17398 const familyModel = `${parts[0]}: ${parts[1]}`; 17399 if (isFilterSelected(filterKey, familyModel)) { 17400 const index = FilterHelpers.arrayIndexOf(queuedFilters[filterKey], familyModel); 17401 if (index !== -1) { 17402 queuedFilters[filterKey].splice(index, 1); 17403 } 17404 } 17405 } 17406 } 17407 if (queuedFilters[filterKey]) { 17408 queuedFilters[filterKey].push(filterValue); 17409 } 17410 else { 17411 queuedFilters[filterKey] = [filterValue]; 17412 } 17413 return true; 17414 } 17415 //assign the queued filters to the actual filters. This applies the 17416 //filters to the UI officially 17417 function processFilterQueue(updateUrlNow = true) { 17418 syncObjects(selectedFilters, queuedFilters); 17419 updateQueryString(updateUrlNow); 17420 } 17421 //When we update the filter state we update the queued filters. 17422 //If we are using dynamic filtering, we apply the filters immediately. 17423 // We go get all the filters again because this updates the vehicle counts 17424 //If we are not using dynamic filtering, we wait until the user clicks the apply filters button 17425 function updateFilterState(refinementName, filterItem, isAllTrimsClick) { 17426 let isSelected = isFilterSelected(refinementName, filterItem); 17427 //keep track of the filter refinement the user is currently interacting with 17428 setCurrentFilter(refinementName); 17429 if (filterItem === undefined // handle special case for handling range filters 17430 || ((refinementName == refinementType/* RefinementType */.S.ModelAndTrim || refinementName == refinementType/* RefinementType */.S.RvBrand || refinementName == refinementType/* RefinementType */.S.FamilyModelAndTrim) && isFilterModelSelected(filterItem, refinementName)) // handle modelAndTrim special case 17431 || isFilterSelected(refinementName, filterItem) // handle all other cases 17432 ) { 17433 if (!removeFilter(refinementName, filterItem, isAllTrimsClick)) { 17434 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.UpdateFilterState)); 17435 return; 17436 } 17437 } 17438 else { 17439 if (refinementName === 'st') { 17440 // we want to remove the sort parameter if we're trying a new sort 17441 clearSortState(); 17442 // Best Match is the implicit/default search sort and should not persist "st" in the query string. 17443 if (isBestMatchSortValue(filterItem)) { 17444 clearSortState(); 17445 processFilterQueue(); 17446 if (globalStore.injectBestMatchSortOption) { 17447 globalStore.injectBestMatchSortOption(true); 17448 } 17449 getFilters(); 17450 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.UpdateFilterState)); 17451 return; 17452 } 17453 } 17454 handleAvailabilityFilters(refinementName); 17455 if (!addFilter(refinementName, filterItem)) { 17456 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.UpdateFilterState)); 17457 return; 17458 } 17459 } 17460 // DO NOT REMOVE refinementName === 'st' until we universally support dynamic filtering. This will break sorting on mobile. See DO-31720 17461 if (isDynamicFilteringAndNotMobile.value || refinementName === 'st') { 17462 getFilters(); 17463 } 17464 else { 17465 let hasFiltersToApply = false;
17466 const anyFilters = Object.assign(Object.assign({}, selectedFilters), queuedFilters); 17467 for (const key in anyFilters) { 17468 if (anyFilters.hasOwnProperty(key) && isRefinementType(key)) { 17469 hasFiltersToApply = true; 17470 break; 17471 } 17472 } 17473 setWaitingToFilterVehicles(hasFiltersToApply); 17474 let removingSearchQuery = refinementName == 'q' && isSelected; 17475 getFilters(false, removingSearchQuery); 17476 } 17477 document.dispatchEvent(new CustomEvent(customEvents/* CosmosSrpCustomEvents */.A.UpdateFilterState)); 17478 } 17479 function handleAvailabilityFilters(refinementName) { 17480 const refinementKeys = [refinementType/* RefinementType */.S.InTransit, refinementType/* RefinementType */.S.InProduction, refinementType/* RefinementType */.S.InStock]; 17481 if (refinementKeys.includes(refinementName)) { 17482 const toggleOffRefinments = refinementKeys.filter(refinement => refinement !== refinementName); 17483 toggleOffRefinments.forEach(refinement => { 17484 removeFilter(refinement); 17485 }); 17486 } 17487 } 17488 function updateSearchValetFilter(searchKey, searchValue, distanceKey, distanceValue) { 17489 //remove the existing search valet filters 17490 delete queuedFilters[searchKey]; 17491 delete queuedFilters[distanceKey]; 17492 if (searchValue) { 17493 delete queuedFilters['st']; 17494 if (globalStore.injectBestMatchSortOption) { 17495 globalStore.injectBestMatchSortOption(true); 17496 } 17497 } 17498 else { 17499 clearBestMatchSort(); 17500 if (globalStore.injectBestMatchSortOption) { 17501 globalStore.injectBestMatchSortOption(false); 17502 } 17503 } 17504 //add the new search valet filters 17505 if (searchValue) { 17506 addFilter(searchKey, searchValue); 17507 } 17508 if (distanceValue) { 17509 addFilter(distanceKey, distanceValue); 17510 } 17511 getFilters(); 17512 } 17513 // Idempotent add â ensures model is tracked under this family without toggling 17514 function addModelToFamily(make, family, modelName) { 17515 const key = getFamilyKey(make, family); 17516 if (!familyModelSelections[key]) { 17517 familyModelSelections[key] = { models: [], trims: {} }; 17518 } 17519 if (!familyModelSelections[key].models.includes(modelName)) { 17520 familyModelSelections[key].models.push(modelName); 17521 } 17522 } 17523 function removeModelFromFamily(make, family, modelName) { 17524 const key = getFamilyKey(make, family); 17525 if (!familyModelSelections[key]) { 17526 return; 17527 } 17528 const entry = familyModelSelections[key]; 17529 const idx = entry.models.indexOf(modelName); 17530 if (idx !== -1) { 17531 entry.models.splice(idx, 1); 17532 } 17533 delete entry.trims[modelName]; 17534 if (entry.models.length === 0) { 17535 delete familyModelSelections[key]; 17536 } 17537 } 17538 function getFamilyModelSelectionsFor(make, family) { 17539 var _a; 17540 return ((_a = familyModelSelections[getFamilyKey(make, family)]) === null || _a === void 0 ? void 0 : _a.models) || []; 17541 } 17542 const getFamilyModelSelections = (0,vue_runtime_esm_browser_prod/* computed */.EW)(() => familyModelSelections); 17543 function isModelInAnyOtherFamily(make, family, modelName) { 17544 var _a, _b; 17545 const currentKey = getFamilyKey(make, family); 17546 for (const key in familyModelSelections) { 17547 if (key === currentKey) 17548 continue; 17549 if ((_b = (_a = familyModelSelections[key]) === null || _a === void 0 ? void 0 : _a.models) === null || _b === void 0 ? void 0 : _b.includes(modelName)) { 17550 return true; 17551 } 17552 } 17553 return false; 17554 } 17555 function isTrimInAnyOtherFamily(make, family, modelName, trimName) { 17556 var _a; 17557 const currentKey = getFamilyKey(make, family); 17558 for (const key in familyModelSelections) { 17559 if (key === currentKey) 17560 continue; 17561 const trims = (_a = familyModelSelections[key]) === null || _a === void 0 ? void 0 : _a.trims[modelName]; 17562 if (trims === null || trims === void 0 ? void 0 : trims.includes(trimName)) { 17563 return true; 17564 } 17565 } 17566 return false;
17567 } 17568 function clearFamilyModelSelections() { 17569 for (const key in familyModelSelections) { 17570 delete familyModelSelections[key]; 17571 } 17572 sessionStorage.removeItem(FamilyModelSelectionsStorageKey); 17573 } 17574 function addTrimToFamilyModel(make, family, modelName, trimName) { 17575 const key = getFamilyKey(make, family); 17576 if (!familyModelSelections[key]) { 17577 familyModelSelections[key] = { models: [], trims: {} }; 17578 } 17579 if (!familyModelSelections[key].trims[modelName]) { 17580 familyModelSelections[key].trims[modelName] = []; 17581 } 17582 if (!familyModelSelections[key].trims[modelName].includes(trimName)) { 17583 familyModelSelections[key].trims[modelName].push(trimName); 17584 } 17585 } 17586 function removeTrimFromFamilyModel(make, family, modelName, trimName) { 17587 const key = getFamilyKey(make, family); 17588 const entry = familyModelSelections[key]; 17589 if (!(entry === null || entry === void 0 ? void 0 : entry.trims[modelName])) { 17590 return; 17591 } 17592 const storedTrims = entry.trims[modelName]; 17593 const idx = storedTrims.indexOf(trimName); 17594 if (idx !== -1) { 17595 entry.trims[modelName].splice(idx, 1); 17596 } 17597 if (entry.trims[modelName].length === 0) { 17598 delete entry.trims[modelName]; 17599 } 17600 } 17601 function getTrimsForFamilyModel(make, family, modelName) { 17602 var _a; 17603 return ((_a = familyModelSelections[getFamilyKey(make, family)]) === null || _a === void 0 ? void 0 : _a.trims[modelName]) || []; 17604 } 17605 // Syncs familyModelSelections when a ModelAndTrim entry is removed from queuedFilters 17606 // (e.g. via a filter pill click). Handles both trim-level and model-level removals. 17607 function removeFromAllFamilies(modelName, action) { 17608 for (const familyKey in familyModelSelections) { 17609 const { make, family } = parseFamilyKey(familyKey); 17610 action(make, family); 17611 } 17612 } 17613 function isModelStillInQueuedFilters(filterKey, modelName) { 17614 const remaining = queuedFilters[filterKey]; 17615 return !!(remaining === null || remaining === void 0 ? void 0 : remaining.some(v => { 17616 const dv = DecodeFilterValue(filterKey, v); 17617 return dv === modelName || dv.startsWith(`${modelName}: `); 17618 })); 17619 } 17620 function isModelTrackedInAnyFamily(modelName) { 17621 var _a, _b; 17622 for (const fk in familyModelSelections) { 17623 if (((_b = (_a = familyModelSelections[fk]) === null || _a === void 0 ? void 0 : _a.models) === null || _b === void 0 ? void 0 : _b.indexOf(modelName)) !== -1) { 17624 return true; 17625 } 17626 } 17627 return false; 17628 } 17629 function purgeOrphanedTrimsFromQueue(filterKey, modelName) { 17630 const qf = queuedFilters; 17631 if (!qf[filterKey]) { 17632 return; 17633 } 17634 qf[filterKey] = qf[filterKey].filter(v => !DecodeFilterValue(filterKey, v).startsWith(`${modelName}: `)); 17635 if (qf[filterKey].length === 0) { 17636 delete qf[filterKey]; 17637 } 17638 } 17639 function syncFamilySelectionsAfterRemoval(filterKey, encodedFilterValue) { 17640 const decoded = DecodeFilterValue(filterKey, encodedFilterValue); 17641 const colonIdx = decoded.indexOf(': '); 17642 if (colonIdx > -1) { 17643 const modelName = decoded.slice(0, colonIdx); 17644 const trimName = decoded.slice(colonIdx + 2); 17645 removeFromAllFamilies(modelName, (make, family) => removeTrimFromFamilyModel(make, family, modelName, trimName)); 17646 const modelStillQueued = isModelStillInQueuedFilters(filterKey, modelName); 17647 if (!modelStillQueued) { 17648 removeFromAllFamilies(modelName, (make, family) => removeModelFromFamily(make, family, modelName)); 17649 } 17650 return; 17651 } 17652 const modelInFamily = isModelTrackedInAnyFamily(decoded); 17653 removeFromAllFamilies(decoded, (make, family) => removeModelFromFamily(make, family, decoded)); 17654 if (modelInFamily) { 17655 purgeOrphanedTrimsFromQueue(filterKey, decoded); 17656 processFilterQueue(); 17657 } 17658 }
17659 function restoreFamilySelectionsFromCache() { 17660 const raw = sessionStorage.getItem(FamilyModelSelectionsStorageKey); 17661 if (!raw) 17662 return; 17663 try { 17664 const cached = JSON.parse(raw); 17665 for (const key in cached) { 17666 const cachedEntry = cached[key]; 17667 // Support both old format (string[]) and new format ({ models: string[], trims: Record<string, string[]> }) 17668 const models = Array.isArray(cachedEntry) ? cachedEntry : (cachedEntry.models || []); 17669 const trims = Array.isArray(cachedEntry) ? {} : (cachedEntry.trims || {}); 17670 const validModels = models.filter(modelName => isFilterModelSelected(modelName, refinementType/* RefinementType */.S.ModelAndTrim) || 17671 isFilterModelSelected(modelName, refinementType/* RefinementType */.S.RvBrand)); 17672 const validTrims = {}; 17673 for (const modelName of validModels) { 17674 const trimList = trims[modelName] || []; 17675 const validTrimList = trimList.filter(trimName => isFilterSelected(refinementType/* RefinementType */.S.ModelAndTrim, `${modelName}: ${trimName}`)); 17676 if (validTrimList.length > 0) { 17677 validTrims[modelName] = validTrimList; 17678 } 17679 } 17680 if (validModels.length > 0) { 17681 familyModelSelections[key] = { models: validModels, trims: validTrims }; 17682 } 17683 } 17684 } 17685 catch (_a) { 17686 sessionStorage.removeItem(FamilyModelSelectionsStorageKey); 17687 } 17688 } 17689 function removeAllFilters() { 17690 clearFamilyModelSelections(); 17691 for (const key in queuedFilters) { 17692 if (queuedFilters.hasOwnProperty(key) && isRefinementType(key)) { 17693 delete queuedFilters[key]; 17694 } 17695 } 17696 clearBestMatchSort(); 17697 if (globalStore.injectBestMatchSortOption) { 17698 globalStore.injectBestMatchSortOption(false); 17699 } 17700 syncObjects(selectedFilters, queuedFilters); 17701 getFilters(); 17702 if (!isDynamicFilteringEnabled()) { 17703 globalStore.vehicleStore.getFilteredVehicles(); 17704 } 17705 } 17706 // Update the query string to reflect updated filters 17707 function updateQueryString(updateUrlNow = true) { 17708 if (selectedFilters.hasOwnProperty('st') && Array.isArray(selectedFilters['st'])) { 17709 const sortValues = selectedFilters['st']; 17710 const hasNoSortValue = sortValues.length === 0 || sortValues.every(sortValue => !sortValue); 17711 const hasBestMatchSort = sortValues.some((sortValue) => isBestMatchSortValue(sortValue)); 17712 if (hasNoSortValue || hasBestMatchSort) { 17713 delete selectedFilters['st']; 17714 } 17715 } 17716 //HACK: because we let dealers use unfriendly querystring characters we need to do some 17717 //manual encoding and decoding so we cannot use the URLSearchParams object as it 17718 //will overwrite our encoding 17719 const params = []; 17720 for (const key in selectedFilters) { 17721 if (selectedFilters.hasOwnProperty(key)) { 17722 switch (key) { 17723 case refinementType/* RefinementType */.S.ModelAndTrim: 17724 case refinementType/* RefinementType */.S.RvBrand: 17725 // Handle the "ModelAndTrim" key separately 17726 const modelTrimSets = selectedFilters[key]; 17727 const modelTrimMap = {}; 17728 for (const item of modelTrimSets) { 17729 const [model, trim] = item.replace(/\+/g, '%2B').split(': '); 17730 if (!modelTrimMap[model]) { 17731 modelTrimMap[model] = [trim]; 17732 } 17733 else { 17734 modelTrimMap[model].push(trim); 17735 } 17736 } 17737 // Format the models and trims 17738 const formattedArray = Object.keys(modelTrimMap).map((model) => { 17739 const trims = modelTrimMap[model].join(','); 17740 if (trims.length > 0) { 17741 return `${model}:${trims}`; 17742 } 17743 else { 17744 return `${model}`; 17745 } 17746 }); 17747 params.push({ "key": key, "value": `${formattedArray.join('!')}` }); 17748 break; 17749 case refinementType/* RefinementType */.S.FamilyModelAndTrim: { 17750 // Entries are "FAMILY: MODEL" or "FAMILY: MODEL: TRIM" 17751 // Serialize as FAMILY:MODEL[:TRIM1,TRIM2]!... 17752 const familyModelTrimItems = selectedFilters[key]; 17753 const familyModelTrimMap = {}; 17754 for (const item of familyModelTrimItems) { 17755 const parts = item.replaceAll('+', '%2B').split(': '); 17756 const familyModel = `${parts[0]}:${parts[1]}`; 17757 const trim = parts[2]; 17758 if (!familyModelTrimMap[familyModel]) { 17759 familyModelTrimMap[familyModel] = trim ? [trim] : []; 17760 } 17761 else if (trim) { 17762 familyModelTrimMap[familyModel].push(trim); 17763 } 17764 } 17765 const formattedFamilyArray = Object.keys(familyModelTrimMap).map((familyModel) => { 17766 const trims = familyModelTrimMap[familyModel].join(','); 17767 return trims.length > 0 ? `${familyModel}:${trims}` : familyModel; 17768 }); 17769 params.push({ "key": key, "value": formattedFamilyArray.join('!') }); 17770 break; 17771 } 17772 case refinementType/* RefinementType */.S.Location: 17773 //locations have commas in the data, so we want to manually encode them so 17774 //that when we split on "," for multi-select we don't split on the location state 17775 const encodedLocations = [];
17776 selectedFilters[key].forEach((item) => { 17777 //our search can't handle the + symbol, which is what an encoded space would look like 17778 //so instead, we manually encode to %20 17779 encodedLocations.push(item.replace(", ", "%2C%20")); 17780 }); 17781 params.push({ "key": key, "value": encodedLocations.join(',') }); 17782 break; 17783 //This is base 64 encoded and has a trailing = we need to make sure it comes through 17784 case refinementType/* RefinementType */.S.SignalsForYou: 17785 params.push({ "key": key, "value": selectedFilters[key] }); 17786 break; 17787 default: 17788 const encodedDefaults = []; 17789 selectedFilters[key].forEach((item) => { 17790 encodedDefaults.push(EncodeFilterValue(key, item)); 17791 }); 17792 params.push({ "key": key, "value": encodedDefaults.join(',') }); 17793 break; 17794 } 17795 } 17796 } 17797 const url = new URL(location.href); 17798 //HACK: because we let dealers use unfriendly querystring characters we can't encode here 17799 var search = urlHelpers/* UrlHelpers */.b.mapArrayToQueryString(params); 17800 globalStore.setDynamicCountsSearch(search); 17801 if (updateUrlNow) { 17802 url.search = search; 17803 } 17804 //update the url without redirecting 17805 const formattedUrl = url.toString(); 17806 globalStore.updateUrlState(formattedUrl); 17807 } 17808 // OEM-14660: an external link can select a boolean filter using an equivalent but non-canonical value 17809 // (e.g. CarBravo=true vs CarBravo=1). Skips addFilter/removeFilter/getFilters() on purpose - this 17810 // corrects existing state and must not trigger a search. 17811 function normalizeBooleanFilterValue(filterKey, canonicalValue) { 17812 [selectedFilters, queuedFilters].forEach(filterObj => { 17813 const filters = filterObj; 17814 const values = filters[filterKey]; 17815 const isAlreadyCanonical = Array.isArray(values) && values.length === 1 && values[0] === canonicalValue; 17816 if (Array.isArray(values) && !isAlreadyCanonical) { 17817 filters[filterKey] = [canonicalValue]; 17818 } 17819 }); 17820 } 17821 function isFilterSelected(key, value) { 17822 //support filters that can have multiple values (i.e. the value in the key exists) 17823 //and filters that can only have one value (i.e. the key exists) 17824 var _a, _b; 17825 //HACK: we let dealers use unfriendly querystring characters so when we compare selected 17826 // we can't use the URLSearchParams objects. However, we want to display friendly names 17827 // for checkboxes and filter pills. So, we need to compare encoded and decoded values. 17828 value = EncodeFilterValue(key, value); 17829 if (getWaitingToFilterVehicles.value) { 17830 if (queuedFilters.hasOwnProperty(key)) { 17831 if (key === refinementType/* RefinementType */.S.SignalsForYou) { 17832 return true; 17833 } 17834 if (value !== undefined) { 17835 return (_a = FilterHelpers.arrayIncludes(queuedFilters[key], value)) !== null && _a !== void 0 ? _a : false; 17836 } 17837 else { 17838 return true; 17839 } 17840 } 17841 } 17842 else { 17843 if (selectedFilters.hasOwnProperty(key)) { 17844 if (key === refinementType/* RefinementType */.S.SignalsForYou) { 17845 return true; 17846 } 17847 if (value !== undefined) { 17848 return (_b = FilterHelpers.arrayIncludes(selectedFilters[key], value)) !== null && _b !== void 0 ? _b : false;
17849 } 17850 else { 17851 return true; 17852 } 17853 } 17854 } 17855 return false; 17856 } 17857 const getFilters = lodash_debounce_default()((updateUrlNow = true, removingSearchQuery = false) => { 17858 getCosmosSrpFilters(updateUrlNow, removingSearchQuery); 17859 }, 300); 17860 // Immediate version for initial page load - bypasses debounce 17861 const getFiltersImmediate = (updateUrlNow = true, removingSearchQuery = false) => { 17862 getCosmosSrpFilters(updateUrlNow, removingSearchQuery); 17863 }; 17864 //ModelAndTrim helpers 17865 function isFilterModelSelected(modelName, refinementType) { 17866 var _a, _b; 17867 if (getWaitingToFilterVehicles.value) { 17868 return (_a = (FilterHelpers.arrayIncludes(queuedFilters[refinementType], modelName) 17869 || FilterHelpers.arraySomeModelAndTrim(queuedFilters[refinementType], modelName))) !== null && _a !== void 0 ? _a : false; 17870 } 17871 return (_b = (FilterHelpers.arrayIncludes(selectedFilters[refinementType], modelName) 17872 || FilterHelpers.arraySomeModelAndTrim(selectedFilters[refinementType], modelName))) !== null && _b !== void 0 ? _b : false;
17873 } 17874 function doesModelHaveSelectedTrims(modelName, refinementType) { 17875 var _a, _b; 17876 if (getWaitingToFilterVehicles.value) { 17877 return (_a = FilterHelpers.arraySomeModelAndTrim(queuedFilters[refinementType], modelName)) !== null && _a !== void 0 ? _a : false; 17878 } 17879 return (_b = FilterHelpers.arraySomeModelAndTrim(selectedFilters[refinementType], modelName)) !== null && _b !== void 0 ? _b : false; 17880 } 17881 //get the count for a specific vehicle refinement filter 17882 function getRefinementFilterCount(key) { 17883 var _a, _b, _c, _d; 17884 //The mileage filter is a special case where we need to use the Mileagerange key 17885 if (key === refinementType/* RefinementType */.S.Mileage) { 17886 key = refinementType/* RefinementType */.S.Mileagerange.toString(); 17887 } 17888 if (getWaitingToFilterVehicles.value) { 17889 return (_b = (_a = queuedFilters[findKeyIgnoreCase(queuedFilters, key)]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; 17890 } 17891 return (_d = (_c = selectedFilters[findKeyIgnoreCase(selectedFilters, key)]) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0; 17892 } 17893 function setWaitingToFilterVehicles(value) { 17894 isWaitingToFilterVehicles.value = value; 17895 } 17896 ; 17897 function isFilterEnabled(filterName) { 17898 var _a, _b, _c; 17899 return (_c = (_b = (_a = globalStore.getSrpModel.FilterPanelModel) === null || _a === void 0 ? void 0 : _a.FilterList) === null || _b === void 0 ? void 0 : _b.Refinements.some(refinement => refinement.RefinementType == filterName)) !== null && _c !== void 0 ? _c : false; 17900 } 17901 function undoFilters(undoFilterState) { 17902 //revert the filter state to the state before the last filter was applied 17903 syncObjects(queuedFilters, undoFilterState); 17904 // Update selected filters so that Apply Filters CTA label updates 17905 processFilterQueue(); 17906 //now get the filters using what we reverted to 17907 getFilters(); 17908 } 17909 //sync target and source objects 17910 function syncObjects(target, source) { 17911 // Remove properties from target that no longer exist in source 17912 for (const key in target) { 17913 if (!(key in source)) { 17914 delete target[key]; 17915 } 17916 } 17917 Object.assign(target, source); 17918 } 17919 ; 17920 function findKeyIgnoreCase(obj, searchKey) { 17921 // Convert the searchKey to lowercase for case-insensitive comparison 17922 const lowercaseSearchKey = searchKey.toLowerCase(); 17923 // Iterate through the object's keys 17924 for (const key in obj) { 17925 if (obj.hasOwnProperty(key)) { 17926 // Convert the current key to lowercase for comparison 17927 const lowercaseKey = key.toLowerCase(); 17928 // If the lowercase keys match, return the original key 17929 if (lowercaseKey === lowercaseSearchKey) { 17930 return key; 17931 } 17932 } 17933 } 17934 // If no match is found, return undefined 17935 return undefined; 17936 } 17937 function setCurrentFilter(filterId) { 17938 currentFilter.value = filterId; 17939 } 17940 function setCurrentSelectFiltersLabel(label) { 17941 currentSelectFiltersLabel.value = label; 17942 } 17943 //If we have location data from the user we sort by that location type 17944 function checkForLocationSort() { 17945 if ((window.location.search.indexOf("st=") < 0)) { 17946 let sortQuery = ""; 17947 switch (window.DealeronCookie.getItem("DLRON_LOCATION_MODAL_USED")) { 17948 case "zip": 17949 const zip = window.DealeronCookie.getItem("DLRON_ZIP"); 17950 sortQuery = `st=Distance+asc&ZipCode=${zip}`; 17951 break; 17952 case "coordinate": 17953 if (globalThis.location.search.includes("currentlocation=")) { 17954 return; 17955 } 17956 const coordinate = decodeURIComponent(window.DealeronCookie.getItem("DLRON_coordinate")); 17957 const latLong = coordinate.split("|"); 17958 const trimmedLatLong = parseFloat(latLong[0]).toFixed(3) + "|" + parseFloat(latLong[1]).toFixed(3); 17959 sortQuery = `currentlocation=${trimmedLatLong}`; 17960 break; 17961 case "closed": 17962 return; 17963 default: 17964 return; 17965 } 17966 const url = new URL(window.location.href); 17967 if (url.search && url.search !== "?") { 17968 url.search += `&${sortQuery}`; 17969 } 17970 else { 17971 url.search = `?${sortQuery}`; 17972 } 17973 window.history.replaceState({}, "", url.toString()); 17974 } 17975 } 17976 new ResizeObserver(() => { 17977 // if resizing from mobile view -> desktop view && dynamicFilteringEnabled, 17978 // remove all queuedFilters 17979 if (isDynamicFilteringEnabled() && isMobileOrTablet.value && window.innerWidth >= 992) { 17980 syncObjects(queuedFilters, selectedFilters); 17981 setWaitingToFilterVehicles(false); 17982 } 17983 if (!isDynamicFilteringEnabled() && isMobileOrTablet.value && window.innerWidth >= 992) { 17984 syncObjects(queuedFilters, selectedFilters); 17985 } 17986 isMobileOrTablet.value = window.innerWidth < 992; 17987 }).observe(document.documentElement); 17988 // Removes a model-level entry directly from queuedFilters without triggering the 17989 // auto-add side effects of removeFilter. Needed after trim-removal loops in family
17990 // uncheck: removeFilter's auto-add runs AFTER processFilterQueue (dynamic mode), 17991 // so the model lands in queuedFilters but isModelChecked misses it via selectedFilters. 17992 function removeAutoAddedModelFilter(filterKey, modelName) { 17993 if (!queuedFilters[filterKey]) { 17994 return; 17995 } 17996 const encodedModelName = EncodeFilterValue(filterKey, modelName); 17997 const index = FilterHelpers.arrayIndexOf(queuedFilters[filterKey], encodedModelName); 17998 if (index === -1) { 17999 return; 18000 } 18001 queuedFilters[filterKey].splice(index, 1); 18002 if (queuedFilters[filterKey].length === 0) { 18003 delete queuedFilters[filterKey]; 18004 } 18005 if (isDynamicFilteringAndNotMobile.value) { 18006 processFilterQueue(); 18007 } 18008 } 18009 return { 18010 getCosmosSrpFilters, 18011 isLoadingFilters, 18012 getCurrentFilter, 18013 getFilters, 18014 getFiltersImmediate, 18015 getSelectedFilters, 18016 getQueuedFilters, 18017 removeFilter, 18018 isRefinementType, 18019 isFilterSelected, 18020 normalizeBooleanFilterValue, 18021 getRefinementFilterCount, 18022 getTotalRefinementFilterCount, 18023 getTotalQueuedRefinementFilterCount, 18024 updateFilterState, 18025 isDynamicFiltering: isDynamicFilteringAndNotMobile, 18026 getWaitingToFilterVehicles, 18027 isFilterEnabled, 18028 isFilterModelSelected, 18029 doesModelHaveSelectedTrims, 18030 removeAllFilters, 18031 undoFilters, 18032 hasAppliedFilters, 18033 updateSearchValetFilter, 18034 hideZeroCountFilters, 18035 displayFilterItemCheckbox, 18036 syncObjects, 18037 setCurrentFilter, 18038 setup, 18039 getShowPrimaryMakeFirst, 18040 setWaitingToFilterVehicles, 18041 getCurrentSelectFiltersLabel, 18042 setCurrentSelectFiltersLabel, 18043 DecodeFilterValue, 18044 EncodeFilterValue, 18045 getFiltersFromFilterService, 18046 addModelToFamily, 18047 removeModelFromFamily, 18048 getFamilyModelSelectionsFor, 18049 getFamilyModelSelections, 18050 isModelInAnyOtherFamily, 18051 clearFamilyModelSelections, 18052 addTrimToFamilyModel, 18053 removeTrimFromFamilyModel, 18054 getTrimsForFamilyModel, 18055 isTrimInAnyOtherFamily, 18056 removeAutoAddedModelFilter 18057 }; 18058}); 18059 18060 18061/***/ }), 18062 18063/***/ 6088: 18064/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 18065 18066"use strict"; 18067 18068 18069Object.defineProperty(exports, "__esModule", ({ 18070 value: true 18071})); 18072exports.multiInject = void 0; 18073var METADATA_KEY = __webpack_require__(4725); 18074var metadata_1 = __webpack_require__(8390); 18075var decorator_utils_1 = __webpack_require__(40); 18076function multiInject(serviceIdentifier) { 18077 return function (target, targetKey, index) { 18078 var metadata = new metadata_1.Metadata(METADATA_KEY.MULTI_INJECT_TAG, serviceIdentifier); 18079 if (typeof index === "number") { 18080 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 18081 } else { 18082 decorator_utils_1.tagProperty(target, targetKey, metadata); 18083 } 18084 }; 18085} 18086exports.multiInject = multiInject; 18087 18088/***/ }), 18089 18090/***/ 6387: 18091/***/ ((module, __webpack_exports__, __webpack_require__) => { 18092 18093"use strict"; 18094__webpack_require__.r(__webpack_exports__); 18095/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18096/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18097/* harmony export */ }); 18098/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 18099/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 18100/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 18101/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 18102// Imports 18103 18104 18105var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 18106// Module
18107___CSS_LOADER_EXPORT___.push([module.id, `.comments-button[data-v-c4c8aa2a]{border-radius:5px}`, ""]); 18108// Exports 18109/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18110 18111 18112/***/ }), 18113 18114/***/ 6566: 18115/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 18116 18117"use strict"; 18118 18119 18120Object.defineProperty(exports, "__esModule", ({ 18121 value: true 18122})); 18123exports.BindingToSyntax = void 0; 18124var ERROR_MSGS = __webpack_require__(7718); 18125var literal_types_1 = __webpack_require__(7802); 18126var binding_in_when_on_syntax_1 = __webpack_require__(2437); 18127var binding_when_on_syntax_1 = __webpack_require__(3341); 18128var BindingToSyntax = function () { 18129 function BindingToSyntax(binding) { 18130 this._binding = binding; 18131 } 18132 BindingToSyntax.prototype.to = function (constructor) { 18133 this._binding.type = literal_types_1.BindingTypeEnum.Instance; 18134 this._binding.implementationType = constructor; 18135 return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding); 18136 }; 18137 BindingToSyntax.prototype.toSelf = function () { 18138 if (typeof this._binding.serviceIdentifier !== "function") { 18139 throw new Error("" + ERROR_MSGS.INVALID_TO_SELF_VALUE); 18140 } 18141 var self = this._binding.serviceIdentifier; 18142 return this.to(self); 18143 }; 18144 BindingToSyntax.prototype.toConstantValue = function (value) { 18145 this._binding.type = literal_types_1.BindingTypeEnum.ConstantValue; 18146 this._binding.cache = value; 18147 this._binding.dynamicValue = null; 18148 this._binding.implementationType = null; 18149 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 18150 }; 18151 BindingToSyntax.prototype.toDynamicValue = function (func) { 18152 this._binding.type = literal_types_1.BindingTypeEnum.DynamicValue; 18153 this._binding.cache = null; 18154 this._binding.dynamicValue = func; 18155 this._binding.implementationType = null; 18156 return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding); 18157 }; 18158 BindingToSyntax.prototype.toConstructor = function (constructor) { 18159 this._binding.type = literal_types_1.BindingTypeEnum.Constructor; 18160 this._binding.implementationType = constructor; 18161 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 18162 }; 18163 BindingToSyntax.prototype.toFactory = function (factory) { 18164 this._binding.type = literal_types_1.BindingTypeEnum.Factory; 18165 this._binding.factory = factory; 18166 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 18167 }; 18168 BindingToSyntax.prototype.toFunction = function (func) { 18169 if (typeof func !== "function") { 18170 throw new Error(ERROR_MSGS.INVALID_FUNCTION_BINDING); 18171 } 18172 var bindingWhenOnSyntax = this.toConstantValue(func); 18173 this._binding.type = literal_types_1.BindingTypeEnum.Function; 18174 return bindingWhenOnSyntax; 18175 }; 18176 BindingToSyntax.prototype.toAutoFactory = function (serviceIdentifier) { 18177 this._binding.type = literal_types_1.BindingTypeEnum.Factory; 18178 this._binding.factory = function (context) { 18179 var autofactory = function () { 18180 return context.container.get(serviceIdentifier); 18181 }; 18182 return autofactory; 18183 }; 18184 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 18185 }; 18186 BindingToSyntax.prototype.toProvider = function (provider) { 18187 this._binding.type = literal_types_1.BindingTypeEnum.Provider; 18188 this._binding.provider = provider; 18189 return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding); 18190 }; 18191 BindingToSyntax.prototype.toService = function (service) { 18192 this.toDynamicValue(function (context) { 18193 return context.container.get(service); 18194 }); 18195 }; 18196 return BindingToSyntax; 18197}(); 18198exports.BindingToSyntax = BindingToSyntax; 18199 18200/***/ }), 18201 18202/***/ 6579: 18203/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18204 18205"use strict"; 18206/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18207/* harmony export */ F: () => (/* binding */ VehiclePricestakDisclaimerModal) 18208/* harmony export */ }); 18209/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260); 18210var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 18211 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 18212 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 18213 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c >
18213 3 ? d(target, key, r) : d(target, key)) || r; 18214 return c > 3 && r && Object.defineProperty(target, key, r), r; 18215}; 18216 18217let VehiclePricestakDisclaimerModal = class VehiclePricestakDisclaimerModal { 18218 initialize() { 18219 const disclaimerBtns = document.querySelectorAll('[data-target="#ModalPriceStakDisclaimer"]'); 18220 disclaimerBtns.forEach(btn => { 18221 this.addDisclaimerBtnTagging(btn); 18222 }); 18223 const modal = window.jQuery("#ModalPriceStakDisclaimer"); 18224 if (modal) { 18225 modal.on('show.bs.modal', function (e) { 18226 const toggleElem = e.relatedTarget.querySelector('.hidden'); 18227 if (toggleElem) { 18228 modal.find("#priceStakDisclaimerModalText").html(toggleElem.innerHTML); 18229 } 18230 }); 18231 } 18232 } 18233 addDisclaimerBtnTagging(btn) { 18234 const taggingParentElement = document.querySelector("[data-dotagging-event-owner]"); 18235 btn.setAttribute("data-dotagging-event", "cta_interaction"); 18236 btn.setAttribute("data-dotagging-event-action", "click"); 18237 btn.setAttribute("data-dotagging-event-action-result", "open"); 18238 btn.setAttribute("data-dotagging-element-order", "0"); 18239 btn.setAttribute("data-dotagging-element-type", "item_details"); 18240 btn.setAttribute("data-dotagging-element-subtype", "cta_button"); 18241 } 18242}; 18243VehiclePricestakDisclaimerModal = __decorate([ 18244 (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .injectable */ ._G)() 18245], VehiclePricestakDisclaimerModal); 18246 18247 18248 18249/***/ }), 18250 18251/***/ 6611: 18252/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18253 18254"use strict"; 18255/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18256/* harmony export */ J: () => (/* binding */ SrpPageSettingsModel), 18257/* harmony export */ K: () => (/* binding */ SrpFilterType) 18258/* harmony export */ }); 18259class SrpPageSettingsModel { 18260} 18261var SrpFilterType; 18262(function (SrpFilterType) { 18263 SrpFilterType[SrpFilterType["Dynamic"] = 0] = "Dynamic"; 18264 SrpFilterType[SrpFilterType["Applied"] = 1] = "Applied"; 18265})(SrpFilterType || (SrpFilterType = {})); 18266 18267 18268/***/ }), 18269 18270/***/ 6737: 18271/***/ ((module, __webpack_exports__, __webpack_require__) => { 18272 18273"use strict"; 18274__webpack_require__.r(__webpack_exports__); 18275/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18276/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18277/* harmony export */ }); 18278/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 18279/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 18280/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 18281/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 18282// Imports 18283 18284 18285var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 18286// Module 18287___CSS_LOADER_EXPORT___.push([module.id, `.video-button[data-v-9faa8a96]{border-radius:5px}`, ""]); 18288// Exports 18289/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18290 18291 18292/***/ }), 18293 18294/***/ 6833: 18295/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 18296 18297// style-loader: Adds some css to the DOM by adding a <style> tag 18298 18299// load the styles 18300var content = __webpack_require__(3902); 18301if(content.__esModule) content = content.default; 18302if(typeof content === 'string') content = [[module.id, content, '']]; 18303if(content.locals) module.exports = content.locals; 18304// add the styles to the DOM 18305var add = (__webpack_require__(8449)/* ["default"] */ .A) 18306var update = add("2b9e5a36", content, false, {}); 18307// Hot Module Replacement 18308if(false) {} 18309 18310/***/ }), 18311 18312/***/ 6839: 18313/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18314 18315"use strict"; 18316/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18317/* harmony export */ t: () => (/* binding */ HideableScrollbar) 18318/* harmony export */ }); 18319/* harmony import */ var resize_observer_polyfill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4208); 18320 18321class HideableScrollbar {
18322 constructor(containerElem, addResizeListener = true, addIntersectionListener = false) { 18323 this._containerElem = containerElem; 18324 this._scrollbarVisibleClassName = 'scrollbar-visible'; 18325 this._scrollbarEnabledClassName = 'enable-scrolling'; 18326 this._elementInView = false; 18327 this._mouseHovering = false; 18328 this._scrollbarVisibleEvent = new Event("scrollbar-visible"); 18329 this._scrollbarHiddenEvent = new Event("scrollbar-hidden"); 18330 if (addResizeListener) { 18331 this.addResizeListeners(); 18332 } 18333 else if (addIntersectionListener) { 18334 this.addIntersectionListeners(); 18335 } 18336 this.addHoverListeners(addIntersectionListener); 18337 } 18338 addResizeListeners() { 18339 const elementResizeObserver = new resize_observer_polyfill__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A(() => { 18340 // Apply the appropriate scrollbar styling when container is resized by scrolling through the page 18341 this.checkHeights(this._containerElem, this._mouseHovering, true); 18342 }); 18343 elementResizeObserver.observe(this._containerElem); 18344 } 18345 // Enable scrolling only when the element is in full view 18346 addIntersectionListeners() { 18347 const elementIntersectionObserver = new IntersectionObserver((entries) => { 18348 entries.forEach(entry => { 18349 var _a, _b, _c, _d, _e, _f; 18350 if (entry.isIntersecting) { 18351 (_a = this._containerElem.classList) === null || _a === void 0 ? void 0 : _a.add(this._scrollbarEnabledClassName); 18352 this._containerElem.scrollIntoView(false); 18353 this._elementInView = true; 18354 } 18355 else { 18356 (_c = (_b = this._containerElem) === null || _b === void 0 ? void 0 : _b.classList) === null || _c === void 0 ? void 0 : _c.remove(this._scrollbarVisibleClassName); 18357 (_d = this._containerElem) === null || _d === void 0 ? void 0 : _d.dispatchEvent(this._scrollbarHiddenEvent); 18358 (_f = (_e = this._containerElem) === null || _e === void 0 ? void 0 : _e.classList) === null || _f === void 0 ? void 0 : _f.remove(this._scrollbarEnabledClassName); 18359 this._elementInView = false; 18360 } 18361 }); 18362 }, { threshold: 1 }); 18363 elementIntersectionObserver.observe(this._containerElem); 18364 } 18365 addHoverListeners(hasIntersectionListener) { 18366 var _a, _b; 18367 (_a = this._containerElem) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseover', () => { 18368 this._mouseHovering = true; 18369 // if mouse is over #srp_filter element and #srp_filter content is overflowing, add class 18370 this.checkHeights(this._containerElem, this._mouseHovering, hasIntersectionListener ? this._elementInView : true); 18371 }); 18372 (_b = this._containerElem) === null || _b === void 0 ? void 0 : _b.addEventListener('mouseleave', () => { 18373 this._mouseHovering = false; 18374 // Only remove class if scrollbar exists 18375 this.checkHeights(this._containerElem, this._mouseHovering, hasIntersectionListener ? this._elementInView : true); 18376 }); 18377 } 18378 // Function to adjust scrollbar styling in resize events 18379 checkHeights(containerElem, mouseHovering, elementInView) { 18380 var _a, _b, _c, _d, _e, _f; 18381 if (mouseHovering && elementInView && containerElem.scrollHeight > containerElem.clientHeight) { 18382 (_b = (_a = this._containerElem) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add(this._scrollbarVisibleClassName); 18383 (_c = this._containerElem) === null || _c === void 0 ? void 0 : _c.dispatchEvent(this._scrollbarVisibleEvent); 18384 } 18385 else { 18386 (_e = (_d = this._containerElem) === null || _d === void 0 ? void 0 : _d.classList) === null || _e === void 0 ? void 0 : _e.remove(this._scrollbarVisibleClassName); 18387 (_f = this._containerElem) === null || _f === void 0 ? void 0 : _f.dispatchEvent(this._scrollbarHiddenEvent); 18388 } 18389 } 18390} 18391 18392 18393/***/ }), 18394 18395/***/ 6983: 18396/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 18397 18398"use strict"; 18399 18400 18401Object.defineProperty(exports, "__esModule", ({ 18402 value: true 18403})); 18404exports.Lookup = void 0; 18405var ERROR_MSGS = __webpack_require__(7718); 18406var Lookup = function () { 18407 function Lookup() { 18408 this._map = new Map(); 18409 } 18410 Lookup.prototype.getMap = function () { 18411 return this._map; 18412 }; 18413 Lookup.prototype.add = function (serviceIdentifier, value) { 18414 if (serviceIdentifier === null || serviceIdentifier === undefined) { 18415 throw new Error(ERROR_MSGS.NULL_ARGUMENT); 18416 } 18417 if (value === null || value === undefined) { 18418 throw new Error(ERROR_MSGS.NULL_ARGUMENT); 18419 } 18420 var entry = this._map.get(serviceIdentifier); 18421 if (entry !== undefined) { 18422 entry.push(value); 18423 this._map.set(serviceIdentifier, entry); 18424 } else { 18425 this._map.set(serviceIdentifier, [value]); 18426 } 18427 }; 18428 Lookup.prototype.get = function (serviceIdentifier) { 18429 if (serviceIdentifier === null || serviceIdentifier === undefined) { 18430 throw new Error(ERROR_MSGS.NULL_ARGUMENT); 18431 } 18432 var entry = this._map.get(serviceIdentifier); 18433 if (entry !== undefined) { 18434 return entry; 18435 } else { 18436 throw new Error(ERROR_MSGS.KEY_NOT_FOUND); 18437 } 18438 }; 18439 Lookup.prototype.remove = function (serviceIdentifier) { 18440 if (serviceIdentifier === null || serviceIdentifier === undefined) { 18441 throw new Error(ERROR_MSGS.NULL_ARGUMENT); 18442 } 18443 if (!this._map.delete(serviceIdentifier)) { 18444 throw new Error(ERROR_MSGS.KEY_NOT_FOUND); 18445 } 18446 }; 18447 Lookup.prototype.removeByCondition = function (condition) { 18448 var _this = this;
18449 this._map.forEach(function (entries, key) { 18450 var updatedEntries = entries.filter(function (entry) { 18451 return !condition(entry); 18452 }); 18453 if (updatedEntries.length > 0) { 18454 _this._map.set(key, updatedEntries); 18455 } else { 18456 _this._map.delete(key); 18457 } 18458 }); 18459 }; 18460 Lookup.prototype.hasKey = function (serviceIdentifier) { 18461 if (serviceIdentifier === null || serviceIdentifier === undefined) { 18462 throw new Error(ERROR_MSGS.NULL_ARGUMENT); 18463 } 18464 return this._map.has(serviceIdentifier); 18465 }; 18466 Lookup.prototype.clone = function () { 18467 var copy = new Lookup(); 18468 this._map.forEach(function (value, key) { 18469 value.forEach(function (b) { 18470 return copy.add(key, b.clone()); 18471 }); 18472 }); 18473 return copy; 18474 }; 18475 Lookup.prototype.traverse = function (func) { 18476 this._map.forEach(function (value, key) { 18477 func(key, value); 18478 }); 18479 }; 18480 return Lookup; 18481}(); 18482exports.Lookup = Lookup; 18483 18484/***/ }), 18485 18486/***/ 7067: 18487/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18488 18489"use strict"; 18490/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18491/* harmony export */ Y: () => (/* binding */ TdgConfirmAndContactButtons) 18492/* harmony export */ }); 18493/* unused harmony export TdgButtonType */ 18494/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260); 18495/* harmony import */ var _core_enums_uiLocationVersion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3277); 18496/* harmony import */ var _infrastructure_vue_cosmosSrp_customEvents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9600); 18497/* harmony import */ var _services_toggles_iToggleService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4478); 18498/* harmony import */ var _types_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5644); 18499/* harmony import */ var _services_stores_iStoreProvider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2770); 18500var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 18501 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 18502 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 18503 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 18504 return c > 3 && r && Object.defineProperty(target, key, r), r; 18505}; 18506var __metadata = (undefined && undefined.__metadata) || function (k, v) { 18507 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 18508}; 18509var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 18510 return function (target, key) { decorator(target, key, paramIndex); } 18511}; 18512var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 18513 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 18514 return new (P || (P = Promise))(function (resolve, reject) { 18515 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 18516 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 18517 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 18518 step((generator = generator.apply(thisArg, _arguments || [])).next()); 18519 }); 18520}; 18521var _a, _b; 18522 18523 18524 18525 18526 18527 18528var TdgButtonType; 18529(function (TdgButtonType) { 18530 TdgButtonType[TdgButtonType["ConfirmAvailability"] = 0] = "ConfirmAvailability"; 18531 TdgButtonType[TdgButtonType["ContactDealer"] = 1] = "ContactDealer"; 18532})(TdgButtonType || (TdgButtonType = {})); 18533let TdgConfirmAndContactButtons = class TdgConfirmAndContactButtons { 18534 constructor(storeProvider, toggleService) { 18535 this._confirmReplacementCode = "#DG_CONFIRM_AVAILABILITY#"; 18536 this._contactDealerReplacementCode = "#DG_CONTACT_DEALER#"; 18537 this._tdgAttribute = "data-istdg"; 18538 this.storeProvider = storeProvider; 18539 this.toggleService = toggleService; 18540 } 18541 initialize(uiLocationVersion) { 18542 var _a, _b, _c, _d; 18543 return __awaiter(this, void 0, void 0, function* () { 18544 if (uiLocationVersion === _core_enums_uiLocationVersion__WEBPACK_IMPORTED_MODULE_1__/* .UiLocationVersion */ .I.SrpWasabi || uiLocationVersion === _core_enums_uiLocationVersion__WEBPACK_IMPORTED_MODULE_1__/* .UiLocationVersion */ .I.VehicleCardDeck) { 18545 this._globalStore = this.storeProvider.getGlobalStore(); 18546 } 18547 this._isTdgDealer = (_b = (_a = this._globalStore) === null || _a === void 0 ? void 0 : _a.getIsTdgDealer) !== null && _b !== void 0 ? _b : ((_d = (_c = document.querySelector(`[${this._tdgAttribute}]`)) === null || _c === void 0 ? void 0 : _c.getAttribute(this._tdgAttribute)) === null || _d === void 0 ? void 0 : _d.toLowerCase()) === "true"; 18548 this._uiLocationVersion = uiLocationVersion; 18549 yield this.addLoadListener(); 18550 }); 18551 } 18552 addLoadListener() { 18553 return __awaiter(this, void 0, void 0, function* () { 18554 switch (this._uiLocationVersion) { 18555 case _core_enums_uiLocationVersion__WEBPACK_IMPORTED_MODULE_1__/* .UiLocationVersion */ .I.SrpWasabi:
18556 document.addEventListener(_infrastructure_vue_cosmosSrp_customEvents__WEBPACK_IMPORTED_MODULE_2__/* .CosmosSrpCustomEvents */ .A.VehicleLoadEnd, () => __awaiter(this, void 0, void 0, function* () { return yield this.initializeButtons(); })); 18557 document.addEventListener(_infrastructure_vue_cosmosSrp_customEvents__WEBPACK_IMPORTED_MODULE_2__/* .CosmosSrpCustomEvents */ .A.PricingVisibilityAdjusted, () => __awaiter(this, void 0, void 0, function* () { return yield this.initializeButtons(); })); 18558 break; 18559 case _core_enums_uiLocationVersion__WEBPACK_IMPORTED_MODULE_1__/* .UiLocationVersion */ .I.VdpHoisin: 18560 if (document.readyState === 'loading') { 18561 document.addEventListener("DOMContentLoaded", () => __awaiter(this, void 0, void 0, function* () { return yield this.initializeButtons(); })); 18562 return; 18563 } 18564 yield this.initializeButtons(); 18565 break; 18566 default: 18567 break; 18568 } 18569 }); 18570 } 18571 initializeButtons() { 18572 return __awaiter(this, void 0, void 0, function* () { 18573 this._confirmAvailabilityElements = this.getButtons(this._confirmReplacementCode); 18574 this._contactDealerElements = this.getButtons(this._contactDealerReplacementCode); 18575 this._confirmAvailabilityElements.forEach((element) => { 18576 element.setAttribute("disabled", ""); 18577 }); 18578 this._contactDealerElements.forEach((element) => { 18579 element.setAttribute("disabled", ""); 18580 }); 18581 if (this._isTdgDealer && (yield this.checkIsTdgLoadedAsync())) { 18582 this.onTdgLoaded(); 18583 } 18584 }); 18585 } 18586 getButtons(selector) { 18587 const elements = document.querySelectorAll(`[data-elementtype="LinkButton"][href="${selector}"]`); 18588 return Array.from(elements); 18589 } 18590 checkIsTdgLoadedAsync() { 18591 return __awaiter(this, void 0, void 0, function* () { 18592 if (window.DGDataHub) { 18593 return true; 18594 } 18595 for (let i = 0; i < 10; i++) { 18596 const loaded = yield new Promise(resolve => { 18597 setTimeout(() => { 18598 resolve(!!window.DGDataHub); 18599 }, 100); 18600 }); 18601 if (loaded) { 18602 return true; 18603 } 18604 } 18605 console.error("TDG library failed to load in time."); 18606 return false; 18607 }); 18608 } 18609 addButtonListener(element, buttonType) { 18610 element.removeAttribute("disabled"); 18611 element.setAttribute("href", "javascript:void(0);"); 18612 element.addEventListener("click", (event) => { 18613 if (event.target === element) { 18614 this.onCtaClick(element, buttonType); 18615 } 18616 }); 18617 } 18618 onTdgLoaded() { 18619 this._confirmAvailabilityElements.forEach((element) => { 18620 this.addButtonListener(element, TdgButtonType.ConfirmAvailability); 18621 }); 18622 this._contactDealerElements.forEach((element) => { 18623 this.addButtonListener(element, TdgButtonType.ContactDealer); 18624 }); 18625 } 18626 onCtaClick(element, buttonType) { 18627 var _a, _b, _c, _d, _e, _f; 18628 const vehicleInfo = element.closest("[data-vehicle-information]"); 18629 const vin = (_b = (_a = vehicleInfo === null || vehicleInfo === void 0 ? void 0 : vehicleInfo.dataset) === null || _a === void 0 ? void 0 : _a.vin) !== null && _b !== void 0 ? _b : ""; 18630 const isNew = ((_c = vehicleInfo === null || vehicleInfo === void 0 ? void 0 : vehicleInfo.dataset) === null || _c === void 0 ? void 0 : _c.vehicletype) === "new"; 18631 const isCpo = ((_d = vehicleInfo === null || vehicleInfo === void 0 ? void 0 : vehicleInfo.dataset) === null || _d === void 0 ? void 0 : _d.cpo) === "true"; 18632 let vehicleType; 18633 if (isNew) { 18634 vehicleType = "new"; 18635 } 18636 else { 18637 vehicleType = isCpo ? "cpo" : "used"; 18638 } 18639 switch (buttonType) { 18640 case TdgButtonType.ConfirmAvailability: 18641 (_e = window.DGDataHub) === null || _e === void 0 ? void 0 : _e.showConfirmAvailability(vin, vehicleType); 18642 break; 18643 case TdgButtonType.ContactDealer: 18644 (_f = window.DGDataHub) === null || _f === void 0 ? void 0 : _f.showContactDealer(vin, vehicleType); 18645 break; 18646 default: 18647 break; 18648 } 18649 } 18650}; 18651TdgConfirmAndContactButtons = __decorate([ 18652 (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .injectable */ ._G)(), 18653 __param(0, (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .inject */ .WQ)(_types_types__WEBPACK_IMPORTED_MODULE_3__/* .TYPES */ .Q.IStoreProvider)), 18654 __param(1, (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .inject */ .WQ)(_types_types__WEBPACK_IMPORTED_MODULE_3__/* .TYPES */ .Q.IToggleService)), 18655 __metadata("design:paramtypes", [typeof (_a = typeof _services_stores_iStoreProvider__WEBPACK_IMPORTED_MODULE_4__/* .IStoreProvider */ .y !== "undefined" && _services_stores_iStoreProvider__WEBPACK_IMPORTED_MODULE_4__/* .IStoreProvider */ .y) === "function" ? _a : Object, typeof (_b = typeof _services_toggles_iToggleService__WEBPACK_IMPORTED_MODULE_5__/* .IToggleService */ .F !== "undefined" && _services_toggles_iToggleService__WEBPACK_IMPORTED_MODULE_5__/* .IToggleService */ .F) === "function" ? _b : Object]) 18656], TdgConfirmAndContactButtons); 18657 18658 18659 18660/***/ }), 18661 18662/***/ 7090: 18663/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18664 18665"use strict"; 18666/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18667/* harmony export */ d: () => (/* binding */ ServiceHelpers) 18668/* harmony export */ }); 18669/* harmony import */ var _components_spaCosmos_pagination_pagingModel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1719); 18670/* harmony import */ var _utilities_urlHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7324); 18671var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 18672 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 18673 return new (P || (P = Promise))(function (resolve, reject) { 18674 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 18675 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 18676 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 18677 step((generator = generator.apply(thisArg, _arguments || [])).next()); 18678 }); 18679}; 18680var _a; 18681 18682 18683class ServiceHelpers { 18684 static mapArrayToQueryString(searchParams) { 18685 return searchParams.map(param => { 18686 switch (param.key) { 18687 // Base64 encode any dql query parameters 18688 case "dql": 18689 return `${param.key}=${btoa(param.value).replace(/\+/g, "%2B")}`; 18690 default: 18691 // Use default behavior for other keys 18692 return `${param.key}=${param.value}`; 18693 } 18694 }).join('&'); 18695 } 18696} 18697_a = ServiceHelpers; 18698ServiceHelpers.sendApiRequest = (url) => __awaiter(void 0, void 0, void 0, function* () { 18699 try { 18700 const response = yield fetch(url); 18701 if (response.ok) { 18702 const responseText = yield response.text(); 18703 try { 18704 const responseData = JSON.parse(responseText); 18705 return responseData; 18706 } 18707 catch (error) { 18708 console.error(new Error(`Error parsing JSON data from endpoint ${url}: ${error.message} 18709 \n\nData that failed JSON-parsing:\n\n${responseText}`)); 18710 } 18711 } 18712 else { 18713 throw new Error(`Error: ${response.status} for endpoint ${url}`); 18714 } 18715 } 18716 catch (error) { 18717 console.error(new Error(`Error fetching data from ${url}: ${error.message}`)); 18718 } 18719}); 18720//HACK: we can't use the built in URLSearchParams because we let dealers use unsafe querystring params 18721ServiceHelpers.getBaseApiQueryString = (paginationData = null, dynamicCountsSearch = null) => { 18722 var _b, _c, _d, _e; 18723 var search = dynamicCountsSearch ? dynamicCountsSearch : window.location.search; 18724 const searchParams = _utilities_urlHelpers__WEBPACK_IMPORTED_MODULE_1__/* .UrlHelpers */ .b.queryStringToArray(search); 18725 searchParams.push({ "key": "host", "value": window.location.host }); 18726 const pageNumber = (_c = (_b = searchParams.find(param => param.key === _components_spaCosmos_pagination_pagingModel__WEBPACK_IMPORTED_MODULE_0__/* .PaginationQueryParams */ .p.PageNumber)) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : paginationData === null || paginationData === void 0 ? void 0 : paginationData.PageNumber; 18727 // don't put the pt param if it's the first page 18728 if (pageNumber && pageNumber > 1) { 18729 _a.setSearchParam(_components_spaCosmos_pagination_pagingModel__WEBPACK_IMPORTED_MODULE_0__/* .PaginationQueryParams */ .p.PageNumber, +pageNumber, searchParams); 18730 } 18731 const pageSize = (_e = (_d = searchParams.find(param => param.key === _components_spaCosmos_pagination_pagingModel__WEBPACK_IMPORTED_MODULE_0__/* .PaginationQueryParams */ .p.PageSize)) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : paginationData === null || paginationData === void 0 ? void 0 : paginationData.PageSize; 18732 // TODO: don't put the pn param if it's the default value 18733 if (pageSize && pageSize > 0) { 18734 _a.setSearchParam(_components_spaCosmos_pagination_pagingModel__WEBPACK_IMPORTED_MODULE_0__/* .PaginationQueryParams */ .p.PageSize, +pageSize, searchParams); 18735 } 18736 return searchParams; 18737}; 18738ServiceHelpers.setSearchParam = (paramName, paramValue, searchParams) => { 18739 const existingParam = searchParams.find(param => param.key === paramName); 18740 if (paramValue !== '' && paramValue !== null && paramValue !== undefined) { 18741 const btoaFilters = ["dql"]; 18742 if (btoaFilters.includes(paramName)) { 18743 paramValue = btoa(paramValue).replace(/\+/g, "%2B"); 18744 } 18745 //if the paramName already exists, update it 18746 if (existingParam) { 18747 searchParams[searchParams.indexOf(existingParam)].value = paramValue; 18748 } 18749 else { 18750 //otherwise add it 18751 searchParams.push({ "key": paramName, "value": paramValue }); 18752 } 18753 } 18754 else { 18755 //remove the param if it exists and the value is null or empty string 18756 if (existingParam && (paramValue === '' || paramValue === null || paramValue === undefined)) { 18757 searchParams.splice(searchParams.indexOf(existingParam), 1); 18758 } 18759 } 18760}; 18761 18762 18763/***/ }), 18764 18765/***/ 7324: 18766/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18767 18768"use strict"; 18769/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18770/* harmony export */ b: () => (/* binding */ UrlHelpers) 18771/* harmony export */ }); 18772class UrlHelpers { 18773 static mapArrayToQueryString(searchParams) { 18774 return searchParams.map(param => param.value ? `${param.key}=${param.value}` : `${param.key}`).join('&'); 18775 } 18776 static queryStringToArray(queryString) { 18777 // Remove leading '?' if present 18778 if (queryString === null || queryString === void 0 ? void 0 : queryString.startsWith('?')) { 18779 queryString = queryString.slice(1); 18780 } 18781 if (!queryString) { 18782 return []; // Return empty array if no query string 18783 }
18784 const keyValuePairs = queryString.split('&'); 18785 const params = keyValuePairs.map((pair) => { 18786 // Split the key and value (with potential trailing =) 18787 const [key, ...valueParts] = pair.split('='); 18788 // Join the value parts (keeping trailing =) 18789 const value = valueParts.join('='); 18790 //we can't use decodeURIComponent because we allow dealers to use unsafe characters 18791 return { 18792 key: key, 18793 value: value 18794 }; 18795 }); 18796 return params; 18797 } 18798} 18799UrlHelpers.setQueryParam = (paramName, paramValue, searchParams) => { 18800 //update an existing value if the key exists 18801 const existingParam = searchParams.findIndex(param => param.key === paramName); 18802 if (existingParam > -1) { 18803 searchParams.splice(existingParam, 1); 18804 } 18805 searchParams.push({ "key": paramName, "value": paramValue }); 18806}; 18807 18808 18809/***/ }), 18810 18811/***/ 7363: 18812/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 18813 18814"use strict"; 18815 18816// EXPORTS 18817__webpack_require__.d(__webpack_exports__, { 18818 lM: () => (/* binding */ Toggle), 18819 gH: () => (/* binding */ ToggleService) 18820}); 18821 18822// UNUSED EXPORTS: ExperimentToggle 18823 18824// NAMESPACE OBJECT: ./src/services/toggles/iToggleFetcher.ts 18825var iToggleFetcher_namespaceObject = {}; 18826__webpack_require__.r(iToggleFetcher_namespaceObject); 18827 18828// EXTERNAL MODULE: ./node_modules/inversify/lib/inversify.js 18829var inversify = __webpack_require__(260); 18830// EXTERNAL MODULE: ./src/types/types.ts 18831var types = __webpack_require__(5644); 18832// EXTERNAL MODULE: ./src/utilities/urlHelpers.ts 18833var urlHelpers = __webpack_require__(7324); 18834;// ./src/services/toggles/iToggleFetcher.ts 18835 18836 18837;// ./src/services/toggles/toggleService.ts 18838var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 18839 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 18840 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 18841 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 18842 return c > 3 && r && Object.defineProperty(target, key, r), r; 18843}; 18844var __metadata = (undefined && undefined.__metadata) || function (k, v) { 18845 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 18846}; 18847var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 18848 return function (target, key) { decorator(target, key, paramIndex); } 18849}; 18850var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 18851 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 18852 return new (P || (P = Promise))(function (resolve, reject) { 18853 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 18854 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 18855 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 18856 step((generator = generator.apply(thisArg, _arguments || [])).next()); 18857 }); 18858}; 18859var _a; 18860 18861 18862 18863 18864let ToggleService = class ToggleService { 18865 constructor(dataFetcher) { 18866 this.toggles = null; 18867 this.storeToggles = (data, dealerId) => { 18868 const dataString = JSON.stringify(data); 18869 this.setSessionStorage(this.getStorageLocation(dealerId), dataString); 18870 }; 18871 // This pulls all of the Toggles from the back-end. 18872 // Note: If a toggle is not found then it it will return false, so if you want to allow a 18873 // queryString parm to override the toggles, you need to call getExperiment() instead 18874 // of getToggleStatus() 18875 this.getToggleStatus = (toggle) => { 18876 if (!this.toggles) { 18877 return false; 18878 } 18879 //Experiment toggles are not stored in session storage but will override any other toggle 18880 // so check this first before looking in session storage 18881 const experimentToggle = this.getExperimentToggle(toggle); 18882 if (typeof experimentToggle === 'boolean') { 18883 return experimentToggle; 18884 } 18885 if (!this.toggles) { 18886 return false;
18887 } 18888 let storedToggleValue = this.toggles[toggle]; 18889 if (storedToggleValue === true) { 18890 return true; 18891 } 18892 return false; 18893 }; 18894 this.dataFetcher = dataFetcher; 18895 } 18896 initialize() { 18897 return __awaiter(this, void 0, void 0, function* () { 18898 const data = yield this.dataFetcher.fetch(); 18899 this.toggles = data; 18900 this.storeToggles(data, window.DlronGlobal_DealerId); 18901 }); 18902 } 18903 getStorageLocation(dealerId) { 18904 return `sessionToggles_${dealerId}`; 18905 } 18906 setSessionStorage(storageLocation, response) { 18907 if (response !== null) { 18908 sessionStorage.setItem(storageLocation, response); 18909 } 18910 else { 18911 sessionStorage.removeItem(storageLocation); 18912 } 18913 } 18914 getQueryStringParam(queryString, paramName) { 18915 const params = urlHelpers/* UrlHelpers */.b.queryStringToArray(queryString); 18916 // Iterate over all the parameter keys 18917 for (const { key, value } of params) { 18918 if (key.toLowerCase() === paramName.toLowerCase()) { 18919 // Return the value of the matching parameter 18920 return value; 18921 } 18922 } 18923 // Parameter not found 18924 return null; 18925 } 18926 //NOTE: For experiments to work from queryString you need to manually add them to this function 18927 getExperimentToggle(toggle) { 18928 let experimentResult = null; 18929 switch (toggle) { 18930 case Toggle.AltDealerIdProtection_DO46595: 18931 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.AltDealerIdProtection_DO46595); 18932 break; 18933 case Toggle.BannersConfigUpdate: 18934 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.BannersConfigUpdate); 18935 break; 18936 case Toggle.DO35873: 18937 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.DO35873); 18938 break; 18939 case Toggle.DO37371: 18940 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.DO37371); 18941 break; 18942 case Toggle.EmailRefactor: 18943 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.EmailRefactor); 18944 break; 18945 case Toggle.HideZeroCountFilters: 18946 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.HideZeroCountFilters); 18947 break; 18948 case Toggle.LS2531: 18949 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.LS2531); 18950 break; 18951 case Toggle.ShowMileageWhenZeroMiles_OEM12049: 18952 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.ShowMileageWhenZeroMiles_OEM12049); 18953 break; 18954 case Toggle.SubaruModelFamilyFilter_DO57714: 18955 experimentResult = this.getQueryStringParam(globalThis.location.search, ExperimentToggle.SubaruModelFamilyFilter_DO57714); 18956 break; 18957 case Toggle.VehicleCardAlignment_DO48222: 18958 experimentResult = this.getQueryStringParam(window.location.search, ExperimentToggle.VehicleCardAlignment_DO48222); 18959 break; 18960 } 18961 switch (experimentResult) { 18962 case "on": return true; 18963 case "off": return false; 18964 default: return null; 18965 } 18966 } 18967}; 18968ToggleService = __decorate([ 18969 (0,inversify/* injectable */._G)(), 18970 __param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleFetcher)), 18971 __metadata("design:paramtypes", [typeof (_a = typeof iToggleFetcher_namespaceObject.IToggleFetcher !== "undefined" && iToggleFetcher_namespaceObject.IToggleFetcher) === "function" ? _a : Object]) 18972], ToggleService); 18973 18974//NOTE: Update these when adding new toggles that apply to client side features 18975// that need to know about them conversions 18976var Toggle; 18977(function (Toggle) { 18978 Toggle["AltDealerIdProtection_DO46595"] = "AltDealerIdProtection_DO46595"; 18979 Toggle["BannersConfigUpdate"] = "BannersConfigUpdate"; 18980 Toggle["DO35873"] = "DO35873"; 18981 Toggle["DO37371"] = "DO37371";
18982 Toggle["EmailRefactor"] = "EmailRefactor"; 18983 Toggle["HideZeroCountFilters"] = "HideZeroCountFilters"; 18984 Toggle["LS2531"] = "LS2531"; 18985 Toggle["SubaruModelFamilyFilter_DO57714"] = "SubaruModelFamilyFilter_DO57714"; 18986 Toggle["VehicleCardAlignment_DO48222"] = "VehicleCardAlignment_DO48222"; 18987 Toggle["ShowMileageWhenZeroMiles_OEM12049"] = "ShowMileageWhenZeroMiles_OEM12049"; 18988})(Toggle || (Toggle = {})); 18989var ExperimentToggle; 18990(function (ExperimentToggle) { 18991 ExperimentToggle["AltDealerIdProtection_DO46595"] = "AltDealerIdProtection_DO46595"; 18992 ExperimentToggle["BannersConfigUpdate"] = "BannersConfigUpdate"; 18993 ExperimentToggle["DO35873"] = "DO35873"; 18994 ExperimentToggle["DO37371"] = "DO37371"; 18995 ExperimentToggle["EmailRefactor"] = "EmailRefactor"; 18996 ExperimentToggle["HideZeroCountFilters"] = "HideZeroCountFilters"; 18997 ExperimentToggle["LS2531"] = "LS2531"; 18998 ExperimentToggle["SubaruModelFamilyFilter_DO57714"] = "SubaruModelFamilyFilter_DO57714"; 18999 ExperimentToggle["VehicleCardAlignment_DO48222"] = "VehicleCardAlignment_DO48222"; 19000 ExperimentToggle["ShowMileageWhenZeroMiles_OEM12049"] = "ShowMileageWhenZeroMiles_OEM12049"; 19001})(ExperimentToggle || (ExperimentToggle = {})); 19002 19003 19004/***/ }), 19005 19006/***/ 7442: 19007/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19008 19009"use strict"; 19010 19011 19012Object.defineProperty(exports, "__esModule", ({ 19013 value: true 19014})); 19015exports.inject = exports.LazyServiceIdentifer = void 0; 19016var error_msgs_1 = __webpack_require__(7718); 19017var METADATA_KEY = __webpack_require__(4725); 19018var metadata_1 = __webpack_require__(8390); 19019var decorator_utils_1 = __webpack_require__(40); 19020var LazyServiceIdentifer = function () { 19021 function LazyServiceIdentifer(cb) { 19022 this._cb = cb; 19023 } 19024 LazyServiceIdentifer.prototype.unwrap = function () { 19025 return this._cb(); 19026 }; 19027 return LazyServiceIdentifer; 19028}(); 19029exports.LazyServiceIdentifer = LazyServiceIdentifer; 19030function inject(serviceIdentifier) { 19031 return function (target, targetKey, index) { 19032 if (serviceIdentifier === undefined) { 19033 throw new Error(error_msgs_1.UNDEFINED_INJECT_ANNOTATION(target.name)); 19034 } 19035 var metadata = new metadata_1.Metadata(METADATA_KEY.INJECT_TAG, serviceIdentifier); 19036 if (typeof index === "number") { 19037 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 19038 } else { 19039 decorator_utils_1.tagProperty(target, targetKey, metadata); 19040 } 19041 }; 19042} 19043exports.inject = inject; 19044 19045/***/ }), 19046 19047/***/ 7493: 19048/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19049 19050// style-loader: Adds some css to the DOM by adding a <style> tag 19051 19052// load the styles 19053var content = __webpack_require__(2620); 19054if(content.__esModule) content = content.default; 19055if(typeof content === 'string') content = [[module.id, content, '']]; 19056if(content.locals) module.exports = content.locals; 19057// add the styles to the DOM 19058var add = (__webpack_require__(8449)/* ["default"] */ .A) 19059var update = add("5ed402e7", content, false, {}); 19060// Hot Module Replacement 19061if(false) {} 19062 19063/***/ }), 19064 19065/***/ 7549: 19066/***/ ((__unused_webpack_module, exports) => { 19067 19068"use strict"; 19069 19070 19071Object.defineProperty(exports, "__esModule", ({ 19072 value: true 19073})); 19074exports.ContainerSnapshot = void 0; 19075var ContainerSnapshot = function () { 19076 function ContainerSnapshot() {} 19077 ContainerSnapshot.of = function (bindings, middleware) { 19078 var snapshot = new ContainerSnapshot(); 19079 snapshot.bindings = bindings; 19080 snapshot.middleware = middleware; 19081 return snapshot; 19082 }; 19083 return ContainerSnapshot; 19084}(); 19085exports.ContainerSnapshot = ContainerSnapshot; 19086 19087/***/ }), 19088 19089/***/ 7569: 19090/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19091 19092// style-loader: Adds some css to the DOM by adding a <style> tag 19093 19094// load the styles 19095var content = __webpack_require__(8943); 19096if(content.__esModule) content = content.default; 19097if(typeof content === 'string') content = [[module.id, content, '']]; 19098if(content.locals) module.exports = content.locals; 19099// add the styles to the DOM 19100var add = (__webpack_require__(8449)/* ["default"] */ .A) 19101var update = add("aab4a7e8", content, false, {}); 19102// Hot Module Replacement 19103if(false) {} 19104 19105/***/ }), 19106 19107/***/ 7590: 19108/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19109 19110"use strict"; 19111 19112 19113Object.defineProperty(exports, "__esModule", ({ 19114 value: true 19115})); 19116exports.named = void 0; 19117var METADATA_KEY = __webpack_require__(4725); 19118var metadata_1 = __webpack_require__(8390); 19119var decorator_utils_1 = __webpack_require__(40); 19120function named(name) { 19121 return function (target, targetKey, index) { 19122 var metadata = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, name); 19123 if (typeof index === "number") { 19124 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 19125 } else { 19126 decorator_utils_1.tagProperty(target, targetKey, metadata); 19127 } 19128 }; 19129} 19130exports.named = named; 19131 19132/***/ }), 19133 19134/***/ 7718:
19135/***/ ((__unused_webpack_module, exports) => { 19136 19137"use strict"; 19138 19139 19140Object.defineProperty(exports, "__esModule", ({ 19141 value: true 19142})); 19143exports.STACK_OVERFLOW = exports.CIRCULAR_DEPENDENCY_IN_FACTORY = exports.POST_CONSTRUCT_ERROR = exports.MULTIPLE_POST_CONSTRUCT_METHODS = exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = exports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = exports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = exports.ARGUMENTS_LENGTH_MISMATCH = exports.INVALID_DECORATOR_OPERATION = exports.INVALID_TO_SELF_VALUE = exports.INVALID_FUNCTION_BINDING = exports.INVALID_MIDDLEWARE_RETURN = exports.NO_MORE_SNAPSHOTS_AVAILABLE = exports.INVALID_BINDING_TYPE = exports.NOT_IMPLEMENTED = exports.CIRCULAR_DEPENDENCY = exports.UNDEFINED_INJECT_ANNOTATION = exports.MISSING_INJECT_ANNOTATION = exports.MISSING_INJECTABLE_ANNOTATION = exports.NOT_REGISTERED = exports.CANNOT_UNBIND = exports.AMBIGUOUS_MATCH = exports.KEY_NOT_FOUND = exports.NULL_ARGUMENT = exports.DUPLICATED_METADATA = exports.DUPLICATED_INJECTABLE_DECORATOR = void 0; 19144exports.DUPLICATED_INJECTABLE_DECORATOR = "Cannot apply @injectable decorator multiple times."; 19145exports.DUPLICATED_METADATA = "Metadata key was used more than once in a parameter:"; 19146exports.NULL_ARGUMENT = "NULL argument"; 19147exports.KEY_NOT_FOUND = "Key Not Found"; 19148exports.AMBIGUOUS_MATCH = "Ambiguous match found for serviceIdentifier:"; 19149exports.CANNOT_UNBIND = "Could not unbind serviceIdentifier:"; 19150exports.NOT_REGISTERED = "No matching bindings found for serviceIdentifier:"; 19151exports.MISSING_INJECTABLE_ANNOTATION = "Missing required @injectable annotation in:"; 19152exports.MISSING_INJECT_ANNOTATION = "Missing required @inject or @multiInject annotation in:"; 19153exports.UNDEFINED_INJECT_ANNOTATION = function (name) { 19154 return "@inject called with undefined this could mean that the class " + name + " has " + "a circular dependency problem. You can use a LazyServiceIdentifer to " + "overcome this limitation."; 19155}; 19156exports.CIRCULAR_DEPENDENCY = "Circular dependency found:"; 19157exports.NOT_IMPLEMENTED = "Sorry, this feature is not fully implemented yet."; 19158exports.INVALID_BINDING_TYPE = "Invalid binding type:"; 19159exports.NO_MORE_SNAPSHOTS_AVAILABLE = "No snapshot available to restore."; 19160exports.INVALID_MIDDLEWARE_RETURN = "Invalid return type in middleware. Middleware must return!"; 19161exports.INVALID_FUNCTION_BINDING = "Value provided to function binding must be a function!"; 19162exports.INVALID_TO_SELF_VALUE = "The toSelf function can only be applied when a constructor is " + "used as service identifier"; 19163exports.INVALID_DECORATOR_OPERATION = "The @inject @multiInject @tagged and @named decorators " + "must be applied to the parameters of a class constructor or a class property."; 19164exports.ARGUMENTS_LENGTH_MISMATCH = function () { 19165 var values = []; 19166 for (var _i = 0; _i < arguments.length; _i++) { 19167 values[_i] = arguments[_i]; 19168 } 19169 return "The number of constructor arguments in the derived class " + (values[0] + " must be >= than the number of constructor arguments of its base class."); 19170}; 19171exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = "Invalid Container constructor argument. Container options " + "must be an object."; 19172exports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = "Invalid Container option. Default scope must " + "be a string ('singleton' or 'transient')."; 19173exports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = "Invalid Container option. Auto bind injectable must " + "be a boolean"; 19174exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = "Invalid Container option. Skip base check must " + "be a boolean"; 19175exports.MULTIPLE_POST_CONSTRUCT_METHODS = "Cannot apply @postConstruct decorator multiple times in the same class"; 19176exports.POST_CONSTRUCT_ERROR = function () { 19177 var values = []; 19178 for (var _i = 0; _i < arguments.length; _i++) { 19179 values[_i] = arguments[_i]; 19180 } 19181 return "@postConstruct error in class " + values[0] + ": " + values[1]; 19182}; 19183exports.CIRCULAR_DEPENDENCY_IN_FACTORY = function () { 19184 var values = []; 19185 for (var _i = 0; _i < arguments.length; _i++) { 19186 values[_i] = arguments[_i]; 19187 } 19188 return "It looks like there is a circular dependency " + ("in one of the '" + values[0] + "' bindings. Please investigate bindings with") + ("service identifier '" + values[1] + "'."); 19189}; 19190exports.STACK_OVERFLOW = "Maximum call stack size exceeded"; 19191 19192/***/ }), 19193 19194/***/ 7753: 19195/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19196 19197// style-loader: Adds some css to the DOM by adding a <style> tag 19198 19199// load the styles
19200var content = __webpack_require__(2486); 19201if(content.__esModule) content = content.default; 19202if(typeof content === 'string') content = [[module.id, content, '']]; 19203if(content.locals) module.exports = content.locals; 19204// add the styles to the DOM 19205var add = (__webpack_require__(8449)/* ["default"] */ .A) 19206var update = add("ed37f76c", content, false, {}); 19207// Hot Module Replacement 19208if(false) {} 19209 19210/***/ }), 19211 19212/***/ 7802: 19213/***/ ((__unused_webpack_module, exports) => { 19214 19215"use strict"; 19216 19217 19218Object.defineProperty(exports, "__esModule", ({ 19219 value: true 19220})); 19221exports.TargetTypeEnum = exports.BindingTypeEnum = exports.BindingScopeEnum = void 0; 19222var BindingScopeEnum = { 19223 Request: "Request", 19224 Singleton: "Singleton", 19225 Transient: "Transient" 19226}; 19227exports.BindingScopeEnum = BindingScopeEnum; 19228var BindingTypeEnum = { 19229 ConstantValue: "ConstantValue", 19230 Constructor: "Constructor", 19231 DynamicValue: "DynamicValue", 19232 Factory: "Factory", 19233 Function: "Function", 19234 Instance: "Instance", 19235 Invalid: "Invalid", 19236 Provider: "Provider" 19237}; 19238exports.BindingTypeEnum = BindingTypeEnum; 19239var TargetTypeEnum = { 19240 ClassProperty: "ClassProperty", 19241 ConstructorArgument: "ConstructorArgument", 19242 Variable: "Variable" 19243}; 19244exports.TargetTypeEnum = TargetTypeEnum; 19245 19246/***/ }), 19247 19248/***/ 7827: 19249/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19250 19251// style-loader: Adds some css to the DOM by adding a <style> tag 19252 19253// load the styles 19254var content = __webpack_require__(8508); 19255if(content.__esModule) content = content.default; 19256if(typeof content === 'string') content = [[module.id, content, '']]; 19257if(content.locals) module.exports = content.locals; 19258// add the styles to the DOM 19259var add = (__webpack_require__(8449)/* ["default"] */ .A) 19260var update = add("1196aa5a", content, false, {}); 19261// Hot Module Replacement 19262if(false) {} 19263 19264/***/ }), 19265 19266/***/ 7891: 19267/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19268 19269// style-loader: Adds some css to the DOM by adding a <style> tag 19270 19271// load the styles 19272var content = __webpack_require__(2564); 19273if(content.__esModule) content = content.default; 19274if(typeof content === 'string') content = [[module.id, content, '']]; 19275if(content.locals) module.exports = content.locals; 19276// add the styles to the DOM 19277var add = (__webpack_require__(8449)/* ["default"] */ .A) 19278var update = add("5cb0c63c", content, false, {}); 19279// Hot Module Replacement 19280if(false) {} 19281 19282/***/ }), 19283 19284/***/ 7911: 19285/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19286 19287"use strict"; 19288 19289 19290Object.defineProperty(exports, "__esModule", ({ 19291 value: true 19292})); 19293exports.circularDependencyToException = exports.listMetadataForTarget = exports.listRegisteredBindingsForServiceIdentifier = exports.getServiceIdentifierAsString = exports.getFunctionName = void 0; 19294var ERROR_MSGS = __webpack_require__(7718); 19295function getServiceIdentifierAsString(serviceIdentifier) { 19296 if (typeof serviceIdentifier === "function") { 19297 var _serviceIdentifier = serviceIdentifier; 19298 return _serviceIdentifier.name; 19299 } else if (typeof serviceIdentifier === "symbol") { 19300 return serviceIdentifier.toString(); 19301 } else { 19302 var _serviceIdentifier = serviceIdentifier; 19303 return _serviceIdentifier; 19304 } 19305} 19306exports.getServiceIdentifierAsString = getServiceIdentifierAsString; 19307function listRegisteredBindingsForServiceIdentifier(container, serviceIdentifier, getBindings) { 19308 var registeredBindingsList = ""; 19309 var registeredBindings = getBindings(container, serviceIdentifier); 19310 if (registeredBindings.length !== 0) { 19311 registeredBindingsList = "\nRegistered bindings:";
19312 registeredBindings.forEach(function (binding) { 19313 var name = "Object"; 19314 if (binding.implementationType !== null) { 19315 name = getFunctionName(binding.implementationType); 19316 } 19317 registeredBindingsList = registeredBindingsList + "\n " + name; 19318 if (binding.constraint.metaData) { 19319 registeredBindingsList = registeredBindingsList + " - " + binding.constraint.metaData; 19320 } 19321 }); 19322 } 19323 return registeredBindingsList; 19324} 19325exports.listRegisteredBindingsForServiceIdentifier = listRegisteredBindingsForServiceIdentifier; 19326function alreadyDependencyChain(request, serviceIdentifier) { 19327 if (request.parentRequest === null) { 19328 return false; 19329 } else if (request.parentRequest.serviceIdentifier === serviceIdentifier) { 19330 return true; 19331 } else { 19332 return alreadyDependencyChain(request.parentRequest, serviceIdentifier); 19333 } 19334} 19335function dependencyChainToString(request) { 19336 function _createStringArr(req, result) { 19337 if (result === void 0) { 19338 result = []; 19339 } 19340 var serviceIdentifier = getServiceIdentifierAsString(req.serviceIdentifier); 19341 result.push(serviceIdentifier); 19342 if (req.parentRequest !== null) { 19343 return _createStringArr(req.parentRequest, result); 19344 } 19345 return result; 19346 } 19347 var stringArr = _createStringArr(request); 19348 return stringArr.reverse().join(" --> "); 19349} 19350function circularDependencyToException(request) { 19351 request.childRequests.forEach(function (childRequest) { 19352 if (alreadyDependencyChain(childRequest, childRequest.serviceIdentifier)) { 19353 var services = dependencyChainToString(childRequest); 19354 throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY + " " + services); 19355 } else { 19356 circularDependencyToException(childRequest); 19357 } 19358 }); 19359} 19360exports.circularDependencyToException = circularDependencyToException; 19361function listMetadataForTarget(serviceIdentifierString, target) { 19362 if (target.isTagged() || target.isNamed()) { 19363 var m_1 = ""; 19364 var namedTag = target.getNamedTag(); 19365 var otherTags = target.getCustomTags(); 19366 if (namedTag !== null) { 19367 m_1 += namedTag.toString() + "\n"; 19368 } 19369 if (otherTags !== null) { 19370 otherTags.forEach(function (tag) { 19371 m_1 += tag.toString() + "\n"; 19372 }); 19373 } 19374 return " " + serviceIdentifierString + "\n " + serviceIdentifierString + " - " + m_1; 19375 } else { 19376 return " " + serviceIdentifierString; 19377 } 19378} 19379exports.listMetadataForTarget = listMetadataForTarget; 19380function getFunctionName(v) { 19381 if (v.name) { 19382 return v.name; 19383 } else { 19384 var name_1 = v.toString(); 19385 var match = name_1.match(/^function\s*([^\s(]+)/); 19386 return match ? match[1] : "Anonymous function: " + name_1; 19387 } 19388} 19389exports.getFunctionName = getFunctionName; 19390 19391/***/ }), 19392 19393/***/ 8043: 19394/***/ ((module, __webpack_exports__, __webpack_require__) => { 19395 19396"use strict"; 19397__webpack_require__.r(__webpack_exports__); 19398/* harmony export */ __webpack_require__.d(__webpack_exports__, { 19399/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 19400/* harmony export */ }); 19401/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 19402/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 19403/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 19404/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 19405// Imports 19406 19407 19408var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 19409// Module 19410___CSS_LOADER_EXPORT___.push([module.id, `.oem-toyota__tdg--srp-card-specs[data-v-50b80fa6]{flex-wrap:wrap}.oem-toyota__tdg--srp-card-colors[data-v-50b80fa6]{flex-wrap:wrap;row-gap:.7rem}.vehicle-card .oem-toyota__tdg--srp-card-color.vehicle-colors__int[data-v-50b80fa6],.vehicle-card .oem-toyota__tdg--srp-card-color.vehicle-colors__ext[data-v-50b80fa6]{align-items:baseline}.oem-toyota__tdg--srp-card-color-icon[data-v-50b80fa6]{align-self:flex-start}.vehicle-card .oem-toyota__tdg--srp-card-color-value.vehicle-colors__value[data-v-50b80fa6]{overflow:unset;text-overflow:clip;white-space:unset}.vehicle-card__body--signalsforyou[data-v-50b80fa6]{border:solid 2.67px var(--cta-background-color);border-top-right-radius:0px}.vehicle-card--signalsforyou-margin[data-v-50b80fa6]{margin-top:2.4rem}.vehicle-card .save-heart__srp-card-overview.vehicle-overview[data-v-50b80fa6]{grid-template-areas:"title save-heart dropdown" "identifiers identifiers identifiers" "specs specs specs";grid-area:save-heart;grid-template-columns:1fr repeat(2, auto);column-gap:.8rem}`, ""]); 19411// Exports 19412/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_
19412LOADER_EXPORT___); 19413 19414 19415/***/ }), 19416 19417/***/ 8066: 19418/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 19419 19420"use strict"; 19421 19422// EXPORTS 19423__webpack_require__.d(__webpack_exports__, { 19424 a: () => (/* binding */ VehicleCardWasabi) 19425}); 19426 19427// EXTERNAL MODULE: ./node_modules/inversify/lib/inversify.js 19428var inversify = __webpack_require__(260); 19429// EXTERNAL MODULE: ./src/types/types.ts 19430var types = __webpack_require__(5644); 19431// EXTERNAL MODULE: ./src/components/vehicleImageCarousel/vehicleImageCarousel.ts 19432var vehicleImageCarousel = __webpack_require__(4567); 19433;// ./src/utilities/dynamicImportsUtility.ts 19434var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 19435 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 19436 return new (P || (P = Promise))(function (resolve, reject) { 19437 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 19438 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 19439 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 19440 step((generator = generator.apply(thisArg, _arguments || [])).next()); 19441 }); 19442}; 19443/** 19444 * Import and instantiate a class when element is scrolled into the frame. 19445 * 19446 * @param {Function} importFunction - the dynamic import function used to import the class file. This should look like import(\/* webpackChunkName: "className" *\/ 'path/to/class/file'). 19447 * @param {ElementCollection} observedElements - a DOM element or list of DOM elements for the IntersectionObserver to observe. 19448 * @param {boolean} shouldInstantiate - whether or not the imported module should be newed up. 19449 * @param {IntersectionObserverInit} observerOptions - options to pass to the IntersectionObserver constructor 19450 * @param {...any} otherConstructorArgs - any other arguments to pass to the constructor. 19451 */ 19452function importClassOnScroll(importFunction, observedElements, shouldInstantiate, observerOptions, ...otherConstructorArgs) { 19453 const elementList = convertToArray(observedElements); 19454 const observer = new IntersectionObserver((entries) => { 19455 entries === null || entries === void 0 ? void 0 : entries.forEach((entry) => __awaiter(this, void 0, void 0, function* () { 19456 if (entry === null || entry === void 0 ? void 0 : entry.isIntersecting) { 19457 try { 19458 const importedClass = yield importFunction(); 19459 if (shouldInstantiate) { 19460 const instantiated = new importedClass.default(entry.target, ...otherConstructorArgs); 19461 } 19462 observer.disconnect(); 19463 } 19464 catch (error) { 19465 console.error('An error occurred when trying to dynamically import a class.'); 19466 console.error(error); 19467 return; 19468 } 19469 } 19470 })); 19471 }, observerOptions); 19472 elementList.forEach((element) => { 19473 observer.observe(element); 19474 }); 19475} 19476/** 19477 * Import and instantiate a class when element is clicked, focused, etc. 19478 * 19479 * @param {Function} importFunction - the dynamic import function used to import the class file. This should look like import(\/* webpackChunkName: "className" *\/ 'path/to/class/file'). 19480 * @param {ElementCollection} clickableElements - a DOM element or list of DOM elements that would be clicked. 19481 * @param {Event} eventType - the type of event to listen for 19482 * @param {boolean} shouldInstantiate - whether or not the imported module should be newed up. 19483 * @param {boolean | AddEventListenerOptions} listenerOptions - options to pass to the IntersectionObserver constructor 19484 * @param {...any} otherConstructorArgs - any other arguments to pass to the constructor. 19485 */ 19486function importClassOnEvent(importFunction, elementsToListenOn, eventType, shouldInstantiate, listenerOptions, ...otherConstructorArgs) { 19487 const elementList = convertToArray(elementsToListenOn); 19488 const events = typeof eventType === 'string' ? [eventType] : eventType; 19489 elementList === null || elementList === void 0 ? void 0 : elementList.forEach((element) => {
19490 events.forEach((event) => { 19491 element.addEventListener(event, function listener(event) { 19492 return __awaiter(this, void 0, void 0, function* () { 19493 const importedClass = yield importFunction(); 19494 if (shouldInstantiate) { 19495 const instantiated = new importedClass.default(event.currentTarget, ...otherConstructorArgs); 19496 } 19497 this.removeEventListener(eventType, listener); 19498 }); 19499 }, listenerOptions); 19500 }); 19501 }); 19502} 19503function convertToArray(elements) { 19504 if (!elements) { 19505 return []; 19506 } 19507 if ('length' in elements) { 19508 return Array.from(elements); 19509 } 19510 else { 19511 return [elements]; 19512 } 19513} 19514/** 19515 * Remove loading states 19516 * @param loadingRegionSelector CSS Selector for parent element that has the aria-busy attribute. This is an accessibility feature that tells assistive technology that an element or region is loading. 19517 * @param loadingLabelElementSelector CSS Selector for screen-reader-only labels indicating that the region is loading 19518 */ 19519function setLoadingToFalse(loadingRegionSelector, loadingLabelElementSelector) { 19520 const loadingRegion = document.querySelector(`${loadingRegionSelector}[aria-busy]`); 19521 const loadingLabel = document.querySelector(loadingLabelElementSelector); 19522 loadingRegion === null || loadingRegion === void 0 ? void 0 : loadingRegion.setAttribute('aria-busy', 'false'); 19523 loadingLabel === null || loadingLabel === void 0 ? void 0 : loadingLabel.remove(); 19524} 19525 19526// EXTERNAL MODULE: ./src/utilities/performanceHelpers.ts 19527var performanceHelpers = __webpack_require__(9185); 19528// EXTERNAL MODULE: ./src/services/toggles/iToggleService.ts 19529var iToggleService = __webpack_require__(4478); 19530// EXTERNAL MODULE: ./src/utilities/jQueryHelper/jQueryHelper.ts 19531var jQueryHelper = __webpack_require__(2781); 19532;// ./src/components/vehicle/vehicleCard/vehicleCardWasabi.ts 19533var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 19534 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 19535 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 19536 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 19537 return c > 3 && r && Object.defineProperty(target, key, r), r; 19538}; 19539var __metadata = (undefined && undefined.__metadata) || function (k, v) { 19540 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 19541}; 19542var __param = (undefined && undefined.__param) || function (paramIndex, decorator) { 19543 return function (target, key) { decorator(target, key, paramIndex); } 19544}; 19545var vehicleCardWasabi_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 19546 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 19547 return new (P || (P = Promise))(function (resolve, reject) { 19548 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 19549 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 19550 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 19551 step((generator = generator.apply(thisArg, _arguments || [])).next()); 19552 }); 19553}; 19554var _a; 19555 19556 19557 19558 19559 19560 19561 19562let VehicleCardWasabi = class VehicleCardWasabi { 19563 constructor(toggleService) { 19564 this.carouselList = []; 19565 this.toggleService = toggleService; 19566 } 19567 initialize() { 19568 return vehicleCardWasabi_awaiter(this, void 0, void 0, function* () { 19569 yield this.setupCarousel(); 19570 this.setupCompare(); 19571 this.initializePopovers(); 19572 }); 19573 } 19574 setupCarousel() { 19575 return vehicleCardWasabi_awaiter(this, void 0, void 0, function* () { 19576 const rootCarouselClassName = 'hero-carousel'; 19577 //NOTE: SITESAA-3503: this is a constant width across the carousel item containers 19578 // and we don't want to calculate it everytime we instantiate a new carousel, 19579 // so we'll do it here and then pass it in. 19580 const carouselItemsContainer = `${rootCarouselClassName}__items`; 19581 const carouselItemsContainerElem = document.querySelectorAll(`.${carouselItemsContainer}`); 19582 let carouselItemsContainerWidth = 0; 19583 if (carouselItemsContainerElem.length > 0) { 19584 yield (0,performanceHelpers/* doBeforeNextRepaint */.L)(() => { 19585 carouselItemsContainerWidth = carouselItemsContainerElem[0].getBoundingClientRect().width; 19586 }); 19587 } 19588 const carouselContainer = document.querySelectorAll(".vehicleImg .top-container, .vehicle-card--mod .vehicle-image__image-wrapper"); 19589 carouselContainer.forEach(carouselParent => { 19590 if (carouselParent.querySelector(`.vehicle-image .${rootCarouselClassName}`)) { 19591 this.carouselList.push(new vehicleImageCarousel/* VehicleImageCarousel */.C(carouselParent, rootCarouselClassName, null, null, null, null, carouselItemsContainerWidth)); 19592 } 19593 }); 19594 }); 19595 } 19596 setupCompare() { 19597 const url = new URL(window.location.href); 19598 const isVehicleCompare = url.searchParams.get('isVehicleCompare') == "true"; 19599 if (isVehicleCompare) { 19600 __webpack_require__.e(/* import() | vehicleCompare */ 554).then(__webpack_require__.bind(__webpack_require__, 6469)); 19601 } 19602 else { 19603 const checkboxes = document.querySelectorAll('[data-compare-checkbox-wrapper]'); 19604 importClassOnScroll(() => __webpack_require__.e(/* import() | vehicleCompare */ 554).then(__webpack_require__.bind(__webpack_require__, 6469)), checkboxes, false); 19605 } 19606 } 19607 initializePopovers() { 19608 const popoverTriggers = document.querySelectorAll('.vehicle-card--mod [data-toggle="popover"]');
19609 popoverTriggers.forEach(el => { 19610 const element = window.jQuery(el); 19611 jQueryHelper/* JQueryHelper */.$.SafeApplyPopover(element); 19612 }); 19613 } 19614}; 19615VehicleCardWasabi = __decorate([ 19616 (0,inversify/* injectable */._G)(), 19617 __param(0, (0,inversify/* inject */.WQ)(types/* TYPES */.Q.IToggleService)), 19618 __metadata("design:paramtypes", [typeof (_a = typeof iToggleService/* IToggleService */.F !== "undefined" && iToggleService/* IToggleService */.F) === "function" ? _a : Object]) 19619], VehicleCardWasabi); 19620 19621 19622 19623/***/ }), 19624 19625/***/ 8102: 19626/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 19627 19628"use strict"; 19629/* harmony export */ __webpack_require__.d(__webpack_exports__, { 19630/* harmony export */ $: () => (/* binding */ TranslationFetcher) 19631/* harmony export */ }); 19632/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260); 19633var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { 19634 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 19635 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 19636 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 19637 return c > 3 && r && Object.defineProperty(target, key, r), r; 19638}; 19639var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 19640 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 19641 return new (P || (P = Promise))(function (resolve, reject) { 19642 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 19643 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 19644 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 19645 step((generator = generator.apply(thisArg, _arguments || [])).next()); 19646 }); 19647}; 19648 19649let TranslationFetcher = class TranslationFetcher { 19650 constructor() { 19651 this._dealerId = window.DlronGlobal_DealerId; 19652 } 19653 getEndPoint(translationType) { 19654 return `/api/vhcliaa/translations/${this._dealerId}/${translationType}`; 19655 } 19656 fetch(translationType) { 19657 return __awaiter(this, void 0, void 0, function* () { 19658 const url = this.getEndPoint(translationType); 19659 try { 19660 const response = yield fetch(url); 19661 if (response.ok) { 19662 const responseData = yield response.json(); 19663 return responseData; 19664 } 19665 else { 19666 throw new Error(`Error: ${response.status} for endpoint ${url}`); 19667 } 19668 } 19669 catch (error) { 19670 console.error(new Error(`Error fetching translations from ${url}: ${error.message}`)); 19671 return ""; 19672 } 19673 }); 19674 } 19675}; 19676TranslationFetcher = __decorate([ 19677 (0,inversify__WEBPACK_IMPORTED_MODULE_0__/* .injectable */ ._G)() 19678], TranslationFetcher); 19679 19680 19681 19682/***/ }), 19683 19684/***/ 8156: 19685/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19686 19687"use strict"; 19688 19689 19690Object.defineProperty(exports, "__esModule", ({ 19691 value: true 19692})); 19693exports.resolve = void 0; 19694var ERROR_MSGS = __webpack_require__(7718); 19695var literal_types_1 = __webpack_require__(7802); 19696var exceptions_1 = __webpack_require__(8229); 19697var serialization_1 = __webpack_require__(7911); 19698var instantiation_1 = __webpack_require__(3553); 19699var invokeFactory = function (factoryType, serviceIdentifier, fn) { 19700 try { 19701 return fn(); 19702 } catch (error) { 19703 if (exceptions_1.isStackOverflowExeption(error)) { 19704 throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryType, serviceIdentifier.toString())); 19705 } else { 19706 throw error; 19707 } 19708 } 19709}; 19710var _resolveRequest = function (requestScope) { 19711 return function (request) { 19712 request.parentContext.setCurrentRequest(request); 19713 var bindings = request.bindings; 19714 var childRequests = request.childRequests; 19715 var targetIsAnArray = request.target && request.target.isArray(); 19716 var targetParentIsNotAnArray = !request.parentRequest || !request.parentRequest.target || !request.target || !request.parentRequest.target.matchesArray(request.target.serviceIdentifier); 19717 if (targetIsAnArray && targetParentIsNotAnArray) { 19718 return childRequests.map(function (childRequest) { 19719 var _f = _resolveRequest(requestScope); 19720 return _f(childRequest); 19721 }); 19722 } else { 19723 var result = null; 19724 if (request.target.isOptional() && bindings.length === 0) { 19725 return undefined; 19726 } 19727 var binding_1 = bindings[0]; 19728 var isSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Singleton; 19729 var isRequestSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Request; 19730 if (isSingleton && binding_1.activated) { 19731 return binding_1.cache; 19732 } 19733 if (isRequestSingleton && requestScope !== null && requestScope.has(binding_1.id)) { 19734 return requestScope.get(binding_1.id); 19735 } 19736 if (binding_1.type === literal_types_1.BindingTypeEnum.ConstantValue) { 19737 result = binding_1.cache; 19738 } else if (binding_1.type === literal_types_1.BindingTypeEnum.Function) { 19739 result = binding_1.cache; 19740 } else if (binding_1.type === literal_types_1.BindingTypeEnum.Constructor) { 19741 result = binding_1.implementationType; 19742 } else if (binding_1.type === literal_types_1.BindingTypeEnum.DynamicValue && binding_1.dynamicValue !== null) { 19743 result = invokeFactory("toDynamicValue", binding_1.serviceIdentifier, function () { 19744 return binding_1.dynamicValue(request.parentContext); 19745 }); 19746 } else if (binding_1.type === literal_types_1.BindingTypeEnum.Factory && binding_1.factory !== null) { 19747 result = invokeFactory("toFactory", binding_1.serviceIdentifier, function () { 19748 return binding_1.factory(request.parentContext); 19749 }); 19750 } else if (binding_1.type === literal_types_1.BindingTypeEnum.Provider && binding_1.provider !== null) { 19751 result = invokeFactory("toProvider", binding_1.serviceIdentifier, function () { 19752 return binding_1.provider(request.parentContext); 19753 }); 19754 } else if (binding_1.type === literal_types_1.BindingTypeEnum.Instance && binding_1.implementationType !== null) { 19755 result = instantiation_1.resolveInstance(binding_1.implementationType, childRequests, _resolveRequest(requestScope)); 19756 } else { 19757 var serviceIdentifier = serialization_1.getServiceIdentifierAsString(request.serviceIdentifier); 19758 throw new Error(ERROR_MSGS.INVALID_BINDING_TYPE + " " + serviceIdentifier); 19759 } 19760 if (typeof binding_1.onActivation === "function") { 19761 result = binding_1.onActivation(request.parentContext, result); 19762 } 19763 if (isSingleton) { 19764 binding_1.cache = result; 19765 binding_1.activated = true; 19766 } 19767 if (isRequestSingleton && requestScope !== null && !requestScope.has(binding_1.id)) { 19768 requestScope.set(binding_1.id, result); 19769 } 19770 return result; 19771 } 19772 }; 19773}; 19774function resolve(context) { 19775 var _f = _resolveRequest(context.plan.rootRequest.requestScope); 19776 return _f(context.plan.rootRequest); 19777} 19778exports.resolve = resolve; 19779 19780/***/ }), 19781 19782/***/ 8186: 19783/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19784 19785// style-loader: Adds some css to the DOM by adding a <style> tag 19786 19787// load the styles
19788var content = __webpack_require__(9703); 19789if(content.__esModule) content = content.default; 19790if(typeof content === 'string') content = [[module.id, content, '']]; 19791if(content.locals) module.exports = content.locals; 19792// add the styles to the DOM 19793var add = (__webpack_require__(8449)/* ["default"] */ .A) 19794var update = add("21eace71", content, false, {}); 19795// Hot Module Replacement 19796if(false) {} 19797 19798/***/ }), 19799 19800/***/ 8220: 19801/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19802 19803// style-loader: Adds some css to the DOM by adding a <style> tag 19804 19805// load the styles 19806var content = __webpack_require__(3845); 19807if(content.__esModule) content = content.default; 19808if(typeof content === 'string') content = [[module.id, content, '']]; 19809if(content.locals) module.exports = content.locals; 19810// add the styles to the DOM 19811var add = (__webpack_require__(8449)/* ["default"] */ .A) 19812var update = add("c2031622", content, false, {}); 19813// Hot Module Replacement 19814if(false) {} 19815 19816/***/ }), 19817 19818/***/ 8229: 19819/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19820 19821"use strict"; 19822 19823 19824Object.defineProperty(exports, "__esModule", ({ 19825 value: true 19826})); 19827exports.isStackOverflowExeption = void 0; 19828var ERROR_MSGS = __webpack_require__(7718); 19829function isStackOverflowExeption(error) { 19830 return error instanceof RangeError || error.message === ERROR_MSGS.STACK_OVERFLOW; 19831} 19832exports.isStackOverflowExeption = isStackOverflowExeption; 19833 19834/***/ }), 19835 19836/***/ 8370: 19837/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19838 19839"use strict"; 19840 19841 19842Object.defineProperty(exports, "__esModule", ({ 19843 value: true 19844})); 19845exports.injectable = void 0; 19846var ERRORS_MSGS = __webpack_require__(7718); 19847var METADATA_KEY = __webpack_require__(4725); 19848function injectable() { 19849 return function (target) { 19850 if (Reflect.hasOwnMetadata(METADATA_KEY.PARAM_TYPES, target)) { 19851 throw new Error(ERRORS_MSGS.DUPLICATED_INJECTABLE_DECORATOR); 19852 } 19853 var types = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, target) || []; 19854 Reflect.defineMetadata(METADATA_KEY.PARAM_TYPES, types, target); 19855 return target; 19856 }; 19857} 19858exports.injectable = injectable; 19859 19860/***/ }), 19861 19862/***/ 8390: 19863/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 19864 19865"use strict"; 19866 19867 19868Object.defineProperty(exports, "__esModule", ({ 19869 value: true 19870})); 19871exports.Metadata = void 0; 19872var METADATA_KEY = __webpack_require__(4725); 19873var Metadata = function () { 19874 function Metadata(key, value) { 19875 this.key = key; 19876 this.value = value; 19877 } 19878 Metadata.prototype.toString = function () { 19879 if (this.key === METADATA_KEY.NAMED_TAG) { 19880 return "named: " + this.value.toString() + " "; 19881 } else { 19882 return "tagged: { key:" + this.key.toString() + ", value: " + this.value + " }"; 19883 } 19884 }; 19885 return Metadata; 19886}(); 19887exports.Metadata = Metadata; 19888 19889/***/ }), 19890 19891/***/ 8418: 19892/***/ ((__unused_webpack_module, exports) => { 19893 19894"use strict"; 19895 19896 19897Object.defineProperty(exports, "__esModule", ({ 19898 value: true 19899})); 19900exports.id = void 0; 19901var idCounter = 0; 19902function id() { 19903 return idCounter++; 19904} 19905exports.id = id; 19906 19907/***/ }), 19908 19909/***/ 8449: 19910/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 19911 19912"use strict"; 19913 19914// EXPORTS 19915__webpack_require__.d(__webpack_exports__, { 19916 A: () => (/* binding */ addStylesClient) 19917}); 19918 19919;// ./node_modules/vue-style-loader/lib/listToStyles.js 19920/** 19921 * Translates the list format produced by css-loader into something 19922 * easier to manipulate. 19923 */ 19924function listToStyles(parentId, list) { 19925 var styles = []; 19926 var newStyles = {}; 19927 for (var i = 0; i < list.length; i++) { 19928 var item = list[i]; 19929 var id = item[0]; 19930 var css = item[1]; 19931 var media = item[2]; 19932 var sourceMap = item[3]; 19933 var part = { 19934 id: parentId + ':' + i, 19935 css: css, 19936 media: media, 19937 sourceMap: sourceMap 19938 }; 19939 if (!newStyles[id]) { 19940 styles.push(newStyles[id] = { 19941 id: id, 19942 parts: [part] 19943 }); 19944 } else { 19945 newStyles[id].parts.push(part); 19946 } 19947 } 19948 return styles; 19949} 19950;// ./node_modules/vue-style-loader/lib/addStylesClient.js 19951/* 19952 MIT License http://www.opensource.org/licenses/mit-license.php 19953 Author Tobias Koppers @sokra 19954 Modified by Evan You @yyx990803 19955*/ 19956 19957 19958 19959var hasDocument = typeof document !== 'undefined' 19960 19961if (typeof DEBUG !== 'undefined' && DEBUG) { 19962 if (!hasDocument) { 19963 throw new Error( 19964 'vue-style-loader cannot be used in a non-browser environment. ' + 19965 "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment." 19966 ) } 19967} 19968 19969/* 19970type StyleObject = { 19971 id: number; 19972 parts: Array<StyleObjectPart> 19973} 19974 19975type StyleObjectPart = { 19976 css: string; 19977 media: string; 19978 sourceMap: ?string 19979} 19980*/ 19981 19982var stylesInDom = {/* 19983 [id: number]: { 19984 id: number, 19985 refs: number, 19986 parts: Array<(obj?: StyleObjectPart) => void> 19987 } 19988*/} 19989 19990var head = hasDocument && (document.head || document.getElementsByTagName('head')[0]) 19991var singletonElement = null 19992var singletonCounter = 0 19993var isProduction = false 19994var noop = function () {} 19995var options = null 19996var ssrIdKey = 'data-vue-ssr-id' 19997 19998// Force single-tag solution on IE6-9, which has a hard limit on the # of <style> 19999// tags it will allow on a page 20000var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase()) 20001 20002function addStylesClient (parentId, list, _isProduction, _options) { 20003 isProduction = _isProduction 20004 20005 options = _options || {} 20006 20007 var styles = listToStyles(parentId, list) 20008 addStylesToDom(styles) 20009 20010 return function update (newList) { 20011 var mayRemove = [] 20012 for (var i = 0; i < styles.length; i++) { 20013 var item = styles[i] 20014 var domStyle = stylesInDom[item.id] 20015 domStyle.refs-- 20016 mayRemove.push(domStyle) 20017 } 20018 if (newList) { 20019 styles = listToStyles(parentId, newList) 20020 addStylesToDom(styles) 20021 } else { 20022 styles = [] 20023 } 20024 for (var i = 0; i < mayRemove.length; i++) { 20025 var domStyle = mayRemove[i] 20026 if (domStyle.refs === 0) { 20027 for (var j = 0; j < domStyle.parts.length; j++) { 20028 domStyle.parts[j]() 20029 } 20030 delete stylesInDom[domStyle.id] 20031 } 20032 } 20033 } 20034} 20035 20036function addStylesToDom (styles /* Array<StyleObject> */) { 20037 for (var i = 0; i < styles.length; i++) { 20038 var item = styles[i] 20039 var domStyle = stylesInDom[item.id] 20040 if (domStyle) { 20041 domStyle.refs++ 20042 for (var j = 0; j < domStyle.parts.length; j++) { 20043 domStyle.parts[j](item.parts[j]) 20044 } 20045 for (; j < item.parts.length; j++) { 20046 domStyle.parts.push(addStyle(item.parts[j])) 20047 } 20048 if (domStyle.parts.length > item.parts.length) { 20049 domStyle.parts.length = item.parts.length 20050 } 20051 } else { 20052 var parts = [] 20053 for (var j = 0; j < item.parts.length; j++) { 20054 parts.push(addStyle(item.parts[j])) 20055 } 20056 stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts } 20057 } 20058 } 20059} 20060 20061function createStyleElement () { 20062 var styleElement = document.createElement('style') 20063 styleElement.type = 'text/css' 20064 head.appendChild(styleElement) 20065 return styleElement 20066} 20067 20068function addStyle (obj /* StyleObjectPart */) { 20069 var update, remove 20070 var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]') 20071 20072 if (styleElement) { 20073 if (isProduction) { 20074 // has SSR styles and in production mode. 20075 // simply do nothing. 20076 return noop 20077 } else { 20078 // has SSR styles but in dev mode. 20079 // for some reason Chrome can't handle source map in server-rendered 20080 // style tags - source maps in <style> only works if the style tag is 20081 // created and inserted dynamically. So we remove the server rendered 20082 // styles and inject new ones. 20083 styleElement.parentNode.removeChild(styleElement) 20084 } 20085 } 20086 20087 if (isOldIE) { 20088 // use singleton mode for IE9. 20089 var styleIndex = singletonCounter++ 20090 styleElement = singletonElement || (singletonElement = createStyleElement()) 20091 update = applyToSingletonTag.bind(null, styleElement, styleIndex, false) 20092 remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true) 20093 } else { 20094 // use multi-style-tag mode in all other cases 20095 styleElement = createStyleElement() 20096 update = applyToTag.bind(null, styleElement) 20097 remove = function () { 20098 styleElement.parentNode.removeChild(styleElement) 20099 } 20100 } 20101 20102 update(obj) 20103 20104 return function updateStyle (newObj /* StyleObjectPart */) { 20105 if (newObj) { 20106 if (newObj.css === obj.css && 20107 newObj.media === obj.media && 20108 newObj.sourceMap === obj.sourceMap) { 20109 return 20110 } 20111 update(obj = newObj) 20112 } else { 20113 remove() 20114 } 20115 } 20116} 20117 20118var replaceText = (function () { 20119 var textStore = [] 20120 20121 return function (index, replacement) { 20122 textStore[index] = replacement 20123 return textStore.filter(Boolean).join('\n') 20124 } 20125})() 20126 20127function applyToSingletonTag (styleElement, index, remove, obj) { 20128 var css = remove ? '' : obj.css 20129 20130 if (styleElement.styleSheet) { 20131 styleElement.styleSheet.cssText = replaceText(index, css) 20132 } else { 20133 var cssNode = document.createTextNode(css) 20134 var childNodes = styleElement.childNodes 20135 if (childNodes[index]) styleElement.removeChild(childNodes[index]) 20136 if (childNodes.length) { 20137 styleElement.insertBefore(cssNode, childNodes[index]) 20138 } else { 20139 styleElement.appendChild(cssNode) 20140 } 20141 } 20142} 20143 20144function applyToTag (styleElement, obj) { 20145 var css = obj.css 20146 var media = obj.media 20147 var sourceMap = obj.sourceMap 20148 20149 if (media) { 20150 styleElement.setAttribute('media', media) 20151 } 20152 if (options.ssrId) { 20153 styleElement.setAttribute(ssrIdKey, obj.id) 20154 } 20155 20156 if (sourceMap) { 20157 // https://developer.chrome.com/devtools/docs/javascript-debugging 20158 // this makes source maps inside style tags work properly in Chrome 20159 css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */' 20160 // http://stackoverflow.com/a/26603875 20161 css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)
20161))) + ' */' 20162 } 20163 20164 if (styleElement.styleSheet) { 20165 styleElement.styleSheet.cssText = css 20166 } else { 20167 while (styleElement.firstChild) { 20168 styleElement.removeChild(styleElement.firstChild) 20169 } 20170 styleElement.appendChild(document.createTextNode(css)) 20171 } 20172} 20173 20174 20175/***/ }), 20176 20177/***/ 8508: 20178/***/ ((module, __webpack_exports__, __webpack_require__) => { 20179 20180"use strict"; 20181__webpack_require__.r(__webpack_exports__); 20182/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20183/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 20184/* harmony export */ }); 20185/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 20186/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 20187/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 20188/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 20189// Imports 20190 20191 20192var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 20193// Module 20194___CSS_LOADER_EXPORT___.push([module.id, `.oem-vehicle-features[data-v-718b1078]{display:grid;grid-template-columns:repeat(2, 1fr);gap:.5rem 2.4rem;margin:0;border-top:1px solid #dcdce2;padding:.8rem 2rem}@media(max-width: 1533px){.oem-vehicle-features.list-view[data-v-718b1078]{display:flex;flex-wrap:wrap}}.oem-vehicle-feature[data-v-718b1078]{list-style:none;display:flex;align-items:center}.oem-vehicle-feature__icon[data-v-718b1078]{width:32px;height:32px;margin-right:5px;object-fit:contain;column-gap:.5rem}.oem-vehicle-feature__icon[src\$=".svg"][data-v-718b1078]{fill:#464646}.oem-vehicle-feature__icon[src\$=".png"][data-v-718b1078]{filter:brightness(0) saturate(100%) invert(28%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(93%) contrast(89%)}.oem-vehicle-feature__text[data-v-718b1078]{flex:1;word-wrap:break-word}`, ""]); 20195// Exports 20196/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 20197 20198 20199/***/ }), 20200 20201/***/ 8528: 20202/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 20203 20204"use strict"; 20205 20206 20207Object.defineProperty(exports, "__esModule", ({ 20208 value: true 20209})); 20210exports.Context = void 0; 20211var id_1 = __webpack_require__(8418); 20212var Context = function () { 20213 function Context(container) { 20214 this.id = id_1.id(); 20215 this.container = container; 20216 } 20217 Context.prototype.addPlan = function (plan) { 20218 this.plan = plan; 20219 }; 20220 Context.prototype.setCurrentRequest = function (currentRequest) { 20221 this.currentRequest = currentRequest; 20222 }; 20223 return Context; 20224}(); 20225exports.Context = Context; 20226 20227/***/ }), 20228 20229/***/ 8586: 20230/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20231 20232"use strict"; 20233/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20234/* harmony export */ j: () => (/* binding */ Industry) 20235/* harmony export */ }); 20236// make sure this matches the values in VHCLIAA.Core.Common.Industry 20237var Industry; 20238(function (Industry) { 20239 Industry[Industry["Automotive"] = 0] = "Automotive"; 20240 Industry[Industry["Fireplace"] = 1] = "Fireplace"; 20241 Industry[Industry["Powersports"] = 2] = "Powersports"; 20242 Industry[Industry["Legal"] = 3] = "Legal"; 20243 Industry[Industry["RecreationalVehicles"] = 4] = "RecreationalVehicles"; 20244})(Industry || (Industry = {})); 20245 20246 20247/***/ }), 20248 20249/***/ 8595: 20250/***/ ((module, __webpack_exports__, __webpack_require__) => { 20251 20252"use strict"; 20253__webpack_require__.r(__webpack_exports__); 20254/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20255/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 20256/* harmony export */ }); 20257/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 20258/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 20259/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 20260/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 20261// Imports 20262 20263 20264var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 20265// Module
20266___CSS_LOADER_EXPORT___.push([module.id, `@media(min-width: 768px){.modal-background{height:100%;width:100%;background-color:rgba(0,0,0,.6)}}@media(max-width: 767px){#searchNearbyMobileBanner.alert{padding:0;margin:0;position:fixed;z-index:9999;height:100%}#searchNearbyMobileBanner>.container{z-index:999999;position:relative;padding-bottom:1em;background-color:#fff;box-shadow:0 0 5px rgba(0,0,0,.3)}#searchNearbyMobileBanner.btn{padding:8px 7px}h2#geoFilterTitle{font-size:18px}#searchNearbyMobileBanner input.form-control{font-size:12px !important}}`, ""]); 20267// Exports 20268/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 20269 20270 20271/***/ }), 20272 20273/***/ 8602: 20274/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20275 20276"use strict"; 20277/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20278/* harmony export */ V: () => (/* binding */ AppLocation) 20279/* harmony export */ }); 20280var AppLocation; 20281(function (AppLocation) { 20282 AppLocation[AppLocation["CosmosSrp"] = 0] = "CosmosSrp"; 20283 AppLocation[AppLocation["VehicleCardDeck"] = 1] = "VehicleCardDeck"; 20284})(AppLocation || (AppLocation = {})); 20285 20286 20287/***/ }), 20288 20289/***/ 8677: 20290/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 20291 20292"use strict"; 20293 20294 20295Object.defineProperty(exports, "__esModule", ({ 20296 value: true 20297})); 20298exports.Binding = void 0; 20299var literal_types_1 = __webpack_require__(7802); 20300var id_1 = __webpack_require__(8418); 20301var Binding = function () { 20302 function Binding(serviceIdentifier, scope) { 20303 this.id = id_1.id(); 20304 this.activated = false; 20305 this.serviceIdentifier = serviceIdentifier; 20306 this.scope = scope; 20307 this.type = literal_types_1.BindingTypeEnum.Invalid; 20308 this.constraint = function (request) { 20309 return true; 20310 }; 20311 this.implementationType = null; 20312 this.cache = null; 20313 this.factory = null; 20314 this.provider = null; 20315 this.onActivation = null; 20316 this.dynamicValue = null; 20317 } 20318 Binding.prototype.clone = function () { 20319 var clone = new Binding(this.serviceIdentifier, this.scope); 20320 clone.activated = false; 20321 clone.implementationType = this.implementationType; 20322 clone.dynamicValue = this.dynamicValue; 20323 clone.scope = this.scope; 20324 clone.type = this.type; 20325 clone.factory = this.factory; 20326 clone.provider = this.provider; 20327 clone.constraint = this.constraint; 20328 clone.onActivation = this.onActivation; 20329 clone.cache = this.cache; 20330 return clone; 20331 }; 20332 return Binding; 20333}(); 20334exports.Binding = Binding; 20335 20336/***/ }), 20337 20338/***/ 8690: 20339/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 20340 20341"use strict"; 20342 20343 20344Object.defineProperty(exports, "__esModule", ({ 20345 value: true 20346})); 20347exports.targetName = void 0; 20348var METADATA_KEY = __webpack_require__(4725); 20349var metadata_1 = __webpack_require__(8390); 20350var decorator_utils_1 = __webpack_require__(40); 20351function targetName(name) { 20352 return function (target, targetKey, index) { 20353 var metadata = new metadata_1.Metadata(METADATA_KEY.NAME_TAG, name); 20354 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 20355 }; 20356} 20357exports.targetName = targetName; 20358 20359/***/ }), 20360 20361/***/ 8943: 20362/***/ ((module, __webpack_exports__, __webpack_require__) => { 20363 20364"use strict"; 20365__webpack_require__.r(__webpack_exports__); 20366/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20367/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 20368/* harmony export */ }); 20369/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 20370/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 20371/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 20372/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 20373// Imports 20374 20375 20376var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 20377// Module
vendor: 3,441 bytes, lines 20378-20420
20378___CSS_LOADER_EXPORT___.push([module.id, `.vehicle-title__car-bravo,.vehicle-title__condition,.vehicle-title__toyota-gold,.vehicle-title__toyota-silver{margin-right:3px}.save-heart__srp-card-heart-wrapper{margin-top:.5rem}.vehicle-special-tags{display:flex;flex-wrap:wrap;color:#707070;line-height:1;padding-bottom:8px}.vehicle-special-tags__label,.vehicle-special-tags__icon{font-size:12px;font-weight:400;line-height:1}.vehicle-special-tags__special-offer,.vehicle-special-tags__price-drop{display:flex;align-items:center}.vehicle-special-tags__label{margin-right:1rem}.vehicle-special-tags__icon{color:#333;margin-right:.5rem}.vehicle-overview__identifiers{display:grid;gap:.8rem}.vehicle-overview__identifiers .vehicle-special-tags{padding-bottom:0}`, ""]); 20379// Exports 20380/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 20381 20382 20383/***/ }), 20384 20385/***/ 8993: 20386/***/ ((module, __webpack_exports__, __webpack_require__) => { 20387 20388"use strict"; 20389__webpack_require__.r(__webpack_exports__); 20390/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20391/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 20392/* harmony export */ }); 20393/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 20394/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 20395/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 20396/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 20397// Imports 20398 20399 20400var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 20401// Module 20402___CSS_LOADER_EXPORT___.push([module.id, `.hero-carousel[data-v-574006ad]{overflow:hidden}.hero-carousel--signalsforyou-rounded[data-v-574006ad]{border-radius:.75rem 0 0 0}.hero-carousel__items[data-v-574006ad]{margin-left:-1px;aspect-ratio:1.3333333333}.hero-carousel__item[data-v-574006ad]{scroll-snap-stop:always;aspect-ratio:4/3;transition:opacity .5s ease}.hero-carousel__item--loading[data-v-574006ad]{opacity:0}.hero-carousel__item--loaded[data-v-574006ad]{opacity:1}.hero-carousel__controls[data-v-574006ad]{grid-template-columns:auto 1fr auto;align-items:center}.hero-carousel__control[data-v-574006ad]{pointer-events:auto}.hero-carousel__control--previous-btn[data-v-574006ad]{grid-area:previous}.hero-carousel__control--next-btn[data-v-574006ad]{grid-area:next;justify-self:end}.hero-carousel__control--next-btn.hidden[data-v-574006ad]{display:block !important}.hero-carousel__image-counter[data-v-574006ad]{display:unset}`, ""]); 20403// Exports 20404/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 20405 20406 20407/***/ }), 20408 20409/***/ 9034: 20410/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 20411 20412"use strict"; 20413 20414 20415Object.defineProperty(exports, "__esModule", ({ 20416 value: true 20417})); 20418exports.Request = void 0; 20419var id_1 = __webpack_require__(8418); 20420var Request = function () {
vendor: 4,021 bytes, lines 20421-20556
20421 function Request(serviceIdentifier, parentContext, parentRequest, bindings, target) { 20422 this.id = id_1.id(); 20423 this.serviceIdentifier = serviceIdentifier; 20424 this.parentContext = parentContext; 20425 this.parentRequest = parentRequest; 20426 this.target = target; 20427 this.childRequests = []; 20428 this.bindings = Array.isArray(bindings) ? bindings : [bindings]; 20429 this.requestScope = parentRequest === null ? new Map() : null; 20430 } 20431 Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) { 20432 var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target); 20433 this.childRequests.push(child); 20434 return child; 20435 }; 20436 return Request; 20437}(); 20438exports.Request = Request; 20439 20440/***/ }), 20441 20442/***/ 9089: 20443/***/ ((module) => { 20444 20445"use strict"; 20446 20447 20448/* 20449 MIT License http://www.opensource.org/licenses/mit-license.php 20450 Author Tobias Koppers @sokra 20451*/ 20452module.exports = function (cssWithMappingToString) { 20453 var list = []; 20454 20455 // return the list of modules as css string 20456 list.toString = function toString() { 20457 return this.map(function (item) { 20458 var content = ""; 20459 var needLayer = typeof item[5] !== "undefined"; 20460 if (item[4]) { 20461 content += "@supports (".concat(item[4], ") {"); 20462 } 20463 if (item[2]) { 20464 content += "@media ".concat(item[2], " {"); 20465 } 20466 if (needLayer) { 20467 content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); 20468 } 20469 content += cssWithMappingToString(item); 20470 if (needLayer) { 20471 content += "}"; 20472 } 20473 if (item[2]) { 20474 content += "}"; 20475 } 20476 if (item[4]) { 20477 content += "}"; 20478 } 20479 return content; 20480 }).join(""); 20481 }; 20482 20483 // import a list of modules into the list 20484 list.i = function i(modules, media, dedupe, supports, layer) { 20485 if (typeof modules === "string") { 20486 modules = [[null, modules, undefined]]; 20487 } 20488 var alreadyImportedModules = {}; 20489 if (dedupe) { 20490 for (var k = 0; k < this.length; k++) { 20491 var id = this[k][0]; 20492 if (id != null) { 20493 alreadyImportedModules[id] = true; 20494 } 20495 } 20496 } 20497 for (var _k = 0; _k < modules.length; _k++) { 20498 var item = [].concat(modules[_k]); 20499 if (dedupe && alreadyImportedModules[item[0]]) { 20500 continue; 20501 } 20502 if (typeof layer !== "undefined") { 20503 if (typeof item[5] === "undefined") { 20504 item[5] = layer; 20505 } else { 20506 item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); 20507 item[5] = layer; 20508 } 20509 } 20510 if (media) { 20511 if (!item[2]) { 20512 item[2] = media; 20513 } else { 20514 item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); 20515 item[2] = media; 20516 } 20517 } 20518 if (supports) { 20519 if (!item[4]) { 20520 item[4] = "".concat(supports); 20521 } else { 20522 item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); 20523 item[4] = supports; 20524 } 20525 } 20526 list.push(item); 20527 } 20528 }; 20529 return list; 20530}; 20531 20532/***/ }), 20533 20534/***/ 9092: 20535/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20536 20537"use strict"; 20538/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20539/* harmony export */ F2: () => (/* binding */ SortData), 20540/* harmony export */ pC: () => (/* binding */ SortDataPair), 20541/* harmony export */ r3: () => (/* binding */ SortType) 20542/* harmony export */ }); 20543/* unused harmony export SearchSortModel */ 20544class SearchSortModel { 20545} 20546var SortType; 20547(function (SortType) { 20548 SortType[SortType["Year"] = 0] = "Year"; 20549 SortType[SortType["ProductName"] = 1] = "ProductName"; 20550 SortType[SortType["Price"] = 2] = "Price"; 20551 SortType[SortType["Model"] = 3] = "Model"; 20552 SortType[SortType["Trim"] = 4] = "Trim"; 20553 SortType[SortType["BodyStyle"] = 5] = "BodyStyle"; 20554 SortType[SortType["ExtColor"] = 6] = "ExtColor"; 20555 SortType[SortType["IntColor"] = 7] = "IntColor"; 20556 SortType[SortType["Make"] = 8] = "Make";
20557 SortType[SortType["Mileage"] = 9] = "Mileage"; 20558 SortType[SortType["Days"] = 10] = "Days"; 20559 SortType[SortType["Distance"] = 11] = "Distance"; 20560 SortType[SortType["Name"] = 12] = "Name"; 20561 SortType[SortType["CategoryName"] = 13] = "CategoryName"; 20562 SortType[SortType["SubcategoryName"] = 14] = "SubcategoryName"; 20563 SortType[SortType["Msrp"] = 15] = "Msrp"; 20564 SortType[SortType["Cost"] = 16] = "Cost"; 20565 SortType[SortType["Relevance"] = 17] = "Relevance"; 20566 SortType[SortType["Finance"] = 18] = "Finance"; 20567 SortType[SortType["Lease"] = 19] = "Lease"; 20568 SortType[SortType["Vin"] = 20] = "Vin"; 20569 SortType[SortType["LocalVehicles"] = 21] = "LocalVehicles"; 20570 SortType[SortType["SignalsForYou"] = 22] = "SignalsForYou"; 20571 SortType[SortType["Savings"] = 23] = "Savings"; 20572})(SortType || (SortType = {})); 20573class SortData { 20574 get DisplayableSortDataPair() { 20575 return this.OrdersItems.find(s => s.Field !== SortType.Distance) || this.OrdersItems[0]; 20576 } 20577 constructor(orders, showAsDefault, requestWithQueryString) { 20578 this.OrdersItems = orders; 20579 this.ShowAsDefault = showAsDefault; 20580 this.RequestWithQueryString = requestWithQueryString; 20581 } 20582} 20583class SortDataPair { 20584 constructor(field, descending) { 20585 this.Field = field; 20586 this.Descending = descending; 20587 } 20588} 20589 20590 20591/***/ }), 20592 20593/***/ 9185: 20594/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20595 20596"use strict"; 20597/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20598/* harmony export */ L: () => (/* binding */ doBeforeNextRepaint) 20599/* harmony export */ }); 20600/** 20601 * Do something before the browser recalculates styles. Use this for expensive operations to avoid long tasks blocking the main thread. 20602 * Examples of expensive operations: 20603 * - getBoundingClientRect() 20604 * - window.getComputedStyle() 20605 * @param callback The callback to execute before the next repaint 20606 * @returns A promise that resolves inside requestAnimationFrame() after the callback is executed 20607 */ 20608function doBeforeNextRepaint(callback) { 20609 return new Promise((resolve) => { 20610 requestAnimationFrame(() => { 20611 callback(); 20612 resolve(); 20613 }); 20614 }); 20615} 20616 20617 20618/***/ }), 20619 20620/***/ 9248: 20621/***/ ((module) => { 20622 20623"use strict"; 20624 20625 20626module.exports = function (i) { 20627 return i[1]; 20628}; 20629 20630/***/ }), 20631 20632/***/ 9523: 20633/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 20634 20635"use strict"; 20636 20637 20638Object.defineProperty(exports, "__esModule", ({ 20639 value: true 20640})); 20641exports.tagged = void 0; 20642var metadata_1 = __webpack_require__(8390); 20643var decorator_utils_1 = __webpack_require__(40); 20644function tagged(metadataKey, metadataValue) { 20645 return function (target, targetKey, index) { 20646 var metadata = new metadata_1.Metadata(metadataKey, metadataValue); 20647 if (typeof index === "number") { 20648 decorator_utils_1.tagParameter(target, targetKey, index, metadata); 20649 } else { 20650 decorator_utils_1.tagProperty(target, targetKey, metadata); 20651 } 20652 }; 20653} 20654exports.tagged = tagged; 20655 20656/***/ }), 20657 20658/***/ 9536: 20659/***/ ((module, __webpack_exports__, __webpack_require__) => { 20660 20661"use strict"; 20662__webpack_require__.r(__webpack_exports__); 20663/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20664/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 20665/* harmony export */ }); 20666/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 20667/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 20668/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 20669/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 20670// Imports 20671 20672 20673var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 20674// Module
20675___CSS_LOADER_EXPORT___.push([module.id, `.vehicle-specs[data-v-5a269b74]{display:contents}.vehicle-specs .vehicle-colors[data-v-5a269b74]{display:contents}.vehicle-specs .vehicle-colors__ext[data-v-5a269b74]{margin-left:auto}`, ""]); 20676// Exports 20677/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 20678 20679 20680/***/ }), 20681 20682/***/ 9592: 20683/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 20684 20685"use strict"; 20686 20687 20688var __spreadArrays = this && this.__spreadArrays || function () { 20689 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; 20690 for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; 20691 return r; 20692}; 20693Object.defineProperty(exports, "__esModule", ({ 20694 value: true 20695})); 20696exports.getFunctionName = exports.getBaseClassDependencyCount = exports.getDependencies = void 0; 20697var inject_1 = __webpack_require__(7442); 20698var ERROR_MSGS = __webpack_require__(7718); 20699var literal_types_1 = __webpack_require__(7802); 20700var METADATA_KEY = __webpack_require__(4725); 20701var serialization_1 = __webpack_require__(7911); 20702Object.defineProperty(exports, "getFunctionName", ({ 20703 enumerable: true, 20704 get: function () { 20705 return serialization_1.getFunctionName; 20706 } 20707})); 20708var target_1 = __webpack_require__(154); 20709function getDependencies(metadataReader, func) { 20710 var constructorName = serialization_1.getFunctionName(func); 20711 var targets = getTargets(metadataReader, constructorName, func, false); 20712 return targets; 20713} 20714exports.getDependencies = getDependencies; 20715function getTargets(metadataReader, constructorName, func, isBaseClass) { 20716 var metadata = metadataReader.getConstructorMetadata(func); 20717 var serviceIdentifiers = metadata.compilerGeneratedMetadata; 20718 if (serviceIdentifiers === undefined) { 20719 var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + " " + constructorName + "."; 20720 throw new Error(msg); 20721 } 20722 var constructorArgsMetadata = metadata.userGeneratedMetadata; 20723 var keys = Object.keys(constructorArgsMetadata); 20724 var hasUserDeclaredUnknownInjections = func.length === 0 && keys.length > 0; 20725 var iterations = hasUserDeclaredUnknownInjections ? keys.length : func.length; 20726 var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations); 20727 var propertyTargets = getClassPropsAsTargets(metadataReader, func); 20728 var targets = __spreadArrays(constructorTargets, propertyTargets); 20729 return targets; 20730} 20731function getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) { 20732 var targetMetadata = constructorArgsMetadata[index.toString()] || []; 20733 var metadata = formatTargetMetadata(targetMetadata); 20734 var isManaged = metadata.unmanaged !== true; 20735 var serviceIdentifier = serviceIdentifiers[index]; 20736 var injectIdentifier = metadata.inject || metadata.multiInject; 20737 serviceIdentifier = injectIdentifier ? injectIdentifier : serviceIdentifier; 20738 if (serviceIdentifier instanceof inject_1.LazyServiceIdentifer) { 20739 serviceIdentifier = serviceIdentifier.unwrap(); 20740 } 20741 if (isManaged) { 20742 var isObject = serviceIdentifier === Object; 20743 var isFunction = serviceIdentifier === Function; 20744 var isUndefined = serviceIdentifier === undefined; 20745 var isUnknownType = isObject || isFunction || isUndefined; 20746 if (!isBaseClass && isUnknownType) { 20747 var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + " argument " + index + " in class " + constructorName + "."; 20748 throw new Error(msg); 20749 } 20750 var target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier); 20751 target.metadata = targetMetadata; 20752 return target; 20753 } 20754 return null; 20755} 20756function getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) { 20757 var targets = []; 20758 for (var i = 0; i < iterations; i++) { 20759 var index = i; 20760 var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata); 20761 if (target !== null) { 20762 targets.push(target); 20763 } 20764 } 20765 return targets; 20766} 20767function getClassPropsAsTargets(metadataReader, constructorFunc) { 20768 var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc); 20769 var targets = []; 20770 var keys = Object.keys(classPropsMetadata); 20771 for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { 20772 var key = keys_1[_i]; 20773 var targetMetadata = classPropsMetadata[key]; 20774 var metadata = formatTargetMetadata(classPropsMetadata[key]); 20775 var targetName = metadata.targetName || key; 20776 var serviceIdentifier = metadata.inject || metadata.multiInject; 20777 var target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, targetName, serviceIdentifier); 20778 target.metadata = targetMetadata; 20779 targets.push(target); 20780 } 20781 var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor; 20782 if (baseConstructor !== Object) { 20783 var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor); 20784 targets = __spreadArrays(targets, baseTargets); 20785 } 20786 return targets; 20787} 20788function getBaseClassDependencyCount(metadataReader, func) { 20789 var baseConstructor = Object.getPrototypeOf(func.prototype).constructor; 20790 if (baseConstructor !== Object) { 20791 var baseConstructorName = serialization_1.getFunctionName(baseConstructor); 20792 var targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true); 20793 var metadata = targets.map(function (t) { 20794 return t.metadata.filter(function (m) { 20795 return m.key === METADATA_KEY.UNMANAGED_TAG; 20796 }); 20797 }); 20798 var unmanagedCount = [].concat.apply([], metadata).length; 20799 var dependencyCount = targets.length - unmanagedCount; 20800 if (dependencyCount > 0) {
20801 return dependencyCount; 20802 } else { 20803 return getBaseClassDependencyCount(metadataReader, baseConstructor); 20804 } 20805 } else { 20806 return 0; 20807 } 20808} 20809exports.getBaseClassDependencyCount = getBaseClassDependencyCount; 20810function formatTargetMetadata(targetMetadata) { 20811 var targetMetadataMap = {}; 20812 targetMetadata.forEach(function (m) { 20813 targetMetadataMap[m.key.toString()] = m.value; 20814 }); 20815 return { 20816 inject: targetMetadataMap[METADATA_KEY.INJECT_TAG], 20817 multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG], 20818 targetName: targetMetadataMap[METADATA_KEY.NAME_TAG], 20819 unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG] 20820 }; 20821} 20822 20823/***/ }), 20824 20825/***/ 9600: 20826/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20827 20828"use strict"; 20829/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20830/* harmony export */ A: () => (/* binding */ CosmosSrpCustomEvents) 20831/* harmony export */ }); 20832var CosmosSrpCustomEvents; 20833(function (CosmosSrpCustomEvents) { 20834 CosmosSrpCustomEvents["FilterLoadStart"] = "do.filterloadstart"; 20835 CosmosSrpCustomEvents["FilterLoadEnd"] = "do.filterloadend"; 20836 CosmosSrpCustomEvents["VehicleLoadStart"] = "do.vehicleloadstart"; 20837 CosmosSrpCustomEvents["VehicleLoadEnd"] = "do.vehicleloadend"; 20838 CosmosSrpCustomEvents["VehicleCompareCheckboxChange"] = "do.vehiclecomparecheckboxchange"; 20839 CosmosSrpCustomEvents["VehicleCompareButtonClick"] = "do.vehiclecomparebuttonclick"; 20840 CosmosSrpCustomEvents["VehicleCompareCheckboxToggle"] = "do.vehiclecomparecheckboxtoggle"; 20841 CosmosSrpCustomEvents["VehicleCompareButtonDisplay"] = "do.vehiclecomparebuttondisplay"; 20842 CosmosSrpCustomEvents["VehicleCompareCountRequest"] = "do.vehiclecomparerequestcount"; 20843 CosmosSrpCustomEvents["VehicleCompareCountResponse"] = "do.vehiclecompareresponsecount"; 20844 CosmosSrpCustomEvents["SearchValetCleared"] = "do.searchvaletcleared"; 20845 CosmosSrpCustomEvents["RemoveFilterPill"] = "do.removeFilterPill"; 20846 CosmosSrpCustomEvents["SwitchPricingTab"] = "do.switchPricingTab"; 20847 CosmosSrpCustomEvents["VehicleCardLoaded"] = "do.vehiclecardloaded";
20848 CosmosSrpCustomEvents["VehicleDeckLoaded"] = "do.vehicledeckloaded"; 20849 CosmosSrpCustomEvents["VehicleSearchEnd"] = "do.vehiclesearchend"; 20850 CosmosSrpCustomEvents["ClearFilters"] = "do.clearFilters"; 20851 CosmosSrpCustomEvents["UpdateFilterState"] = "do.updateFilterState"; 20852 CosmosSrpCustomEvents["MobileFilterPanelOpened"] = "do.mobileFilterPanelOpened"; 20853 CosmosSrpCustomEvents["PricingVisibilityAdjusted"] = "do.pricingVisibilityAdjusted"; 20854})(CosmosSrpCustomEvents || (CosmosSrpCustomEvents = {})); 20855 20856 20857/***/ }), 20858 20859/***/ 9638: 20860/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 20861 20862"use strict"; 20863 20864 20865var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { 20866 function adopt(value) { 20867 return value instanceof P ? value : new P(function (resolve) { 20868 resolve(value); 20869 }); 20870 } 20871 return new (P || (P = Promise))(function (resolve, reject) { 20872 function fulfilled(value) { 20873 try { 20874 step(generator.next(value)); 20875 } catch (e) { 20876 reject(e); 20877 } 20878 } 20879 function rejected(value) { 20880 try { 20881 step(generator["throw"](value)); 20882 } catch (e) { 20883 reject(e); 20884 } 20885 } 20886 function step(result) { 20887 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 20888 } 20889 step((generator = generator.apply(thisArg, _arguments || [])).next()); 20890 }); 20891}; 20892var __generator = this && this.__generator || function (thisArg, body) { 20893 var _ = { 20894 label: 0, 20895 sent: function () { 20896 if (t[0] & 1) throw t[1]; 20897 return t[1]; 20898 }, 20899 trys: [], 20900 ops: [] 20901 }, 20902 f, 20903 y, 20904 t, 20905 g; 20906 return g = { 20907 next: verb(0), 20908 "throw": verb(1), 20909 "return": verb(2) 20910 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 20911 return this; 20912 }), g; 20913 function verb(n) { 20914 return function (v) { 20915 return step([n, v]); 20916 }; 20917 } 20918 function step(op) { 20919 if (f) throw new TypeError("Generator is already executing."); 20920 while (_) try { 20921 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 20922 if (y = 0, t) op = [op[0] & 2, t.value]; 20923 switch (op[0]) { 20924 case 0: 20925 case 1: 20926 t = op; 20927 break; 20928 case 4: 20929 _.label++; 20930 return { 20931 value: op[1], 20932 done: false 20933 }; 20934 case 5: 20935 _.label++; 20936 y = op[1]; 20937 op = [0]; 20938 continue; 20939 case 7: 20940 op = _.ops.pop(); 20941 _.trys.pop(); 20942 continue; 20943 default: 20944 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 20945 _ = 0; 20946 continue; 20947 } 20948 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 20949 _.label = op[1]; 20950 break; 20951 } 20952 if (op[0] === 6 && _.label < t[1]) { 20953 _.label = t[1]; 20954 t = op; 20955 break; 20956 } 20957 if (t && _.label < t[2]) { 20958 _.label = t[2]; 20959 _.ops.push(op); 20960 break; 20961 } 20962 if (t[2]) _.ops.pop(); 20963 _.trys.pop(); 20964 continue; 20965 } 20966 op = body.call(thisArg, _); 20967 } catch (e) { 20968 op = [6, e]; 20969 y = 0; 20970 } finally { 20971 f = t = 0; 20972 } 20973 if (op[0] & 5) throw op[1]; 20974 return { 20975 value: op[0] ? op[1] : void 0, 20976 done: true 20977 }; 20978 } 20979}; 20980Object.defineProperty(exports, "__esModule", ({ 20981 value: true 20982})); 20983exports.Container = void 0; 20984var binding_1 = __webpack_require__(8677); 20985var ERROR_MSGS = __webpack_require__(7718); 20986var literal_types_1 = __webpack_require__(7802); 20987var METADATA_KEY = __webpack_require__(4725); 20988var metadata_reader_1 = __webpack_require__(5426); 20989var planner_1 = __webpack_require__(4387); 20990var resolver_1 = __webpack_require__(8156); 20991var binding_to_syntax_1 = __webpack_require__(6566); 20992var id_1 = __webpack_require__(8418); 20993var serialization_1 = __webpack_require__(7911); 20994var container_snapshot_1 = __webpack_require__(7549); 20995var lookup_1 = __webpack_require__(6983); 20996var Container = function () { 20997 function Container(containerOptions) { 20998 var options = containerOptions || {}; 20999 if (typeof options !== "object") {
21000 throw new Error("" + ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT); 21001 } 21002 if (options.defaultScope === undefined) { 21003 options.defaultScope = literal_types_1.BindingScopeEnum.Transient; 21004 } else if (options.defaultScope !== literal_types_1.BindingScopeEnum.Singleton && options.defaultScope !== literal_types_1.BindingScopeEnum.Transient && options.defaultScope !== literal_types_1.BindingScopeEnum.Request) { 21005 throw new Error("" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE); 21006 } 21007 if (options.autoBindInjectable === undefined) { 21008 options.autoBindInjectable = false; 21009 } else if (typeof options.autoBindInjectable !== "boolean") { 21010 throw new Error("" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE); 21011 } 21012 if (options.skipBaseClassChecks === undefined) { 21013 options.skipBaseClassChecks = false; 21014 } else if (typeof options.skipBaseClassChecks !== "boolean") { 21015 throw new Error("" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK); 21016 } 21017 this.options = { 21018 autoBindInjectable: options.autoBindInjectable, 21019 defaultScope: options.defaultScope, 21020 skipBaseClassChecks: options.skipBaseClassChecks 21021 }; 21022 this.id = id_1.id(); 21023 this._bindingDictionary = new lookup_1.Lookup(); 21024 this._snapshots = []; 21025 this._middleware = null; 21026 this.parent = null; 21027 this._metadataReader = new metadata_reader_1.MetadataReader(); 21028 } 21029 Container.merge = function (container1, container2) { 21030 var container = new Container(); 21031 var bindingDictionary = planner_1.getBindingDictionary(container); 21032 var bindingDictionary1 = planner_1.getBindingDictionary(container1); 21033 var bindingDictionary2 = planner_1.getBindingDictionary(container2); 21034 function copyDictionary(origin, destination) { 21035 origin.traverse(function (key, value) { 21036 value.forEach(function (binding) { 21037 destination.add(binding.serviceIdentifier, binding.clone()); 21038 }); 21039 }); 21040 } 21041 copyDictionary(bindingDictionary1, bindingDictionary); 21042 copyDictionary(bindingDictionary2, bindingDictionary); 21043 return container; 21044 }; 21045 Container.prototype.load = function () { 21046 var modules = []; 21047 for (var _i = 0; _i < arguments.length; _i++) { 21048 modules[_i] = arguments[_i]; 21049 } 21050 var getHelpers = this._getContainerModuleHelpersFactory(); 21051 for (var _a = 0, modules_1 = modules; _a < modules_1.length; _a++) { 21052 var currentModule = modules_1[_a]; 21053 var containerModuleHelpers = getHelpers(currentModule.id); 21054 currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction); 21055 } 21056 }; 21057 Container.prototype.loadAsync = function () { 21058 var modules = []; 21059 for (var _i = 0; _i < arguments.length; _i++) { 21060 modules[_i] = arguments[_i]; 21061 } 21062 return __awaiter(this, void 0, void 0, function () { 21063 var getHelpers, _a, modules_2, currentModule, containerModuleHelpers; 21064 return __generator(this, function (_b) { 21065 switch (_b.label) { 21066 case 0: 21067 getHelpers = this._getContainerModuleHelpersFactory(); 21068 _a = 0, modules_2 = modules; 21069 _b.label = 1; 21070 case 1: 21071 if (!(_a < modules_2.length)) return [3, 4]; 21072 currentModule = modules_2[_a]; 21073 containerModuleHelpers = getHelpers(currentModule.id); 21074 return [4, currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction)]; 21075 case 2: 21076 _b.sent(); 21077 _b.label = 3; 21078 case 3: 21079 _a++; 21080 return [3, 1]; 21081 case 4: 21082 return [2]; 21083 } 21084 }); 21085 }); 21086 }; 21087 Container.prototype.unload = function () { 21088 var _this = this; 21089 var modules = []; 21090 for (var _i = 0; _i < arguments.length; _i++) { 21091 modules[_i] = arguments[_i]; 21092 } 21093 var conditionFactory = function (expected) { 21094 return function (item) { 21095 return item.moduleId === expected; 21096 }; 21097 };
21098 modules.forEach(function (module) { 21099 var condition = conditionFactory(module.id); 21100 _this._bindingDictionary.removeByCondition(condition); 21101 }); 21102 }; 21103 Container.prototype.bind = function (serviceIdentifier) { 21104 var scope = this.options.defaultScope || literal_types_1.BindingScopeEnum.Transient; 21105 var binding = new binding_1.Binding(serviceIdentifier, scope); 21106 this._bindingDictionary.add(serviceIdentifier, binding); 21107 return new binding_to_syntax_1.BindingToSyntax(binding); 21108 }; 21109 Container.prototype.rebind = function (serviceIdentifier) { 21110 this.unbind(serviceIdentifier); 21111 return this.bind(serviceIdentifier); 21112 }; 21113 Container.prototype.unbind = function (serviceIdentifier) { 21114 try { 21115 this._bindingDictionary.remove(serviceIdentifier); 21116 } catch (e) { 21117 throw new Error(ERROR_MSGS.CANNOT_UNBIND + " " + serialization_1.getServiceIdentifierAsString(serviceIdentifier)); 21118 } 21119 }; 21120 Container.prototype.unbindAll = function () { 21121 this._bindingDictionary = new lookup_1.Lookup(); 21122 }; 21123 Container.prototype.isBound = function (serviceIdentifier) { 21124 var bound = this._bindingDictionary.hasKey(serviceIdentifier); 21125 if (!bound && this.parent) { 21126 bound = this.parent.isBound(serviceIdentifier); 21127 } 21128 return bound; 21129 }; 21130 Container.prototype.isBoundNamed = function (serviceIdentifier, named) { 21131 return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named); 21132 }; 21133 Container.prototype.isBoundTagged = function (serviceIdentifier, key, value) { 21134 var bound = false; 21135 if (this._bindingDictionary.hasKey(serviceIdentifier)) { 21136 var bindings = this._bindingDictionary.get(serviceIdentifier); 21137 var request_1 = planner_1.createMockRequest(this, serviceIdentifier, key, value); 21138 bound = bindings.some(function (b) { 21139 return b.constraint(request_1); 21140 }); 21141 } 21142 if (!bound && this.parent) { 21143 bound = this.parent.isBoundTagged(serviceIdentifier, key, value); 21144 } 21145 return bound; 21146 }; 21147 Container.prototype.snapshot = function () { 21148 this._snapshots.push(container_snapshot_1.ContainerSnapshot.of(this._bindingDictionary.clone(), this._middleware)); 21149 }; 21150 Container.prototype.restore = function () { 21151 var snapshot = this._snapshots.pop(); 21152 if (snapshot === undefined) { 21153 throw new Error(ERROR_MSGS.NO_MORE_SNAPSHOTS_AVAILABLE); 21154 } 21155 this._bindingDictionary = snapshot.bindings; 21156 this._middleware = snapshot.middleware; 21157 }; 21158 Container.prototype.createChild = function (containerOptions) { 21159 var child = new Container(containerOptions || this.options); 21160 child.parent = this; 21161 return child; 21162 }; 21163 Container.prototype.applyMiddleware = function () { 21164 var middlewares = []; 21165 for (var _i = 0; _i < arguments.length; _i++) { 21166 middlewares[_i] = arguments[_i]; 21167 } 21168 var initial = this._middleware ? this._middleware : this._planAndResolve(); 21169 this._middleware = middlewares.reduce(function (prev, curr) { 21170 return curr(prev); 21171 }, initial); 21172 }; 21173 Container.prototype.applyCustomMetadataReader = function (metadataReader) { 21174 this._metadataReader = metadataReader; 21175 }; 21176 Container.prototype.get = function (serviceIdentifier) { 21177 return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier); 21178 }; 21179 Container.prototype.getTagged = function (serviceIdentifier, key, value) { 21180 return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value); 21181 }; 21182 Container.prototype.getNamed = function (serviceIdentifier, named) { 21183 return this.getTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named); 21184 }; 21185 Container.prototype.getAll = function (serviceIdentifier) { 21186 return this._get(true, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier); 21187 }; 21188 Container.prototype.getAllTagged = function (serviceIdentifier, key, value) { 21189 return this._get(false, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value); 21190 }; 21191 Container.prototype.getAllNamed = function (serviceIdentifier, named) { 21192 return this.getAllTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named); 21193 }; 21194 Container.prototype.resolve = function (constructorFunction) { 21195 var tempContainer = this.createChild(); 21196 tempContainer.bind(constructorFunction).toSelf(); 21197 return tempContainer.get(constructorFunction); 21198 }; 21199 Container.prototype._getContainerModuleHelpersFactory = function () { 21200 var _this = this; 21201 var setModuleId = function (bindingToSyntax, moduleId) { 21202 bindingToSyntax._binding.moduleId = moduleId; 21203 }; 21204 var getBindFunction = function (moduleId) { 21205 return function (serviceIdentifier) { 21206 var _bind = _this.bind.bind(_this); 21207 var bindingToSyntax = _bind(serviceIdentifier); 21208 setModuleId(bindingToSyntax, moduleId); 21209 return bindingToSyntax; 21210 }; 21211 }; 21212 var getUnbindFunction = function (moduleId) { 21213 return function (serviceIdentifier) { 21214 var _unbind = _this.unbind.bind(_this); 21215 _unbind(serviceIdentifier); 21216 }; 21217 }; 21218 var getIsboundFunction = function (moduleId) { 21219 return function (serviceIdentifier) { 21220 var _isBound = _this.isBound.bind(_this); 21221 return _isBound(serviceIdentifier); 21222 }; 21223 }; 21224 var getRebindFunction = function (moduleId) { 21225 return function (serviceIdentifier) { 21226 var _rebind = _this.rebind.bind(_this); 21227 var bindingToSyntax = _rebind(serviceIdentifier); 21228 setModuleId(bindingToSyntax, moduleId); 21229 return bindingToSyntax; 21230 }; 21231 }; 21232 return function (mId) { 21233 return { 21234 bindFunction: getBindFunction(mId), 21235 isboundFunction: getIsboundFunction(mId), 21236 rebindFunction: getRebindFunction(mId), 21237 unbindFunction: getUnbindFunction(mId) 21238 }; 21239 }; 21240 }; 21241 Container.prototype._get = function (avoidConstraints, isMultiInject, targetType, serviceIdentifier, key, value) { 21242 var result = null; 21243 var defaultArgs = { 21244 avoidConstraints: avoidConstraints, 21245 contextInterceptor: function (context) { 21246 return context; 21247 }, 21248 isMultiInject: isMultiInject, 21249 key: key, 21250 serviceIdentifier: serviceIdentifier, 21251 targetType: targetType, 21252 value: value 21253 }; 21254 if (this._middleware) { 21255 result = this._middleware(defaultArgs); 21256 if (result === undefined || result === null) { 21257 throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN); 21258 } 21259 } else { 21260 result = this._planAndResolve()(defaultArgs); 21261 } 21262 return result; 21263 }; 21264 Container.prototype._planAndResolve = function () { 21265 var _this = this; 21266 return function (args) { 21267 var context = planner_1.plan(_this._metadataReader, _this, args.isMultiInject, args.targetType, args.serviceIdentifier, args.key, args.value, args.avoidConstraints); 21268 context = args.contextInterceptor(context); 21269 var result = resolver_1.resolve(context); 21270 return result; 21271 }; 21272 }; 21273 return Container; 21274}(); 21275exports.Container = Container; 21276 21277/***/ }), 21278 21279/***/ 9673: 21280/***/ ((module, __webpack_exports__, __webpack_require__) => { 21281 21282"use strict"; 21283__webpack_require__.r(__webpack_exports__); 21284/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21285/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 21286/* harmony export */ }); 21287/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 21288/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 21289/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 21290/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 21291// Imports 21292 21293 21294var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 21295// Module
21296___CSS_LOADER_EXPORT___.push([module.id, `.rv-detail[data-v-8a43e908]{display:flex;align-items:center;column-gap:.5rem}.rv-detail__label[data-v-8a43e908]{font-size:1.2rem;line-height:1.2}.rv-detail-icon[data-v-8a43e908]{display:grid;grid-template-areas:"icon";grid-template-columns:1fr;grid-template-rows:1fr}.rv-detail-icon__image[data-v-8a43e908]{grid-area:icon}.rv-detail-icon[data-v-8a43e908]::after{content:"";display:block;background-color:#707070;grid-area:icon;mask-repeat:no-repeat;mask-position:top center;mask-size:contain;mask-image:var(--img-url)}.rv-detail-icon__image[data-v-8a43e908]{width:2rem;height:auto}.rv-detail--features[data-v-8a43e908] .rv-detail__label{display:-webkit-inline-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;text-overflow:ellipsis}`, ""]); 21297// Exports 21298/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 21299 21300 21301/***/ }), 21302 21303/***/ 9703: 21304/***/ ((module, __webpack_exports__, __webpack_require__) => { 21305 21306"use strict"; 21307__webpack_require__.r(__webpack_exports__); 21308/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21309/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 21310/* harmony export */ }); 21311/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9248); 21312/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); 21313/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9089); 21314/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); 21315// Imports 21316 21317 21318var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); 21319// Module 21320___CSS_LOADER_EXPORT___.push([module.id, `.vehicle-compare-button-container{display:flex;flex-wrap:wrap;align-items:center;white-space:nowrap;font-size:1.6rem;border-top:2px solid #f4f5f7;padding:8px 20px;width:inherit}.vehicle-compare-button-container .vehicle-compare-button-container--left{flex:auto}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left.custom-checkbox input[type=checkbox]{display:none}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left.custom-checkbox input[type=checkbox]:checked+.checkbox::before{font-family:"FontAwesome";font-size:14px;content:"ï";color:#fff;background-color:var(--cta-background-color);font-weight:normal;border-color:var(--cta-background-color)}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left.custom-checkbox input[type=checkbox]:disabled+.checkbox::before{cursor:not-allowed}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left.custom-checkbox .checkbox{margin:0px;color:#5c5c5c;display:flex;padding-left:0;line-height:1}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left.custom-checkbox .checkbox:hover::before{cursor:pointer}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left.custom-checkbox .checkbox::before{border-width:1px;border-style:solid;border-color:#dcdce2;border-radius:6px;background-color:#fff;content:"";width:20px;height:20px;padding:2px;flex:0 0 auto;margin-right:13px}.vehicle-compare-button-container .vehicle-compare-button-container--left .vehicle-compare-checkbox{width:1.1em;height:1.1em;margin:0;position:relative;top:.05em}.vehicle-compare-button-container .vehicle-compare-button-container--left .vehicle-compare-checkbox__label{letter-spacing:0;color:#122532;display:inline-block;font-weight:inherit;margin:0;align-items:center}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--left .vehicle-compare-checkbox__label{margin:0 0 0 1.1em}.vehicle-compare-button-container .vehicle-compare-button-container--left .vehicle-compare-checkbox__label.checkbox{padding:0}#content-main-inventory .vehicle-compare-button-container .vehicle-compare-button-container--right{padding:0 0 0 1.5em}.wasabi_srp .vehicle-compare-button-container .vehicle-compare-button-container--right{padding:0 0 0 2.2em}.vehicle-compare-button-container .vehicle-compare-button-container--right .vehicle-compare-button{letter-spacing:0;font-size:inherit;padding:0;text-transform:none;flex-grow:2;border:0;cursor:pointer}.vehicle-compare-button-container .vehicle-compare-button-container--right .vehicle-compare-button__label{letter-spacing:0;color:#122532}.vehicle-compare-button-container .vehicle-compare-button-container--right .vehicle-compare-button__label{margin:0;font-weight:inherit;font-style:italic}.list-view{position:relative}.list-view .vehicle-card--mod .vehicle-compare-button-container{border-top:none;padding:15px 20px}.grid-view .vehicle-card--mod .vehicle-compare-button-container{border-top:none;padding:15px 20px}.vehicle-card .vehicle-compare-button-container--right .vehicle-compare-button{color:var(--cta-background-color)}.compare-table{height:100%;position:relative;display:flex;flex-direction:column}
21320.compare-table,.compare-table__body--details{overflow:auto;-ms-overflow-style:none;scrollbar-width:none}.compare-table::-webkit-scrollbar,.compare-table__body--details::-webkit-scrollbar{display:none}.compare-table__row{display:flex;column-gap:.29em}@media(min-width: 834px){.compare-table__row{column-gap:.79em}}@media(min-width: 1920px){.compare-table__row{column-gap:2.14em}}.compare-table__row--body:not(:first-of-type) .cell-contents--details{border-top:2px solid #dcdce2}.compare-table__cell{width:100%;min-width:180px}.compare-table__cell--details{font-size:.95em}.compare-table__loading{font-weight:400}.compare-table .cell-contents{height:100%}.compare-table .cell-contents--details{background:#f4f5f7}.compare-table .cell-contents__empty{height:100%;display:flex;align-items:center;justify-content:center;text-align:center}.compare-table .cell-contents__empty-text{font-size:16px;color:#a5a5a5}.compare-table .header-cell{position:relative;border:2px solid #f4f5f7;border-bottom:none}.compare-table .header-cell__close{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;position:absolute;right:.36em;top:.36em;z-index:50}.compare-table .header-cell__close-icon{color:#a5a5a5}.compare-table .header-cell__image{display:block;max-width:100%;aspect-ratio:4/3;object-fit:contain;object-position:top}.compare-table .header-cell__vehicle-title{padding:.8em 1.45em;display:block}.compare-table .header-cell .vehicle-title{margin:0;line-height:.5em;color:#333}.compare-table .header-cell .vehicle-title__text{flex:0 1 auto;font-size:.55em}.compare-table .header-cell .vehicle-title__year,.compare-table .header-cell .vehicle-title__make-model{font-weight:900;padding-right:5px}.compare-table .header-cell .vehicle-title__year{color:#a5a5a5}.compare-table .header-cell .vehicle-title__trim{flex:1 1 auto;font-size:.45em}.compare-table .price-cell{padding:0 1.45em .8em 1.45em;color:#000;border-right:2px solid #f4f5f7;border-left:2px solid #f4f5f7;border-bottom:2px solid #dcdce2}.compare-table .price-cell__amount{font-weight:bold;font-size:1.14em;margin:0}.compare-table .price-cell__label{font-size:.93em;margin:0}.compare-table .specs-cell{padding:.85em 1.45em}.compare-table .specs-data{height:100%}.compare-table .highlights-cell{padding:.8em 1.45em}.compare-table .highlights-cell__list{-webkit-padding-start:0;padding-inline-start:0}.compare-table .highlights-cell__item{display:flex;align-items:center;margin:0;padding:.4em 0}.compare-table .highlights-cell__icon{margin-right:.5em;min-width:24px;flex-basis:24px;opacity:.2}.compare-table .highlights-cell__expand{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial}.compare-table .comments-cell{padding:1.25em 1.45em}.compare-table .comments-cell__text{line-height:1.35em;margin-bottom:.71em}.compare-table .comments-cell__text:not(.comments-cell__text--expanded){max-height:6.7em;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:4;-webkit-box-orient:vertical;display:block;white-space:nowrap;display:-webkit-box;white-space:unset}@media(min-width: 834px){.compare-table .comments-cell__text:not(.comments-cell__text--expanded){-webkit-line-clamp:3;max-height:5.4em}}.compare-table .comments-cell__expand{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial}.compare-table .comments-cell__vdp-button-container{margin-top:1.65em}.compare-table .comments-cell__vdp-button{border-radius:5px;width:100%;padding-top:.75em;padding-bottom:.75em;font-size:1em;text-transform:none}.specs__list{display:flex;flex-direction:column;list-style:none;padding-inline-start:0;margin:0}.specs__item{display:flex}.specs__value{font-weight:700;display:-webkit-inline-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;text-overflow:ellipsis}.specs__value,.specs__color-label{margin-top:2px}.specs__icon{margin-right:.5em}.specs__color-icon{border:1px solid #999;border-radius:5px;display:block}.specs__list{row-gap:13px}.specs__icon{min-width:24px;flex-basis:24px}.specs__color-icon{margin:.15em 9px .15em 1px;padding:9px}body::-webkit-scrollbar .vehicle-compare-container{display:none}.vehicle-compare-container{display:grid;grid-template-rows:minmax(auto, 85px) auto;height:100%;width:100%;position:fixed;top:0;left:0;z-index:99999 !important;background:#fff;-ms-overflow-style:none;scrollbar-width:none}.vehicle-compare-container::-webkit-scrollbar{display:none}@media(min-width: 834px){.vehicle-compare-container[data-has-vehicles=false]{background:#f4f5f7}}.vehicle-compare-container header{color:unset}.vehicle-compare-container .header{display:grid;grid-template-columns:1fr auto;grid-template-rows:1fr auto;grid-template-areas:"title close" "clear share";height:85px;align-content:flex-end;background-color:#f4f5f7;padding:0 .71em .71em 1.07em;width:100vw;max-width:1450px}@media(min-width: 834px){.vehicle-compare-container .header{grid-template-rows:1fr;grid-template-columns:1fr repeat(2, auto);grid-template-areas:". . close" "title clear share";align-items:flex-end;column-gap:2.86em;height:109px;padding:0 2.86em .71em}}@media(min-width: 1025px){.vehicle-compare-container .header{margin-right:auto;margin-left:auto}}.vehicle-compare-container .header__title{grid-area:title;font-size:1.5em;font-weight:bold;padding:1.13em 0 0;text-transform:none;margin:0}@media(min-width: 834px){.vehicle-compare-container .header__title{font-size:2.3em;padding-bottom:0}}@media(min-width: 834px){.vehicle-compare-container .header__actions{display:flex;justify-content:flex-end;align-self:end;align-items:center}}.vehicle-compare-container .header__actions-close{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;cursor:pointer;padding:1.07em .79em;color:#122532}@media(min-width: 834px){.vehicle-compare-container .header__actions-close{display:inline-block;padding:0;font-size:1.2em;line-height:1}}.vehicle-compare-container .header__actions-close-icon{font-size:1.6em}.vehicle-compare-container .header__actions-share{grid-area:share;border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;cursor:pointer;z-index:100}@media(min-width: 834px){.vehicle-compare-container .header__actions-share{font-size:1.2em}}.vehicle-compare-container .header__actions-clear{grid-area:clear;border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;background:rgba(0,0,0,0);border:none;padding-bottom:8px;font-size:1.2em;text-align:left;cursor:pointer}@media(min-width: 834px){.vehicle-compare-container .header__actions-clear{font-size:1.2em}}.vehicle-compare-container .header__container-close{grid-area:close;display:flex;flex-direction:column;align-items:flex-end;justify-content:center}.vehicle-compare-container .vehicle-compare__main{display:grid;grid-template-columns:auto auto 1fr;width:100%;max-width:1450px;margin:0 auto;-ms-overflow-style:none;scrollbar-width:none}.vehicle-compare-container .vehicle-compare__main::-webkit-scrollbar{display:none}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__main{padding:1.43em 2.9em}}.vehicle-compare-container .vehicle-compare__main--no-vehicles{justify-items:center;grid-template-columns:1fr}.vehicle-compare-container .vehicle-compare__main,.vehicle-compare-container .vehicle-compare__table{overflow:auto;height:100%}.vehicle-compare-container .vehicle-compare__table{min-width:fit-content}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__table{max-width:calc(1450px
21320- 2.9em*2)}}.vehicle-compare-container .vehicle-compare__table--1-col{width:calc(calc(calc(100vw - 2.9em * 2) / 5)*1);min-width:calc(180px*1 + 0.29em*(1 - 1))}@media(min-width: 1450px){.vehicle-compare-container .vehicle-compare__table--1-col{width:calc(calc(calc(1450px - 2.9em * 2) / 5)*1)}}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__table--1-col{min-width:calc(180px*1 + 0.79em*(1 - 1))}}@media(min-width: 1920px){.vehicle-compare-container .vehicle-compare__table--1-col{min-width:calc(180px*1 + 2.14em*(1 - 1))}}.vehicle-compare-container .vehicle-compare__table--2-col{width:calc(calc(calc(100vw - 2.9em * 2) / 5)*2);min-width:calc(180px*2 + 0.29em*(2 - 1))}@media(min-width: 1450px){.vehicle-compare-container .vehicle-compare__table--2-col{width:calc(calc(calc(1450px - 2.9em * 2) / 5)*2)}}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__table--2-col{min-width:calc(180px*2 + 0.79em*(2 - 1))}}@media(min-width: 1920px){.vehicle-compare-container .vehicle-compare__table--2-col{min-width:calc(180px*2 + 2.14em*(2 - 1))}}.vehicle-compare-container .vehicle-compare__table--3-col{width:calc(calc(calc(100vw - 2.9em * 2) / 5)*3);min-width:calc(180px*3 + 0.29em*(3 - 1))}@media(min-width: 1450px){.vehicle-compare-container .vehicle-compare__table--3-col{width:calc(calc(calc(1450px - 2.9em * 2) / 5)*3)}}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__table--3-col{min-width:calc(180px*3 + 0.79em*(3 - 1))}}@media(min-width: 1920px){.vehicle-compare-container .vehicle-compare__table--3-col{min-width:calc(180px*3 + 2.14em*(3 - 1))}}.vehicle-compare-container .vehicle-compare__table--4-col{width:calc(calc(calc(100vw - 2.9em * 2) / 5)*4);min-width:calc(180px*4 + 0.29em*(4 - 1))}@media(min-width: 1450px){.vehicle-compare-container .vehicle-compare__table--4-col{width:calc(calc(calc(1450px - 2.9em * 2) / 5)*4)}}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__table--4-col{min-width:calc(180px*4 + 0.79em*(4 - 1))}}@media(min-width: 1920px){.vehicle-compare-container .vehicle-compare__table--4-col{min-width:calc(180px*4 + 2.14em*(4 - 1))}}.vehicle-compare-container .vehicle-compare__table--5-col{width:calc(calc(calc(100vw - 2.9em * 2) / 5)*5);min-width:calc(180px*5 + 0.29em*(5 - 1))}@media(min-width: 1450px){.vehicle-compare-container .vehicle-compare__table--5-col{width:calc(calc(calc(1450px - 2.9em * 2) / 5)*5)}}@media(min-width: 834px){.vehicle-compare-container .vehicle-compare__table--5-col{min-width:calc(180px*5 + 0.79em*(5 - 1))}}@media(min-width: 1920px){.vehicle-compare-container .vehicle-compare__table--5-col{min-width:calc(180px*5 + 2.14em*(5 - 1))}}.vehicle-compare-container .vehicle-compare__add-vehicles{min-width:180px;width:calc(calc(calc(100vw - 2.9em * 2) / 5)*1)}@media(min-width: 1450px){.vehicle-compare-container .vehicle-compare__add-vehicles{width:calc(calc(calc(1450px - 2.9em * 2) / 5)*1)}}.vehicle-compare-container .add-vehicles{padding:5.14em 1.43em 0}.vehicle-compare-container .add-vehicles__label{font-size:1.15em;color:#a5a5a5;text-align:center;margin-bottom:2.14em}.vehicle-compare-container .add-vehicles__back-button{display:block;margin:0 auto;font-size:13px;min-height:40px}.vehicle-compare-container .scrolling-controls{display:none}.vehicle-compare-container .scrolling-controls .scrolling-control__btn{z-index:10;position:fixed;top:275px;height:140px;width:4.5em;background-color:#333;border:none;color:#fff;cursor:pointer;opacity:.5}.vehicle-compare-container .scrolling-controls .scrolling-control__btn i{pointer-events:none;font-size:2.5em}.vehicle-compare-container .scrolling-controls .scrolling-control--previous .scrolling-control__btn--previous{border-radius:0 14px 14px 0;left:0}.vehicle-compare-container .scrolling-controls .scrolling-control--next .scrolling-control__btn--next{border-radius:14px 0 0 14px;right:0}@media(min-width: 834px){.vehicle-compare-container .scrolling-controls{display:flex}}@media(min-width: 1025px){.vehicle-compare-container .scrolling-controls{display:none}}@media(min-width: 834px){.vehicle-compare-container{background:#fff;grid-template-rows:minmax(auto, 109px) auto}}.specialTags{display:block;font-size:18px;border:none;z-index:2}.specialTags--bottom{position:absolute;top:0;padding:4px 0;text-align:center;width:30px;height:38px;clip-path:path("M 0 0 h 30 v 38 l -15 -8 l -15 8 z")}.specialTags--right{padding:4px 6px;width:40px;height:32px;clip-path:path("M 0 0 h 40 l -9 16 l 9 16 h -40 z")}.specialTags .fa-long-arrow-down{margin-left:3px}.missing-image{display:grid;grid-template-rows:1fr 47% 1fr;grid-template-areas:"." "title" "subtitle";align-items:center;justify-content:center;color:#333;text-align:center;padding:0 10px;pointer-events:none}.missing-image__title{grid-area:title}.missing-image__subtitle{grid-area:subtitle}.missing-image__title,.missing-image__subtitle{margin:0;text-transform:none;font-weight:bold}.missing-image__title{font-size:2em;max-width:27rem;line-height:1.1}.missing-image__subtitle{font-size:1.07em}.vehicle-card--mod .vehicle-image{position:relative;display:grid;grid-template-columns:[image-start] 20px [price-drop-start] auto [price-drop-end] 2px [special-start] auto [special-end] 1fr [save-start] auto [save-end] 18px [image-end];grid-template-rows:[image-start overlays-start] auto [overlays-end] 1fr [image-end]}.vehicle-card--mod .vehicle-image .special-flag{position:static}.vehicle-card--mod .vehicle-image .special-flag--price-drop{grid-column:price-drop;grid-row:overlays}.vehicle-card--mod .vehicle-image .special-flag--special{grid-column:special;grid-row:overlays}.vehicle-card--mod .vehicle-image .tdg_container_inv{width:31px;height:31px;background-color:#dcdce2;grid-column:save;grid-row:overlays;z-index:1}.vehicle-card--mod .vehicle-image .tdg_container_inv .tdg-heart{margin:6px 5px}.vehicle-card--mod .vehicle-image__image-wrapper{grid-area:image;display:grid;grid-template-areas:"image-and-overlay"}.vehicle-card--mod .vehicle-image__single-image,.vehicle-card--mod .vehicle-image .missing-image{grid-area:image-and-overlay}.vehicle-card--mod .vehicle-image__image--rounded{border-radius:1rem 1rem 0px 0px;overflow:hidden}.list-view .vehicle-card--mod .vehicle-image__image--rounded{border-radius:1rem 0px 0px 0px}.vehicle-dropdown{position:relative}.vehicle-dropdown__trigger{display:flex;align-items:center;justify-content:center;width:35px;height:35px;color:var(--cta-background-color);border:none;background-color:rgba(0,0,0,0);border-radius:50%}.vehicle-dropdown__trigger:hover,.vehicle-dropdown__trigger:active,.vehicle-dropdown__trigger:focus{color:#333}.vehicle-dropdown__trigger.less-whitespace{height:20px}.vehicle-dropdown__dots{display:flex;flex-direction:column;row-gap:2px;font-size:4px}.vehicle-dropdown__menu{margin:5px 0 0;-webkit-box-shadow:0px 0px 15px 2px rgba(0,0,0,.1);-moz-box-shadow:0px 0px 15px 2px rgba(0,0,0,.1);box-shadow:0px 0px 15px 2px rgba(0,0,0,.1);float:none;right:0;left:auto;padding:0;background-color:#fff;border:none;position:absolute;top:100%;z-index:10;min-width:145px;font-size:14px;text-align:left;list-style:none;background-clip:padding-box;border-radius:4px;display:none}.vehicle-dropdown__menu.open{display:block}.vehicle-dropdown__menu hr{width:125px;margin-top:0;margin-bottom:0}.vehicle-dropdown__item .dropdown-button:hover,.vehicle-dropdown__item .dropdown-button:active,.vehicle-dropdown__item .dropdown-button:focus,.vehicle-dropdown__item .vehicle-dropdown__action:hover,.vehicle-dropdown__item .vehicle-dropdown__action:active,.vehicle-dropdown__item .vehicle-dropdown__action:focus{border-color:#eaecf0}.vehicle-dropdown__item:first-of-type .dropdown-button,.vehicle-dropdown__item:first-of-type .vehicle-dropdown__action{border-radius:5px 5px 0 0}.vehicle-dropdown__item:last-of-type .dropdown-button,.vehicle-dropdown__item:last-of-type .vehicle-dropdown__action{border-radius:0 0 5px 5px}.vehicle-dropdown__item--copy-link .copied{background:var(--cta-background-color) !important;color:#fff}.vehicle-dropdown__item--copy-link .copied::after{background-color:#fff !important}.vehicle-dropdown__action{width:100%;display:grid !important;padding:0px 15px !important;grid-template-areas:"icon label";grid-template-columns:18px 1fr;grid-template-rows:auto;border-width:0;border-style:solid;border-color:#f4f5f7;background-color:#fff;min-height:42px;column-gap:12px;text-align:left;align-items:center;color:inherit !important}.vehicle-dropdown__action:hover{background-color:#f4f5f7}.vehicle-dropdown__action::after{content:"";background-color:#333;width:18px;height:18px;display:block;grid-area:icon;z-index:1;mix-blend-mode:screen;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}
21320.vehicle-dropdown__action--details::after{mask-image:var(--details-icon-url);-webkit-mask-image:var(--details-icon-url)}.vehicle-dropdown__icon{grid-area:icon;width:18px;height:auto;font-size:20px}.vehicle-dropdown__label{grid-area:label}.vehicle-dropdown .dropdown-button{width:100%;display:grid !important;padding:0px 15px !important;grid-template-areas:"icon label";grid-template-columns:18px 1fr;grid-template-rows:auto;border-width:0;border-style:solid;border-color:#f4f5f7;background-color:#fff;min-height:42px;column-gap:12px;text-align:left;align-items:center}.vehicle-dropdown .dropdown-button:hover{background-color:#f4f5f7}.vehicle-dropdown .dropdown-button::after{content:"";background-color:#333;width:18px;height:18px;display:block;grid-area:icon;z-index:1;mix-blend-mode:screen;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}.vehicle-dropdown .dropdown-button--copy::after{mask-image:var(--copy-icon-url);-webkit-mask-image:var(--copy-icon-url)}.vehicle-dropdown .dropdown-button--share::after{mask-image:var(--share-icon-url);-webkit-mask-image:var(--share-icon-url)}.vehicle-dropdown .dropdown-button--print::after{mask-image:var(--print-icon-url);-webkit-mask-image:var(--print-icon-url)}.vehicle-dropdown .dropdown-button__icon{grid-area:icon;width:18px;height:auto}.vehicle-dropdown .dropdown-button__label{grid-area:label}.vehicle-card--mod .vehicle-overview{display:grid;grid-template-areas:"title dropdown" "identifiers identifiers" "specs specs";grid-template-columns:1fr auto;padding:1.43em 1.43em 1em;gap:.71em 1.43em;align-items:center;grid-template-rows:repeat(3, auto)}.vehicle-card--mod .vehicle-overview__title{grid-area:title}.vehicle-card--mod .vehicle-overview__dropdown{grid-area:dropdown}.vehicle-card--mod .vehicle-overview__identifiers{grid-area:identifiers}.vehicle-card--mod .vehicle-overview__specs{grid-area:specs}@media(min-width: 640px){.vehicle-card--mod .vehicle-overview{grid-template-rows:minmax(5em, auto) repeat(2, auto)}}.list-view .vehicle-card--mod .vehicle-overview{grid-template-rows:repeat(3, auto)}.vehicle-card--mod .vehicle-overview__specs{display:flex;align-items:center;justify-content:space-between;gap:1.07em;padding:.86em 0 0;border-top:2px solid #f4f5f7;height:100%;width:100%}.vehicle-card--mod .vehicle-overview__colors{min-width:0}.vehicle-card--mod .vehicle-title{display:flex;align-items:center}.vehicle-card--mod .vehicle-title__text{display:inline-flex;flex-wrap:wrap;font-size:1.14em;color:#333;margin:0px;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.4}.vehicle-card--mod .vehicle-title__year-make-model{flex:0 1 auto;padding-right:.25em}.vehicle-card--mod .vehicle-title__condition,.vehicle-card--mod .vehicle-title__year,.vehicle-card--mod .vehicle-title__make-model,.vehicle-card--mod .vehicle-title__car-bravo,.vehicle-card--mod .vehicle-title__toyota-gold,.vehicle-card--mod .vehicle-title__toyota-silver{font-weight:900}.vehicle-card--mod .vehicle-title__condition,.vehicle-card--mod .vehicle-title__year{color:#707070}.vehicle-card--mod .vehicle-title__car-bravo{color:#063c4a}.vehicle-card--mod .vehicle-title__toyota-gold{color:#a37e2c}.vehicle-card--mod .vehicle-title__toyota-silver{color:#75757a}.vehicle-card--mod .vehicle-title__trim{flex:1 1 auto}.vehicle-card--mod .vehicle-status{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;display:flex;align-items:center;justify-content:space-between;min-height:1.43em;background-color:color-mix(in srgb, var(--cta-background-color), transparent 95%);border:1px solid var(--cta-background-color);color:var(--cta-background-color);padding:.29em .71em;font-size:1rem !important;line-height:1;text-align:center}.vehicle-card--mod .vehicle-status--rounded{border-radius:.36em}.vehicle-card--mod .vehicle-status__label{display:flex;column-gap:.3rem;align-items:center}.vehicle-card--mod .vehicle-eta-icon,.vehicle-card--mod .vehicle-status-info-icon{display:grid;grid-template-areas:"icon";grid-template-columns:1fr;grid-template-rows:1fr}.vehicle-card--mod .vehicle-eta-icon__image,.vehicle-card--mod .vehicle-status-info-icon__image{grid-area:icon}.vehicle-card--mod .vehicle-eta-icon::after,.vehicle-card--mod .vehicle-status-info-icon::after{content:"";display:block;background-color:#5c5c5c;mix-blend-mode:screen;grid-area:icon;width:100%;height:100%}.vehicle-card--mod .vehicle-eta-icon__image,.vehicle-card--mod .vehicle-status-info-icon__image{display:flex;align-items:center;width:1.1rem}.vehicle-card--mod .vehicle-mileage{width:max-content;font-size:1.14em}.vehicle-card--mod .vehicle-colors{display:flex;align-items:center;column-gap:1.07em}.vehicle-card--mod .vehicle-colors__int,.vehicle-card--mod .vehicle-colors__ext{display:flex;align-items:center;column-gap:.36em;min-width:0}.vehicle-card--mod .vehicle-colors__icon{width:1.43em;height:1.43em;border:1px solid #dcdce2;flex:0 0 auto}.vehicle-card--mod .vehicle-colors__icon--rounded{border-radius:.21em}.vehicle-card--mod .vehicle-colors__label,.vehicle-card--mod .vehicle-colors__value{font-size:.93em}.vehicle-card--mod .vehicle-colors__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vehicle-card--mod .vehicle-identifiers{display:flex;flex-wrap:wrap;gap:.21em 1.43em;color:#707070;line-height:1}.vehicle-card--mod .vehicle-identifiers__label,.vehicle-card--mod .vehicle-identifiers__value{font-size:1.2rem;font-weight:400;line-height:1}.vehicle-card--mod .vehicle-features{display:flex;column-gap:.36em;padding:0 1.43em;min-height:3.57em;align-items:center;justify-content:space-between;column-gap:.8rem}.list-view .vehicle-card--mod .vehicle-features{min-height:0}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-features{flex-wrap:wrap;grid-template-rows:repeat(2, auto);row-gap:2.5em;padding:2.71em 2.5em 2.29em}}.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-highlights{max-width:200
21320px}.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-highlights__item:nth-of-type(n+5){display:none}.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-features__more-details{flex:0 1 auto}.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details{flex-wrap:nowrap}.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details__comments,.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details__video,.grid-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details__window-sticker{flex:0 1 auto;min-width:2.7rem}.grid-view .vehicle-card--mod .vehicle-features--all .comments-button,.grid-view .vehicle-card--mod .vehicle-features--all .window-sticker-button,.grid-view .vehicle-card--mod .vehicle-features--all .video-button{min-width:2.7rem;height:2.7rem}.grid-view .vehicle-card--mod .vehicle-features--all .comments-button__label,.grid-view .vehicle-card--mod .vehicle-features--all .window-sticker-button__label,.grid-view .vehicle-card--mod .vehicle-features--all .video-button__label{display:none}@media(min-width: 1533px){.list-view .grid-view .vehicle-card--mod .vehicle-features--all .comments-button__label,.list-view .grid-view .vehicle-card--mod .vehicle-features--all .window-sticker-button__label,.list-view .grid-view .vehicle-card--mod .vehicle-features--all .video-button__label{display:block}}@media(max-width: 1532px){.list-view .vehicle-card--mod .vehicle-features--all .vehicle-highlights{max-width:200px}.list-view .vehicle-card--mod .vehicle-features--all .vehicle-highlights__item:nth-of-type(n+5){display:none}.list-view .vehicle-card--mod .vehicle-features--all .vehicle-features__more-details{flex:0 1 auto}.list-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details{flex-wrap:nowrap}.list-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details__comments,.list-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details__video,.list-view .vehicle-card--mod .vehicle-features--all .vehicle-more-details__window-sticker{flex:0 1 auto;min-width:2.7rem}.list-view .vehicle-card--mod .vehicle-features--all .comments-button,.list-view .vehicle-card--mod .vehicle-features--all .window-sticker-button,.list-view .vehicle-card--mod .vehicle-features--all .video-button{min-width:2.7rem;height:2.7rem}.list-view .vehicle-card--mod .vehicle-features--all .comments-button__label,.list-view .vehicle-card--mod .vehicle-features--all .window-sticker-button__label,.list-view .vehicle-card--mod .vehicle-features--all .video-button__label{display:none}}@media(max-width: 1532px)and (min-width: 1533px){.list-view .list-view .vehicle-card--mod .vehicle-features--all .comments-button__label,.list-view .list-view .vehicle-card--mod .vehicle-features--all .window-sticker-button__label,.list-view .list-view .vehicle-card--mod .vehicle-features--all .video-button__label{display:block}}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-features--highlights-only .vehicle-highlights__list{grid-template-columns:1fr;gap:1.5em 1.43em}}.vehicle-card--mod .vehicle-features--buttons-only{padding:.71em 1.43em}.vehicle-card--mod .vehicle-features__heading{display:none;font-size:.93em;font-weight:700;margin:0;color:#5c5c5c}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-features__heading{display:block}}.vehicle-card--mod .vehicle-features__highlights,.vehicle-card--mod .vehicle-features__more-details{flex:1 1 auto}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-features__highlights,.list-view .vehicle-card--mod .vehicle-features__more-details{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(2, auto);row-gap:1.07em;flex:0 1 100%}}.vehicle-card--mod .vehicle-highlights{display:flex;align-items:center;justify-content:space-between;column-gap:.8rem}.vehicle-card--mod .vehicle-highlights__tooltip{display:block;position:absolute;width:max-content;height:fit-content;max-width:10.71em;padding:.29em .71em .36em;bottom:calc(100% + .71em);left:0;border-radius:0;background-color:#333}.vehicle-card--mod .vehicle-highlights__tooltip::before{content:"";display:block;position:absolute;background-color:#333;width:.79em;height:.57em;clip-path:polygon(0% 0%, 50% 100%, 100% 0);top:calc(100% - .07em)}.vehicle-card--mod .vehicle-highlights__tooltip-text{color:#fff;font-size:.93em}.vehicle-card--mod .vehicle-highlights__tooltip::before{left:.29em;right:auto;transform:none}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(2, auto);row-gap:.71em}}.vehicle-card--mod .vehicle-highlights__list{list-style:none;display:contents;padding:0;margin:0}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights__list{display:grid;grid-template-columns:repeat(2, 1fr);grid-template-rows:auto;grid-auto-rows:auto;gap:2.5em 1.43em}}.vehicle-card--mod .vehicle-highlights__item,.vehicle-card--mod .vehicle-highlights__disclaimer{flex:1 1 3rem;display:flex}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights__item{display:grid;grid-template-columns:auto 1fr;grid-template-rows:1fr;column-gap:.71em}}.vehicle-card--mod .vehicle-highlights__icon-wrapper{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;display:flex;align-items:center;justify-content:center;padding:1.2rem 0;flex:1 0 auto}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights__icon-wrapper{display:none}}.vehicle-card--mod .vehicle-highlights__icon--full,.vehicle-card--mod .vehicle-highlights__label--full{display:none}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights__icon--full,.list-view .vehicle-card--mod .vehicle-highlights__label--full{display:block}}.vehicle-card--mod .vehicle-highlights__icon{width:2.5rem;height:auto}.vehicle-card--mod .vehicle-highlights__label{margin-top:.36em;font-size:.93em;color:#5c5c5c}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights__disclaimer{display:inline-block;margin-right:auto;padding:0}}.vehicle-card--mod .vehicle-highlights__disclaimer .vehicle-highlights__tooltip{left:auto !important;right:calc(50% - .71em)}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-highlights__disclaimer .vehicle-highlights__tooltip{bottom:calc(100% + .36em)}}.vehicle-card--mod .vehicle-highlights__disclaimer .vehicle-highlights__tooltip::before{left:auto;right:.29em}.vehicle-card--mod .vehicle-highlights__tooltip{top:auto !important;bottom:calc(100% - .36em);left:calc(50% - .71em) !important}.vehicle-card--mod .vehicle-highlights__tooltip-text{padding:0}.vehicle-card--mod .highlights-disclaimer{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;display:flex;align-items:center;justify-content:center;padding:1.2rem 0;flex:1 0 auto}.vehicle-card--mod .highlights-disclaimer__label{display:none;font-size:.79em;color:var(--cta-background-color)}@media(min-width: 1533px){.list-view .vehicle-card--mod .highlights-disclaimer__label{display:block}}.vehicle-card--mod .highlights-disclaimer__icon--image-mask{padding-right:3px;
21320cursor:pointer;display:flex;align-items:center;column-gap:.5rem;z-index:0}.vehicle-card--mod .highlights-disclaimer__icon--image-mask .fa-question-circle{display:none}.vehicle-card--mod .highlights-disclaimer__icon--image-mask::after{content:"";background-color:#a5a5a5;width:1.8rem;height:1.8rem;position:relative;z-index:1;mask-repeat:no-repeat;mask-position:center;mask-size:contain;mask-image:url("https://cdn.dlron.us/static/industry-automotive/icons/icon_info.svg");-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;-webkit-mask-image:url("https://cdn.dlron.us/static/industry-automotive/icons/icon_info.svg")}.vehicle-card--mod .highlights-disclaimer-icon{display:grid;grid-template-areas:"icon";grid-template-columns:1fr;grid-template-rows:1fr}.vehicle-card--mod .highlights-disclaimer-icon__image{grid-area:icon}.vehicle-card--mod .highlights-disclaimer-icon::after{content:"";display:block;background-color:#5c5c5c;mix-blend-mode:screen;grid-area:icon;width:100%;height:100%}.vehicle-card--mod .highlights-disclaimer-icon__image{width:1.8rem}@media(min-width: 1533px){.list-view .vehicle-card--mod .highlights-disclaimer-icon__image{display:none}}.vehicle-card--mod .vehicle-more-details{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.43em}.vehicle-card--mod .vehicle-more-details__comments,.vehicle-card--mod .vehicle-more-details__video,.vehicle-card--mod .vehicle-more-details__window-sticker{flex:1 1 auto;min-width:2.7rem}.vehicle-card--mod .vehicle-more-details .comments-button,.vehicle-card--mod .vehicle-more-details .window-sticker-button,.vehicle-card--mod .vehicle-more-details .video-button{display:flex;align-items:center;justify-content:center;column-gap:.36em;width:100%;padding:.21em;height:auto;min-height:2.7rem;background-color:rgba(0,0,0,0);border:1px solid #122532;transition:none}.vehicle-card--mod .vehicle-more-details .comments-button:hover,.vehicle-card--mod .vehicle-more-details .comments-button:active,.vehicle-card--mod .vehicle-more-details .comments-button:focus,.vehicle-card--mod .vehicle-more-details .window-sticker-button:hover,.vehicle-card--mod .vehicle-more-details .window-sticker-button:active,.vehicle-card--mod .vehicle-more-details .window-sticker-button:focus,.vehicle-card--mod .vehicle-more-details .video-button:hover,.vehicle-card--mod .vehicle-more-details .video-button:active,.vehicle-card--mod .vehicle-more-details .video-button:focus{background-color:#eaecf0;border-color:#a5a5a5}.vehicle-card--mod .vehicle-more-details .comments-button__label,.vehicle-card--mod .vehicle-more-details .window-sticker-button__label,.vehicle-card--mod .vehicle-more-details .video-button__label{font-size:.93em;color:#333}@media(min-width: 1920px){.list-view .vehicle-card--mod .vehicle-more-details .comments-button,.list-view .vehicle-card--mod .vehicle-more-details .window-sticker-button,.list-view .vehicle-card--mod .vehicle-more-details .video-button{font-size:1.14em}}.vehicle-card--mod .vehicle-more-details .comments-button__icon,.vehicle-card--mod .vehicle-more-details .window-sticker-button__icon{font-size:1.15em;color:#000}.vehicle-card--mod .vehicle-more-details .comments-button__image,.vehicle-card--mod .vehicle-more-details .window-sticker-button__image{max-width:1.15em;height:auto}.vehicle-card--mod .vehicle-more-details .video-button__icon{max-height:1.14em;width:auto;filter:invert(100%)}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-details .comments-button--more{display:block;border:none;padding:0;text-align:left;background-color:rgba(0,0,0,0);color:var(--cta-background-color);min-height:0}}@media(min-width: 1920px){.list-view .vehicle-card--mod .vehicle-comments--compressed{display:none}}.vehicle-card--mod .vehicle-comments--full{display:none}@media(min-width: 1920px){.list-view .vehicle-card--mod .vehicle-comments--full{display:grid;grid-template-columns:1fr;row-gap:.71em;margin-bottom:1.79em}}.vehicle-card--mod .vehicle-comments__heading,.vehicle-card--mod .vehicle-comments__text{font-size:1.14em;color:#5c5c5c;line-height:1.5}.vehicle-card--mod .vehicle-comments__heading{margin:0}.vehicle-card--mod .vehicle-comments__text{display:-webkit-inline-box;-webkit-line-clamp:5;overflow:hidden;-webkit-box-orient:vertical;text-overflow:ellipsis}.multi-tabs{display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:25px}.multi-tabs li{flex:1}.multi-tabs li:visited,.multi-tabs li:hover,.multi-tabs li:active,.multi-tabs li:focus,.multi-tabs li:active:hover,.multi-tabs li button:visited,.multi-tabs li button:hover,.multi-tabs li button:active,.multi-tabs li button:focus,.multi-tabs li button:active:hover{outline:none}.multi-tabs li button{border-radius:0;border-width:2px;border-style:solid;border-color:#eaecf0;width:100%;height:40px;font-size:12px;padding:8px 6px;text-transform:uppercase;font-weight:bold;line-height:1.17;letter-spacing:2.4px;outline:#eaecf0;background-color:#fff;color:#5c5c5c}.multi-tabs li button:hover{background-color:#f2f3f6;color:#333}.multi-tabs li.active button{background-color:#dcdce2;border-color:#dcdce2;outline:#dcdce2;color:#333}.multi-tabs li:first-of-type button{border-top-left-radius:21px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:21px;border-right:0}.multi-tabs li:last-of-type button{border-top-left-radius:0;border-top-right-radius:21px;border-bottom-right-radius:21px;border-bottom-left-radius:0;border-left:0}.multi-tabs li.onlyTab button{border-radius:21px;border-left:2px;border-left-style:solid;border-radius:21px;border-left:2px;border-left-style:solid}.vehiclePricingStack .tab-pane[id^=finance-] .vehiclePricingDetails .priceBlock,.vehiclePricingStack .tab-pane[id^=lease-] .vehiclePricingDetails .priceBlock{padding-top:14px}.vehiclePricingStack .tab-pane[id^=finance-] .vehiclePricingHighlights,.vehiclePricingStack .tab-pane[id^=lease-] .vehiclePricingHighlights{display:flex;align-items:flex-start;justify-content:space-between}.vehiclePricingStack ul.priceBlock.priceBlockResponsiveDesktop{margin-bottom:0}.vehiclePricingStack .vehiclePricingDetails .priceBlock{padding-left:20px;padding-right:20px;margin-left:-20px;margin-right:-20px}.vehiclePricingStack .vehiclePricingHighlight{text-align:center}.vehiclePricingStack .vehiclePricingHighlight:first-of-type{text-align:left}.vehiclePricingStack .vehiclePricingHighlight:last-of-type{text-align:right}.vehiclePricingStack .vehiclePricingHighlightAmount{display:block;font-weight:900;font-size:24px;line-height:1.5}.vehiclePricingStack .dealerDiscount .vehiclePricingHighlightAmount{font-weight:bold}.vehiclePricingStack .vehiclePricingHighlightLabel{font-weight:bold;font-size:15px;line-height:1.33}.vehiclePricingStack .tab-pane[id^=buy-] .vehiclePricingHighlightLabel{text-transform:uppercase}.vehiclePricingStack .singlePrice{justify-content:center}.vehiclePricingStack .singlePrice .vehiclePricingHighlight{text-align:center}.vehiclePricingStack .singlePrice .vehiclePricingHighlightLabel{display:block}.vehiclePricingStack .singlePrice .vehiclePricingHighlightAmount{display:block}
21320.vehiclePricingStack .vehiclePricingMoreLess{display:flex;align-items:center}.vehiclePricingStack .vehiclePricingMoreLess::before,.vehiclePricingStack .vehiclePricingMoreLess::after{content:"";display:block;border-top:2px solid #f4f5f7;flex:1 0 auto}.vehiclePricingStack .vehiclePricingMoreLessButton{padding:.57em .71em;border:none;background:none}.vehiclePricingStack .vehiclePricingMoreLessButton[aria-expanded=true] .vehiclePricingMoreLessButtonIcon{transform:rotate(180deg)}.vehiclePricingStack .vehiclePricingMoreLessButtonLabel{font-size:.93em}.vehiclePricingStack .vehiclePricingMoreLessButtonIcon{font-size:1.07em}.vehiclePricingStack .priceBlockItem{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:baseline;margin-top:5px}.vehiclePricingStack .priceBlockItem>div{flex:1;text-align:center}.vehiclePricingStack .priceBlockItem a{margin-top:5px}.vehiclePricingStack .priceBlockItem.priceBlockItemImage--left-align{justify-content:left}.vehiclePricingStack .priceBlockItem.priceBlockItemImage--right-align{justify-content:right}.vehiclePricingStack .priceBlockItem.priceBlockItemImage--center-align{justify-content:center}.vehiclePricingStack .priceBlockItemPrice,.vehiclePricingStack .priceBlockItemRebate{font-size:13px;line-height:1.54}.vehiclePricingStack .priceBlockItemPrice:first-of-type,.vehiclePricingStack .priceBlockItemRebate:first-of-type{margin-top:0}.vehiclePricingStack .priceBlockItemPrice:not(:first-of-type),.vehiclePricingStack .priceBlockItemRebate:not(:first-of-type){margin-top:.8rem}.vehiclePricingStack .priceBlockItemPriceButton{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;padding-right:3px;
21320cursor:pointer;display:flex;align-items:center;column-gap:.5rem;column-gap:.2rem}.vehiclePricingStack .priceBlockItemPriceButton .fa-question-circle{display:none}.vehiclePricingStack .priceBlockItemPriceButton::after{content:"";background-color:#a5a5a5;width:1.8rem;height:1.8rem;position:relative;z-index:1;mask-repeat:no-repeat;mask-position:center;mask-size:contain;mask-image:url("https://cdn.dlron.us/static/industry-automotive/icons/icon_info.svg");-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;-webkit-mask-image:url("https://cdn.dlron.us/static/industry-automotive/icons/icon_info.svg")}.vehiclePricingStack .priceBlockItemPriceButtonIcon{display:flex;align-items:center}.vehiclePricingStack .priceBlockItemPriceButtonIconImage{width:1.6rem;display:none}.vehiclePricingStack .priceBlocItemPriceValue{font-weight:900}.vehiclePricingStack .priceBlockItemRebates>ul{flex:1}.vehiclePricingStack .priceBlockItemRebate .popover-title,.vehiclePricingStack .priceBlockItemRebate .popover-content{text-align:left}.vehiclePricingStack .priceBlockItemRebate span{font-size:13px;line-height:1.54}.vehiclePricingStack .priceBlockItemRebateLabel,.vehiclePricingStack .rebatesLabel{padding-right:3px;
21320cursor:pointer;display:flex;align-items:center;column-gap:.5rem}.vehiclePricingStack .priceBlockItemRebateLabel .fa-question-circle,.vehiclePricingStack .rebatesLabel .fa-question-circle{display:none}.vehiclePricingStack .priceBlockItemRebateLabel::after,.vehiclePricingStack .rebatesLabel::after{content:"";background-color:#a5a5a5;width:1.8rem;height:1.8rem;position:relative;z-index:1;mask-repeat:no-repeat;mask-position:center;mask-size:contain;mask-image:url("https://cdn.dlron.us/static/industry-automotive/icons/icon_info.svg");-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;-webkit-mask-image:url("https://cdn.dlron.us/static/industry-automotive/icons/icon_info.svg")}.vehiclePricingStack .priceBlockItemRebateValue,.vehiclePricingStack .priceBlockItemRebate span.pull-right{font-weight:900}.vehiclePricingStack .priceBlockItemRebateButton{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;display:flex;align-items:center;column-gap:.3rem}.vehiclePricingStack .priceBlockItemRebateButtonIcon{display:flex;align-items:center}.vehiclePricingStack .priceBlockItemRebateButtonIconImage{width:1.6rem;display:none}.vehiclePricingStack .priceBlockItemDivider div,.vehiclePricingStack .priceBlockItemDivider hr{width:100%;border-top:2px solid #f4f5f7}.vehiclePricingStack .vehiclePricingDisclaimers .vehiclePricingDisclaimers{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;font-size:13px;line-height:1.54}.vehiclePricingStack .vehiclePricingDisclaimers .vehiclePricingDisclaimers .defaultDisclaimerText{color:#707070}.vehiclePricingStack .vehiclePricingModalDisclaimerToggle .modalDisclaimerToggleLabel{display:inline-block;margin-right:2px}.vehiclePricingStack .vehiclePricingModalDisclaimerToggle i{font-size:15px}@media(max-width: 991px){.vehiclePricingStack .btn-lg{font-size:18px}}.priceStakDisclaimerModal .modal-dialog{min-height:calc(100vh - 60px);display:flex;flex-direction:column;justify-content:center;overflow:auto}.priceStakDisclaimerModal .modal-header,.priceStakDisclaimerModal .modal-content{padding:5px}.priceStakText--bold{font-weight:700}.priceStakText--italic{font-style:italic}.priceStakText--underline{text-decoration:underline}.priceStakText--strikethrough{text-decoration:line-through}.wasabi_srp .vehiclePricingStack .tab-pane[id^=buy-] .vehiclePricingHighlight.featuredPrice .vehiclePricingHighlightAmount{line-height:1.25}.wasabi_srp .vehiclePricingStack .tab-pane[id^=buy-] .vehiclePricingHighlight:not(.featuredPrice) .vehiclePricingHighlightAmount{font-size:20px;line-height:1.5;font-weight:bold}.wasabi_srp .vehiclePricingStack .tab-pane[id^=finance-] .vehiclePricingHighlights,.wasabi_srp .vehiclePricingStack .tab-pane[id^=lease-] .vehiclePricingHighlights{padding-bottom:15px}.wasabi_srp .vehiclePricingStack .tab-pane[id^=finance-] .vehiclePricingHighlight.monthlyPayment .vehiclePricingHighlightAmount,.wasabi_srp .vehiclePricingStack .tab-pane[id^=lease-] .vehiclePricingHighlight.monthlyPayment .vehiclePricingHighlightAmount{line-height:1.25}.wasabi_srp .vehiclePricingStack .tab-pane[id^=finance-] .vehiclePricingHighlight:not(.monthlyPayment) .vehiclePricingHighlightAmount,.wasabi_srp .vehiclePricingStack .tab-pane[id^=lease-] .vehiclePricingHighlight:not(.monthlyPayment) .vehiclePricingHighlightAmount{font-size:20px;line-height:1.5}.wasabi_srp .vehiclePricingStack .priceBlock:first-of-type:not(:first-child){padding-top:14px}.wasabi_srp .vehiclePricingStack .vehiclePricingDisclaimers .vehiclePricingDisclaimers{padding:10px 0}.wasabi_srp .vehiclePricingStack .multi-tabs{margin-bottom:25px}.wasabi_srp .vehiclePricingStack .pricestak-post{padding-top:20px}.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas{height:100%}.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .pricingStackContainer,.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .pricestak,.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas [data-pricestak-main],.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .pricing-tab-content,.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .pricing-tab-content__pane,.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .hidden-xs{height:100%}.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas [data-pricestak-main],.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .hidden-xs{display:flex;flex-direction:column}.wasabi_srp .grid-view .vehiclePricingStack.shift-ctas .vehicleCallsToAction{margin-top:auto}.wasabi_srp .list-view .vehiclePricingStack .singlePrice{margin:43px auto 25px}.wasabi_srp .list-view .vehiclePricingStack .singlePrice .vehiclePricingHighlightAmount,.wasabi_srp .list-view .vehiclePricingStack .singlePrice .vehiclePricingHighlightLabel{display:block}.wasabi_srp .list-view .vehiclePricingStack .singlePrice .vehiclePricingHighlightLabel{margin-top:10px;font-size:25px;line-height:.8}.wasabi_srp .list-view .vehiclePricingStack .singlePrice .vehiclePricingHighlightAmount{font-size:40px;line-height:.75}.wasabi_srp .list-view .vehiclePricingStack .tab-content:first-child .singlePrice{margin-top:77px}.multi-tabs{display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:25px}.multi-tabs li{flex:1}.multi-tabs li:visited,.multi-tabs li:hover,.multi-tabs li:active,.multi-tabs li:focus,.multi-tabs li:active:hover,.multi-tabs li button:visited,.multi-tabs li button:hover,.multi-tabs li button:active,.multi-tabs li button:focus,.multi-tabs li button:active:hover{outline:none}.multi-tabs li button{border-radius:0;border-width:1px;border-style:solid;border-color:#eaecf0;width:100%;height:50px;font-size:13px;padding:8px 6px;text-transform:uppercase;font-weight:bold;line-height:1.17;letter-spacing:2.4px;outline:#eaecf0;background-color:#fff;color:#5c5c5c}.multi-tabs li button:hover{background-color:#f2f3f6;color:#333}.multi-tabs li.active button{background-color:#dcdce2;border-color:#dcdce2;outline:#dcdce2;color:#333;pointer-events:none}.multi-tabs li:first-of-type button{border-top-left-radius:10px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:10px;border-right:0}.multi-tabs li:last-of-type button{border-top-left-radius:0;border-top-right-radius:10px;border-bottom-right-radius:10px;border-bottom-left-radius:0;border-left:0}.multi-tabs li.onlyTab button{border-radius:10px;border-left:1px;border-left-style:solid;border-radius:10px;border-left:1px;border-left-style:solid}.vehicle-card--mod .vehiclePricingStack .tab-pane[id^=buy-] .vehiclePricingHighlights .priceBlockItemDivider{display:none}.vehicle-card--mod .vehiclePricingStack .custom-comments--empty{display:none}.vehicle-card--mod .vehiclePricingStack .model-footer{overflow:auto}.vehicle-card--mod .vehicle-more-info{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(2, auto);row-gap:.71em;padding:.71em 1.43em}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-info{display:flex;column-gap:1.43em}}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-info__icons,.list-view .vehicle-card--mod .vehicle-more-info__location-info{flex:1 1 auto}}.vehicle-card--mod .vehicle-more-info__icons{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.71em}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-info__icons{justify-content:flex-start}}.vehicle-card--mod .vehicle-more-info__icons img{max-width:100%}.vehicle-card--mod .vehicle-more-info__location-info{text-align:center}.vehicle-card--mod .vehicle-more-info .eligible-benefits,.vehicle-card--mod .vehicle-more-info .feature-logos,.vehicle-card--mod .vehicle-more-info .benefits-highlights__eligible-benefits{display:contents}.vehicle-card--mod .vehicle-more-info .icon-img{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:.71em;margin:0}.vehicle-card--mod .vehicle-more-info .icon-img__button{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial}
21320.vehicle-card--mod .vehicle-more-info .icon-img__benefit{border:1px solid #a5a5a5;padding:3px;border-radius:5px}.vehicle-card--mod .vehicle-more-info .icon-img img{overflow-wrap:anywhere}.vehicle-card--mod .vehicle-more-info .no-border{border:none}.vehicle-card--mod .vehicle-more-info .eligible-benefit-icon,.vehicle-card--mod .vehicle-more-info .eligible-benefit-disclaimer{width:auto;float:none;padding:0}.vehicle-card--mod .vehicle-more-info .eligible-benefit-disclaimer{min-width:7.14em;display:-webkit-inline-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;text-overflow:ellipsis}.vehicle-card--mod .vehicle-more-info .location-info{display:grid;grid-template-columns:repeat(3, minmax(0, max-content));grid-auto-columns:auto;justify-content:center;column-gap:.4em}.vehicle-card--mod .vehicle-more-info .location-info__tooltip{display:block;position:absolute;width:max-content;height:fit-content;max-width:10.71em;padding:.29em .71em .36em;bottom:calc(100% + .71em);left:0;border-radius:0;background-color:#333}.vehicle-card--mod .vehicle-more-info .location-info__tooltip::before{content:"";display:block;position:absolute;background-color:#333;width:.79em;height:.57em;clip-path:polygon(0% 0%, 50% 100%, 100% 0);top:calc(100% - .07em)}.vehicle-card--mod .vehicle-more-info .location-info__tooltip-text{color:#fff;font-size:.93em}.vehicle-card--mod .vehicle-more-info .location-info__tooltip::before{left:50%;right:auto;transform:translateX(-50%)}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-info .location-info{display:flex;justify-content:center}}.vehicle-card--mod .vehicle-more-info .location-info__item{display:inline-block;font-size:.86em;color:#5c5c5c}.vehicle-card--mod .vehicle-more-info .location-info__item,.vehicle-card--mod .vehicle-more-info .location-info__item:hover,.vehicle-card--mod .vehicle-more-info .location-info__item:active,.vehicle-card--mod .vehicle-more-info .location-info__item:focus{text-decoration:none}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-info .location-info__item{width:max-content}}.vehicle-card--mod .vehicle-more-info .location-info__item:not(:first-child)::before{display:inline-block;content:"|";padding-right:.25em}.vehicle-card--mod .vehicle-more-info .location-info__item--location{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width: 1533px){.list-view .vehicle-card--mod .vehicle-more-info .location-info__item--location{max-width:20em}}.vehicle-card--mod .vehicle-compare-button-container{display:flex;flex-wrap:wrap;justify-content:space-between;font-size:1.6rem;width:inherit;border-top:none;padding:15px 20px}.list-view .vehicle-card--mod .vehicle-compare-button-container{display:grid;grid-template-columns:auto;grid-template-rows:auto minmax(1.64em, auto);justify-content:flex-end}.vehicle-card--mod .vehicle-compare-button-container--left input[type=checkbox]{display:none}.vehicle-card--mod .vehicle-compare-button-container--left input[type=checkbox]:checked+.checkbox::before{font-family:"FontAwesome";font-size:14px;content:"ï";color:#fff;background-color:var(--cta-background-color);font-weight:normal;border-color:var(--cta-background-color)}.vehicle-card--mod .vehicle-compare-button-container--left input[type=checkbox]:disabled+.checkbox::before{cursor:not-allowed}.vehicle-card--mod .vehicle-compare-button-container--left .checkbox{display:flex;column-gap:.93em;color:#5c5c5c;padding:0;margin:0px;line-height:1}.vehicle-card--mod .vehicle-compare-button-container--left .checkbox:hover::before{cursor:pointer}.vehicle-card--mod .vehicle-compare-button-container--left .checkbox::before{border-width:1px;border-style:solid;border-color:#dcdce2;border-radius:6px;background-color:#fff;content:"";width:1.43em;height:1.43em;padding:2px;flex:0 0 auto;font-size:14px}.vehicle-card--mod .vehicle-compare-button-container--left.custom-checkbox{flex:0 1 auto}.list-view .vehicle-card--mod .vehicle-compare-button-container--left{flex:auto}.vehicle-card--mod .vehicle-compare-button-container--left .vehicle-compare-checkbox{width:1.1em;height:1.1em;margin:0;position:relative;top:.05em}.vehicle-card--mod .vehicle-compare-button-container--left .vehicle-compare-checkbox__label{letter-spacing:0;color:#122532;display:inline-flex;font-weight:inherit;margin:0;align-items:center;justify-content:flex-end;font-size:.93em;cursor:pointer}.list-view .vehicle-card--mod .vehicle-compare-button-container--left .vehicle-compare-checkbox__label{justify-content:flex-end}.vehicle-card--mod .vehicle-compare-button-container--left .vehicle-compare-checkbox__label::before{margin:0 !important}.list-view .vehicle-card--mod .vehicle-compare-button-container--left .vehicle-compare-checkbox__label::before{order:1}.list-view .vehicle-card--mod .vehicle-compare-button-container--right{padding:0 2.2em 0 0 !important}.vehicle-card--mod .vehicle-compare-button-container--right .vehicle-compare-button{letter-spacing:0;font-size:.93em;padding:0;text-transform:none;flex-grow:2;border:0;cursor:pointer;color:var(--cta-background-color);background-color:rgba(0,0,0,0)}.vehicle-card--mod .vehicle-compare-button-container--right .vehicle-compare-button__label{letter-spacing:0;color:#122532;margin:0;font-size:.93em;font-weight:inherit;font-style:italic}.vehicle-card{display:grid;grid-template-rows:repeat(4, auto) 1fr repeat(2, auto);grid-template-areas:"head" "image" "overview" "features" "pricing" "more-info" "compare";position:relative}.vehicle-card__image{grid-area:image}.vehicle-card__overview{grid-area:overview}.vehicle-card__features{grid-area:features}.vehicle-card__pricing{grid-area:pricing}.vehicle-card__more-info{grid-area:more-info}.vehicle-card__compare{grid-area:compare}.vehicle-card__head{grid-area:head;height:24px;text-align:center;display:flex;justify-content:flex-end;
21320font-size:10.67px;line-height:12.8px}.vehicle-card__head-tab{width:104px;background-color:var(--cta-background-color);border-top-left-radius:10.67px;border-top-right-radius:10.67px;display:flex;align-items:center;justify-content:center;color:#fff}.vehicle-card__head-tab svg{margin-right:2px;margin-top:2px}.vehicle-card__body{display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;grid-column:1/-1;grid-row:2/-1;background-color:#fff;-webkit-box-shadow:0 0 15px 0 rgba(0,0,0,.07);box-shadow:0 0 15px 0 rgba(0,0,0,.07)}.vehicle-card--rounded .vehicle-card__body{border-radius:1rem}.vehicle-card__features--auto,.vehicle-card__pricing,.vehicle-card__more-info,.vehicle-card__compare{border-top:1px solid #dcdce2}.vehicle-card__pricing{padding:1.43em}.list-view .vehicle-card__compare{display:grid;align-items:flex-end}.list-view .vehicle-card{grid-template-rows:repeat(3, auto) 1fr auto;grid-template-columns:1fr 27.86em;grid-template-areas:"head head" "image pricing" "overview pricing" "features pricing" "more-info pricing" "more-info compare"}.list-view .vehicle-card.vehicle-card--no-icons-location{grid-template-rows:repeat(4, auto);grid-template-areas:"head head" "image pricing" "overview pricing" "features pricing" "features compare"}@media(min-width: 1533px){.list-view .vehicle-card{grid-template-rows:repeat(2, auto) 1fr auto;grid-template-columns:54fr 46fr 27.86em;grid-template-areas:"head head head" "image features pricing" "overview features pricing" "more-info more-info pricing" "more-info more-info compare"}.list-view .vehicle-card.vehicle-card--no-icons-location{grid-template-rows:repeat(3, auto);grid-template-areas:"head head head" "image features pricing" "overview features pricing" "overview features compare"}}@media(min-width: 1920px){.list-view .vehicle-card{grid-template-columns:7fr 3fr 29.28em}}@media(min-width: 1533px){.list-view .vehicle-card .vehicle-card__features{border-top:none;border-left:1px solid #dcdce2;background-color:rgba(0,0,0,0)}}@media(min-width: 1200px){.list-view .vehicle-card .vehicle-card__pricing,.list-view .vehicle-card .vehicle-card__compare{border-top:none;border-left:1px solid #dcdce2}}.list-view .vehicle-card .vehicle-card__pricing{padding:2.5em}@media(min-width: 1920px){.list-view .vehicle-card .vehicle-card__pricing{padding:2.5em 3.21em}}.vehicle-card.skeleton do-personalized-content{position:absolute;display:block;background-image:url("https://cdn.dlron.us/static/industry-automotive/backgrounds/skeleton-background-image.jpeg");width:100%;height:100%}.vehicle-card.skeleton .skeleton{background-color:#dcdce2}.vehicle-card.skeleton .skeleton.vehicle-card__image{aspect-ratio:4/3;width:100%;height:auto;margin:0}.vehicle-card.skeleton .skeleton.vehicle-card__overview{height:3em;margin:1em 4em 1em 1em}.vehicle-card.skeleton .skeleton.vehicle-card__features{height:2em;margin:1em 8em 1em 1em}.vehicle-card.skeleton .skeleton.vehicle-card__pricing,.vehicle-card.skeleton .skeleton .vehicle-card__compare{height:7em;margin:1em}.vehicle-card--carbravo{border:2px solid #6bc24a}.vehicle-card--adcard do-personalized-content{position:absolute;display:block;width:100%;height:100%}.vehicle-cards-aligned .vehicle-card{grid-template-rows:subgrid;grid-row:span 7;gap:0}.vehicle-cards-aligned .vehicle-card .vehicle-overview{align-items:start;grid-template-rows:repeat(3, auto)}.vehicle-cards-aligned .vehicle-card .save-heart__srp-card-heart-wrapper{margin-top:.8rem}.vehicle-cards-aligned .vehicle-card .save-heart__srp-card-heart-wrapper.less-whitespace{margin-top:.1rem}.vehicle-cards-aligned .vehicle-card .save-heart__srp-card-heart-wrapper.less-whitespace .save-vehicle-heart label{margin:0 !important}.inventory_list.list-view .vehicle-card--adcard{aspect-ratio:8/3}.inventory_list.grid-view .vehicle-card--adcard{aspect-ratio:3/8}.hero-carousel{position:relative;cursor:auto !important}.hero-carousel__items{display:flex;scroll-snap-type:x mandatory;overflow:hidden;scroll-behavior:smooth;overflow-x:scroll;-ms-overflow-style:none;scrollbar-width:none}.hero-carousel__items::-webkit-scrollbar{display:none}@media(max-width: 991px){.hero-carousel__items:hover{cursor:grab}.hero-carousel__items:hover:active{cursor:ew-resize}}.hero-carousel__item{width:100%;flex-shrink:0;scroll-snap-align:start;position:relative;overflow:hidden;display:flex;justify-content:center;min-height:10px}.hero-carousel__item::before{content:"";position:absolute;width:auto;height:100%;background-color:#222;background-clip:content-box;border:solid;border-color:rgba(0,0,0,0);border-width:2px 0;transform:translate(0px, 0px)}.hero-carousel__item:not(.square),.hero-carousel__item:not(.square)::before{border-radius:21px}@media(max-width: 991px){.hero-carousel__item:not(.square),.hero-carousel__item:not(.square)::before{border-radius:21px 21px 0 0}}.hero-carousel__image{max-width:100%;object-fit:contain;z-index:1}.hero-carousel__image--dimmed{filter:brightness(50%)}.hero-carousel__controls{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;pointer-events:none}.hero-carousel__controls--hover{position:absolute;height:100%;width:25%;pointer-events:auto}.hero-carousel__controls--hover:hover{opacity:1}@media(max-width: 991px){.hero-carousel__controls--hover{width:15%}.hero-carousel__controls--hover{opacity:1}}.hero-carousel__controls--previous{left:0}
21320.hero-carousel__controls--previous.vertical{left:unset !important;top:0 !important;display:flex;justify-content:center;width:100%;height:40px}.hero-carousel__controls--next{right:0}.hero-carousel__controls--next.vertical{right:unset !important;bottom:0 !important;display:flex;justify-content:center;width:100%;height:40px}.hero-carousel__view--more{position:absolute;top:calc(50% - 25px);margin-left:auto;margin-right:auto;left:0;right:0;width:211px;height:50px;border-radius:14px;display:flex;align-items:center;justify-content:center;z-index:1}.hero-carousel__control{position:absolute;width:40px;height:70px;background-color:rgba(0,0,0,.55);border:none;color:#fff;top:calc(50% - 35px)}.hero-carousel__control.vertical{width:70px !important;height:40px !important;top:unset !important}.hero-carousel__control--previous-btn{border-radius:0 14px 14px 0;left:0}.hero-carousel__control--previous-btn.vertical{border-radius:0 0 14px 14px !important;left:unset !important}.hero-carousel__control--next-btn{border-radius:14px 0 0 14px;right:0}.hero-carousel__control--next-btn.vertical{border-radius:14px 14px 0 0 !important;bottom:0 !important;right:unset !important}.hero-carousel__control:hover{background-color:rgba(0,0,0,.5)}.missingImgOverlay{position:absolute;transition:.5s ease;opacity:1;text-align:center;padding:0 10px;transform:translate(-50%, -50%);width:100%;max-width:280px;height:80%;display:grid;grid-template-rows:1fr [title] 47% [subtitle] 1fr;align-items:center;justify-content:center;color:#333}.missingImgOverlay__title,.missingImgOverlay__subtitle{margin:0;text-transform:none;font-weight:bold}.missingImgOverlay__title{font-size:28px;grid-row-start:title;line-height:1.1}@media(max-width: 639px){.missingImgOverlay__title{font-size:33px}}.missingImgOverlay__subtitle{font-size:15px;grid-row-start:subtitle}@media(max-width: 639px){.missingImgOverlay__subtitle{font-size:22px}}.hero-carousel__image-counter{position:absolute;min-width:90px;height:40px;padding:13px 10px;right:15px;bottom:15px;color:#fff;font-size:15px;font-weight:bold;line-height:.93;text-align:center;background-color:rgba(0,0,0,.55);border-radius:21px;box-shadow:0 0 10px 1px hsla(0,0%,100%,.15)}@media(max-width: 991px){.hero-carousel__image-counter{min-width:61px;height:27px;padding:6px 10px;right:20px;bottom:20px;font-size:10px;line-height:1.4}}.hero-carousel__image-counter .image-counter__slash{display:inline-block;padding:0 2px}.vehicle-card--mod .bravoBudgetVehicle img{position:absolute;top:3px;pointer-events:none;right:8px;max-width:45%;z-index:1}.vehicle-card--mod .hero-carousel{position:static;display:grid;grid-template-columns:[images-start controls-start] 1fr [counter-start] auto [images-end controls-end counter-end];grid-template-rows:[images-start controls-start] 1fr [counter-start] auto [images-end controls-end counter-end]}.vehicle-card--mod .hero-carousel--rounded{border-radius:1rem 1rem 0px 0px;overflow:hidden}.list-view .vehicle-card--mod .hero-carousel--rounded{border-radius:1rem 0px 0px 0px}.vehicle-card--mod .hero-carousel__items{grid-area:images}.vehicle-card--mod .hero-carousel__item{grid-template-areas:"image-and-button";grid-template-columns:1fr;grid-template-rows:1fr;width:calc(100% + 2px);min-width:100%;scroll-snap-align:center;border-radius:0}.vehicle-card--mod .hero-carousel__item--viewvehicle{display:grid}.vehicle-card--mod .hero-carousel__item:last-of-type{width:calc(100% + 2px)}.vehicle-card--mod .hero-carousel__item::before,.vehicle-card--mod .hero-carousel__item::after{content:none}.vehicle-card--mod .hero-carousel__image-wrapper,.vehicle-card--mod .hero-carousel__vdp-button-wrapper{grid-area:image-and-button}.vehicle-card--mod .hero-carousel__image-wrapper{display:grid;grid-template-areas:"background-foreground-missing"}.vehicle-card--mod .hero-carousel__background-wrapper,.vehicle-card--mod .hero-carousel__single-image,.vehicle-card--mod .hero-carousel .missing-image{grid-area:background-foreground-missing}.vehicle-card--mod .hero-carousel__single-image{display:grid;align-items:center;justify-content:center}.vehicle-card--mod .hero-carousel__image{max-width:100%;width:100%;aspect-ratio:1.3333333333;object-fit:contain}.vehicle-card--mod .hero-carousel__background-image{filter:blur(10px);aspect-ratio:1.3333333333;object-fit:cover;width:100%}.list-view .vehicle-card--mod .hero-carousel__image--grid,.list-view .vehicle-card--mod .hero-carousel__background-image--grid{display:none}.grid-view .vehicle-card--mod .hero-carousel__image--list,.grid-view .vehicle-card--mod .hero-carousel__background-image--list{display:none}.vehicle-card--mod .hero-carousel__vdp-button-wrapper{display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5);z-index:1}.vehicle-card--mod .hero-carousel__vdp-button-wrapper-blurred{background-color:rgba(0,0,0,0) !important;backdrop-filter:blur(25px);width:110%;margin-left:-5%}.vehicle-card--mod .hero-carousel__view--more{position:static;margin:0}.vehicle-card--mod .hero-carousel__controls{grid-area:controls;display:grid;grid-template-columns:25% 1fr 25%;grid-template-areas:"previous . next";position:static;width:100%;height:100%;z-index:2}@media(max-width: 991px){.vehicle-card--mod .hero-carousel__controls{grid-template-columns:45px 1fr 45px}}.vehicle-card--mod .hero-carousel__controls--hover{display:flex;align-items:center;position:static;width:100%}.vehicle-card--mod .hero-carousel__controls--previous{grid-area:previous;justify-content:flex-start}.vehicle-card--mod .hero-carousel__controls--next{grid-area:next;justify-content:flex-end}.vehicle-card--mod .hero-carousel__control{position:static}.vehicle-card--mod .hero-carousel__image-counter{display:none;position:static;grid-area:counter;color:#fff;text-align:center;margin:1em;z-index:2}@media(hover: none){.vehicle-card--mod .hero-carousel__image-counter{display:block}}.list-view .vehicle-card--mod .hero-carousel__image-counter{display:none}.more-info-modal{padding-right:0 !important}.more-info-modal__container{position:relative;top:50%;transform:translateY(-50%) !important;max-width:fit-content;margin:auto;width:auto}@media(max-width: 991px){.more-info-modal__container{width:520px}}@media(max-width: 550px){.more-info-modal__container{padding:15px}}.more-info-modal__dialog{display:flex;justify-content:center;align-items:center}.more-info-modal__content{box-shadow:16px 16px 20px #333;max-height:93vh;display:grid;grid-template-areas:"header" "body" "footer";grid-template-rows:auto 1fr auto;grid-template-columns:1fr;background-color:#fff}@media(min-width: 992px){.more-info-modal__content{max-width:clamp(28rem,53vw,101.7rem)}}.more-info-modal__content--rounded{border-radius:1rem}.more-info-header{grid-area:header;display:flex;align-items:center;justify-content:space-between;column-gap:.8rem;padding:clamp(2.1rem,6.5vw,5.5rem) clamp(2.1rem,6.5vw,5.5rem) clamp(2.4rem,11.6vw,5rem)}@media(min-width: 992px){.more-info-header{padding:clamp(2.1rem,6.5vw,5.5rem) clamp(2.1rem,6.5vw,5.5rem) 2.8rem}}.more-info-header__title{margin:0;font-size:2.4rem;line-height:normal}.more-info-header__close,.more-info-header__close-icon{width:3.2rem;height:3.2rem}.more-info-header__close{border:none;background:rgba(0,0,0,0);padding:0;text-transform:initial;display:flex;align-items:center;justify-content:center}.more-info-header__close-icon{font-size:4rem;line-height:.8}.more-info-body{padding:0 clamp(2.1rem,6.5vw,5.5rem);grid-area:body;overflow-y:hidden}.more-info-body__text{font-size:1.6rem;overflow-y:auto;height:100%;padding:0 clamp(1.1rem,2.5vw,7.3rem) 5.5vh 0;scrollbar-width:thin}.more-info-body__text::-webkit-scrollbar{width:5px;height:5px}.more-info-body__text::-webkit-scrollbar-track{background:#ebecf0}.more-info-body__text::-webkit-scrollbar-thumb{background-color:#a5a5a5;border-radius:10px}.more-info-footer{grid-area:footer;background-color:#f4f5f7;padding:clamp(1.8rem,5.5vw,2.4rem) clamp(2.1rem,6.5vw,5.5rem)}.more-info-footer--rounded{border-radius:0 0 1rem 1rem}@media(min-width: 992px){.more-info-footer{display:flex;justify-content:flex-end}}.more-info-footer .more-info-footer__close{display:block;width:100%;padding:1.6rem;font-size:2rem !important;line-height:1}@media(min-width: 992px){.more-info-footer .more-info-footer__close{width:auto}}.share-form__group--phone label[for=smslead_phone]{width:unset}.share-form__group--phone .control-label{display:block;text-align:left;color:#5c5c5c;font-size:16px;font-weight:bold;padding:0 0 5px;line-height:1}.share-form__group--phone .form-control{width:100%;border-radius:5px;min-height:40px;font-size:16px;font-weight:bold;color:#333;line-height:normal;border:1px solid #e7e9ed;box-shadow:none}.share-form__group--phone .form-control:focus{border:1px solid #9b9b9b;box-shadow:none}.share-form__group--phone .form-control::placeholder{color:#9b9b9b}.share-form__group--phone .iti__selected-flag{height:40px}.share-form__group--phone .iti__arrow{border:none}.share-form__group--phone .iti__arrow::before{content:"ï";display:inline-block;font-family:"FontAwesome";font-size:16px;line-height:1;transform:translateY(-7px);color:#a5a5a5}.share-form__group--phone .iti__country-list{border:none;border-radius:5px;box-shadow:0 10px 15px 0 rgba(0,0,0,.15);scrollbar-width:thin}.share-form__group--phone .iti__country-list::-webkit-scrollbar{width:5px;height:5px}.share-form__group--phone .iti__country-list::-webkit-scrollbar-track{background:#ebecf0}.share-form__group--phone .iti__country-list::-webkit-scrollbar-thumb{background-color:#a5a5a5;border-radius:10px}.share-form__group--phone .iti__country{padding:8px 10px;font-size:16px;color:#5c5c5c}.share-form__group--phone .iti__divider{display:none}.share-form__group--phone .iti__highlight{background-color:#f4f5f7}.share-form__group--phone .iti__active{background-color:#dedfe0;font-weight:700}.share-form .share-form__group--oem-checkbox .checkbox{padding:0;float:none}.share-form .share-form__group--oem-checkbox input[type=checkbox]{display:none}.share-form .share-form__group--oem-checkbox input[type=checkbox]:checked+label::before{font-family:"FontAwesome";font-size:14px;content:"ï";color:#fff;background-color:var(--cta-background-color);font-weight:normal;border-color:var(--cta-background-color)}.share-form .share-form__group--oem-checkbox input[type=checkbox]:disabled+label::before{cursor:not-allowed}.share-form .share-form__group--oem-checkbox label{margin:0px;color:#5c5c5c;display:flex;padding-left:0;font-size:16px;line-height:1.25}.share-form .share-form__group--oem-checkbox label:hover::before{cursor:pointer}.share-form .share-form__group--oem-checkbox label::before{border-width:1px;border-style:solid;border-color:#dcdce2;border-radius:6px;background-color:#fff;content:"";width:20px;height:20px;padding:2px;flex:0 0 auto;margin-right:13px;line-height:1}.share-form .share-form__group--oem-checkbox label small{color:#5c5c5c !important;font-size:100%}.share-form .form-group{margin:0}.share-form .form-group .control-label{margin:0}.share-form .form-group .col-lg-4,.share-form .form-group .col-lg-8{width:100%;padding-left:0;padding-right:0}.share-form__group--text,.share-form__group--text-area,.share-form__group--email{padding-top:20px}.share-form__group--checkbox{padding-top:10px}.share-form__group--checkbox:not(.share-form__group--oem-checkbox) input[type=checkbox]{display:none}.share-form__group--checkbox:not(.share-form__group--oem-checkbox) input[type=checkbox]:checked+.checkbox::before{font-family:"FontAwesome";font-size:14px;content:"ï";color:#fff;background-color:var(--cta-background-color);font-weight:normal;border-color:var(--cta-background-color)}.share-form__group--checkbox:not(.share-form__group--oem-checkbox) input[type=checkbox]:disabled+.checkbox::before{cursor:not-allowed}.share-form__group--checkbox:not(.share-form__group--oem-checkbox) .checkbox{margin:0px;color:#5c5c5c;display:flex;padding-left:0;line-height:1}.share-form__group--checkbox:not(.share-form__group--oem-checkbox) .checkbox:hover::before{cursor:pointer}.share-form__group--checkbox:not(.share-form__group--oem-checkbox) .checkbox::before{border-width:1px;border-style:solid;border-color:#dcdce2;border-radius:6px;background-color:#fff;content:"";width:20px;height:20px;padding:2px;flex:0 0 auto;margin-right:13px}.share-form .share-form__label{display:block;text-align:left;color:#5c5c5c;font-size:16px;font-weight:bold;padding:0 0 5px;line-height:1}.share-form .share-form__input{width:100%;border-radius:5px;min-height:40px;font-size:16px;font-weight:bold;color:#333;line-height:normal;border:1px solid #e7e9ed;box-shadow:none}.share-form .share-form__input:focus{border:1px solid #9b9b9b;box-shadow:none}.share-form .share-form__input::placeholder{color:#9b9b9b}.share-form .share-form__checkbox-label{font-weight:400;padding-top:0;min-height:auto}.share-form .share-form__checkbox-label:hover{cursor:pointer}.share-form .share-form__checkbox-label-text{line-height:1.25}.share-form__expand-panel{display:none}.share-form__footer{padding-top:20px}.share-form .share-form__submit{border-radius:5px;min-height:50px;display:block;width:100%;font-size:18px;font-weight:900;line-height:1}.share-form__disclaimer,.share-form__required{font-size:12px;color:#5c5c5c;text-align:left;margin-top:10px;line-height:initial}.share-form--email .share-form__group:first-of-type{padding-top:0}.share-form--email .share-form__group--text-area{padding-bottom:20px;border-bottom:1px solid #dedfe0}.share-form--email .share-form__group--text-area .share-form__input{min-height:80px}.share-form .visitorDisclaimer{font-size:12px;color:#5c5c5c;text-align:left;margin-top:10px;line-height:initial;margin:0}@media(min-width: 500px){.share-form #shareVehicleLeadForm #shareVehicleTextLink{border:none;padding-top:0}}@media(min-width: 500px){.share-form #shareVehicleLeadForm{padding-left:30px;border-left:solid 1px #dedfe0}}.share-vehicle{padding-right:0px !important;z-index:100000}.share-vehicle__dialog{width:100%;min-width:320px;max-width:720px;margin-right:auto;margin-left:auto}.share-vehicle .share-vehicle__content{padding-top:42px;padding-left:20px;padding-right:20px;padding-bottom:30px}@media(min-width: 500px){.share-vehicle .share-vehicle__content{padding-top:50px;padding-left:50px;padding-right:50px}}.share-vehicle .share-vehicle__close{display:flex;justify-content:center;align-items:center;position:absolute;right:0;top:0;padding:20px;z-index:10;opacity:1;font-size:initial;width:calc(16px + 20px*2);height:calc(16px + 20px*2)}.share-vehicle__close-icon{font-size:21px;color:#9b9b9b}.share-vehicle__header{border:none;padding:0}.share-vehicle__title{color:#333;font-size:16px;font-weight:900;text-align:left;text-transform:none;line-height:1.45}.share-vehicle__body{padding:0}.share-vehicle .share-vehicle__copy-link-btn{width:100%;border:solid 1px #122532;background:#fff;color:#122532;font-size:16px;line-height:1.25;text-transform:none;border-radius:5px;min-height:50px}.share-vehicle .share-vehicle__copy-link-btn.share-vehicle__button--copied{background:#5c5c5c;border:solid 1px #122532;color:#fff}.share-vehicle__print-btn{width:100%;border:solid 1px #122532;background:#fff;color:#122532;font-size:16px;line-height:1.25;text-transform:none;border-radius:5px;min-height:50px}.share-vehicle__panels{margin:0}.share-vehicle .share-panel.panel{margin:0;border:0}.share-vehicle .share-panel__heading{padding:0}.share-vehicle .share-panel__toggle{display:none}.share-vehicle .share-panel__toggle.collapsed .panel-label__icon{transform:rotate(180deg)}.share-vehicle .share-panel__content.collapse{display:block}.share-vehicle .share-panel .share-panel__body.panel-body{border:none;background:none;padding:0}.share-vehicle .panel-label{color:#333;font-size:16px;font-weight:900;text-align:left;text-transform:none;line-height:1.45}.share-vehicle .panel-label--toggle{display:grid;grid-template-columns:1fr auto}.share-vehicle .panel-label__icon{font-weight:700}.share-vehicle--0-forms .share-vehicle__body{padding-top:30px}.share-vehicle--0-forms .share-vehicle__dialog,.share-vehicle--1-forms .share-vehicle__dialog{max-width:682px}.share-vehicle--0-forms .share-vehicle__content,.share-vehicle--1-forms .share-vehicle__content{padding-bottom:40px}@media(min-width: 500px){.share-vehicle--0-forms .share-vehicle__content,.share-vehicle--1-forms .share-vehicle__content{padding-bottom:50px}}@media(min-width: 500px){.share-vehicle--1-forms .share-vehic
21320le__body{display:grid;grid-template-columns:1fr 1fr;padding-top:30px}.share-vehicle--1-forms .share-vehicle__body--single-panel{grid-template-columns:1fr;padding-top:0}}.share-vehicle--1-forms .share-vehicle__actions{padding-top:20px;padding-bottom:10px}@media(min-width: 500px){.share-vehicle--1-forms .share-vehicle__actions{padding-top:0;padding-bottom:0;padding-right:30px}}.share-vehicle--1-forms .share-vehicle__actions div:not(:first-child){margin-top:20px}.share-vehicle--1-forms .share-vehicle__panels{padding-top:28px;border-top:1px solid #dedfe0}@media(min-width: 500px){.share-vehicle--1-forms .share-vehicle__panels{padding-top:0;padding-left:30px;border-top:none;border-left:1px solid #dedfe0}.share-vehicle--1-forms .share-vehicle__panels--single-panel{padding-left:0;border-left:unset}}.share-vehicle--1-forms .share-panel__content{padding-top:10px}.share-vehicle.share-vehicle--2-forms .share-vehicle__dialog{max-width:720px}.share-vehicle.share-vehicle--2-forms .share-vehicle__content{padding-bottom:20px}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-vehicle__content{padding-bottom:30px}}.share-vehicle.share-vehicle--2-forms .share-vehicle__actions{padding:20px 0;display:grid;grid-template-columns:repeat(2, minmax(130px, 1fr));column-gap:20px;max-width:max-content}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-vehicle__actions{padding:20px 0 10px}}.share-vehicle.share-vehicle--2-forms .share-vehicle__copy-link-btn{min-height:32px;padding-top:6px;padding-bottom:6px}.share-vehicle.share-vehicle--2-forms .share-vehicle__print-btn{min-height:32px;padding-top:6px;padding-bottom:6px}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-vehicle__panels{display:grid;grid-template-columns:repeat(2, 1fr);padding-top:20px;border-top:1px solid #dedfe0}}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-panel--text-me{padding-right:50px}}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-panel--email{padding-left:50px;border-left:1px solid #dedfe0}}.share-vehicle.share-vehicle--2-forms .share-panel__toggle{display:block;padding:10px 0;border-top:1px solid #dedfe0}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-panel__toggle{display:none}}.share-vehicle.share-vehicle--2-forms .share-panel__content{padding-top:10px;padding-bottom:10px}.share-vehicle.share-vehicle--2-forms .share-panel__content.collapse:not(.in){display:none}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .share-panel__content{padding-top:20px;padding-bottom:0}.share-vehicle.share-vehicle--2-forms .share-panel__content.collapse:not(.in){display:block}.share-vehicle.share-vehicle--2-forms .share-panel__content.collapse,.share-vehicle.share-vehicle--2-forms .share-panel__content.collapsing{height:auto !important}}.share-vehicle.share-vehicle--2-forms .share-panel:last-of-type .share-panel__content{padding-bottom:0}.share-vehicle.share-vehicle--2-forms .panel-label--static{display:none}@media(min-width: 500px){.share-vehicle.share-vehicle--2-forms .panel-label--static{display:block}}.hide-text-me-panel{display:none}.vehicle-card-deck .vehicle-cards{display:grid;column-gap:2rem;row-gap:4rem;grid-template-columns:repeat(auto-fill, minmax(29.5rem, 1fr))}`, ""]); 21321// Exports 21322/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 21323 21324 21325/***/ }), 21326 21327/***/ 9708: 21328/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 21329 21330/*! ***************************************************************************** 21331Copyright (C) Microsoft. All rights reserved. 21332Licensed under the Apache License, Version 2.0 (the "License"); you may not use 21333this file except in compliance with the License. You may obtain a copy of the 21334License at http://www.apache.org/licenses/LICENSE-2.0 21335 21336THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 21337KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 21338WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 21339MERCHANTABLITY OR NON-INFRINGEMENT. 21340 21341See the Apache Version 2.0 License for specific language governing permissions 21342and limitations under the License. 21343***************************************************************************** */ 21344var Reflect; 21345(function (Reflect) { 21346 // Metadata Proposal 21347 // https://rbuckton.github.io/reflect-metadata/ 21348 (function (factory) { 21349 var root = typeof __webpack_require__.g === "object" ? __webpack_require__.g : typeof self === "object" ? self : typeof this === "object" ? this : Function("return this;")(); 21350 var exporter = makeExporter(Reflect); 21351 if (typeof root.Reflect === "undefined") { 21352 root.Reflect = Reflect; 21353 } else { 21354 exporter = makeExporter(root.Reflect, exporter); 21355 } 21356 factory(exporter); 21357 function makeExporter(target, previous) { 21358 return function (key, value) { 21359 if (typeof target[key] !== "function") { 21360 Object.defineProperty(target, key, { 21361 configurable: true, 21362 writable: true, 21363 value: value 21364 }); 21365 } 21366 if (previous) previous(key, value); 21367 }; 21368 } 21369 })(function (exporter) { 21370 var hasOwn = Object.prototype.hasOwnProperty; 21371 // feature test for Symbol support 21372 var supportsSymbol = typeof Symbol === "function"; 21373 var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== "undefined" ? Symbol.toPrimitive : "@@toPrimitive"; 21374 var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== "undefined" ? Symbol.iterator : "@@iterator"; 21375 var supportsCreate = typeof Object.create === "function"; // feature test for Object.create support 21376 var supportsProto = { 21377 __proto__: [] 21378 } instanceof Array; // feature test for __proto__ support 21379 var downLevel = !supportsCreate && !supportsProto; 21380 var HashMap = { 21381 // create an object in dictionary mode (a.k.a. "slow" mode in v8) 21382 create: supportsCreate ? function () { 21383 return MakeDictionary(Object.create(null)); 21384 } : supportsProto ? function () { 21385 return MakeDictionary({ 21386 __proto__: null 21387 }); 21388 } : function () { 21389 return MakeDictionary({}); 21390 }, 21391 has: downLevel ? function (map, key) {
vendor: 10,794 bytes, lines 21392-21642
21392 return hasOwn.call(map, key); 21393 } : function (map, key) { 21394 return key in map; 21395 }, 21396 get: downLevel ? function (map, key) { 21397 return hasOwn.call(map, key) ? map[key] : undefined; 21398 } : function (map, key) { 21399 return map[key]; 21400 } 21401 }; 21402 // Load global or shim versions of Map, Set, and WeakMap 21403 var functionPrototype = Object.getPrototypeOf(Function); 21404 var usePolyfill = typeof process === "object" && process["env" + ""] && process["env" + ""]["REFLECT_METADATA_USE_MAP_POLYFILL"] === "true"; 21405 var _Map = !usePolyfill && typeof Map === "function" && typeof Map.prototype.entries === "function" ? Map : CreateMapPolyfill(); 21406 var _Set = !usePolyfill && typeof Set === "function" && typeof Set.prototype.entries === "function" ? Set : CreateSetPolyfill(); 21407 var _WeakMap = !usePolyfill && typeof WeakMap === "function" ? WeakMap : CreateWeakMapPolyfill(); 21408 // [[Metadata]] internal slot 21409 // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots 21410 var Metadata = new _WeakMap(); 21411 /** 21412 * Applies a set of decorators to a property of a target object. 21413 * @param decorators An array of decorators. 21414 * @param target The target object. 21415 * @param propertyKey (Optional) The property key to decorate. 21416 * @param attributes (Optional) The property descriptor for the target key. 21417 * @remarks Decorators are applied in reverse order. 21418 * @example 21419 * 21420 * class Example { 21421 * // property declarations are not part of ES6, though they are valid in TypeScript: 21422 * // static staticProperty; 21423 * // property; 21424 * 21425 * constructor(p) { } 21426 * static staticMethod(p) { } 21427 * method(p) { } 21428 * } 21429 * 21430 * // constructor 21431 * Example = Reflect.decorate(decoratorsArray, Example); 21432 * 21433 * // property (on constructor) 21434 * Reflect.decorate(decoratorsArray, Example, "staticProperty"); 21435 * 21436 * // property (on prototype) 21437 * Reflect.decorate(decoratorsArray, Example.prototype, "property"); 21438 * 21439 * // method (on constructor) 21440 * Object.defineProperty(Example, "staticMethod", 21441 * Reflect.decorate(decoratorsArray, Example, "staticMethod", 21442 * Object.getOwnPropertyDescriptor(Example, "staticMethod"))); 21443 * 21444 * // method (on prototype) 21445 * Object.defineProperty(Example.prototype, "method", 21446 * Reflect.decorate(decoratorsArray, Example.prototype, "method", 21447 * Object.getOwnPropertyDescriptor(Example.prototype, "method"))); 21448 * 21449 */ 21450 function decorate(decorators, target, propertyKey, attributes) { 21451 if (!IsUndefined(propertyKey)) { 21452 if (!IsArray(decorators)) throw new TypeError(); 21453 if (!IsObject(target)) throw new TypeError(); 21454 if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes)) throw new TypeError(); 21455 if (IsNull(attributes)) attributes = undefined; 21456 propertyKey = ToPropertyKey(propertyKey); 21457 return DecorateProperty(decorators, target, propertyKey, attributes); 21458 } else { 21459 if (!IsArray(decorators)) throw new TypeError(); 21460 if (!IsConstructor(target)) throw new TypeError(); 21461 return DecorateConstructor(decorators, target); 21462 } 21463 } 21464 exporter("decorate", decorate); 21465 // 4.1.2 Reflect.metadata(metadataKey, metadataValue) 21466 // https://rbuckton.github.io/reflect-metadata/#reflect.metadata 21467 /** 21468 * A default metadata decorator factory that can be used on a class, class member, or parameter. 21469 * @param metadataKey The key for the metadata entry. 21470 * @param metadataValue The value for the metadata entry. 21471 * @returns A decorator function. 21472 * @remarks 21473 * If `metadataKey` is already defined for the target and target key, the 21474 * metadataValue for that key will be overwritten. 21475 * @example 21476 * 21477 * // constructor 21478 * @Reflect.metadata(key, value) 21479 * class Example { 21480 * } 21481 * 21482 * // property (on constructor, TypeScript only) 21483 * class Example { 21484 * @Reflect.metadata(key, value) 21485 * static staticProperty; 21486 * } 21487 * 21488 * // property (on prototype, TypeScript only) 21489 * class Example { 21490 * @Reflect.metadata(key, value) 21491 * property; 21492 * } 21493 * 21494 * // method (on constructor) 21495 * class Example { 21496 * @Reflect.metadata(key, value) 21497 * static staticMethod() { } 21498 * } 21499 * 21500 * // method (on prototype) 21501 * class Example { 21502 * @Reflect.metadata(key, value) 21503 * method() { } 21504 * } 21505 * 21506 */ 21507 function metadata(metadataKey, metadataValue) { 21508 function decorator(target, propertyKey) { 21509 if (!IsObject(target)) throw new TypeError(); 21510 if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey)) throw new TypeError(); 21511 OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); 21512 } 21513 return decorator; 21514 } 21515 exporter("metadata", metadata); 21516 /** 21517 * Define a unique metadata entry on the target. 21518 * @param metadataKey A key used to store and retrieve metadata. 21519 * @param metadataValue A value that contains attached metadata. 21520 * @param target The target object on which to define metadata. 21521 * @param propertyKey (Optional) The property key for the target. 21522 * @example 21523 * 21524 * class Example { 21525 * // property declarations are not part of ES6, though they are valid in TypeScript: 21526 * // static staticProperty; 21527 * // property; 21528 * 21529 * constructor(p) { } 21530 * static staticMethod(p) { } 21531 * method(p) { } 21532 * } 21533 * 21534 * // constructor 21535 * Reflect.defineMetadata("custom:annotation", options, Example); 21536 * 21537 * // property (on constructor) 21538 * Reflect.defineMetadata("custom:annotation", options, Example, "staticProperty"); 21539 * 21540 * // property (on prototype) 21541 * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "property"); 21542 * 21543 * // method (on constructor) 21544 * Reflect.defineMetadata("custom:annotation", options, Example, "staticMethod"); 21545 * 21546 * // method (on prototype) 21547 * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "method"); 21548 * 21549 * // decorator factory as metadata-producing annotation. 21550 * function MyAnnotation(options): Decorator { 21551 * return (target, key?) => Reflect.defineMetadata("custom:annotation", options, target, key); 21552 * } 21553 * 21554 */ 21555 function defineMetadata(metadataKey, metadataValue, target, propertyKey) { 21556 if (!IsObject(target)) throw new TypeError(); 21557 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21558 return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); 21559 } 21560 exporter("defineMetadata", defineMetadata); 21561 /** 21562 * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. 21563 * @param metadataKey A key used to store and retrieve metadata. 21564 * @param target The target object on which the metadata is defined. 21565 * @param propertyKey (Optional) The property key for the target. 21566 * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. 21567 * @example 21568 * 21569 * class Example { 21570 * // property declarations are not part of ES6, though they are valid in TypeScript: 21571 * // static staticProperty; 21572 * // property; 21573 * 21574 * constructor(p) { } 21575 * static staticMethod(p) { } 21576 * method(p) { } 21577 * } 21578 * 21579 * // constructor 21580 * result = Reflect.hasMetadata("custom:annotation", Example); 21581 * 21582 * // property (on constructor) 21583 * result = Reflect.hasMetadata("custom:annotation", Example, "staticProperty"); 21584 * 21585 * // property (on prototype) 21586 * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "property"); 21587 * 21588 * // method (on constructor) 21589 * result = Reflect.hasMetadata("custom:annotation", Example, "staticMethod"); 21590 * 21591 * // method (on prototype) 21592 * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "method"); 21593 * 21594 */ 21595 function hasMetadata(metadataKey, target, propertyKey) { 21596 if (!IsObject(target)) throw new TypeError(); 21597 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21598 return OrdinaryHasMetadata(metadataKey, target, propertyKey); 21599 } 21600 exporter("hasMetadata", hasMetadata); 21601 /** 21602 * Gets a value indicating whether the target object has the provided metadata key defined. 21603 * @param metadataKey A key used to store and retrieve metadata. 21604 * @param target The target object on which the metadata is defined. 21605 * @param propertyKey (Optional) The property key for the target. 21606 * @returns `true` if the metadata key was defined on the target object; otherwise, `false`. 21607 * @example 21608 * 21609 * class Example { 21610 * // property declarations are not part of ES6, though they are valid in TypeScript: 21611 * // static staticProperty; 21612 * // property; 21613 * 21614 * constructor(p) { } 21615 * static staticMethod(p) { } 21616 * method(p) { } 21617 * } 21618 * 21619 * // constructor 21620 * result = Reflect.hasOwnMetadata("custom:annotation", Example); 21621 * 21622 * // property (on constructor) 21623 * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticProperty"); 21624 * 21625 * // property (on prototype) 21626 * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "property"); 21627 * 21628 * // method (on constructor) 21629 * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticMethod"); 21630 * 21631 * // method (on prototype) 21632 * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "method"); 21633 * 21634 */ 21635 function hasOwnMetadata(metadataKey, target, propertyKey) { 21636 if (!IsObject(target)) throw new TypeError(); 21637 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21638 return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey); 21639 } 21640 exporter("hasOwnMetadata", hasOwnMetadata); 21641 /** 21642 * Gets the metadata value for the provided metadata key on the target object or its prototype chain.
21643 * @param metadataKey A key used to store and retrieve metadata. 21644 * @param target The target object on which the metadata is defined. 21645 * @param propertyKey (Optional) The property key for the target. 21646 * @returns The metadata value for the metadata key if found; otherwise, `undefined`. 21647 * @example 21648 * 21649 * class Example { 21650 * // property declarations are not part of ES6, though they are valid in TypeScript: 21651 * // static staticProperty; 21652 * // property; 21653 * 21654 * constructor(p) { } 21655 * static staticMethod(p) { } 21656 * method(p) { } 21657 * } 21658 * 21659 * // constructor 21660 * result = Reflect.getMetadata("custom:annotation", Example); 21661 * 21662 * // property (on constructor) 21663 * result = Reflect.getMetadata("custom:annotation", Example, "staticProperty"); 21664 * 21665 * // property (on prototype) 21666 * result = Reflect.getMetadata("custom:annotation", Example.prototype, "property"); 21667 * 21668 * // method (on constructor) 21669 * result = Reflect.getMetadata("custom:annotation", Example, "staticMethod"); 21670 * 21671 * // method (on prototype) 21672 * result = Reflect.getMetadata("custom:annotation", Example.prototype, "method"); 21673 * 21674 */ 21675 function getMetadata(metadataKey, target, propertyKey) { 21676 if (!IsObject(target)) throw new TypeError(); 21677 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21678 return OrdinaryGetMetadata(metadataKey, target, propertyKey); 21679 } 21680 exporter("getMetadata", getMetadata); 21681 /** 21682 * Gets the metadata value for the provided metadata key on the target object. 21683 * @param metadataKey A key used to store and retrieve metadata. 21684 * @param target The target object on which the metadata is defined. 21685 * @param propertyKey (Optional) The property key for the target. 21686 * @returns The metadata value for the metadata key if found; otherwise, `undefined`. 21687 * @example 21688 * 21689 * class Example { 21690 * // property declarations are not part of ES6, though they are valid in TypeScript: 21691 * // static staticProperty; 21692 * // property; 21693 * 21694 * constructor(p) { } 21695 * static staticMethod(p) { } 21696 * method(p) { } 21697 * } 21698 * 21699 * // constructor 21700 * result = Reflect.getOwnMetadata("custom:annotation", Example); 21701 * 21702 * // property (on constructor) 21703 * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticProperty"); 21704 * 21705 * // property (on prototype) 21706 * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "property"); 21707 * 21708 * // method (on constructor) 21709 * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticMethod"); 21710 * 21711 * // method (on prototype) 21712 * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "method"); 21713 * 21714 */ 21715 function getOwnMetadata(metadataKey, target, propertyKey) { 21716 if (!IsObject(target)) throw new TypeError(); 21717 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21718 return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey); 21719 } 21720 exporter("getOwnMetadata", getOwnMetadata); 21721 /** 21722 * Gets the metadata keys defined on the target object or its prototype chain. 21723 * @param target The target object on which the metadata is defined. 21724 * @param propertyKey (Optional) The property key for the target. 21725 * @returns An array of unique metadata keys. 21726 * @example 21727 * 21728 * class Example { 21729 * // property declarations are not part of ES6, though they are valid in TypeScript: 21730 * // static staticProperty; 21731 * // property; 21732 * 21733 * constructor(p) { } 21734 * static staticMethod(p) { } 21735 * method(p) { } 21736 * } 21737 * 21738 * // constructor 21739 * result = Reflect.getMetadataKeys(Example); 21740 * 21741 * // property (on constructor) 21742 * result = Reflect.getMetadataKeys(Example, "staticProperty"); 21743 * 21744 * // property (on prototype) 21745 * result = Reflect.getMetadataKeys(Example.prototype, "property"); 21746 * 21747 * // method (on constructor) 21748 * result = Reflect.getMetadataKeys(Example, "staticMethod"); 21749 * 21750 * // method (on prototype) 21751 * result = Reflect.getMetadataKeys(Example.prototype, "method"); 21752 * 21753 */ 21754 function getMetadataKeys(target, propertyKey) { 21755 if (!IsObject(target)) throw new TypeError(); 21756 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21757 return OrdinaryMetadataKeys(target, propertyKey); 21758 } 21759 exporter("getMetadataKeys", getMetadataKeys); 21760 /** 21761 * Gets the unique metadata keys defined on the target object. 21762 * @param target The target object on which the metadata is defined. 21763 * @param propertyKey (Optional) The property key for the target. 21764 * @returns An array of unique metadata keys. 21765 * @example 21766 * 21767 * class Example { 21768 * // property declarations are not part of ES6, though they are valid in TypeScript: 21769 * // static staticProperty; 21770 * // property; 21771 * 21772 * constructor(p) { } 21773 * static staticMethod(p) { } 21774 * method(p) { } 21775 * } 21776 * 21777 * // constructor 21778 * result = Reflect.getOwnMetadataKeys(Example); 21779 * 21780 * // property (on constructor) 21781 * result = Reflect.getOwnMetadataKeys(Example, "staticProperty"); 21782 * 21783 * // property (on prototype) 21784 * result = Reflect.getOwnMetadataKeys(Example.prototype, "property"); 21785 * 21786 * // method (on constructor) 21787 * result = Reflect.getOwnMetadataKeys(Example, "staticMethod"); 21788 * 21789 * // method (on prototype) 21790 * result = Reflect.getOwnMetadataKeys(Example.prototype, "method"); 21791 * 21792 */ 21793 function getOwnMetadataKeys(target, propertyKey) { 21794 if (!IsObject(target)) throw new TypeError(); 21795 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21796 return OrdinaryOwnMetadataKeys(target, propertyKey); 21797 } 21798 exporter("getOwnMetadataKeys", getOwnMetadataKeys); 21799 /** 21800 * Deletes the metadata entry from the target object with the provided key. 21801 * @param metadataKey A key used to store and retrieve metadata. 21802 * @param target The target object on which the metadata is defined. 21803 * @param propertyKey (Optional) The property key for the target. 21804 * @returns `true` if the metadata entry was found and deleted; otherwise, false. 21805 * @example 21806 * 21807 * class Example { 21808 * // property declarations are not part of ES6, though they are valid in TypeScript: 21809 * // static staticProperty; 21810 * // property; 21811 * 21812 * constructor(p) { } 21813 * static staticMethod(p) { } 21814 * method(p) { } 21815 * } 21816 * 21817 * // constructor 21818 * result = Reflect.deleteMetadata("custom:annotation", Example); 21819 * 21820 * // property (on constructor) 21821 * result = Reflect.deleteMetadata("custom:annotation", Example, "staticProperty"); 21822 * 21823 * // property (on prototype) 21824 * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "property"); 21825 * 21826 * // method (on constructor) 21827 * result = Reflect.deleteMetadata("custom:annotation", Example, "staticMethod"); 21828 * 21829 * // method (on prototype) 21830 * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "method"); 21831 * 21832 */ 21833 function deleteMetadata(metadataKey, target, propertyKey) { 21834 if (!IsObject(target)) throw new TypeError(); 21835 if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); 21836 var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/false); 21837 if (IsUndefined(metadataMap)) return false;
vendor: 7,326 bytes, lines 21838-22033
21838 if (!metadataMap.delete(metadataKey)) return false; 21839 if (metadataMap.size > 0) return true; 21840 var targetMetadata = Metadata.get(target); 21841 targetMetadata.delete(propertyKey); 21842 if (targetMetadata.size > 0) return true; 21843 Metadata.delete(target); 21844 return true; 21845 } 21846 exporter("deleteMetadata", deleteMetadata); 21847 function DecorateConstructor(decorators, target) { 21848 for (var i = decorators.length - 1; i >= 0; --i) { 21849 var decorator = decorators[i]; 21850 var decorated = decorator(target); 21851 if (!IsUndefined(decorated) && !IsNull(decorated)) { 21852 if (!IsConstructor(decorated)) throw new TypeError(); 21853 target = decorated; 21854 } 21855 } 21856 return target; 21857 } 21858 function DecorateProperty(decorators, target, propertyKey, descriptor) { 21859 for (var i = decorators.length - 1; i >= 0; --i) { 21860 var decorator = decorators[i]; 21861 var decorated = decorator(target, propertyKey, descriptor); 21862 if (!IsUndefined(decorated) && !IsNull(decorated)) { 21863 if (!IsObject(decorated)) throw new TypeError(); 21864 descriptor = decorated; 21865 } 21866 } 21867 return descriptor; 21868 } 21869 function GetOrCreateMetadataMap(O, P, Create) { 21870 var targetMetadata = Metadata.get(O); 21871 if (IsUndefined(targetMetadata)) { 21872 if (!Create) return undefined; 21873 targetMetadata = new _Map(); 21874 Metadata.set(O, targetMetadata); 21875 } 21876 var metadataMap = targetMetadata.get(P); 21877 if (IsUndefined(metadataMap)) { 21878 if (!Create) return undefined; 21879 metadataMap = new _Map(); 21880 targetMetadata.set(P, metadataMap); 21881 } 21882 return metadataMap; 21883 } 21884 // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P) 21885 // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata 21886 function OrdinaryHasMetadata(MetadataKey, O, P) { 21887 var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); 21888 if (hasOwn) return true; 21889 var parent = OrdinaryGetPrototypeOf(O); 21890 if (!IsNull(parent)) return OrdinaryHasMetadata(MetadataKey, parent, P); 21891 return false; 21892 } 21893 // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P) 21894 // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata 21895 function OrdinaryHasOwnMetadata(MetadataKey, O, P) { 21896 var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/false); 21897 if (IsUndefined(metadataMap)) return false; 21898 return ToBoolean(metadataMap.has(MetadataKey)); 21899 } 21900 // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P) 21901 // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata 21902 function OrdinaryGetMetadata(MetadataKey, O, P) { 21903 var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); 21904 if (hasOwn) return OrdinaryGetOwnMetadata(MetadataKey, O, P); 21905 var parent = OrdinaryGetPrototypeOf(O); 21906 if (!IsNull(parent)) return OrdinaryGetMetadata(MetadataKey, parent, P); 21907 return undefined; 21908 } 21909 // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P) 21910 // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata 21911 function OrdinaryGetOwnMetadata(MetadataKey, O, P) { 21912 var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/false); 21913 if (IsUndefined(metadataMap)) return undefined; 21914 return metadataMap.get(MetadataKey); 21915 } 21916 // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) 21917 // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata 21918 function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { 21919 var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/true); 21920 metadataMap.set(MetadataKey, MetadataValue); 21921 } 21922 // 3.1.6.1 OrdinaryMetadataKeys(O, P) 21923 // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys 21924 function OrdinaryMetadataKeys(O, P) { 21925 var ownKeys = OrdinaryOwnMetadataKeys(O, P); 21926 var parent = OrdinaryGetPrototypeOf(O); 21927 if (parent === null) return ownKeys; 21928 var parentKeys = OrdinaryMetadataKeys(parent, P); 21929 if (parentKeys.length <= 0) return ownKeys; 21930 if (ownKeys.length <= 0) return parentKeys; 21931 var set = new _Set(); 21932 var keys = []; 21933 for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) { 21934 var key = ownKeys_1[_i]; 21935 var hasKey = set.has(key); 21936 if (!hasKey) { 21937 set.add(key); 21938 keys.push(key); 21939 } 21940 } 21941 for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) { 21942 var key = parentKeys_1[_a]; 21943 var hasKey = set.has(key); 21944 if (!hasKey) { 21945 set.add(key); 21946 keys.push(key); 21947 } 21948 } 21949 return keys; 21950 } 21951 // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P) 21952 // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys 21953 function OrdinaryOwnMetadataKeys(O, P) { 21954 var keys = []; 21955 var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/false); 21956 if (IsUndefined(metadataMap)) return keys; 21957 var keysObj = metadataMap.keys(); 21958 var iterator = GetIterator(keysObj); 21959 var k = 0; 21960 while (true) { 21961 var next = IteratorStep(iterator); 21962 if (!next) { 21963 keys.length = k; 21964 return keys; 21965 } 21966 var nextValue = IteratorValue(next); 21967 try { 21968 keys[k] = nextValue; 21969 } catch (e) { 21970 try { 21971 IteratorClose(iterator); 21972 } finally { 21973 throw e; 21974 } 21975 } 21976 k++; 21977 } 21978 } 21979 // 6 ECMAScript Data Typ0es and Values 21980 // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values 21981 function Type(x) { 21982 if (x === null) return 1 /* Null */; 21983 switch (typeof x) { 21984 case "undefined": 21985 return 0 /* Undefined */; 21986 case "boolean": 21987 return 2 /* Boolean */; 21988 case "string": 21989 return 3 /* String */; 21990 case "symbol": 21991 return 4 /* Symbol */; 21992 case "number": 21993 return 5 /* Number */; 21994 case "object": 21995 return x === null ? 1 /* Null */ : 6 /* Object */; 21996 default: 21997 return 6 /* Object */; 21998 } 21999 } 22000 // 6.1.1 The Undefined Type 22001 // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type 22002 function IsUndefined(x) { 22003 return x === undefined; 22004 } 22005 // 6.1.2 The Null Type 22006 // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type 22007 function IsNull(x) { 22008 return x === null; 22009 } 22010 // 6.1.5 The Symbol Type 22011 // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type 22012 function IsSymbol(x) { 22013 return typeof x === "symbol"; 22014 } 22015 // 6.1.7 The Object Type 22016 // https://tc39.github.io/ecma262/#sec-object-type 22017 function IsObject(x) { 22018 return typeof x === "object" ? x !== null : typeof x === "function"; 22019 } 22020 // 7.1 Type Conversion 22021 // https://tc39.github.io/ecma262/#sec-type-conversion 22022 // 7.1.1 ToPrimitive(input [, PreferredType]) 22023 // https://tc39.github.io/ecma262/#sec-toprimitive 22024 function ToPrimitive(input, PreferredType) { 22025 switch (Type(input)) { 22026 case 0 /* Undefined */: 22027 return input; 22028 case 1 /* Null */: 22029 return input; 22030 case 2 /* Boolean */: 22031 return input; 22032 case 3 /* String */: 22033 return input;
vendor: 5,604 bytes, lines 22034-22172
22034 case 4 /* Symbol */: 22035 return input; 22036 case 5 /* Number */: 22037 return input; 22038 } 22039 var hint = PreferredType === 3 /* String */ ? "string" : PreferredType === 5 /* Number */ ? "number" : "default"; 22040 var exoticToPrim = GetMethod(input, toPrimitiveSymbol); 22041 if (exoticToPrim !== undefined) { 22042 var result = exoticToPrim.call(input, hint); 22043 if (IsObject(result)) throw new TypeError(); 22044 return result; 22045 } 22046 return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint); 22047 } 22048 // 7.1.1.1 OrdinaryToPrimitive(O, hint) 22049 // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive 22050 function OrdinaryToPrimitive(O, hint) { 22051 if (hint === "string") { 22052 var toString_1 = O.toString; 22053 if (IsCallable(toString_1)) { 22054 var result = toString_1.call(O); 22055 if (!IsObject(result)) return result; 22056 } 22057 var valueOf = O.valueOf; 22058 if (IsCallable(valueOf)) { 22059 var result = valueOf.call(O); 22060 if (!IsObject(result)) return result; 22061 } 22062 } else { 22063 var valueOf = O.valueOf; 22064 if (IsCallable(valueOf)) { 22065 var result = valueOf.call(O); 22066 if (!IsObject(result)) return result; 22067 } 22068 var toString_2 = O.toString; 22069 if (IsCallable(toString_2)) { 22070 var result = toString_2.call(O); 22071 if (!IsObject(result)) return result; 22072 } 22073 } 22074 throw new TypeError(); 22075 } 22076 // 7.1.2 ToBoolean(argument) 22077 // https://tc39.github.io/ecma262/2016/#sec-toboolean 22078 function ToBoolean(argument) { 22079 return !!argument; 22080 } 22081 // 7.1.12 ToString(argument) 22082 // https://tc39.github.io/ecma262/#sec-tostring 22083 function ToString(argument) { 22084 return "" + argument; 22085 } 22086 // 7.1.14 ToPropertyKey(argument) 22087 // https://tc39.github.io/ecma262/#sec-topropertykey 22088 function ToPropertyKey(argument) { 22089 var key = ToPrimitive(argument, 3 /* String */); 22090 if (IsSymbol(key)) return key; 22091 return ToString(key); 22092 } 22093 // 7.2 Testing and Comparison Operations 22094 // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations 22095 // 7.2.2 IsArray(argument) 22096 // https://tc39.github.io/ecma262/#sec-isarray 22097 function IsArray(argument) { 22098 return Array.isArray ? Array.isArray(argument) : argument instanceof Object ? argument instanceof Array : Object.prototype.toString.call(argument) === "[object Array]"; 22099 } 22100 // 7.2.3 IsCallable(argument) 22101 // https://tc39.github.io/ecma262/#sec-iscallable 22102 function IsCallable(argument) { 22103 // NOTE: This is an approximation as we cannot check for [[Call]] internal method. 22104 return typeof argument === "function"; 22105 } 22106 // 7.2.4 IsConstructor(argument) 22107 // https://tc39.github.io/ecma262/#sec-isconstructor 22108 function IsConstructor(argument) { 22109 // NOTE: This is an approximation as we cannot check for [[Construct]] internal method. 22110 return typeof argument === "function"; 22111 } 22112 // 7.2.7 IsPropertyKey(argument) 22113 // https://tc39.github.io/ecma262/#sec-ispropertykey 22114 function IsPropertyKey(argument) { 22115 switch (Type(argument)) { 22116 case 3 /* String */: 22117 return true; 22118 case 4 /* Symbol */: 22119 return true; 22120 default: 22121 return false; 22122 } 22123 } 22124 // 7.3 Operations on Objects 22125 // https://tc39.github.io/ecma262/#sec-operations-on-objects 22126 // 7.3.9 GetMethod(V, P) 22127 // https://tc39.github.io/ecma262/#sec-getmethod 22128 function GetMethod(V, P) { 22129 var func = V[P]; 22130 if (func === undefined || func === null) return undefined; 22131 if (!IsCallable(func)) throw new TypeError(); 22132 return func; 22133 } 22134 // 7.4 Operations on Iterator Objects 22135 // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects 22136 function GetIterator(obj) { 22137 var method = GetMethod(obj, iteratorSymbol); 22138 if (!IsCallable(method)) throw new TypeError(); // from Call 22139 var iterator = method.call(obj); 22140 if (!IsObject(iterator)) throw new TypeError(); 22141 return iterator; 22142 } 22143 // 7.4.4 IteratorValue(iterResult) 22144 // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue 22145 function IteratorValue(iterResult) { 22146 return iterResult.value; 22147 } 22148 // 7.4.5 IteratorStep(iterator) 22149 // https://tc39.github.io/ecma262/#sec-iteratorstep 22150 function IteratorStep(iterator) { 22151 var result = iterator.next(); 22152 return result.done ? false : result; 22153 } 22154 // 7.4.6 IteratorClose(iterator, completion) 22155 // https://tc39.github.io/ecma262/#sec-iteratorclose 22156 function IteratorClose(iterator) { 22157 var f = iterator["return"]; 22158 if (f) f.call(iterator); 22159 } 22160 // 9.1 Ordinary Object Internal Methods and Internal Slots 22161 // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots 22162 // 9.1.1.1 OrdinaryGetPrototypeOf(O) 22163 // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof 22164 function OrdinaryGetPrototypeOf(O) { 22165 var proto = Object.getPrototypeOf(O); 22166 if (typeof O !== "function" || O === functionPrototype) return proto; 22167 // TypeScript doesn't set __proto__ in ES5, as it's non-standard. 22168 // Try to determine the superclass constructor. Compatible implementations 22169 // must either set __proto__ on a subclass constructor to the superclass constructor, 22170 // or ensure each class has a valid `constructor` property on its prototype that 22171 // points back to the constructor. 22172 // If this is not the same as Function.[[Prototype]], then this is definately inherited.
vendor: 10,182 bytes, lines 22173-22467
22173 // This is the case when in ES6 or when using __proto__ in a compatible browser. 22174 if (proto !== functionPrototype) return proto; 22175 // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage. 22176 var prototype = O.prototype; 22177 var prototypeProto = prototype && Object.getPrototypeOf(prototype); 22178 if (prototypeProto == null || prototypeProto === Object.prototype) return proto; 22179 // If the constructor was not a function, then we cannot determine the heritage. 22180 var constructor = prototypeProto.constructor; 22181 if (typeof constructor !== "function") return proto; 22182 // If we have some kind of self-reference, then we cannot determine the heritage. 22183 if (constructor === O) return proto; 22184 // we have a pretty good guess at the heritage. 22185 return constructor; 22186 } 22187 // naive Map shim 22188 function CreateMapPolyfill() { 22189 var cacheSentinel = {}; 22190 var arraySentinel = []; 22191 var MapIterator = /** @class */function () { 22192 function MapIterator(keys, values, selector) { 22193 this._index = 0; 22194 this._keys = keys; 22195 this._values = values; 22196 this._selector = selector; 22197 } 22198 MapIterator.prototype["@@iterator"] = function () { 22199 return this; 22200 }; 22201 MapIterator.prototype[iteratorSymbol] = function () { 22202 return this; 22203 }; 22204 MapIterator.prototype.next = function () { 22205 var index = this._index; 22206 if (index >= 0 && index < this._keys.length) { 22207 var result = this._selector(this._keys[index], this._values[index]); 22208 if (index + 1 >= this._keys.length) { 22209 this._index = -1; 22210 this._keys = arraySentinel; 22211 this._values = arraySentinel; 22212 } else { 22213 this._index++; 22214 } 22215 return { 22216 value: result, 22217 done: false 22218 }; 22219 } 22220 return { 22221 value: undefined, 22222 done: true 22223 }; 22224 }; 22225 MapIterator.prototype.throw = function (error) { 22226 if (this._index >= 0) { 22227 this._index = -1; 22228 this._keys = arraySentinel; 22229 this._values = arraySentinel; 22230 } 22231 throw error; 22232 }; 22233 MapIterator.prototype.return = function (value) { 22234 if (this._index >= 0) { 22235 this._index = -1; 22236 this._keys = arraySentinel; 22237 this._values = arraySentinel; 22238 } 22239 return { 22240 value: value, 22241 done: true 22242 }; 22243 }; 22244 return MapIterator; 22245 }(); 22246 return /** @class */function () { 22247 function Map() { 22248 this._keys = []; 22249 this._values = []; 22250 this._cacheKey = cacheSentinel; 22251 this._cacheIndex = -2; 22252 } 22253 Object.defineProperty(Map.prototype, "size", { 22254 get: function () { 22255 return this._keys.length; 22256 }, 22257 enumerable: true, 22258 configurable: true 22259 }); 22260 Map.prototype.has = function (key) { 22261 return this._find(key, /*insert*/false) >= 0; 22262 }; 22263 Map.prototype.get = function (key) { 22264 var index = this._find(key, /*insert*/false); 22265 return index >= 0 ? this._values[index] : undefined; 22266 }; 22267 Map.prototype.set = function (key, value) { 22268 var index = this._find(key, /*insert*/true); 22269 this._values[index] = value; 22270 return this; 22271 }; 22272 Map.prototype.delete = function (key) { 22273 var index = this._find(key, /*insert*/false); 22274 if (index >= 0) { 22275 var size = this._keys.length; 22276 for (var i = index + 1; i < size; i++) { 22277 this._keys[i - 1] = this._keys[i]; 22278 this._values[i - 1] = this._values[i]; 22279 } 22280 this._keys.length--; 22281 this._values.length--; 22282 if (key === this._cacheKey) { 22283 this._cacheKey = cacheSentinel; 22284 this._cacheIndex = -2; 22285 } 22286 return true; 22287 } 22288 return false; 22289 }; 22290 Map.prototype.clear = function () { 22291 this._keys.length = 0; 22292 this._values.length = 0; 22293 this._cacheKey = cacheSentinel; 22294 this._cacheIndex = -2; 22295 }; 22296 Map.prototype.keys = function () { 22297 return new MapIterator(this._keys, this._values, getKey); 22298 }; 22299 Map.prototype.values = function () { 22300 return new MapIterator(this._keys, this._values, getValue); 22301 }; 22302 Map.prototype.entries = function () { 22303 return new MapIterator(this._keys, this._values, getEntry); 22304 }; 22305 Map.prototype["@@iterator"] = function () { 22306 return this.entries(); 22307 }; 22308 Map.prototype[iteratorSymbol] = function () { 22309 return this.entries(); 22310 }; 22311 Map.prototype._find = function (key, insert) { 22312 if (this._cacheKey !== key) { 22313 this._cacheIndex = this._keys.indexOf(this._cacheKey = key); 22314 } 22315 if (this._cacheIndex < 0 && insert) { 22316 this._cacheIndex = this._keys.length; 22317 this._keys.push(key); 22318 this._values.push(undefined); 22319 } 22320 return this._cacheIndex; 22321 }; 22322 return Map; 22323 }(); 22324 function getKey(key, _) { 22325 return key; 22326 } 22327 function getValue(_, value) { 22328 return value; 22329 } 22330 function getEntry(key, value) { 22331 return [key, value]; 22332 } 22333 } 22334 // naive Set shim 22335 function CreateSetPolyfill() { 22336 return /** @class */function () { 22337 function Set() { 22338 this._map = new _Map(); 22339 } 22340 Object.defineProperty(Set.prototype, "size", { 22341 get: function () { 22342 return this._map.size; 22343 }, 22344 enumerable: true, 22345 configurable: true 22346 }); 22347 Set.prototype.has = function (value) { 22348 return this._map.has(value); 22349 }; 22350 Set.prototype.add = function (value) { 22351 return this._map.set(value, value), this; 22352 }; 22353 Set.prototype.delete = function (value) { 22354 return this._map.delete(value); 22355 }; 22356 Set.prototype.clear = function () { 22357 this._map.clear(); 22358 }; 22359 Set.prototype.keys = function () { 22360 return this._map.keys(); 22361 }; 22362 Set.prototype.values = function () { 22363 return this._map.values(); 22364 }; 22365 Set.prototype.entries = function () { 22366 return this._map.entries(); 22367 }; 22368 Set.prototype["@@iterator"] = function () { 22369 return this.keys(); 22370 }; 22371 Set.prototype[iteratorSymbol] = function () { 22372 return this.keys(); 22373 }; 22374 return Set; 22375 }(); 22376 } 22377 // naive WeakMap shim 22378 function CreateWeakMapPolyfill() { 22379 var UUID_SIZE = 16; 22380 var keys = HashMap.create(); 22381 var rootKey = CreateUniqueKey(); 22382 return /** @class */function () { 22383 function WeakMap() { 22384 this._key = CreateUniqueKey(); 22385 } 22386 WeakMap.prototype.has = function (target) { 22387 var table = GetOrCreateWeakMapTable(target, /*create*/false); 22388 return table !== undefined ? HashMap.has(table, this._key) : false; 22389 }; 22390 WeakMap.prototype.get = function (target) { 22391 var table = GetOrCreateWeakMapTable(target, /*create*/false); 22392 return table !== undefined ? HashMap.get(table, this._key) : undefined; 22393 }; 22394 WeakMap.prototype.set = function (target, value) { 22395 var table = GetOrCreateWeakMapTable(target, /*create*/true); 22396 table[this._key] = value; 22397 return this; 22398 }; 22399 WeakMap.prototype.delete = function (target) { 22400 var table = GetOrCreateWeakMapTable(target, /*create*/false); 22401 return table !== undefined ? delete table[this._key] : false; 22402 }; 22403 WeakMap.prototype.clear = function () { 22404 // NOTE: not a real clear, just makes the previous data unreachable 22405 this._key = CreateUniqueKey(); 22406 }; 22407 return WeakMap; 22408 }(); 22409 function CreateUniqueKey() { 22410 var key; 22411 do key = "@@WeakMap@@" + CreateUUID(); while (HashMap.has(keys, key)); 22412 keys[key] = true; 22413 return key; 22414 } 22415 function GetOrCreateWeakMapTable(target, create) { 22416 if (!hasOwn.call(target, rootKey)) { 22417 if (!create) return undefined; 22418 Object.defineProperty(target, rootKey, { 22419 value: HashMap.create() 22420 }); 22421 } 22422 return target[rootKey]; 22423 } 22424 function FillRandomBytes(buffer, size) { 22425 for (var i = 0; i < size; ++i) buffer[i] = Math.random() * 0xff | 0; 22426 return buffer; 22427 } 22428 function GenRandomBytes(size) { 22429 if (typeof Uint8Array === "function") { 22430 if (typeof crypto !== "undefined") return crypto.getRandomValues(new Uint8Array(size)); 22431 if (typeof msCrypto !== "undefined") return msCrypto.getRandomValues(new Uint8Array(size)); 22432 return FillRandomBytes(new Uint8Array(size), size); 22433 } 22434 return FillRandomBytes(new Array(size), size); 22435 } 22436 function CreateUUID() { 22437 var data = GenRandomBytes(UUID_SIZE); 22438 // mark as random - RFC 4122 § 4.4 22439 data[6] = data[6] & 0x4f | 0x40; 22440 data[8] = data[8] & 0xbf | 0x80; 22441 var result = ""; 22442 for (var offset = 0; offset < UUID_SIZE; ++offset) { 22443 var byte = data[offset]; 22444 if (offset === 4 || offset === 6 || offset === 8) result += "-"; 22445 if (byte < 16) result += "0"; 22446 result += byte.toString(16).toLowerCase(); 22447 } 22448 return result; 22449 } 22450 } 22451 // uses a heuristic used by v8 and chakra to force an object into dictionary mode. 22452 function MakeDictionary(obj) { 22453 obj.__ = undefined; 22454 delete obj.__; 22455 return obj; 22456 } 22457 }); 22458})(Reflect || (Reflect = {})); 22459 22460/***/ }), 22461 22462/***/ 9912: 22463/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 22464 22465// style-loader: Adds some css to the DOM by adding a <style> tag 22466 22467// load the styles
vendor: 5,755 bytes, lines 22468-22614
22468var content = __webpack_require__(8993); 22469if(content.__esModule) content = content.default; 22470if(typeof content === 'string') content = [[module.id, content, '']]; 22471if(content.locals) module.exports = content.locals; 22472// add the styles to the DOM 22473var add = (__webpack_require__(8449)/* ["default"] */ .A) 22474var update = add("0215468b", content, false, {}); 22475// Hot Module Replacement 22476if(false) {} 22477 22478/***/ }) 22479 22480/******/ }); 22481/************************************************************************/ 22482/******/ // The module cache 22483/******/ var __webpack_module_cache__ = {}; 22484/******/ 22485/******/ // The require function 22486/******/ function __webpack_require__(moduleId) { 22487/******/ // Check if module is in cache 22488/******/ var cachedModule = __webpack_module_cache__[moduleId]; 22489/******/ if (cachedModule !== undefined) { 22490/******/ return cachedModule.exports; 22491/******/ } 22492/******/ // Create a new module (and put it into the cache) 22493/******/ var module = __webpack_module_cache__[moduleId] = { 22494/******/ id: moduleId, 22495/******/ // no module.loaded needed 22496/******/ exports: {} 22497/******/ }; 22498/******/ 22499/******/ // Execute the module function 22500/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 22501/******/ 22502/******/ // Return the exports of the module 22503/******/ return module.exports; 22504/******/ } 22505/******/ 22506/******/ // expose the modules object (__webpack_modules__) 22507/******/ __webpack_require__.m = __webpack_modules__; 22508/******/ 22509/************************************************************************/ 22510/******/ /* webpack/runtime/compat get default export */ 22511/******/ (() => { 22512/******/ // getDefaultExport function for compatibility with non-harmony modules 22513/******/ __webpack_require__.n = (module) => { 22514/******/ var getter = module && module.__esModule ? 22515/******/ () => (module['default']) : 22516/******/ () => (module); 22517/******/ __webpack_require__.d(getter, { a: getter }); 22518/******/ return getter; 22519/******/ }; 22520/******/ })(); 22521/******/ 22522/******/ /* webpack/runtime/define property getters */ 22523/******/ (() => { 22524/******/ // define getter functions for harmony exports 22525/******/ __webpack_require__.d = (exports, definition) => { 22526/******/ for(var key in definition) { 22527/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 22528/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 22529/******/ } 22530/******/ } 22531/******/ }; 22532/******/ })(); 22533/******/ 22534/******/ /* webpack/runtime/ensure chunk */ 22535/******/ (() => { 22536/******/ __webpack_require__.f = {}; 22537/******/ // This file contains only the entry chunk. 22538/******/ // The chunk loading function for additional chunks 22539/******/ __webpack_require__.e = (chunkId) => { 22540/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { 22541/******/ __webpack_require__.f[key](chunkId, promises); 22542/******/ return promises; 22543/******/ }, [])); 22544/******/ }; 22545/******/ })(); 22546/******/ 22547/******/ /* webpack/runtime/get javascript chunk filename */ 22548/******/ (() => { 22549/******/ // This function allow to reference async chunks 22550/******/ __webpack_require__.u = (chunkId) => { 22551/******/ // return url for filenames based on template 22552/******/ return "" + "vehicleCompare" + "Bundle.js"; 22553/******/ }; 22554/******/ })(); 22555/******/ 22556/******/ /* webpack/runtime/get mini-css chunk filename */ 22557/******/ (() => { 22558/******/ // This function allow to reference async chunks 22559/******/ __webpack_require__.miniCssF = (chunkId) => { 22560/******/ // return url for filenames based on template 22561/******/ return "" + "vehicleCompare" + ".min.css"; 22562/******/ }; 22563/******/ })(); 22564/******/ 22565/******/ /* webpack/runtime/global */ 22566/******/ (() => { 22567/******/ __webpack_require__.g = (function() { 22568/******/ if (typeof globalThis === 'object') return globalThis; 22569/******/ try { 22570/******/ return this || new Function('return this')(); 22571/******/ } catch (e) { 22572/******/ if (typeof window === 'object') return window; 22573/******/ } 22574/******/ })(); 22575/******/ })(); 22576/******/ 22577/******/ /* webpack/runtime/hasOwnProperty shorthand */ 22578/******/ (() => { 22579/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 22580/******/ })(); 22581/******/ 22582/******/ /* webpack/runtime/load script */ 22583/******/ (() => { 22584/******/ var inProgress = {}; 22585/******/ var dataWebpackPrefix = "vhcliaa:"; 22586/******/ // loadScript function to load a script via script tag 22587/******/ __webpack_require__.l = (url, done, key, chunkId) => { 22588/******/ if(inProgress[url]) { inProgress[url].push(done); return; } 22589/******/ var script, needAttach; 22590/******/ if(key !== undefined) { 22591/******/ var scripts = document.getElementsByTagName("script"); 22592/******/ for(var i = 0; i < scripts.length; i++) { 22593/******/ var s = scripts[i]; 22594/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; } 22595/******/ } 22596/******/ } 22597/******/ if(!script) { 22598/******/ needAttach = true; 22599/******/ script = document.createElement('script'); 22600/******/ 22601/******/ script.charset = 'utf-8'; 22602/******/ script.timeout = 120; 22603/******/ if (__webpack_require__.nc) { 22604/******/ script.setAttribute("nonce", __webpack_require__.nc); 22605/******/ } 22606/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key); 22607/******/ 22608/******/ script.src = url; 22609/******/ } 22610/******/ inProgress[url] = [done]; 22611/******/ var onScriptComplete = (prev, event) => { 22612/******/ // avoid mem leaks in IE. 22613/******/ script.onerror = script.onload = null; 22614/******/ clearTimeout(timeout);
22615/******/ var doneFns = inProgress[url]; 22616/******/ delete inProgress[url]; 22617/******/ script.parentNode && script.parentNode.removeChild(script); 22618/******/ doneFns && doneFns.forEach((fn) => (fn(event))); 22619/******/ if(prev) return prev(event); 22620/******/ } 22621/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000); 22622/******/ script.onerror = onScriptComplete.bind(null, script.onerror); 22623/******/ script.onload = onScriptComplete.bind(null, script.onload); 22624/******/ needAttach && document.head.appendChild(script); 22625/******/ }; 22626/******/ })(); 22627/******/ 22628/******/ /* webpack/runtime/make namespace object */ 22629/******/ (() => { 22630/******/ // define __esModule on exports 22631/******/ __webpack_require__.r = (exports) => { 22632/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 22633/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 22634/******/ } 22635/******/ Object.defineProperty(exports, '__esModule', { value: true }); 22636/******/ }; 22637/******/ })(); 22638/******/ 22639/******/ /* webpack/runtime/publicPath */ 22640/******/ (() => { 22641/******/ __webpack_require__.p = "/resources/vhcliaa/"; 22642/******/ })(); 22643/******/ 22644/******/ /* webpack/runtime/css loading */ 22645/******/ (() => { 22646/******/ if (typeof document === "undefined") return; 22647/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => { 22648/******/ var linkTag = document.createElement("link"); 22649/******/ 22650/******/ linkTag.rel = "stylesheet"; 22651/******/ linkTag.type = "text/css"; 22652/******/ if (__webpack_require__.nc) { 22653/******/ linkTag.nonce = __webpack_require__.nc; 22654/******/ } 22655/******/ var onLinkComplete = (event) => { 22656/******/ // avoid mem leaks. 22657/******/ linkTag.onerror = linkTag.onload = null; 22658/******/ if (event.type === 'load') { 22659/******/ resolve(); 22660/******/ } else { 22661/******/ var errorType = event && event.type; 22662/******/ var realHref = event && event.target && event.target.href || fullhref; 22663/******/ var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + errorType + ": " + realHref + ")"); 22664/******/ err.name = "ChunkLoadError"; 22665/******/ err.code = "CSS_CHUNK_LOAD_FAILED"; 22666/******/ err.type = errorType; 22667/******/ err.request = realHref; 22668/******/ if (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag) 22669/******/ reject(err); 22670/******/ } 22671/******/ } 22672/******/ linkTag.onerror = linkTag.onload = onLinkComplete; 22673/******/ linkTag.href = fullhref; 22674/******/ 22675/******/ 22676/******/ if (oldTag) { 22677/******/ oldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling); 22678/******/ } else { 22679/******/ document.head.appendChild(linkTag); 22680/******/ } 22681/******/ return linkTag; 22682/******/ }; 22683/******/ var findStylesheet = (href, fullhref) => { 22684/******/ var existingLinkTags = document.getElementsByTagName("link"); 22685/******/ for(var i = 0; i < existingLinkTags.length; i++) { 22686/******/ var tag = existingLinkTags[i]; 22687/******/ var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href"); 22688/******/ if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return tag; 22689/******/ } 22690/******/ var existingStyleTags = document.getElementsByTagName("style"); 22691/******/ for(var i = 0; i < existingStyleTags.length; i++) { 22692/******/ var tag = existingStyleTags[i]; 22693/******/ var dataHref = tag.getAttribute("data-href"); 22694/******/ if(dataHref === href || dataHref === fullhref) return tag; 22695/******/ } 22696/******/ }; 22697/******/ var loadStylesheet = (chunkId) => { 22698/******/ return new Promise((resolve, reject) => { 22699/******/ var href = __webpack_require__.miniCssF(chunkId); 22700/******/ var fullhref = __webpack_require__.p + href; 22701/******/ if(findStylesheet(href, fullhref)) return resolve(); 22702/******/ createStylesheet(chunkId, fullhref, null, resolve, reject); 22703/******/ }); 22704/******/ } 22705/******/ // object to store loaded CSS chunks 22706/******/ var installedCssChunks = { 22707/******/ 547: 0 22708/******/ }; 22709/******/ 22710/******/ __webpack_require__.f.miniCss = (chunkId, promises) => { 22711/******/ var cssChunks = {"554":1}; 22712/******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]); 22713/******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) { 22714/******/ promises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => { 22715/******/ installedCssChunks[chunkId] = 0; 22716/******/ }, (e) => { 22717/******/ delete installedCssChunks[chunkId]; 22718/******/ throw e; 22719/******/ })); 22720/******/ } 22721/******/ }; 22722/******/ 22723/******/ // no hmr 22724/******/ 22725/******/ // no prefetching 22726/******/ 22727/******/ // no preloaded
vendor: 4,960 bytes, lines 22728-22835
22728/******/ })(); 22729/******/ 22730/******/ /* webpack/runtime/jsonp chunk loading */ 22731/******/ (() => { 22732/******/ // no baseURI 22733/******/ 22734/******/ // object to store loaded and loading chunks 22735/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 22736/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 22737/******/ var installedChunks = { 22738/******/ 547: 0 22739/******/ }; 22740/******/ 22741/******/ __webpack_require__.f.j = (chunkId, promises) => { 22742/******/ // JSONP chunk loading for javascript 22743/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined; 22744/******/ if(installedChunkData !== 0) { // 0 means "already installed". 22745/******/ 22746/******/ // a Promise means "currently loading". 22747/******/ if(installedChunkData) { 22748/******/ promises.push(installedChunkData[2]); 22749/******/ } else { 22750/******/ if(true) { // all chunks have JS 22751/******/ // setup Promise in chunk cache 22752/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); 22753/******/ promises.push(installedChunkData[2] = promise); 22754/******/ 22755/******/ // start chunk loading 22756/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId); 22757/******/ // create error before stack unwound to get useful stacktrace later 22758/******/ var error = new Error(); 22759/******/ var loadingEnded = (event) => { 22760/******/ if(__webpack_require__.o(installedChunks, chunkId)) { 22761/******/ installedChunkData = installedChunks[chunkId]; 22762/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined; 22763/******/ if(installedChunkData) { 22764/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); 22765/******/ var realSrc = event && event.target && event.target.src; 22766/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; 22767/******/ error.name = 'ChunkLoadError'; 22768/******/ error.type = errorType; 22769/******/ error.request = realSrc; 22770/******/ installedChunkData[1](error); 22771/******/ } 22772/******/ } 22773/******/ }; 22774/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); 22775/******/ } 22776/******/ } 22777/******/ } 22778/******/ }; 22779/******/ 22780/******/ // no prefetching 22781/******/ 22782/******/ // no preloaded 22783/******/ 22784/******/ // no HMR 22785/******/ 22786/******/ // no HMR manifest 22787/******/ 22788/******/ // no on chunks loaded 22789/******/ 22790/******/ // install a JSONP callback for chunk loading 22791/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { 22792/******/ var [chunkIds, moreModules, runtime] = data; 22793/******/ // add "moreModules" to the modules object, 22794/******/ // then flag all "chunkIds" as loaded and fire callback 22795/******/ var moduleId, chunkId, i = 0; 22796/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { 22797/******/ for(moduleId in moreModules) { 22798/******/ if(__webpack_require__.o(moreModules, moduleId)) { 22799/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 22800/******/ } 22801/******/ } 22802/******/ if(runtime) var result = runtime(__webpack_require__); 22803/******/ } 22804/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 22805/******/ for(;i < chunkIds.length; i++) { 22806/******/ chunkId = chunkIds[i]; 22807/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 22808/******/ installedChunks[chunkId][0](); 22809/******/ } 22810/******/ installedChunks[chunkId] = 0; 22811/******/ } 22812/******/ 22813/******/ } 22814/******/ 22815/******/ var chunkLoadingGlobal = self["webpackChunkvhcliaa"] = self["webpackChunkvhcliaa"] || []; 22816/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 22817/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 22818/******/ })(); 22819/******/ 22820/************************************************************************/ 22821var __webpack_exports__ = {}; 22822// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 22823(() => { 22824"use strict"; 22825 22826// EXTERNAL MODULE: ./node_modules/reflect-metadata/Reflect.js 22827var vehicleCardDeck_Reflect = __webpack_require__(9708); 22828// EXTERNAL MODULE: ./src/inversify.config.ts + 24 modules 22829var vehicleCardDeck_inversify_config = __webpack_require__(3239); 22830// EXTERNAL MODULE: ./src/types/types.ts 22831var vehicleCardDeck_types = __webpack_require__(5644); 22832// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm-browser.prod.js 22833var vehicleCardDeck_vue_runtime_esm_browser_prod = __webpack_require__(3568); 22834// EXTERNAL MODULE: ./node_modules/pinia/dist/pinia.mjs + 1 modules 22835var vehicleCardDeck_dist_pinia = __webpack_require__(1774);
22836// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/customEvents.ts 22837var vehicleCardDeck_customEvents = __webpack_require__(9600); 22838// EXTERNAL MODULE: ./src/infrastructure/vue/vehicleCardDeck/globalStore.ts + 1 modules 22839var vehicleCardDeck_vehicleCardDeck_globalStore = __webpack_require__(5467); 22840;// ./src/components/moreInfoModal/moreInfoModal.ts 22841/// <reference path="../../utilities/do_utility.ts" /> 22842class vehicleCardDeck_MoreInfoModal { 22843 constructor() { 22844 this.getElements(); 22845 this.addShowEventListener(); 22846 } 22847 getElements() { 22848 this._titleElement = this.getModalElement('title'); 22849 this._contentElement = this.getModalElement('text'); 22850 } 22851 getModalElement(selectorValue) { 22852 const element = document.querySelector(`[data-modal-element="${selectorValue}"]`); 22853 return element; 22854 } 22855 addShowEventListener() { 22856 /* NOTE: this is calling Bootstrap events so we have to use jQuery */ 22857 $(`[data-modal-element="wrapper"]`).on('show.bs.modal', (event) => { 22858 var _a, _b; 22859 /* Funky casting needed for Bootstrap event */ 22860 const clickEvent = event; 22861 const modalTrigger = clickEvent.relatedTarget; 22862 const title = (_a = modalTrigger === null || modalTrigger === void 0 ? void 0 : modalTrigger.dataset) === null || _a === void 0 ? void 0 : _a.title; 22863 const content = (_b = modalTrigger === null || modalTrigger === void 0 ? void 0 : modalTrigger.dataset) === null || _b === void 0 ? void 0 : _b.content; 22864 if (!(content && this._contentElement)) { 22865 return event.preventDefault(); 22866 } 22867 if (this._titleElement) { 22868 if (title) { 22869 this._titleElement.innerHTML = title; 22870 } 22871 else { 22872 this._titleElement.innerHTML = ''; 22873 } 22874 } 22875 if (this._contentElement) { 22876 this._contentElement.innerHTML = DoUtility.DecodeHtml(content); 22877 } 22878 }); 22879 } 22880} 22881 22882// EXTERNAL MODULE: ./src/components/spaCosmos/pagination/srpScrollType.ts 22883var vehicleCardDeck_srpScrollType = __webpack_require__(1560); 22884// EXTERNAL MODULE: ./src/infrastructure/vue/cosmosSrp/globalStore.ts + 11 modules 22885var vehicleCardDeck_cosmosSrp_globalStore = __webpack_require__(3551); 22886// EXTERNAL MODULE: ./src/core/enums/srpLayoutType.ts 22887var vehicleCardDeck_srpLayoutType = __webpack_require__(2491); 22888;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/skeletonLoaders/vehicleCardSkeleton.vue?vue&type=script&setup=true&lang=ts 22889 22890 22891const vehicleCardDeck_hoisted_1 = { class: "vehicle-card vehicle-card--mod skeleton" }; 22892const vehicleCardDeck_hoisted_2 = ["src"]; 22893 22894 22895 22896 22897const vehicleCardDeck_gridView = "/resources/vhcliaa/components/spaCosmos/skeletonLoaders/vehicle-card-skeleton-grid.svg"; 22898const vehicleCardDeck_listView = "/resources/vhcliaa/components/spaCosmos/skeletonLoaders/vehicle-card-skeleton-list.svg"; 22899/* harmony default export */ const vehicleCardDeck_vehicleCardSkeletonvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 22900 __name: 'vehicleCardSkeleton', 22901 props: { 22902 forceGridLayout: { type: Boolean, default: false } 22903 }, 22904 setup(__props) { 22905 const props = __props; 22906 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 22907 const globalStore = (0,vehicleCardDeck_cosmosSrp_globalStore/* useGlobalStore */.o)(); 22908 const skeletonImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 22909 return props.forceGridLayout || globalStore.currentLayout == vehicleCardDeck_srpLayoutType/* SrpLayoutType */._.Grid 22910 ? vehicleCardDeck_gridView 22911 : vehicleCardDeck_listView; 22912 }); 22913 return (_ctx, _cache) => { 22914 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_hoisted_1, [ 22915 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 22916 class: "card-skeleton-image", 22917 src: skeletonImage.value, 22918 alt: "", 22919 fetchpriority: "high" 22920 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_2) 22921 ])); 22922 }; 22923 } 22924})); 22925 22926;// ./src/components/spaCosmos/skeletonLoaders/vehicleCardSkeleton.vue?vue&type=script&setup=true&lang=ts 22927 22928// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
22928ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/skeletonLoaders/vehicleCardSkeleton.vue?vue&type=style&index=0&id=72f833e6&scoped=true&lang=scss 22929var vehicleCardDeck_vehicleCardSkeletonvue_type_style_index_0_id_72f833e6_scoped_true_lang_scss = __webpack_require__(7891); 22930;// ./src/components/spaCosmos/skeletonLoaders/vehicleCardSkeleton.vue?vue&type=style&index=0&id=72f833e6&scoped=true&lang=scss 22931 22932// EXTERNAL MODULE: ./node_modules/vue-loader/dist/exportHelper.js 22933var vehicleCardDeck_exportHelper = __webpack_require__(1535); 22934;// ./src/components/spaCosmos/skeletonLoaders/vehicleCardSkeleton.vue 22935 22936 22937 22938; 22939 22940 22941const vehicleCardDeck_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_vehicleCardSkeletonvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-72f833e6"]]) 22942 22943/* harmony default export */ const vehicleCardDeck_vehicleCardSkeleton = (vehicleCardDeck_exports_); 22944// EXTERNAL MODULE: ./src/core/enums/industry.ts 22945var vehicleCardDeck_industry = __webpack_require__(8586); 22946;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/vehicleHighlights/vehicleHighlights.vue?vue&type=script&setup=true&lang=ts 22947 22948 22949const vehicleCardDeck_vehicleHighlightsvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-highlights" }; 22950const vehicleCardDeck_vehicleHighlightsvue_type_script_setup_true_lang_ts_hoisted_2 = { class: "vehicle-highlights__list" }; 22951const vehicleCardDeck_hoisted_3 = { class: "vehicle-highlights__item" }; 22952const vehicleCardDeck_hoisted_4 = ["data-title", "data-content", "data-loc", "data-dotagging-element-order", "data-dotagging-element-text"]; 22953const vehicleCardDeck_hoisted_5 = ["src", "alt", "title"]; 22954const vehicleCardDeck_hoisted_6 = ["src"]; 22955const vehicleCardDeck_hoisted_7 = ["innerHTML"]; 22956const vehicleCardDeck_hoisted_8 = { class: "vehicle-highlights__disclaimer" }; 22957const vehicleCardDeck_hoisted_9 = ["title", "data-title", "data-content", "data-loc", "data-dotagging-element-order", "data-dotagging-element-text"]; 22958const vehicleCardDeck_hoisted_10 = { class: "highlights-disclaimer__label highlights-disclaimer__label--full" }; 22959 22960 22961/* harmony default export */ const vehicleCardDeck_vehicleHighlightsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 22962 __name: 'vehicleHighlights', 22963 props: { 22964 model: {}, 22965 vin: {} 22966 }, 22967 setup(__props) { 22968 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 22969 // Computed translation labels 22970 const vehicleHighlightsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VEHICLE_HIGHLIGHTS")); 22971 const viewDisclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VIEW_DISCLAIMER")); 22972 const disclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("DISCLAIMER")); 22973 const props = __props; 22974 const vin = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.vin); 22975 let elementOrder = 0; 22976 function GetHighlightImageName(highlight) { 22977 return GetKebabCase(highlight) + "-sm.svg"; 22978 } 22979 function GetImageSrc(highlight) { 22980 return props.model.FeatureIconPath + GetHighlightImageName(highlight); 22981 } 22982 function GetKebabCase(imageName) { 22983 let dashesAdded = imageName.replace(/[^0-9a-zA-Z]/g, "-"); 22984 let repeatedDashesRemoved = dashesAdded.replace(/[-]{2,}/g, "-"); 22985 let trailingDashesRemoved = repeatedDashesRemoved.replace(/-+$/g, ""); 22986 let startingDashesRemoved = trailingDashesRemoved.charAt(0) === "-" ? trailingDashesRemoved.slice(1) : trailingDashesRemoved; 22987 return startingDashesRemoved.toLowerCase(); 22988 } 22989 return (_ctx, _cache) => { 22990 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleHighlightsvue_type_script_setup_true_lang_ts_hoisted_1, [ 22991 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("ul", vehicleCardDeck_vehicleHighlightsvue_type_script_setup_true_lang_ts_hoisted_2, [ 22992 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.Highlights.slice(0, 6), (highlight, index) => { 22993 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("li", vehicleCardDeck_hoisted_3, [ 22994 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 22995 class: "vehicle-highlights__icon-wrapper vehicle-highlights__icon-wrapper--compressed stat-icon-link", 22996 type: "button", 22997 "data-toggle": "modal", 22998 "data-target": "#moreInfoModal", 22999 "aria-haspopup": "dialog", 23000 "data-title": vehicleHighlightsLabel.value, 23001 "data-content": highlight, 23002 "data-loc": `available inventory:${vin.value}:${highlight}`, 23003 "data-dotagging-event": "cta_interaction", 23004 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23005 "data-dotagging-event-action-result": "open", 23006 "data-dotagging-event-action": "click", 23007 "data-dotagging-element-order": (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* isRef */.i9)(elementOrder) //@ts-ignore 23008 ? elementOrder.value++ : elementOrder++, 23009 "data-dotagging-element-type": "item_details", 23010 "data-dotagging-element-subtype": "cta_icon", 23011 "data-dotagging-element-text": highlight 23012 }, [ 23013 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23014 class: "vehicle-highlights__icon", 23015 src: GetImageSrc(highlight), 23016 alt: highlight, 23017 title: highlight, 23018 width: "25", 23019 height: "25", 23020 loading: "eager" 23021 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_5) 23022 ], 8 /* PROPS */, vehicleCardDeck_hoisted_4), 23023 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23024 class: "vehicle-highlights__icon vehicle-highlights__icon--full", 23025 src: GetImageSrc(highlight), 23026 alt: "", 23027 width: "25", 23028 height: "25", 23029 loading: "eager" 23030 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_6), 23031 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 23032 class: "vehicle-highlights__label vehicle-highlights__label--full", 23033 innerHTML: highlight 23034 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_7) 23035 ])); 23036 }), 256 /* UNKEYED_FRAGMENT */)) 23037 ]), 23038 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_hoisted_8, [ 23039 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 23040 class: "highlights-disclaimer highlights-disclaimer__icon--image-mask stat-disclaim", 23041 type: "button", 23042 title: viewDisclaimerLabel.value, 23043 "data-toggle": "modal", 23044 "data-target": "#moreInfoModal", 23045 "aria-haspopup": "dialog", 23046 "data-title": disclaimerLabel.value, 23047 "data-content": _ctx.model.DisclaimerText, 23048 "data-loc": `available inventory:${vin.value}`, 23049 "data-dotagging-event": "cta_interaction", 23050 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23051 "data-dotagging-event-action-result": "open", 23052 "data-dotagging-event-action": "click", 23053 "data-dotagging-element-order": (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* isRef */.i9)(elementOrder) //@ts-ignore 23054 ? elementOrder.value++ : elementOrder++, 23055 "data-dotagging-element-type": "item_details", 23056 "data-dotagging-element-subtype": "cta_icon", 23057 "data-dotagging-element-text": disclaimerLabel.value 23058 }, [ 23059 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_10, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(disclaimerLabel.value), 1 /* TEXT */) 23060 ], 8 /* PROPS */, vehicleCardDeck_hoisted_9) 23061 ]) 23062 ])); 23063 }; 23064 } 23065})); 23066 23067;// ./src/components/spaCosmos/vehicleCards/features/vehicleHighlights/vehicleHighlights.vue?vue&type=script&setup=true&lang=ts 23068 23069;// ./src/components/spaCosmos/vehicleCards/features/vehicleHighlights/vehicleHighlights.vue 23070 23071 23072 23073const vehicleCardDeck_vehicleHighlights_exports_ = vehicleCardDeck_vehicleHighlightsvue_type_script_setup_true_lang_ts; 23074 23075/* harmony default export */ const vehicleCardDeck_vehicleHighlights = (vehicleCardDeck_vehicleHighlights_exports_); 23076;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/videoButton/videoButton.vue?vue&type=script&setup=true&lang=ts 23077 23078 23079const vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts_hoisted_1 = ["id", "aria-label", "title", "data-loc", "show", "data-vi
23079deo-id", "data-target", "data-toggle"]; 23080const vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts_hoisted_2 = ["src", "alt"]; 23081const vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "video-button__label" }; 23082 23083 23084/* harmony default export */ const vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23085 __name: 'videoButton', 23086 props: { 23087 model: {} 23088 }, 23089 setup(__props) { 23090 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23091 // Computed translation labels 23092 const videoLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VIDEO")); 23093 const buttonId = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${props.model.VideoId}-${props.model.VehicleVin}`); 23094 const iframeVideoUrl = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return (_b = (_a = props.model.IframeVideoUrl) === null || _a === void 0 ? void 0 : _a.replace(/["']/g, "")) !== null && _b !== void 0 ? _b : ""; }); 23095 const fordVideoUrl = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return (_b = (_a = props.model.FordVideoUrl) === null || _a === void 0 ? void 0 : _a.replace(/["']/g, "")) !== null && _b !== void 0 ? _b : ""; }); 23096 const props = __props; 23097 return (_ctx, _cache) => { 23098 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("a", { 23099 id: buttonId.value, 23100 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["video-button btn stat-button-link", _ctx.model.VideoBtnClass]), 23101 rel: "nofollow", 23102 "aria-label": videoLabel.value, 23103 title: videoLabel.value, 23104 "data-loc": `available inventory:${_ctx.model.VehicleVin}`, 23105 "data-dotagging-event": "cta_interaction", 23106 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23107 "data-dotagging-event-action-result": "play", 23108 "data-dotagging-event-action": "click", 23109 "data-dotagging-element-order": "0", 23110 "data-dotagging-element-type": "item_details", 23111 "data-dotagging-element-subtype": "cta_icon", 23112 show: _ctx.model.IframeVideoUrl ? iframeVideoUrl.value : null, 23113 "data-video-id": _ctx.model.FordVideoUrl ? fordVideoUrl.value : null, 23114 "data-target": _ctx.model.FordVideoUrl ? '#evnVideoPlayerModal' : null, 23115 "data-toggle": _ctx.model.FordVideoUrl ? 'modal' : null 23116 }, [ 23117 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23118 class: "video-button__icon", 23119 src: _ctx.model.VideoIconPath, 23120 alt: _ctx.model.VideoImgAltText 23121 }, null, 8 /* PROPS */, vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts_hoisted_2), 23122 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts_hoisted_3, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(videoLabel.value), 1 /* TEXT */) 23123 ], 10 /* CLASS, PROPS */, vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts_hoisted_1)); 23124 }; 23125 } 23126})); 23127 23128;// ./src/components/spaCosmos/vehicleCards/features/videoButton/videoButton.vue?vue&type=script&setup=true&lang=ts 23129 23130// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/videoButton/videoButton.vue?vue&type=style&index=0&id=9faa8a96&lang=scss&scoped=true 23131var vehicleCardDeck_videoButtonvue_type_style_index_0_id_9faa8a96_lang_scss_
23131scoped_true = __webpack_require__(3042); 23132;// ./src/components/spaCosmos/vehicleCards/features/videoButton/videoButton.vue?vue&type=style&index=0&id=9faa8a96&lang=scss&scoped=true 23133 23134;// ./src/components/spaCosmos/vehicleCards/features/videoButton/videoButton.vue 23135 23136 23137 23138; 23139 23140 23141const vehicleCardDeck_videoButton_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_videoButtonvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-9faa8a96"]]) 23142 23143/* harmony default export */ const vehicleCardDeck_videoButton = (vehicleCardDeck_videoButton_exports_); 23144;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/windowSticker/windowSticker.vue?vue&type=script&setup=true&lang=ts 23145 23146 23147const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_1 = ["aria-label", "title", "onclick", "data-vin", "data-loc"]; 23148const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_2 = ["aria-label"]; 23149const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_3 = { class: "window-sticker-button__label" }; 23150const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_4 = ["data-title", "data-content", "data-loc"]; 23151const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_5 = { class: "oem-hyundai__window-sticker-disclaimer--srp-card-disclaimer-button-icon" }; 23152const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_6 = ["src", "alt"]; 23153 23154 23155/* harmony default export */ const vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23156 __name: 'windowSticker', 23157 props: { 23158 model: {} 23159 }, 23160 setup(__props) { 23161 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23162 // Computed translation labels 23163 const windowStickerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("WINDOW_STICKER")); 23164 const hyundaiDisclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getComment("HYUNDAI_DISCLAIMER_WINDOW_STICKER")); 23165 const viewDisclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VIEW_DISCLAIMER")); 23166 const disclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("DISCLAIMER")); 23167 const stickerDataLoc = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `available inventory:${props.model.VehicleVin}:window sticker`); 23168 const props = __props; 23169 function GetTaggingEvent() { 23170 if (props.model.IsSubaruDealer) { 23171 return "linkClick"; 23172 } 23173 return null; 23174 } 23175 function GetTaggingValue() { 23176 if (props.model.IsSubaruDealer) { 23177 return "Window Sticker"; 23178 } 23179 return null; 23180 } 23181 return (_ctx, _cache) => { 23182 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23183 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["window-sticker", { 'oem-hyundai__window-sticker-disclaimer--srp-card-window-sticker': _ctx.model.IsHyundaiDealer }]) 23184 }, [ 23185 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* mergeProps */.v6)({ 23186 type: "button", 23187 class: ["window-sticker-button windowSticker btn stat-button-link", { 'oem-hyundai__window-sticker-disclaimer--srp-card-window-sticker-button': _ctx.model.IsHyundaiDealer }], 23188 "aria-label": windowStickerLabel.value, 23189 title: windowStickerLabel.value, 23190 onclick: _ctx.model.ClickEvent, 23191 "data-vin": _ctx.model.VehicleVin, 23192 "data-loc": stickerDataLoc.value, 23193 "data-dotagging-event": "cta_interaction", 23194 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23195 "data-dotagging-event-action-result": "open", 23196 "data-dotagging-element-type": "item_details", 23197 "data-dotagging-element-subtype": "cta_button", 23198 "data-tagging-item": "windowsticker" 23199 }, { 'data-tagging-event': GetTaggingEvent(), 23200 'data-tagging-value': GetTaggingValue() }), [ 23201 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { 23202 class: "window-sticker-button__icon fa fa-qrcode", 23203 role: "img", 23204 "aria-label": windowStickerLabel.value 23205 }, null, 8 /* PROPS */, vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_2), 23206 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_3, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(windowStickerLabel.value), 1 /* TEXT */) 23207 ], 16 /* FULL_PROPS */, vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_1), 23208 (_ctx.model.IsHyundaiDealer) 23209 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("button", { 23210 key: 0, 23211 type: "button", 23212 class: "oem-hyundai__window-sticker-disclaimer--srp-card-disclaimer-button btn stat-disclaim", 23213 "data-toggle": "modal", 23214 "data-target": "#moreInfoModal", 23215 "aria-haspopup": "dialog", 23216 "data-title": disclaimerLabel.value, 23217 "data-content": hyundaiDisclaimerLabel.value, 23218 "data-loc": stickerDataLoc.value, 23219 "data-dotagging-event": "cta_interaction", 23220 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23221 "data-dotagging-event-action": "click", 23222 "data-dotagging-event-action-result": "popup", 23223 "data-dotagging-element-type": "item_details", 23224 "data-dotagging-element-order": "0", 23225 "data-dotagging-element-subtype": "cta_icon" 23226 }, [ 23227 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_5, [ 23228 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23229 src: _ctx.model.DisclaimerIconPath, 23230 alt: viewDisclaimerLabel.value, 23231 class: "oem-hyundai__window-sticker-disclaimer--srp-card-disclaimer-button-icon-image" 23232 }, null, 8 /* PROPS */, vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_6) 23233 ]) 23234 ], 8 /* PROPS */, vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts_hoisted_4)) 23235 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 23236 ], 2 /* CLASS */)); 23237 }; 23238 } 23239})); 23240 23241;// ./src/components/spaCosmos/vehicleCards/features/windowSticker/windowSticker.vue?vue&type=script&setup=true&lang=ts 23242 23243// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
23243ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/windowSticker/windowSticker.vue?vue&type=style&index=0&id=7ddcc9ee&lang=scss&scoped=true 23244var vehicleCardDeck_windowStickervue_type_style_index_0_id_7ddcc9ee_lang_scss_scoped_true = __webpack_require__(4693); 23245;// ./src/components/spaCosmos/vehicleCards/features/windowSticker/windowSticker.vue?vue&type=style&index=0&id=7ddcc9ee&lang=scss&scoped=true 23246 23247;// ./src/components/spaCosmos/vehicleCards/features/windowSticker/windowSticker.vue 23248 23249 23250 23251; 23252 23253 23254const vehicleCardDeck_windowSticker_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_windowStickervue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-7ddcc9ee"]]) 23255 23256/* harmony default export */ const vehicleCardDeck_windowSticker = (vehicleCardDeck_windowSticker_exports_); 23257;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/vehicleFeatures/vehicleFeatures.vue?vue&type=script&setup=true&lang=ts 23258 23259 23260const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_1 = { 23261 key: 0, 23262 class: "vehicle-features__highlights" 23263}; 23264const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_2 = { class: "vehicle-features__heading vehicle-features__heading--highlights" }; 23265const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_3 = { 23266 key: 1, 23267 class: "vehicle-features__more-details" 23268}; 23269const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "vehicle-features__heading vehicle-features__heading--more-details" }; 23270const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "vehicle-more-details" }; 23271const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_6 = ["data-vehicle-comments"]; 23272const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_7 = { class: "vehicle-comments vehicle-comments--compressed" }; 23273const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_8 = ["aria-label", "title", "data-vin", "data-loc", "data-dotagging-element-text"]; 23274const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_9 = ["src", "alt"]; 23275const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_10 = { class: "comments-button__label" }; 23276const vehicleCardDeck_hoisted_11 = { class: "vehicle-comments vehicle-comments--full" }; 23277const vehicleCardDeck_hoisted_12 = { class: "vehicle-comments__heading" }; 23278const vehicleCardDeck_hoisted_13 = ["innerHTML"]; 23279const vehicleCardDeck_hoisted_14 = ["data-vin", "data-loc"]; 23280const vehicleCardDeck_hoisted_15 = { 23281 key: 1, 23282 class: "vehicle-more-details__video" 23283}; 23284const vehicleCardDeck_hoisted_16 = { 23285 key: 2, 23286 class: "vehicle-more-details__window-sticker" 23287}; 23288 23289 23290 23291 23292 23293/* harmony default export */ const vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23294 __name: 'vehicleFeatures', 23295 props: { 23296 model: {} 23297 }, 23298 setup(__props) { 23299 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23300 // Computed translation labels 23301 const featuresLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("FEATURES")); 23302 const moreDetailsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("MORE_DETAILS")); 23303 const commentsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("COMMENTS")); 23304 const dealerCommentsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("DEALER_COMMENTS")); 23305 const moreLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("MORE")); 23306 const commentDataLoc = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `available inventory:${props.model.VehicleVin}`); 23307 const props = __props; 23308 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 23309 addCommentsModalEventListener(); 23310 }); 23311 function addCommentsModalEventListener() { 23312 $('#commentsModal').on('show.bs.modal', function (e) { 23313 /* Funky casting needed for Bootstrap event */ 23314 const clickEvent = e; 23315 const eventTrigger = clickEvent.relatedTarget; 23316 const buttonVin = eventTrigger.dataset.vin; 23317 const modalContent = this.querySelector('.model-content__text'); 23318 const comments = (document.querySelector(`[data-vin="${buttonVin}"] [data-vehicle-comments]`)); 23319 if (comments && modalContent) { 23320 /* Comments are encoded on the back end since they could contain HTML elements, quotes, and other special characters that could potentially break the page */ 23321 const commentsHtmlEncoded = comments.dataset.vehicleComments; 23322 const commentsHtmlDecoded = DoUtility.DecodeHtml(commentsHtmlEncoded); 23323 modalContent.innerHTML = commentsHtmlDecoded; 23324 } 23325 }); 23326 } 23327 function getCommentsIconPath() { 23328 return `${window.location.origin}/${props.model.DealerCommentsIconPath}`; 23329 } 23330 return (_ctx, _cache) => { 23331 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23332 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-features", { 'vehicle-features--highlights-only': _ctx.model.ShowHighlightsOnly, 23333 'vehicle-features--buttons-only': _ctx.model.ShowIconButtonsOnly, 23334 'vehicle-features--all': _ctx.model.ShowHighlightsAndButtons, 23335 'oem-hyundai__window-sticker-disclaimer--srp-card-vehicle-features': _ctx.model.IsHyundai }]) 23336 }, [ 23337 (_ctx.model.ShowHighlights) 23338 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_1, [ 23339 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h4", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_2, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(featuresLabel.value), 1 /* TEXT */), 23340 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleHighlights, { 23341 model: _ctx.model.VehicleHighlightsModel, 23342 vin: _ctx.model.VehicleVin 23343 }, null, 8 /* PROPS */, ["model", "vin"]) 23344 ])) 23345 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23346 (_ctx.model.ShowFeatureDetails) 23347 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_3, [ 23348 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h4", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_4, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(moreDetailsLabel.value), 1 /* TEXT */), 23349 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_5, [ 23350 (_ctx.model.ShowComments) 23351 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23352 key: 0, 23353 class: "vehicle-more-details__comments", 23354 "data-vehicle-comments": _ctx.model.VehicleC
23354ommentsEncoded 23355 }, [ 23356 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_7, [ 23357 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 23358 type: "button", 23359 class: "comments-button comments-button--comments btn stat-icon-link", 23360 "aria-label": commentsLabel.value, 23361 title: commentsLabel.value, 23362 "data-vin": _ctx.model.VehicleVin, 23363 "data-loc": commentDataLoc.value, 23364 "data-toggle": "modal", 23365 "data-target": "#commentsModal", 23366 "data-dotagging-event": "cta_interaction", 23367 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23368 "data-dotagging-event-action-result": "open", 23369 "data-dotagging-event-action": "click", 23370 "data-dotagging-element-order": "0", 23371 "data-dotagging-element-type": "item_details", 23372 "data-dotagging-element-subtype": "cta_icon", 23373 "data-dotagging-element-text": commentsLabel.value 23374 }, [ 23375 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23376 src: getCommentsIconPath(), 23377 class: "comments-button__image", 23378 alt: commentsLabel.value 23379 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_9), 23380 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_10, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(commentsLabel.value), 1 /* TEXT */) 23381 ], 8 /* PROPS */, vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_8) 23382 ]), 23383 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_hoisted_11, [ 23384 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h5", vehicleCardDeck_hoisted_12, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(dealerCommentsLabel.value), 1 /* TEXT */), 23385 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 23386 class: "vehicle-comments__text", 23387 innerHTML: _ctx.model.InvComments 23388 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_13), 23389 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 23390 type: "button", 23391 class: "comments-button comments-button--more stat-text-link", 23392 "data-vin": _ctx.model.VehicleVin, 23393 "data-loc": commentDataLoc.value, 23394 "data-toggle": "modal", 23395 "data-target": "#commentsModal" 23396 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(moreLabel.value) + "... ", 9 /* TEXT, PROPS */, vehicleCardDeck_hoisted_14) 23397 ]) 23398 ], 8 /* PROPS */, vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_6)) 23399 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23400 (_ctx.model.ShowVideoButton) 23401 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_hoisted_15, [ 23402 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_videoButton, { 23403 model: _ctx.model.VideoButtonModel 23404 }, null, 8 /* PROPS */, ["model"]) 23405 ])) 23406 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23407 (_ctx.model.ShowWindowSticker) 23408 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_hoisted_16, [ 23409 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_windowSticker, { 23410 model: _ctx.model.WindowStickersModel 23411 }, null, 8 /* PROPS */, ["model"]) 23412 ])) 23413 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 23414 ]) 23415 ])) 23416 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 23417 ], 2 /* CLASS */)); 23418 }; 23419 } 23420})); 23421 23422;// ./src/components/spaCosmos/vehicleCards/features/vehicleFeatures/vehicleFeatures.vue?vue&type=script&setup=true&lang=ts 23423 23424// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
23424ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/vehicleFeatures/vehicleFeatures.vue?vue&type=style&index=0&id=c4c8aa2a&lang=scss&scoped=true 23425var vehicleCardDeck_vehicleFeaturesvue_type_style_index_0_id_c4c8aa2a_lang_scss_scoped_true = __webpack_require__(1404); 23426;// ./src/components/spaCosmos/vehicleCards/features/vehicleFeatures/vehicleFeatures.vue?vue&type=style&index=0&id=c4c8aa2a&lang=scss&scoped=true 23427 23428;// ./src/components/spaCosmos/vehicleCards/features/vehicleFeatures/vehicleFeatures.vue 23429 23430 23431 23432; 23433 23434 23435const vehicleCardDeck_vehicleFeatures_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_vehicleFeaturesvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-c4c8aa2a"]]) 23436 23437/* harmony default export */ const vehicleCardDeck_vehicleFeatures = (vehicleCardDeck_vehicleFeatures_exports_); 23438// EXTERNAL MODULE: ./src/components/spaCosmos/utilities/spaBreakpoints.ts 23439var vehicleCardDeck_spaBreakpoints = __webpack_require__(3402); 23440;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleEta/vehicleEtaModel.ts 23441class vehicleCardDeck_VehicleEtaModel { 23442} 23443 23444;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleEta/vehicleEta.vue?vue&type=script&setup=true&lang=ts 23445 23446 23447const vehicleCardDeck_vehicleEtavue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-eta-icon" }; 23448const vehicleCardDeck_vehicleEtavue_type_script_setup_true_lang_ts_hoisted_2 = ["src", "alt"]; 23449 23450 23451/* harmony default export */ const vehicleCardDeck_vehicleEtavue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23452 __name: 'vehicleEta', 23453 props: { 23454 model: {} 23455 }, 23456 setup(__props) { 23457 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23458 // computed translation label 23459 const viewDisclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("VIEW_DISCLAIMER")}`); 23460 const props = __props; 23461 return (_ctx, _cache) => { 23462 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 23463 (_ctx.model.ShowEta) 23464 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, [ 23465 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.EtaDisplay), 1 /* TEXT */) 23466 ], 64 /* STABLE_FRAGMENT */)) 23467 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23468 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleEtavue_type_script_setup_true_lang_ts_hoisted_1, [ 23469 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23470 src: _ctx.model.DisclaimerIconPath, 23471 alt: viewDisclaimerLabel.value, 23472 class: "vehicle-eta-icon__image" 23473 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleEtavue_type_script_setup_true_lang_ts_hoisted_2) 23474 ]) 23475 ], 64 /* STABLE_FRAGMENT */)); 23476 }; 23477 } 23478})); 23479 23480;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleEta/vehicleEta.vue?vue&type=script&setup=true&lang=ts 23481 23482;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleEta/vehicleEta.vue 23483 23484 23485 23486const vehicleCardDeck_vehicleEta_exports_ = vehicleCardDeck_vehicleEtavue_type_script_setup_true_lang_ts; 23487 23488/* harmony default export */ const vehicleCardDeck_vehicleEta = (vehicleCardDeck_vehicleEta_exports_); 23489// EXTERNAL MODULE: ./src/components/spaCosmos/utilities/SpaHelpers.ts 23490var vehicleCardDeck_SpaHelpers = __webpack_require__(4423); 23491;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatusInfo/vehicleStatusInfoModel.ts 23492class vehicleCardDeck_VehicleStatusInfoModel { 23493} 23494 23495;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatusInfo/vehicleStatusInfo.vue?vue&type=script&setup=true&lang=ts 23496 23497 23498const vehicleCardDeck_vehicleStatusInfovue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-status-info-icon" }; 23499const vehicleCardDeck_vehicleStatusInfovue_type_script_setup_true_lang_ts_hoisted_2 = ["src", "alt"]; 23500 23501 23502/* harmony default export */ const vehicleCardDeck_vehicleStatusInfovue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23503 __name: 'vehicleStatusInfo', 23504 props: { 23505 model: {} 23506 }, 23507 setup(__props) { 23508 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23509 // computed translation label 23510 const viewDisclaimerLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("VIEW_DISCLAIMER")}`); 23511 const props = __props; 23512 return (_ctx, _cache) => { 23513 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleStatusInfovue_type_script_setup_true_lang_ts_hoisted_1, [ 23514 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23515 src: _ctx.model.IconPath, 23516 alt: viewDisclaimerLabel.value, 23517 class: "vehicle-status-info-icon__image" 23518 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleStatusInfovue_type_script_setup_true_lang_ts_hoisted_2) 23519 ])); 23520 }; 23521 } 23522})); 23523 23524;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatusInfo/vehicleStatusInfo.vue?vue&type=script&setup=true&lang=ts 23525 23526;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatusInfo/vehicleStatusInfo.vue 23527 23528 23529 23530const vehicleCardDeck_vehicleStatusInfo_exports_ = vehicleCardDeck_vehicleStatusInfovue_type_script_setup_true_lang_ts; 23531 23532/* harmony default export */ const vehicleCardDeck_vehicleStatusInfo = (vehicleCardDeck_vehicleStatusInfo_exports_); 23533;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatus.vue?vue&type=script&setup=true&lang=ts 23534 23535 23536const vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-status__label" }; 23537const vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts_hoisted_2 = ["innerHTML"]; 23538const vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts_hoisted_3 = ["innerHTML"]; 23539 23540 23541 23542 23543 23544/* harmony default export */ const vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23545 __name: 'vehicleStatus', 23546 props: { 23547 model: {} 23548 }, 23549 setup(__props) { 23550 const props = __props; 23551 function getVehicleEtaModel() { 23552 const vEtaModel = new vehicleCardDeck_VehicleEtaModel(); 23553 vEtaModel.DisclaimerIconPath = props.model.DisclaimerIconPath; 23554 vEtaModel.EtaDisplay = props.model.EtaDisplay; 23555 vEtaModel.ShowEta = props.model.ShowEta; 23556 return vEtaModel; 23557 } 23558 function getVehicleStatusInfo() { 23559 const vStatusInfoModel = new vehicleCardDeck_VehicleStatusInfoModel(); 23560 vStatusInfoModel.IconPath = props.model.DisclaimerIconPath; 23561 return vStatusInfoModel; 23562 } 23563 return (_ctx, _cache) => { 23564 return (_ctx.model.HasStatusInfo) 23565 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("button", (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* mergeProps */.v6)({ 23566 key: 0, 23567 type: "button", 23568 class: ["vehicle-status vehicle-status--button stat-button-link", `vehicle-status--${_ctx.model.CornerType}`] 23569 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_SpaHelpers/* SpaHelpers */.A).ParseHtmlAttrs(_ctx.model.ModalAttrs), { 23570 "data-loc": "available inventory", 23571 "data-dotagging-event": "cta_interaction", 23572 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 23573 "data-dotagging-event-action": "click", 23574 "data-dotagging-event-action-result": "popup", 23575 "data-dotagging-element-type": "item_details", 23576 "data-dotagging-element-order": "0", 23577 "data-dotagging-element-subtype": "cta_button" 23578 }), [ 23579 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts_hoisted_1, [ 23580 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("text", { 23581 innerHTML: _ctx.model.StatusText 23582 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts_hoisted_2), 23583 (_ctx.model.HasVehicleEtaHtml) 23584 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleEta, { 23585 key: 0, 23586 model: getVehicleEtaModel() 23587 }, null, 8 /* PROPS */, ["model"])) 23588 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleStatusInfo, { 23589 key: 1, 23590 model: getVehicleStatusInfo() 23591 }, null, 8 /* PROPS */, ["model"])) 23592 ]) 23593 ], 16 /* FULL_PROPS */)) 23594 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23595 key: 1, 23596 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-status vehicle-status--badge", `vehicle-status--${_ctx.model.CornerType}`]) 23597 }, [ 23598 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 23599 class: "vehicle-status__label", 23600 innerHTML: _ctx.model.StatusText 23601 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts_hoisted_3) 23602 ], 2 /* CLASS */)); 23603 }; 23604 } 23605})); 23606 23607;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatus.vue?vue&type=script&setup=true&lang=ts 23608 23609;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleStatus/vehicleStatus.vue 23610 23611 23612 23613const vehicleCardDeck_vehicleStatus_exports_ = vehicleCardDeck_vehicleStatusvue_type_script_setup_true_lang_ts; 23614 23615/* harmony default export */ const vehicleCardDeck_vehicleStatus = (vehicleCardDeck_vehicleStatus_exports_); 23616;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleDetail.vue?vue&type=script&setup=true&lang=ts 23617 23618 23619const vehicleCardDeck_recreationalVehicleDetailvue_type_script_setup_true_lang_ts_hoisted_1 = ["src"]; 23620const vehicleCardDeck_recreationalVehicleDetailvue_type_script_setup_true_lang_ts_hoisted_2 = ["innerHTML"]; 23621/* harmony default export */ const vehicleCardDeck_recreationalVehicleDetailvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23622 __name: 'recreationalVehicleDetail', 23623 props: { 23624 model: {} 23625 }, 23626 setup(__props) { 23627 const props = __props; 23628 return (_ctx, _cache) => { 23629 return (_ctx.model.showDetail) 23630 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23631 key: 0, 23632 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(`rv-detail rv-detail--${_ctx.model.classSuffix}`) 23633 }, [ 23634 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 23635 class: "rv-detail-icon", 23636 style: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeStyle */.Tr)(`--img-url: url(${_ctx.model.icon})`) 23637 }, [ 23638 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23639 class: "rv-detail-icon__image", 23640 src: _ctx.model.icon, 23641 alt: "" 23642 }, null, 8 /* PROPS */, vehicleCardDeck_recreationalVehicleDetailvue_type_script_setup_true_lang_ts_hoisted_1) 23643 ], 4 /* STYLE */), 23644 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 23645 class: "rv-detail__label", 23646 innerHTML: _ctx.model.label 23647 }, null, 8 /* PROPS */, vehicleCardDeck_recreationalVehicleDetailvue_type_script_setup_true_lang_ts_hoisted_2) 23648 ], 2 /* CLASS */)) 23649 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 23650 }; 23651 } 23652})); 23653 23654;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleDetail.vue?vue&type=script&setup=true&lang=ts 23655 23656// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
23656ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleDetail.vue?vue&type=style&index=0&id=8a43e908&lang=scss&scoped=true 23657var vehicleCardDeck_recreationalVehicleDetailvue_type_style_index_0_id_8a43e908_lang_scss_scoped_true = __webpack_require__(2908); 23658;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleDetail.vue?vue&type=style&index=0&id=8a43e908&lang=scss&scoped=true 23659 23660;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleDetail.vue 23661 23662 23663 23664; 23665 23666 23667const vehicleCardDeck_recreationalVehicleDetail_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_recreationalVehicleDetailvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-8a43e908"]]) 23668 23669/* harmony default export */ const vehicleCardDeck_recreationalVehicleDetail = (vehicleCardDeck_recreationalVehicleDetail_exports_); 23670;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleDetailModel.ts 23671class vehicleCardDeck_RecreationalVehicleDetailModel { 23672} 23673 23674;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleFeatures.vue?vue&type=script&setup=true&lang=ts 23675 23676 23677const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "rv-features" }; 23678const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_2 = { 23679 key: 0, 23680 class: "rv-specs rv-specs--status" 23681}; 23682const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_3 = { 23683 key: 1, 23684 class: "rv-mileage" 23685}; 23686const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "rv-location-icon" }; 23687const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_5 = ["src"]; 23688const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_6 = { class: "rv-location__location-name" }; 23689const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_7 = { 23690 key: 1, 23691 class: "rv-specs rv-specs--details" 23692}; 23693const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_8 = { class: "rv-details" }; 23694const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_9 = { 23695 key: 0, 23696 class: "rv-floorplan" 23697}; 23698const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_10 = ["src", "alt"]; 23699const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_11 = ["href"]; 23700 23701 23702 23703 23704 23705 23706 23707 23708const vehicleCardDeck_iconPath = 'https://cdn.dealeron.com/static/industry-automotive/icons/features/'; 23709/* harmony default export */ const vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23710 __name: 'recreationalVehicleFeatures', 23711 props: { 23712 model: {} 23713 }, 23714 setup(__props) { 23715 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23716 const globalStore = (0,vehicleCardDeck_cosmosSrp_globalStore/* useGlobalStore */.o)(); 23717 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 23718 const props = __props; 23719 const locationIconPath = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(`${vehicleCardDeck_iconPath}fa-sharp-location-dot.svg`); 23720 const sleepsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("SLEEPS")}`); 23721 const longLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("LONG")}`); 23722 const viewFloorplanLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("VIEW_FLOORPLAN")}`); 23723 const floorplanDiagramLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("FLOORPLAN_DIAGRAM")}`); 23724 const showStatusRow = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.ShowStatus || props.model.ShowMileage || props.model.ShowDealerLocatedAt); 23725 const showDealerLocatedAt = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 23726 const name = props.model.VehicleLocationName; 23727 return !!(name && name.trim().length > 0); 23728 }); 23729 const rvDetails = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 23730 var _a, _b, _c; 23731 const details = []; 23732 const sleeps = new vehicleCardDeck_RecreationalVehicleDetailModel(); 23733 const length = new vehicleCardDeck_RecreationalVehicleDetailModel(); 23734 const weight = new vehicleCardDeck_RecreationalVehicleDetailModel(); 23735 const features = new vehicleCardDeck_RecreationalVehicleDetailModel(); 23736 sleeps.label = `${sleepsLabel.value} ${(_a = props.model.RvInfoViewModel.Sleeps) !== null && _a !== void 0 ? _a : ""}`; 23737 sleeps.classSuffix = "sleeps"; 23738 sleeps.showDetail = props.model.RvInfoViewModel.ShowSleeps; 23739 sleeps.icon = `${vehicleCardDeck_iconPath}beds.svg`; 23740 length.label = `${(_b = props.model.Length) !== null && _b !== void 0 ? _b : ""} ${longLabel.value}`; 23741 length.classSuffix = "length"; 23742 length.showDetail = props.model.ShowLength; 23743 length.icon = `${vehicleCardDeck_iconPath}length.svg`; 23744 weight.label = (_c = props.model.RvInfoViewModel.Weight) !== null && _c !== void 0 ? _c : ""; 23745 weight.classSuffix = "weight"; 23746 weight.showDetail = props.model.RvInfoViewModel.ShowWeight; 23747 weight.icon = `${vehicleCardDeck_iconPath}dry-weight.svg`; 23748 features.label = getFeaturesText(props.model.Features); 23749 features.classSuffix = "features"; 23750 features.showDetail = props.model.RvInfoViewModel.ShowRvFeatures; 23751 features.icon = `${vehicleCardDeck_iconPath}floorplan.svg`; 23752 details.push(sleeps, length, weight, features); 23753 return details; 23754 }); 23755 function getFeaturesText(features) { 23756 var _a; 23757 return (_a = features === null || features === void 0 ? void 0 : features.slice(0, 5).join(", ")) !== null && _a !== void 0 ? _a : ""; 23758 } 23759 const showFloorplanImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 23760 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 23761 addResizeObserver(); 23762 }); 23763 function addResizeObserver() { 23764 const resizeObserver = new ResizeObserver((entries) => { 23765 showFloorplanImage.value = globalStore.currentLayout === vehicleCardDeck_srpLayoutType/* SrpLayoutType */._.List && entries[0].c
23765ontentBoxSize[0].inlineSize >= vehicleCardDeck_spaBreakpoints/* SpaBreakpoints */.h.breakpoint1533; 23766 }); 23767 resizeObserver.observe(document.documentElement); 23768 } 23769 return (_ctx, _cache) => { 23770 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_1, [ 23771 (showStatusRow.value) 23772 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_2, [ 23773 (_ctx.model.ShowStatus) 23774 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleStatus, { 23775 key: 0, 23776 model: _ctx.model.VehicleStatusModel 23777 }, null, 8 /* PROPS */, ["model"])) 23778 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23779 (_ctx.model.ShowMileage) 23780 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_3, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.Mileage), 1 /* TEXT */)) 23781 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23782 (showDealerLocatedAt.value) 23783 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23784 key: 2, 23785 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["rv-location", `rv-location--${_ctx.model.CornerType}`]), 23786 style: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeStyle */.Tr)({ '--svg-url': `url(${locationIconPath.value})` }) 23787 }, [ 23788 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_4, [ 23789 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23790 src: locationIconPath.value, 23791 class: "rv-location-icon__image", 23792 alt: "" 23793 }, null, 8 /* PROPS */, vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_5) 23794 ]), 23795 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_6, [ 23796 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleLocationName), 1 /* TEXT */) 23797 ]) 23798 ], 6 /* CLASS, STYLE */)) 23799 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 23800 ])) 23801 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23802 (_ctx.model.ShowRvDetails) 23803 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_7, [ 23804 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_8, [ 23805 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(rvDetails.value, (detail, index) => { 23806 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_recreationalVehicleDetail, { 23807 key: detail.classSuffix, 23808 model: detail 23809 }, null, 8 /* PROPS */, ["model"])); 23810 }), 128 /* KEYED_FRAGMENT */)) 23811 ]), 23812 (_ctx.model.RvInfoViewModel.ShowFloorplan) 23813 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_9, [ 23814 (showFloorplanImage.value) 23815 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("img", { 23816 key: 0, 23817 src: _ctx.model.RvInfoViewModel.FloorplanImage, 23818 class: "rv-floorplan__image", 23819 alt: floorplanDiagramLabel.value 23820 }, null, 8 /* PROPS */, vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_10)) 23821 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 23822 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 23823 href: _ctx.model.RvInfoViewModel.FloorplanLink, 23824 class: "rv-floorplan__link stat-text-link", 23825 "data-loc": "available inventory" 23826 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(viewFloorplanLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_11) 23827 ])) 23828 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 23829 ])) 23830 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 23831 ])); 23832 }; 23833 } 23834})); 23835 23836;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleFeatures.vue?vue&type=script&setup=true&lang=ts 23837 23838// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
23838ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleFeatures.vue?vue&type=style&index=0&id=5de90bdd&lang=scss&scoped=true 23839var vehicleCardDeck_recreationalVehicleFeaturesvue_type_style_index_0_id_5de90bdd_lang_scss_scoped_true = __webpack_require__(7493); 23840;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleFeatures.vue?vue&type=style&index=0&id=5de90bdd&lang=scss&scoped=true 23841 23842;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleFeatures.vue 23843 23844 23845 23846; 23847 23848 23849const vehicleCardDeck_recreationalVehicleFeatures_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_recreationalVehicleFeaturesvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-5de90bdd"]]) 23850 23851/* harmony default export */ const vehicleCardDeck_recreationalVehicleFeatures = (vehicleCardDeck_recreationalVehicleFeatures_exports_); 23852;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/oemVehicleFeatures/oemVehicleFeatures.vue?vue&type=script&setup=true&lang=ts 23853 23854 23855const vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "oem-vehicle-feature" }; 23856const vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_2 = ["src", "alt"]; 23857const vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "oem-vehicle-feature__text" }; 23858 23859 23860 23861/* harmony default export */ const vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23862 __name: 'oemVehicleFeatures', 23863 props: { 23864 model: {} 23865 }, 23866 setup(__props) { 23867 const globalStore = (0,vehicleCardDeck_cosmosSrp_globalStore/* useGlobalStore */.o)(); 23868 //Checks the current Layout, default to Grid 23869 const isListView = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 23870 return globalStore.currentLayout === vehicleCardDeck_srpLayoutType/* SrpLayoutType */._.List; 23871 }); 23872 const props = __props; 23873 return (_ctx, _cache) => { 23874 return (_ctx.model.ShowOemHighlights) 23875 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 23876 key: 0, 23877 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["oem-vehicle-features", { 'list-view': isListView.value }]) 23878 }, [ 23879 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.OemFeatureHighlights, (highlight) => { 23880 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_1, [ 23881 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 23882 class: "oem-vehicle-feature__icon", 23883 src: highlight.IconPath, 23884 alt: highlight.IconAltText 23885 }, null, 8 /* PROPS */, vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_2), 23886 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts_hoisted_3, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(highlight.FeatureText), 1 /* TEXT */) 23887 ])); 23888 }), 256 /* UNKEYED_FRAGMENT */)) 23889 ], 2 /* CLASS */)) 23890 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 23891 }; 23892 } 23893})); 23894 23895;// ./src/components/spaCosmos/vehicleCards/features/oemVehicleFeatures/oemVehicleFeatures.vue?vue&type=script&setup=true&lang=ts 23896 23897// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
23897ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/oemVehicleFeatures/oemVehicleFeatures.vue?vue&type=style&index=0&id=718b1078&lang=scss&scoped=true 23898var vehicleCardDeck_oemVehicleFeaturesvue_type_style_index_0_id_718b1078_lang_scss_scoped_true = __webpack_require__(7827); 23899;// ./src/components/spaCosmos/vehicleCards/features/oemVehicleFeatures/oemVehicleFeatures.vue?vue&type=style&index=0&id=718b1078&lang=scss&scoped=true 23900 23901;// ./src/components/spaCosmos/vehicleCards/features/oemVehicleFeatures/oemVehicleFeatures.vue 23902 23903 23904 23905; 23906 23907 23908const vehicleCardDeck_oemVehicleFeatures_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_oemVehicleFeaturesvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-718b1078"]]) 23909 23910/* harmony default export */ const vehicleCardDeck_oemVehicleFeatures = (vehicleCardDeck_oemVehicleFeatures_exports_); 23911;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/features/features.vue?vue&type=script&setup=true&lang=ts 23912 23913 23914 23915 23916 23917 23918 23919 23920/* harmony default export */ const vehicleCardDeck_featuresvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23921 __name: 'features', 23922 props: { 23923 vehicleFeaturesModel: {}, 23924 rvFeaturesModel: {}, 23925 oemVehicleFeaturesModel: {}, 23926 showRvDetails: { type: Boolean } 23927 }, 23928 setup(__props) { 23929 const globalStore = (0,vehicleCardDeck_cosmosSrp_globalStore/* useGlobalStore */.o)(); 23930 const isRvIndustry = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => globalStore.getIndustry == vehicleCardDeck_industry/* Industry */.j.RecreationalVehicles); 23931 const props = __props; 23932 return (_ctx, _cache) => { 23933 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 23934 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("Features.vue"), 23935 (isRvIndustry.value && _ctx.showRvDetails) 23936 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_recreationalVehicleFeatures, { 23937 key: 0, 23938 model: _ctx.rvFeaturesModel 23939 }, null, 8 /* PROPS */, ["model"])) 23940 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 1 }, [ 23941 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleFeatures, { model: _ctx.vehicleFeaturesModel }, null, 8 /* PROPS */, ["model"]), 23942 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_oemVehicleFeatures, { model: _ctx.oemVehicleFeaturesModel }, null, 8 /* PROPS */, ["model"]) 23943 ], 64 /* STABLE_FRAGMENT */)) 23944 ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)); 23945 }; 23946 } 23947})); 23948 23949;// ./src/components/spaCosmos/vehicleCards/features/features.vue?vue&type=script&setup=true&lang=ts 23950 23951;// ./src/components/spaCosmos/vehicleCards/features/features.vue 23952 23953 23954 23955const vehicleCardDeck_features_exports_ = vehicleCardDeck_featuresvue_type_script_setup_true_lang_ts; 23956 23957/* harmony default export */ const vehicleCardDeck_features = (vehicleCardDeck_features_exports_); 23958;// ./src/components/spaCosmos/vehicleCards/features/rvFeatures/recreationalVehicleFeaturesModel.ts 23959class vehicleCardDeck_RecreationalVehicleFeaturesModel { 23960} 23961 23962;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleCompareButton/vehicleCompareButton.vue?vue&type=script&setup=true&lang=ts 23963 23964 23965const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-compare-button-container" }; 23966const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_2 = { 23967 class: "vehicle-compare-button-container--left custom-checkbox", 23968 "data-compare-checkbox-wrapper": "" 23969}; 23970const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_3 = ["id", "data-loc", "data-vehicle-compare-vin", "data-dotagging-event-action-result", "data-dotagging-element-state", "data-dotagging-element-title", "disabled"]; 23971const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_4 = ["for"]; 23972const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "vehicle-compare-button-container--right" }; 23973const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_6 = ["data-loc"]; 23974const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_7 = { 23975 key: 1, 23976 "data-vehicle-compare-label": "true", 23977 class: "vehicle-compare-button__label" 23978}; 23979 23980 23981 23982/* harmony default export */ const vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 23983 __name: 'vehicleCompareButton', 23984 props: { 23985 model: {} 23986 }, 23987 setup(__props) { 23988 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 23989 const compareCheckbox = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(null); 23990 //these get updated by the event listener below 23991 const totalVehiclesCompared = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(0); 23992 const maxVehicles = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(5); 23993 const compareVehicleLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("COMPARE_VEHICLE")}`); 23994 const compareViewLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("COMPARE_VIEW")}`); 23995 const compareAddMoreLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("COMPARE_ADD_MORE")}`); 23996 const compareId = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `vehicleCompare-${props.model.Vin}-${props.model.ButtonLocation}`); 23997 const isCheckboxDisabed = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 23998 if (compareCheckbox.value) { 23999 return compareCheckbox.value.checked == false && (totalVehiclesCompared === null || totalVehiclesCompared === void 0 ? void 0 : totalVehiclesCompared.value) >= maxVehicles.value; 24000 } 24001 return true; 24002 }); 24003 const props = __props; 24004 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 24005 initialize(); 24006 }); 24007 function initialize() { 24008 //listen for the vehicle compare checkbox toggle event that comes from vehicleCompareDialog.vue 24009 document.addEventListener(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleC
24009ompareCheckboxToggle, (event) => { 24010 const { vin, checked } = event.detail; 24011 //if we don't have a vin then this event is for all of the buttons (like a clear all vehicle event) 24012 if (!vin || vin === props.model.Vin) { 24013 if (compareCheckbox) { 24014 compareCheckbox.value.checked = checked; 24015 } 24016 } 24017 }); 24018 //listen for the vehicle compare display button event that comes from vehicleCompareDialog.vue 24019 document.addEventListener(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleCompareButtonDisplay, (event) => { 24020 const { compareVehicleCount, maxVehiclesToCompare } = event.detail; 24021 updateVehicleCount(compareVehicleCount); 24022 if (maxVehicles.value !== maxVehiclesToCompare) { 24023 maxVehicles.value = maxVehiclesToCompare; 24024 } 24025 }); 24026 document.addEventListener(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleCompareCountResponse, (event) => { 24027 const { compareVehicleCount } = event.detail; 24028 updateVehicleCount(compareVehicleCount); 24029 }); 24030 document.dispatchEvent(new CustomEvent(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleCompareCountRequest)); 24031 } 24032 function updateVehicleCount(compareVehicleCount) { 24033 if (totalVehiclesCompared.value !== compareVehicleCount) { 24034 totalVehiclesCompared.value = compareVehicleCount; 24035 } 24036 } 24037 function changeEventHandler(event) { 24038 document.dispatchEvent(new CustomEvent(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleCompareCheckboxChange, { 24039 detail: { 24040 vin: props.model.Vin, 24041 checkboxEvent: event 24042 } 24043 })); 24044 } 24045 function compareButtonEventHandler() { 24046 document.dispatchEvent(new CustomEvent(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleCompareButtonClick)); 24047 } 24048 return (_ctx, _cache) => { 24049 var _a, _b; 24050 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_1, [ 24051 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_2, [ 24052 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("input", { 24053 id: compareId.value, 24054 ref_key: "compareCheckbox", 24055 ref: compareCheckbox, 24056 class: "vehicle-compare-checkbox stat-checkbox", 24057 type: "checkbox", 24058 "data-loc": `compare vehicle:${_ctx.model.Vin}`, 24059 "data-vehicle-compare-checkbox": "true", 24060 "data-vehicle-compare-vin": _ctx.model.Vin, 24061 "data-dotagging-event": "element_configuration", 24062 "data-dotagging-product-name": "Website|Compare Vehicles", 24063 "data-dotagging-event-action": "click", 24064 "data-dotagging-event-action-result": ((_a = compareCheckbox.value) === null || _a === void 0 ? void 0 : _a.checked) ? 'check' : 'uncheck', 24065 "data-dotagging-element-state": ((_b = compareCheckbox.value) === null || _b === void 0 ? void 0 : _b.checked) ? 'active' : 'inactive', 24066 "data-dotagging-element-position": "center_left", 24067 "data-dotagging-element-title": compareVehicleLabel.value, 24068 "data-dotagging-element-order": 0, 24069 "data-dotagging-element-type": "item_details", 24070 "data-dotagging-element-subtype": "toggle", 24071 onChange: changeEventHandler, 24072 disabled: isCheckboxDisabed.value 24073 }, null, 40 /* PROPS, NEED_HYDRATION */, vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_3), 24074 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("label", { 24075 for: compareId.value, 24076 class: "vehicle-compare-checkbox__label checkbox" 24077 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(compareVehicleLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_4) 24078 ]), 24079 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_5, [ 24080 (totalVehiclesCompared.value > 1) 24081 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("button", { 24082 key: 0, 24083 type: "button", 24084 "data-vehicle-compare-button": "true", 24085 class: "vehicle-compare-button text-cta stat-button-link", 24086 "data-loc": `compare vehicle:${_ctx.model.Vin}`, 24087 "aria-haspopup": "dialog", 24088 "data-dotagging-event": "cta_interaction", 24089 "data-dotagging-product-name": "Website|Compare Vehicles", 24090 "data-dotagging-event-action": "click", 24091 "data-dotagging-event-action-result": "popup", 24092 "data-dotagging-element-order": "1", 24093 "data-dotagging-element-type": "item_details", 24094 "data-dotagging-element-subtype": "cta_button", 24095 onClick: compareButtonEventHandler 24096 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(compareViewLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_6)) 24097 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 24098 (totalVehiclesCompared.value === 1) 24099 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("label", vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts_hoisted_7, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(compareAddMoreLabel.value), 1 /* TEXT */)) 24100 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 24101 ]) 24102 ])); 24103 }; 24104 } 24105})); 24106 24107;// ./src/components/spaCosmos/vehicleCards/vehicleCompareButton/vehicleCompareButton.vue?vue&type=script&setup=true&lang=ts 24108 24109;// ./src/components/spaCosmos/vehicleCards/vehicleCompareButton/vehicleCompareButton.vue 24110 24111 24112 24113const vehicleCardDeck_vehicleCompareButton_exports_ = vehicleCardDeck_vehicleCompareButtonvue_type_script_setup_true_lang_ts; 24114 24115/* harmony default export */ const vehicleCardDeck_vehicleCompareButton = (vehicleCardDeck_vehicleCompareButton_exports_); 24116;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/modelEBrochure.vue?vue&type=script&setup=true&lang=ts 24117 24118 24119const vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_1 = { class: "icon-img margin-bottom-1x modelE-Brochure" }; 24120const vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_2 = { class: "col-xs-1 eligible-benefit-icon" }; 24121const vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_3 = ["href"]; 24122const vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_4 = { class: "col-xs-11 eligible-benefit-disclaimer" }; 24123const vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_5 = ["href"]; 24124 24125/* harmony default export */ const vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24126 __name: 'modelEBrochure', 24127 props: { 24128 vin: {}, 24129 vehicleModel: {} 24130 }, 24131 setup(__props) { 24132 const label = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `INFINITI/${props.vehicleModel}/${props.vin}`); 24133 const props = __props; 24134 function getLink(vehicleModel) { 24135 switch (vehicleModel.toLowerCase()) { 24136 case "qx50": 24137 return "/static/brand-infiniti/E-Brochures/2025/US_MY2025_QX50_E-Brochure_1003.pdf"; 24138 case "qx55": 24139 return "/static/brand-infiniti/E-Brochures/2025/Finalizied_QX55_Digital_Brochure.pdf"; 24140 case "qx80": 24141 return "/static/brand-infiniti/E-Brochures/2025/2025_QX80.pdf"; 24142 case "qx60": 24143 return "/static/brand-infiniti/E-Brochures/2025/2025_QX60_Model_Brochure-compressed.pdf"; 24144 default: 24145 return ""; 24146 } 24147 } 24148 return (_ctx, _cache) => { 24149 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_1, [ 24150 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_2, [ 24151 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 24152 href: getLink(_ctx.vehicleModel), 24153 class: "stat-icon-link", 24154 "data-loc": "eligible benefits", 24155 rel: "noopener", 24156 target: "_blank", 24157 "data-dotagging-event": "cta_interaction", 24158 "data-dotagging-product-name": "Website|Eligible Benefits", 24159 "data-dotagging-event-action-result": "open", 24160 "data-dotagging-element-type": "item_details", 24161 "data-dotagging-element-subtype": "hyperlink" 24162 }, _cache[0] || (_cache[0] = [ 24163 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 24164 class: "fa-stack", 24165 "data-placement": "top", 24166 "data-toggle": "tooltip", 24167 "data-original-title": "Model E-Brochure" 24168 }, [ 24169 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-circle fa-stack-2x" }), 24170 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-download fa-stack-1x fa-inverse" }) 24171 ], -1 /* HOISTED */) 24172 ]), 8 /* PROPS */, vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_3) 24173 ]), 24174 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_4, [ 24175 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 24176 href: getLink(_ctx.vehicleModel), 24177 class: "stat-text-link", 24178 "data-loc": "eligible benefits", 24179 rel: "noopener", 24180 target: "_blank", 24181 "data-dotagging-event": "cta_interaction", 24182 "data-dotagging-product-name": "Website|Eligible Benefits", 24183 "data-dotagging-event-action-result": "open", 24184 "data-dotagging-element-type": "item_details", 24185 "data-dotagging-element-subtype": "hyperlink" 24186 }, _cache[1] || (_cache[1] = [ 24187 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("strong", null, "Model E-Brochure", -1 /* HOISTED */) 24188 ]), 8 /* PROPS */, vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts_hoisted_5) 24189 ]) 24190 ])); 24191 }; 24192 } 24193})); 24194 24195;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/modelEBrochure.vue?vue&type=script&setup=true&lang=ts 24196 24197;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/modelEBrochure.vue 24198 24199 24200 24201const vehicleCardDeck_modelEBrochure_exports_ = vehicleCardDeck_modelEBrochurevue_type_script_setup_true_lang_ts; 24202 24203/* harmony default export */ const vehicleCardDeck_modelEBrochure = (vehicleCardDeck_modelEBrochure_exports_); 24204;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefit.vue?vue&type=script&setup=true&lang=ts 24205 24206 24207const vehicleCardDeck_iconEligibleBenefitvue_type_script_setup_true_lang_ts_hoisted_1 = ["data-original-title", "title"]; 24208/* harmony default export */ const vehicleCardDeck_iconEligibleBenefitvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24209 __name: 'iconEligibleBenefit', 24210 props: { 24211 model: {} 24212 }, 24213 setup(__props) { 24214 return (_ctx, _cache) => { 24215 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 24216 class: "fa-stack", 24217 "data-placement": "top", 24218 "data-toggle": "tooltip", 24219 "data-original-title": _ctx.model.Name, 24220 title: _ctx.model.Description 24221 }, [ 24222 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-circle fa-stack-2x" }, null, -1 /* HOISTED */)), 24223 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { 24224 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(_ctx.model.IconClass) 24225 }, null, 2 /* CLASS */) 24226 ], 8 /* PROPS */, vehicleCardDeck_iconEligibleBenefitvue_type_script_setup_true_lang_ts_hoisted_1)); 24227 }; 24228 } 24229})); 24230 24231;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefit.vue?vue&type=script&setup=true&lang=ts 24232 24233;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefit.vue 24234 24235 24236 24237const vehicleCardDeck_iconEligibleBenefit_exports_ = vehicleCardDeck_iconEligibleBenefitvue_type_script_setup_true_lang_ts; 24238 24239/* harmony default export */ const vehicleCardDeck_iconEligibleBenefit = (vehicleCardDeck_iconEligibleBenefit_exports_); 24240;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefitName.vue?vue&type=script&setup=true&lang=ts 24241 24242 24243const vehicleCardDeck_iconEligibleBenefitNamevue_type_script_setup_true_lang_ts_hoisted_1 = { key: 0 }; 24244/* harmony default export */ const vehicleCardDeck_iconEligibleBenefitNamevue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24245 __name: 'iconEligibleBenefitName', 24246 props: { 24247 model: {} 24248 }, 24249 setup(__props) { 24250 return (_ctx, _cache) => { 24251 return (_ctx.model.HasName) 24252 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_
24252prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("strong", vehicleCardDeck_iconEligibleBenefitNamevue_type_script_setup_true_lang_ts_hoisted_1, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.Name), 1 /* TEXT */)) 24253 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 24254 }; 24255 } 24256})); 24257 24258;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefitName.vue?vue&type=script&setup=true&lang=ts 24259 24260;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefitName.vue 24261 24262 24263 24264const vehicleCardDeck_iconEligibleBenefitName_exports_ = vehicleCardDeck_iconEligibleBenefitNamevue_type_script_setup_true_lang_ts; 24265 24266/* harmony default export */ const vehicleCardDeck_iconEligibleBenefitName = (vehicleCardDeck_iconEligibleBenefitName_exports_); 24267;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefitWrapper.vue?vue&type=script&setup=true&lang=ts 24268 24269 24270const vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_1 = { class: "icon-img margin-bottom-1x" }; 24271const vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_2 = { class: "col-xs-1 eligible-benefit-icon" }; 24272const vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_3 = ["href", "rel", "target"]; 24273const vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_4 = { class: "col-xs-11 eligible-benefit-disclaimer" }; 24274const vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_5 = ["href", "rel", "target"]; 24275 24276 24277/* harmony default export */ const vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24278 __name: 'iconEligibleBenefitWrapper', 24279 props: { 24280 model: {} 24281 }, 24282 setup(__props) { 24283 return (_ctx, _cache) => { 24284 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_1, [ 24285 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_2, [ 24286 (_ctx.model.HasLink) 24287 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("a", { 24288 key: 0, 24289 href: _ctx.model.Link, 24290 class: "stat-icon-link", 24291 "data-loc": "eligible benefits", 24292 rel: _ctx.model.LinkRel, 24293 target: _ctx.model.LinkTarget, 24294 "data-dotagging-event": "cta_interaction", 24295 "data-dotagging-product-name": "Website|Eligible Benefits", 24296 "data-dotagging-event-action-result": "open", 24297 "data-dotagging-element-type": "item_details", 24298 "data-dotagging-element-subtype": "hyperlink" 24299 }, [ 24300 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_iconEligibleBenefit, { model: _ctx.model }, null, 8 /* PROPS */, ["model"]) 24301 ], 8 /* PROPS */, vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_3)) 24302 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_iconEligibleBenefit, { 24303 key: 1, 24304 model: _ctx.model 24305 }, null, 8 /* PROPS */, ["model"])) 24306 ]), 24307 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_4, [ 24308 (_ctx.model.HasLink) 24309 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("a", { 24310 key: 0, 24311 href: _ctx.model.Link, 24312 class: "stat-text-link", 24313 "data-loc": "eligible benefits", 24314 rel: _ctx.model.LinkRel, 24315 target: _ctx.model.LinkTarget, 24316 "data-dotagging-event": "cta_interaction", 24317 "data-dotagging-product-name": "Website|Eligible Benefits", 24318 "data-dotagging-event-action-result": "open", 24319 "data-dotagging-element-type": "item_details", 24320 "data-dotagging-element-subtype": "hyperlink" 24321 }, [ 24322 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_iconEligibleBenefitName, { model: _ctx.model }, null, 8 /* PROPS */, ["model"]) 24323 ], 8 /* PROPS */, vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_5)) 24324 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_iconEligibleBenefitName, { 24325 key: 1, 24326 model: _ctx.model 24327 }, null, 8 /* PROPS */, ["model"])), 24328 (_ctx.model.HasDescription) 24329 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 2 }, [ 24330 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("br", null, null, -1 /* HOISTED */)), 24331 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)(" " + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.Description), 1 /* TEXT */) 24332 ], 64 /* STABLE_FRAGMENT */)) 24333 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 24334 ]) 24335 ])); 24336 }; 24337 } 24338})); 24339 24340;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefitWrapper.vue?vue&type=script&setup=true&lang=ts 24341 24342;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/icons/iconEligibleBenefitWrapper.vue 24343 24344 24345 24346const vehicleCardDeck_iconEligibleBenefitWrapper_exports_ = vehicleCardDeck_iconEligibleBenefitWrappervue_type_script_setup_true_lang_ts; 24347 24348/* harmony default export */ const vehicleCardDeck_iconEligibleBenefitWrapper = (vehicleCardDeck_iconEligibleBenefitWrapper_exports_); 24349;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/images/imageEligibleBenefit.vue?vue&type=script&setup=true&lang=ts 24350 24351 24352const vehicleCardDeck_imageEligibleBenefitvue_type_script_setup_true_lang_ts_hoisted_1 = ["alt", "title", "src"]; 24353/* harmony default export */ const vehicleCardDeck_imageEligibleBenefitvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24354 __name: 'imageEligibleBenefit', 24355 props: { 24356 model: {} 24357 }, 24358 setup(__props) { 24359 return (_ctx, _cache) => { 24360 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("img", { 24361 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(_ctx.model.ImageClass), 24362 alt: _ctx.model.AltTag, 24363 title: _ctx.model.AltTag, 24364 src: _ctx.model.ImageSrc, 24365 loading: "lazy"
24366 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_imageEligibleBenefitvue_type_script_setup_true_lang_ts_hoisted_1)); 24367 }; 24368 } 24369})); 24370 24371;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/images/imageEligibleBenefit.vue?vue&type=script&setup=true&lang=ts 24372 24373;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/images/imageEligibleBenefit.vue 24374 24375 24376 24377const vehicleCardDeck_imageEligibleBenefit_exports_ = vehicleCardDeck_imageEligibleBenefitvue_type_script_setup_true_lang_ts; 24378 24379/* harmony default export */ const vehicleCardDeck_imageEligibleBenefit = (vehicleCardDeck_imageEligibleBenefit_exports_); 24380;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/images/imageEligibleBenefitWrapper.vue?vue&type=script&setup=true&lang=ts 24381 24382 24383const vehicleCardDeck_imageEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_1 = { class: "icon-img margin-right-1x margin-bottom-1x" }; 24384const vehicleCardDeck_imageEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_2 = ["href", "rel", "target"]; 24385 24386/* harmony default export */ const vehicleCardDeck_imageEligibleBenefitWrappervue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24387 __name: 'imageEligibleBenefitWrapper', 24388 props: { 24389 model: {} 24390 }, 24391 setup(__props) { 24392 return (_ctx, _cache) => { 24393 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_imageEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_1, [ 24394 (_ctx.model.HasLink) 24395 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("a", { 24396 key: 0, 24397 class: "icon-img__benefit stat-image-link", 24398 "data-loc": "eligible benefits", 24399 href: _ctx.model.Link, 24400 rel: _ctx.model.LinkRel, 24401 target: _ctx.model.LinkTarget, 24402 "data-dotagging-event": "cta_interaction", 24403 "data-dotagging-product-name": "Website|Eligible Benefits", 24404 "data-dotagging-event-action-result": "open", 24405 "data-dotagging-element-type": "item_details", 24406 "data-dotagging-element-subtype": "hyperlink" 24407 }, [ 24408 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_imageEligibleBenefit, { model: _ctx.model }, null, 8 /* PROPS */, ["model"]) 24409 ], 8 /* PROPS */, vehicleCardDeck_imageEligibleBenefitWrappervue_type_script_setup_true_lang_ts_hoisted_2)) 24410 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_imageEligibleBenefit, { 24411 key: 1, 24412 model: _ctx.model 24413 }, null, 8 /* PROPS */, ["model"])) 24414 ])); 24415 }; 24416 } 24417})); 24418 24419;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/images/imageEligibleBenefitWrapper.vue?vue&type=script&setup=true&lang=ts 24420 24421;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/images/imageEligibleBenefitWrapper.vue 24422 24423 24424 24425const vehicleCardDeck_imageEligibleBenefitWrapper_exports_ = vehicleCardDeck_imageEligibleBenefitWrappervue_type_script_setup_true_lang_ts; 24426 24427/* harmony default export */ const vehicleCardDeck_imageEligibleBenefitWrapper = (vehicleCardDeck_imageEligibleBenefitWrapper_exports_); 24428;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/vehicleEligibleBenefits.vue?vue&type=script&setup=true&lang=ts 24429 24430 24431const vehicleCardDeck_vehicleEligibleBenefitsvue_type_script_setup_true_lang_ts_hoisted_1 = { 24432 key: 0, 24433 class: "eligible-benefits" 24434}; 24435 24436 24437 24438 24439/* harmony default export */ const vehicleCardDeck_vehicleEligibleBenefitsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24440 __name: 'vehicleEligibleBenefits', 24441 props: { 24442 model: {}, 24443 vehicleModel: {}, 24444 hasBrochure: { type: Boolean } 24445 }, 24446 setup(__props) { 24447 const hasEligibleBenefits = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return ((_b = (_a = props.model) === null || _a === void 0 ? void 0 : _a.EligibleBenefits) === null || _b === void 0 ? void 0 : _b.length) > 0; }); 24448 const isImageBenefitType = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return ((_b = (_a = props.model) === null || _a === void 0 ? void 0 : _a.BenefitType) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'image'; }); 24449 const props = __props; 24450 return (_ctx, _cache) => { 24451 return (hasEligibleBenefits.value || _ctx.hasBrochure) 24452 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleEligibleBenefitsvue_type_script_setup_true_lang_ts_hoisted_1, [ 24453 (isImageBenefitType.value) 24454 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.EligibleBenefits || [], (benefit, index) => { 24455 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_imageEligibleBenefitWrapper, { 24456 model: benefit, 24457 key: `benefit-${_ctx.model.VehicleVin}-image-${index.toString()}` 24458 }, null, 8 /* PROPS */, ["model"])); 24459 }), 128 /* KEYED_FRAGMENT */)) 24460 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 1 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.EligibleBenefits || [], (benefit, index) => { 24461 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_iconEligibleBenefitWrapper, { 24462 model: benefit, 24463 key: `benefit-${_ctx.model.VehicleVin}-${_ctx.model.BenefitType}-${index.toString()}` 24464 }, null, 8 /* PROPS */, ["model"])); 24465 }), 128 /* KEYED_FRAGMENT */)), 24466 (_ctx.hasBrochure) 24467 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_modelEBrochure, { 24468 key: 2, 24469 vin: _ctx.model.VehicleVin, 24470 vehicleModel: _ctx.vehicleModel 24471 }, null, 8 /* PROPS */, ["vin", "vehicleModel"])) 24472 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 24473 ])) 24474 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 24475 }; 24476 } 24477})); 24478 24479;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/vehicleEligibleBenefits.vue?vue&type=script&setup=true&lang=ts 24480 24481;// ./src/components/spaCosmos/vehicleCards/vehicleEligibleBenefits/vehicleEligibleBenefits.vue 24482 24483 24484 24485const vehicleCardDeck_vehicleEligibleBenefits_exports_ = vehicleCardDeck_vehicleEligibleBenefitsvue_type_script_setup_true_lang_ts; 24486 24487/* harmony default export */ const vehicleCardDeck_vehicleEligibleBenefits = (vehicleCardDeck_vehicleEligibleBenefits_exports_); 24488;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselImage.vue?vue&type=script&setup=true&lang=ts 24489 24490 24491const vehicleCardDeck_carouselImagevue_type_script_setup_true_lang_ts_hoisted_1 = ["data-image-num", "src", "srcset", "sizes", "alt", "title", "loading", "data-dotagging-image-provider"]; 24492 24493/* harmony default export */ const vehicleCardDeck_carouselImagevue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24494 __name: 'carouselImage', 24495 props: { 24496 imageSrc: {}, 24497 imageDownloadDate: {}, 24498 imageNum: {}, 24499 isFirstImage: { type: Boolean },
24500 isBackground: { type: Boolean }, 24501 isGrid: { type: Boolean }, 24502 vehicleNameHtmlEncoded: {}, 24503 backgroundColorQueryParam: {}, 24504 imageProvider: {} 24505 }, 24506 setup(__props) { 24507 const props = __props; 24508 const isLoading = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.isFirstImage ? 'eager' : 'lazy'); 24509 const className = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.isBackground ? 'hero-carousel__background-image' : 'hero-carousel__image'); 24510 const gridOrList = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.isGrid ? 'grid' : 'list'); 24511 const queryParams = props.imageDownloadDate ? `timestamp=${props.imageDownloadDate}&${props.backgroundColorQueryParam}` : props.backgroundColorQueryParam; 24512 const imgUrlWithBgColor = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${props.imageSrc}?${queryParams}`); 24513 const srcset = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.isGrid 24514 ? `${imgUrlWithBgColor.value}&width=300 300w, 24515 ${imgUrlWithBgColor.value}&width=400 400w, 24516 ${imgUrlWithBgColor.value}&width=500 500w, 24517 ${imgUrlWithBgColor.value}&width=600 600w` 24518 : `${imgUrlWithBgColor.value}&width=1 1w, 24519 ${imgUrlWithBgColor.value}&width=400 400w, 24520 ${imgUrlWithBgColor.value}&width=500 500w, 24521 ${imgUrlWithBgColor.value}&width=600 600w, 24522 ${imgUrlWithBgColor.value}&width=700 700w, 24523 ${imgUrlWithBgColor.value}&width=800 800w`); 24524 const sizes = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.isGrid 24525 ? `(min-width: 1920px) calc(100vw / 4), 24526 (min-width: 1301px) calc(100vw / 3), 24527 (min-width: 640px) calc(100vw / 2), 24528 (min-width: 540px) 100vw, 24529 100vw` 24530 : `(min-width: 1920px) 100vw, 24531 (min-width: 1533px) calc((100vw) * .54), 24532 (min-width: 1201px) 100vw, 24533 100vw`); 24534 function onImgLoad(event) { 24535 if (event.target.closest(".hero-carousel__single-image") && event.target.closest(`.${gridOrList.value}-view`)) { 24536 const ancestorElem = event.target.closest(".hero-carousel__item"); 24537 ancestorElem.classList.remove("hero-carousel__item--loading"); 24538 ancestorElem.classList.add("hero-carousel__item--loaded"); 24539 } 24540 } 24541 return (_ctx, _cache) => { 24542 var _a; 24543 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("img", { 24544 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(`${className.value} ${className.value}--${gridOrList.value}`), 24545 "data-image-num": _ctx.imageNum, 24546 src: `${imgUrlWithBgColor.value}&width=300`, 24547 srcset: srcset.value, 24548 sizes: sizes.value, 24549 alt: _ctx.vehicleNameHtmlEncoded, 24550 title: _ctx.vehicleNameHtmlEncoded, 24551 width: "300", 24552 loading: isLoading.value, 24553 "data-dotagging-image-provider": (_a = _ctx.imageProvider) !== null && _a !== void 0 ? _a : '', 24554 onLoad: onImgLoad, 24555 onError: onImgLoad 24556 }, null, 42 /* CLASS, PROPS, NEED_HYDRATION */, vehicleCardDeck_carouselImagevue_type_script_setup_true_lang_ts_hoisted_1)); 24557 }; 24558 } 24559})); 24560 24561;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselImage.vue?vue&type=script&setup=true&lang=ts 24562 24563;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselImage.vue 24564 24565 24566 24567const vehicleCardDeck_carouselImage_exports_ = vehicleCardDeck_carouselImagevue_type_script_setup_true_lang_ts; 24568 24569/* harmony default export */ const vehicleCardDeck_carouselImage = (vehicleCardDeck_carouselImage_exports_); 24570;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarouselHeroWrapper.vue?vue&type=script&setup=true&lang=ts 24571 24572 24573const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_1 = { class: "hero-carousel__image-wrapper" }; 24574const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_2 = { 24575 key: 0, 24576 class: "hero-carousel__background-wrapper" 24577}; 24578const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_3 = { class: "hero-carousel__single-image" }; 24579const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_4 = { 24580 key: 1, 24581 class: "missing-image" 24582}; 24583const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_5 = { class: "missing-image__title" }; 24584const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_6 = { class: "missing-image__subtitle" }; 24585 24586 24587 24588/* harmony default export */ const vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24589 __name: 'vehicleImageCarouselHeroWrapper', 24590 props: { 24591 model: {} 24592 }, 24593 setup(__props) { 24594 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 24595 const photoUnavailabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VEHICLE_PHOTOS_UNAVAILABLE")); 24596 const checkBackSoonLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("PLEASE_CHECK_BACK_SOON")); 24597 const props = __props; 24598 const isImageSourceMissing = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.ImageSource.toLowerCase().includes("missing")); 24599 return (_ctx, _cache) => { 24600 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_1, [ 24601 (!isImageSourceMissing.value) 24602 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_2, [ 24603 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_carouselImage, { 24604 "image-src": _ctx.model.ImageSource, 24605 "image-download-date": _ctx.model.ImageDownloadDate, 24606 "image-num": _ctx.model.ImageNum, 24607 "is-first-image": _ctx.model.IsFirstImage, 24608 "background-color-query-param": _ctx.model.Backgroun
24608dColorQueryParam, 24609 "vehicle-name-html-encoded": _ctx.model.VehicleNameHtmlEncoded, 24610 "is-background": true, 24611 "is-grid": true, 24612 "image-provider": _ctx.model.ImageProvider 24613 }, null, 8 /* PROPS */, ["image-src", "image-download-date", "image-num", "is-first-image", "background-color-query-param", "vehicle-name-html-encoded", "image-provider"]), 24614 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_carouselImage, { 24615 "image-src": _ctx.model.ImageSource, 24616 "image-download-date": _ctx.model.ImageDownloadDate, 24617 "image-num": _ctx.model.ImageNum, 24618 "is-first-image": _ctx.model.IsFirstImage, 24619 "background-color-query-param": _ctx.model.BackgroundColorQueryParam, 24620 "vehicle-name-html-encoded": _ctx.model.VehicleNameHtmlEncoded, 24621 "is-background": true, 24622 "is-grid": false, 24623 "image-provider": _ctx.model.ImageProvider 24624 }, null, 8 /* PROPS */, ["image-src", "image-download-date", "image-num", "is-first-image", "background-color-query-param", "vehicle-name-html-encoded", "image-provider"]) 24625 ])) 24626 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 24627 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_3, [ 24628 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_carouselImage, { 24629 "image-src": _ctx.model.ImageSource, 24630 "image-download-date": _ctx.model.ImageDownloadDate, 24631 "image-num": _ctx.model.ImageNum, 24632 "is-first-image": _ctx.model.IsFirstImage, 24633 "background-color-query-param": _ctx.model.BackgroundColorQueryParam, 24634 "vehicle-name-html-encoded": _ctx.model.VehicleNameHtmlEncoded, 24635 "is-background": false, 24636 "is-grid": true, 24637 "image-provider": _ctx.model.ImageProvider 24638 }, null, 8 /* PROPS */, ["image-src", "image-download-date", "image-num", "is-first-image", "background-color-query-param", "vehicle-name-html-encoded", "image-provider"]), 24639 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_carouselImage, { 24640 "image-src": _ctx.model.ImageSource, 24641 "image-download-date": _ctx.model.ImageDownloadDate, 24642 "image-num": _ctx.model.ImageNum, 24643 "is-first-image": _ctx.model.IsFirstImage, 24644 "background-color-query-param": _ctx.model.BackgroundColorQueryParam, 24645 "vehicle-name-html-encoded": _ctx.model.VehicleNameHtmlEncoded, 24646 "is-background": false, 24647 "is-grid": false, 24648 "image-provider": _ctx.model.ImageProvider 24649 }, null, 8 /* PROPS */, ["image-src", "image-download-date", "image-num", "is-first-image", "background-color-query-param", "vehicle-name-html-encoded", "image-provider"]) 24650 ]), 24651 (isImageSourceMissing.value && !_ctx.model.IsViewMoreImage) 24652 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_4, [ 24653 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_5, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(photoUnavailabel.value), 1 /* TEXT */), 24654 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts_hoisted_6, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(checkBackSoonLabel.value), 1 /* TEXT */) 24655 ])) 24656 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 24657 ])); 24658 }; 24659 } 24660})); 24661 24662;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarouselHeroWrapper.vue?vue&type=script&setup=true&lang=ts 24663 24664;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarouselHeroWrapper.vue 24665 24666 24667 24668const vehicleCardDeck_vehicleImageCarouselHeroWrapper_exports_ = vehicleCardDeck_vehicleImageCarouselHeroWrappervue_type_script_setup_true_lang_ts; 24669 24670/* harmony default export */ const vehicleCardDeck_vehicleImageCarouselHeroWrapper = (vehicleCardDeck_vehicleImageCarouselHeroWrapper_exports_); 24671;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselImageCounter.vue?vue&type=script&setup=true&lang=ts 24672 24673 24674const vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts_hoisted_1 = { 24675 key: 0, 24676 class: "hero-carousel__image-counter" 24677}; 24678const vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts_hoisted_2 = { class: "image-counter__current" }; 24679const vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts_hoisted_3 = { class: "image-counter__total" }; 24680 24681/* harmony default export */ const vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24682 __name: 'carouselImageCounter', 24683 props: { 24684 currentSlide: {}, 24685 totalCount: {}, 24686 imageLimit: {} 24687 }, 24688 setup(__props) { 24689 const props = __props; 24690 const showCounter = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 24691 const currentCount = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.currentSlide >= props.imageLimit ? props.imageLimit : props.currentSlide); 24692 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 24693 addDocResizeObserver(); 24694 }); 24695 function addDocResizeObserver() { 24696 // hover: none is a device capability, not a viewport dimension â evaluate once on mount 24697 showCounter.value = props.totalCount > 1 && window.matchMedia('(hover: none)').matches; 24698 } 24699 return (_ctx, _cache) => { 24700 return (showCounter.value) 24701 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts_hoisted_1, [ 24702 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts_hoisted_2, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(currentCount.value), 1 /* TEXT */), 24703 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { class: "image-counter__slash" }, "/", -1 /* HOISTED */)), 24704 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts_hoisted_3, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.totalCount), 1 /* TEXT */) 24705 ])) 24706 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 24707 }; 24708 } 24709})); 24710 24711;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselImageCounter.vue?vue&type=script&setup=true&lang=ts 24712 24713;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselImageCounter.vue 24714 24715 24716 24717const vehicleCardDeck_carouselImageCounter_exports_ = vehicleCardDeck_carouselImageCountervue_type_script_setup_true_lang_ts; 24718 24719/* harmony default export */ const vehicleCardDeck_carouselImageCounter = (vehicleCardDeck_carouselImageCounter_exports_); 24720;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselTypes.ts 24721var vehicleCardDeck_Direction; 24722(function (Direction) { 24723 Direction[Direction["LeftRight"] = 0] = "LeftRight";
24724 Direction[Direction["UpDown"] = 1] = "UpDown"; 24725})(vehicleCardDeck_Direction || (vehicleCardDeck_Direction = {})); 24726var vehicleCardDeck_CarouselItemType; 24727(function (CarouselItemType) { 24728 CarouselItemType["image"] = "image"; 24729 CarouselItemType["video"] = "video"; 24730 CarouselItemType["interior360"] = "interior360"; 24731 CarouselItemType["spincar"] = "spincar"; 24732})(vehicleCardDeck_CarouselItemType || (vehicleCardDeck_CarouselItemType = {})); 24733var vehicleCardDeck_CarouselControlType; 24734(function (CarouselControlType) { 24735 CarouselControlType["Next"] = "next"; 24736 CarouselControlType["Previous"] = "previous"; 24737})(vehicleCardDeck_CarouselControlType || (vehicleCardDeck_CarouselControlType = {})); 24738 24739;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselControl.vue?vue&type=script&setup=true&lang=ts 24740 24741 24742const vehicleCardDeck_carouselControlvue_type_script_setup_true_lang_ts_hoisted_1 = ["aria-label", "title", "data-loc", "data-dotagging-element-title", "data-dotagging-affiliation"]; 24743 24744
24745/* harmony default export */ const vehicleCardDeck_carouselControlvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24746 __name: 'carouselControl', 24747 props: { 24748 controlType: {}, 24749 vin: {} 24750 }, 24751 setup(__props) { 24752 const props = __props; 24753 const vin = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.vin); 24754 const type = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.controlType.toString()); 24755 const typeCapitalized = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => type.value.charAt(0).toUpperCase() + type.value.slice(1)); 24756 const direction = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.controlType === vehicleCardDeck_CarouselControlType.Previous ? 'left' : 'right'); 24757 const taggingAffiliation = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(window.DlronGlobal_DealerName); 24758 return (_ctx, _cache) => { 24759 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("button", { 24760 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(`hero-carousel__control hero-carousel__control--${type.value}-btn stat-arrow-${direction.value === 'left' ? 'prev' : 'next'}`), 24761 onClick: _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* withModifiers */.D$)(($event) => (_ctx.$emit('controlClicked', _ctx.controlType)), ["prevent"])), 24762 role: "button", 24763 "aria-label": `${typeCapitalized.value} image`, 24764 title: `${typeCapitalized.value} image`, 24765 "data-loc": `available inventory:${vin.value}`, 24766 "data-dotagging-event": "media_interaction", 24767 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 24768 "data-dotagging-event-action": "click", 24769 "data-dotagging-event-action-result": "calc", 24770 "data-dotagging-event-state": "active", 24771 "data-dotagging-element-position": "center_center", 24772 "data-dotagging-element-order": "0", 24773 "data-dotagging-media_type": "gallery", 24774 "data-dotagging-element-subtype": "nav_button", 24775 "data-dotagging-element-title": `Carousel Controls - ${typeCapitalized.value} Image`, 24776 "data-dotagging-affiliation": taggingAffiliation.value 24777 }, [ 24778 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { 24779 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(`fa fa-chevron-${direction.value} custom-dealer-styling__chevron-${direction.value}--white`) 24780 }, null, 2 /* CLASS */) 24781 ], 10 /* CLASS, PROPS */, vehicleCardDeck_carouselControlvue_type_script_setup_true_lang_ts_hoisted_1)); 24782 }; 24783 } 24784})); 24785 24786;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselControl.vue?vue&type=script&setup=true&lang=ts 24787 24788;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/carouselControl.vue 24789 24790 24791 24792const vehicleCardDeck_carouselControl_exports_ = vehicleCardDeck_carouselControlvue_type_script_setup_true_lang_ts; 24793 24794/* harmony default export */ const vehicleCardDeck_carouselControl = (vehicleCardDeck_carouselControl_exports_); 24795;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarouselHeroWrapperModel.ts 24796class vehicleCardDeck_VehicleImageCarouselHeroWrapperModel { 24797 constructor() { 24798 this.IsFirstImage = false; 24799 this.IsViewMoreImage = false; 24800 this.ImageProvider = ''; 24801 } 24802} 24803 24804// EXTERNAL MODULE: ./src/utilities/performanceHelpers.ts 24805var vehicleCardDeck_performanceHelpers = __webpack_require__(9185); 24806;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarousel.vue?vue&type=script&setup=true&lang=ts 24807var vehicleCardDeck_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 24808 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 24809 return new (P || (P = Promise))(function (resolve, reject) { 24810 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 24811 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 24812 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 24813 step((generator = generator.apply(thisArg, _arguments || [])).next()); 24814 }); 24815}; 24816 24817 24818const vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts_hoisted_1 = ["id", "data-carousel-index", "title"]; 24819const vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts_hoisted_2 = ["href", "data-loc", "data-dotagging-element-order"]; 24820const vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts_hoisted_3 = ["aria-label", "title", "data-loc"]; 24821 24822 24823 24824 24825 24826 24827 24828 24829/* harmony default export */ const vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 24830 __name: 'vehicleImageCarousel', 24831 props: { 24832 model: {} 24833 }, 24834 setup(__props) { 24835 const props = __props; 24836 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 24837 const carouselImageCount = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.PhotoListDetailed.length); 24838 const viewMoreLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getButton("VIEW_MORE")); 24839 const hasRedirectLocation = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.RedirectLocation != null && props.model.RedirectLocation.trim() !== ""); 24840 const carouselElement = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(null); 24841 const carouselItemContainer = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(null); 24842 const controls = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(null); 24843 const controlVisibility = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)({ 24844 all: true, 24845 previous: false, 24846 next: true 24847 }); 24848 const photoList = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)([]); 24849 let currentIndex = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(0); 24850 let items = []; 24851 let scrollX = 0; 24852 let containerWidth = 0; 24853 let heroIntersectionObserver = null; 24854 let isSwiping = false;
24855 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 24856 initialize(); 24857 }); 24858 function initialize() { 24859 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24860 if (carouselImageCount.value === 0 && controls.value) { 24861 controlVisibility.value.all = false; 24862 } 24863 yield getContainerWidth(); 24864 toggleControls(); 24865 addObservers(); 24866 renderMorePhotos(); 24867 }); 24868 } 24869 function getContainerWidth() { 24870 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24871 yield (0,vehicleCardDeck_performanceHelpers/* doBeforeNextRepaint */.L)(() => { 24872 containerWidth = carouselItemContainer.value.getBoundingClientRect().width; 24873 }); 24874 }); 24875 } 24876 function toggleControls() { 24877 const isFirstSlide = currentIndex.value === 0; 24878 const isLastSlide = currentIndex.value === carouselImageCount.value - 1; 24879 controlVisibility.value.previous = !isFirstSlide; 24880 controlVisibility.value.next = !isLastSlide; 24881 } 24882 function addObservers() { 24883 addResizeObserver(); 24884 addHeroIntersectionObserver(); 24885 } 24886 function addResizeObserver() { 24887 if (carouselItemContainer) { 24888 let lastContainerWidth = 0; 24889 const swipeObserver = new ResizeObserver((entries) => { 24890 for (let entry of entries) { 24891 const newWidth = entry.contentRect.width; 24892 if (newWidth === lastContainerWidth) { 24893 continue; 24894 } 24895 lastContainerWidth = newWidth; 24896 containerWidth = newWidth; 24897 scrollX = currentIndex.value * containerWidth; 24898 entry.target.scrollTo({ left: scrollX, behavior: "smooth" }); 24899 } 24900 }); 24901 swipeObserver === null || swipeObserver === void 0 ? void 0 : swipeObserver.observe(carouselItemContainer.value); 24902 } 24903 } 24904 function addHeroIntersectionObserver() { 24905 //intersection observer to capture hero image scroll events to track 24906 //image counts and thumbnail hilighting 24907 let firstAfterPageLoad = true; 24908 heroIntersectionObserver = new IntersectionObserver((entries) => { 24909 entries.forEach((entry) => vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24910 if (entry.isIntersecting) { 24911 // we don't want to send the event when the page loads on each first photo 24912 if (firstAfterPageLoad) { 24913 firstAfterPageLoad = false; 24914 } 24915 else { 24916 yield scrollSlides(entry.target, isSwiping); 24917 } 24918 setTouchSwipe(false); 24919 } 24920 })); 24921 }, { 24922 root: carouselItemContainer.value, 24923 threshold: .9, 24924 }); 24925 for (let item of items) { 24926 heroIntersectionObserver === null || heroIntersectionObserver === void 0 ? void 0 : heroIntersectionObserver.observe(item); 24927 } 24928 } 24929 function renderMorePhotos(newPhotoCount = 1) { 24930 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24931 for (let i = 0; i < newPhotoCount; i++) { 24932 const totalPhotoCount = props.model.PhotoListDetailed.length;
24933 const currentRenderedPhotosCount = photoList.value.length; 24934 if (currentRenderedPhotosCount < totalPhotoCount) { 24935 const newPhoto = props.model.PhotoListDetailed[currentRenderedPhotosCount]; 24936 photoList.value.push(newPhoto); 24937 yield (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* nextTick */.dY)(); 24938 items = Array.from(carouselItemContainer.value.children); 24939 const latestItem = items[items.length - 1]; 24940 if (latestItem) { 24941 heroIntersectionObserver === null || heroIntersectionObserver === void 0 ? void 0 : heroIntersectionObserver.observe(latestItem); 24942 } 24943 } 24944 } 24945 }); 24946 } 24947 function isLastImage(index) { 24948 return index === props.model.PhotoListDetailed.length - 1; 24949 } 24950 function getWrapperModel(imageSrc, imageNum, isFirstImage, isViewMoreImage, backgroundColorQueryParam, vehicleNameHtmlEncoded, downloadDate, imageProvider = '') { 24951 const model = new vehicleCardDeck_VehicleImageCarouselHeroWrapperModel(); 24952 model.ImageSource = imageSrc; 24953 model.ImageNum = imageNum; 24954 model.IsFirstImage = isFirstImage; 24955 model.IsViewMoreImage = isViewMoreImage; 24956 model.BackgroundColorQueryParam = backgroundColorQueryParam; 24957 model.VehicleNameHtmlEncoded = vehicleNameHtmlEncoded; 24958 model.ImageDownloadDate = downloadDate; 24959 model.ImageProvider = imageProvider; 24960 return model; 24961 } 24962 function carouselControlHandler(controlType) { 24963 switch (controlType) { 24964 case vehicleCardDeck_CarouselControlType.Previous: 24965 goToPreviousSlide(); 24966 break; 24967 case vehicleCardDeck_CarouselControlType.Next: 24968 goToNextSlide(); 24969 break; 24970 } 24971 } 24972 function setTouchSwipe(isTouchSwiping) { 24973 isSwiping = isTouchSwiping; 24974 if (isSwiping && currentIndex.value === photoList.value.length - 1) { 24975 renderMorePhotos(); 24976 } 24977 } 24978 function scrollSlides(elem, isSwiping) { 24979 var _a, _b; 24980 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24981 const slideIndex = parseInt((_b = (_a = elem.dataset) === null || _a === void 0 ? void 0 : _a.carouselIndex) !== null && _b !== void 0 ? _b : "0"); 24982 yield goToSlide(slideIndex, isSwiping); 24983 }); 24984 } 24985 function goToPreviousSlide() { 24986 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24987 let slideIndex = currentIndex.value; 24988 if (slideIndex > 0) { 24989 slideIndex--; 24990 } 24991 yield goToSlide(slideIndex, false); 24992 }); 24993 } 24994 function goToNextSlide() { 24995 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 24996 if (currentIndex.value === photoList.value.length - 1) { 24997 renderMorePhotos(); 24998 yield (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* nextTick */.dY)(); 24999 } 25000 let slideIndex = currentIndex.value; 25001 if (slideIndex < carouselImageCount.value - 1) { 25002 slideIndex++; 25003 } 25004 yield goToSlide(slideIndex, false); 25005 }); 25006 } 25007 function goToSlide(slideIndex, scrollEvent) { 25008 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 25009 if (scrollEvent) { 25010 dispatchSwipeImageTagging(slideIndex); 25011 } 25012 currentIndex.value = slideIndex; 25013 //scroll the carousel hero image 25014 if (!scrollEvent) { 25015 yield scrollIntoView(items[currentIndex.value], carouselItemContainer.value); 25016 } 25017 toggleControls(); 25018 }); 25019 } 25020 function scrollIntoView(elem, containerElem) { 25021 return vehicleCardDeck_awaiter(this, void 0, void 0, function* () { 25022 //NOTE: scrollIntoView() does not play well when scrolling multiple elements simultaneously 25023 // so we have opted to leverage scrollTo which does allow this 25024 // Additionally, scrollable items that are hidden will have a getBoundingClientRect() of 0. 25025 // So, after scrolling the carousel in desktop view switching to mobile view will not show 25026 // the highlighted thumbnail because we could not scroll it into view since it was hidden 25027 if (!elem) { 25028 return; 25029 } 25030 if (!containerElem) { 25031 return; 25032 } 25033 let position; 25034 yield (0,vehicleCardDeck_performanceHelpers/* doBeforeNextRepaint */.L)(() => { 25035 position = elem.offsetLeft - (containerElem.getBoundingClientRect().width - elem.getBoundingClientRect().width) / 2; 25036 }); 25037 containerElem.scrollTo({ left: position, behavior: "smooth" }); 25038 }); 25039 } 25040 function dispatchSwipeImageTagging(slideIndex) { 25041 let eventAction; 25042 let eventActionResult; 25043 if (currentIndex.value < slideIndex) { 25044 eventAction = "swipe_left"; 25045 eventActionResult = "increase"; 25046 } 25047 else if (currentIndex.value > slideIndex) { 25048 eventAction = "swipe_right"; 25049 eventActionResult = "decrease"; 25050 } 25051 else { 25052 return; 25053 } 25054 const taggingVehicleDetailsElement = carouselElement.value.closest("[data-vehicle-information]"); 25055 const imageLinkElement = taggingVehicleDetailsElement === null || taggingVehicleDetailsElement === void 0 ? void 0 : taggingVehicleDetailsElement.querySelector(`[tabindex] a`); 25056 if (taggingVehicleDetailsElement && imageLinkElement) { 25057 const dataset = taggingVehicleDetailsElement.dataset; 25058 const SwipeEventData = { 25059 affiliation: `${dataset.dotaggingAffiliation || ""}`, 25060 card_name: `${dataset.dotaggingCardName || ""}`, 25061 context: `${dataset.dotaggingContext || ""}`, 25062 department: `${dataset.dotaggingDepartment || ""}`,
25063 element_color: `${dataset.dotaggingElementColor || ""}`, 25064 element_order: `${slideIndex + 1}`, 25065 element_position: `${dataset.dotaggingElementPosition || ""}`, 25066 element_subtype: "image", 25067 element_text: `${dataset.dotaggingElementText || ""}`, 25068 element_title: `${dataset.dotaggingElementTitle || ""}`, 25069 element_type: `${dataset.dotaggingElementType || ""}`, 25070 event: "media_interaction", 25071 event_action: `${eventAction}`, 25072 event_action_result: `${eventActionResult}`, 25073 event_location: `${dataset.dotaggingEventLocation || ""}`, 25074 event_owner: `${imageLinkElement.dataset.dotaggingEventOwner || ""}`, 25075 flow_name: `${dataset.dotaggingFlowName || ""}`, 25076 flow_outcome: `${dataset.dotaggingFlowOutcome || ""}`, 25077 flow_stage: `${dataset.dotaggingFlowStage || ""}`, 25078 item_category: `${dataset.dotaggingItemCategory || ""}`, 25079 item_color: `${dataset.dotaggingItemColor || ""}`, 25080 item_condition: `${dataset.dotaggingItemCondition || ""}`, 25081 item_fuel_type: `${dataset.dotaggingItemFuelType || ""}`, 25082 item_id: `${dataset.dotaggingItemId || ""}`, 25083 item_make: `${dataset.dotaggingItemMake || ""}`, 25084 item_model: `${dataset.dotaggingItemModel || ""}`, 25085 item_number: `${dataset.dotaggingItemNumber || ""}`, 25086 item_order: `${dataset.dotaggingItemOrder || ""}`, 25087 item_price: `${dataset.dotaggingPrice || ""}`, 25088 item_type: `${dataset.dotaggingItemType || ""}`, 25089 item_variant: `${dataset.dotaggingItemVariant || ""}`, 25090 item_year: `${dataset.dotaggingItemYear || ""}`, 25091 link_url: `${imageLinkElement.getAttribute("href") || ""}`, 25092 media_type: "gallery", 25093 product_name: "SRP 2.0|Vehicle Item Details", 25094 }; 25095 SwipeEventData.item_body_type = dataset.dotaggingItemBodyType || ''; 25096 SwipeEventData.item_color_interior = dataset.dotaggingItemColorInterior || ''; 25097 SwipeEventData.item_engine = dataset.dotaggingItemEngine || ''; 25098 SwipeEventData.item_fuel_efficiency_city = dataset.dotaggingItemFuelEfficiencyCity || ''; 25099 SwipeEventData.item_fuel_efficiency_highway = dataset.dotaggingItemFuelEfficiencyHighway || ''; 25100 SwipeEventData.item_odometer = dataset.dotaggingItemOdometer || ''; 25101 SwipeEventData.item_transmission = dataset.dotaggingItemTransmission || ''; 25102 carouselElement.value.dispatchEvent(new CustomEvent("dotagging.event", { 25103 bubbles: true, 25104 detail: { 25105 data: SwipeEventData 25106 } 25107 })); 25108 } 25109 } 25110 return (_ctx, _cache) => { 25111 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25112 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["hero-carousel hero-carousel--component", [`hero-carousel--${_ctx.model.CornerType}`, 25113 { [`hero-carousel--signalsforyou-${_ctx.model.CornerType}`]: _ctx.model.IsSignalsForYou }]]), 25114 ref_key: "carouselElement", 25115 ref: carouselElement 25116 }, [ 25117 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 25118 class: "hero-carousel__items", 25119 onTouchstart: _cache[0] || (_cache[0] = ($event) => (setTouchSwipe(true))), 25120 tabindex: "0", 25121 ref_key: "carouselItemContainer", 25122 ref: carouselItemContainer 25123 }, [ 25124 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(photoList.value, (detailImage, index) => { 25125 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25126 id: `hero-carousel__item--${index.toString()}-${_ctx.model.Vin}`, 25127 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["hero-carousel__item hero-carousel__item--loading", _ctx.model.CornerType]), 25128 "data-carousel-index": index, 25129 title: _ctx.model.PhotoLabel, 25130 tabindex: "-1" 25131 }, [ 25132 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 25133 class: "hero-carousel__item--viewvehicle stat-image-link", 25134 ref_for: true, 25135 ref: "viewVehicleLink", 25136 href: _ctx.model.RedirectLocation, 25137 "data-loc": `available inventory:${_ctx.model.Vin}`, 25138 "data-dotagging-event": "media_interaction", 25139 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 25140 "data-dotagging-event-action": "click", 25141 "data-dotagging-event-action-result": "open", 25142 "data-dotagging-element-order": index, 25143 "data-dotagging-media-type": "gallery", 25144 "data-dotagging-element-subtype": "hyperlink" 25145 }, [ 25146 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleImageCarouselHeroWrapper, { 25147 model: getWrapperModel(detailImage.TargetUrl, index + 1, index == 0, _ctx.model.VehicleUxPosition === 1, _ctx.model.Backgroun
25147dColorQueryParam, _ctx.model.VehicleNameHtmlEncoded, detailImage.DownloadDate, detailImage.Provider) 25148 }, null, 8 /* PROPS */, ["model"]), 25149 (hasRedirectLocation.value && isLastImage(index)) 25150 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25151 key: 0, 25152 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(['hero-carousel__vdp-button-wrapper', { ['hero-carousel__vdp-button-wrapper-blurred']: _ctx.model.BlurCtaBackground }]) 25153 }, [ 25154 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 25155 class: "btn btn-lg btn-cta hero-carousel__view--more stat-button-link", 25156 "aria-label": viewMoreLabel.value, 25157 title: viewMoreLabel.value, 25158 "data-loc": `available inventory:${_ctx.model.Vin}` 25159 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(viewMoreLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts_hoisted_3) 25160 ], 2 /* CLASS */)) 25161 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 25162 ], 8 /* PROPS */, vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts_hoisted_2) 25163 ], 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts_hoisted_1)); 25164 }), 256 /* UNKEYED_FRAGMENT */)) 25165 ], 544 /* NEED_HYDRATION, NEED_PATCH */), 25166 (controlVisibility.value.all) 25167 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25168 key: 0, 25169 class: "hero-carousel__controls", 25170 ref_key: "controls", 25171 ref: controls 25172 }, [ 25173 (controlVisibility.value.previous) 25174 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_carouselControl, { 25175 key: 0, 25176 onControlClicked: carouselControlHandler, 25177 "control-type": (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_CarouselControlType).Previous, 25178 vin: _ctx.model.Vin 25179 }, null, 8 /* PROPS */, ["control-type", "vin"])) 25180 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25181 (controlVisibility.value.next) 25182 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_carouselControl, { 25183 key: 1, 25184 onControlClicked: carouselControlHandler, 25185 "control-type": (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_CarouselControlType).Next, 25186 vin: _ctx.model.Vin 25187 }, null, 8 /* PROPS */, ["control-type", "vin"])) 25188 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 25189 ], 512 /* NEED_PATCH */)) 25190 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25191 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_carouselImageCounter, { 25192 "current-slide": (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(currentIndex) + 1, 25193 "total-count": _ctx.model.TotalImageCount, 25194 "image-limit": _ctx.model.DetailedImageCount 25195 }, null, 8 /* PROPS */, ["current-slide", "total-count", "image-limit"]) 25196 ], 2 /* CLASS */)); 25197 }; 25198 } 25199})); 25200 25201;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarousel.vue?vue&type=script&setup=true&lang=ts 25202 25203// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
25203ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarousel.vue?vue&type=style&index=0&id=574006ad&lang=scss&scoped=true 25204var vehicleCardDeck_vehicleImageCarouselvue_type_style_index_0_id_574006ad_lang_scss_scoped_true = __webpack_require__(9912); 25205;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarousel.vue?vue&type=style&index=0&id=574006ad&lang=scss&scoped=true 25206 25207;// ./src/components/spaCosmos/vehicleCards/vehicleImageCarousel/vehicleImageCarousel.vue 25208 25209 25210 25211; 25212 25213 25214const vehicleCardDeck_vehicleImageCarousel_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_vehicleImageCarouselvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-574006ad"]]) 25215 25216/* harmony default export */ const vehicleCardDeck_vehicleImageCarousel = (vehicleCardDeck_vehicleImageCarousel_exports_); 25217;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleImage/vehicleImage.vue?vue&type=script&setup=true&lang=ts 25218 25219 25220const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-image" }; 25221const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_2 = { class: "vehicle-image__image-wrapper" }; 25222const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_3 = { 25223 key: 1, 25224 class: "vehicle-image__single-image" 25225}; 25226const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_4 = ["href", "data-loc", "aria-label", "data-dotagging-affiliation"]; 25227const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_5 = { key: 0 }; 25228const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_6 = ["media", "srcset"]; 25229const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_7 = ["media", "srcset"]; 25230const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_8 = ["alt", "title", "src", "data-img", "data-thumbnail-vin", "data-dotagging-image-provider"]; 25231const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_9 = { key: 1 }; 25232const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_10 = ["srcset"]; 25233const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_11 = ["srcset"]; 25234const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_12 = ["alt", "title", "src", "data-img", "data-thumbnail-vin", "data-dotagging-image-provider"]; 25235const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_13 = { 25236 key: 2, 25237 class: "missing-image" 25238}; 25239const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_14 = { class: "missing-image__title" }; 25240const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_15 = { class: "missing-image__subtitle" }; 25241 25242 25243 25244/* harmony default export */ const vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25245 __name: 'vehicleImage', 25246 props: { 25247 model: {} 25248 }, 25249 setup(__props) { 25250 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 25251 const priceDropLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("PRICE_DROP")); 25252 const specialLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SPECIAL")); 25253 const specialOfferInvLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SPECIAL_OFFER_INV")); 25254 const viewDetailsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VIEW_DETAILS")); 25255 const photoUnavailabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("VEHICLE_PHOTOS_UNAVAILABLE")); 25256 const checkBackSoonLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("PLEASE_CHECK_BACK_SOON")); 25257 const numberOfBreakpoints = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.SrpImageBreakpointWidthPairs.length - 1); 25258 const isMissingImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.VehiclePhotoSrc.toLowerCase().indexOf("missing") > -1); 25259 const altText = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.ImageAltText); 25260 const props = __props; 25261 return (_ctx, _cache) => { 25262 var _a, _b; 25263 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_1, [ 25264 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_2, [ 25265 (_ctx.model.HasInventoryOrStockPhotos) 25266 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* resolveDynamicComponent */.$y)(vehicleCardDeck_vehicleImageCarousel), { 25267 key: 0, 25268 model: _ctx.model.VehicleImageCarouselModel 25269 }, null, 8 /* PROPS */, ["model"])) 25270 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_3, [ 25271 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 25272 class: "hero-carousel__item--viewvehicle stat-image-link", 25273 href: _ctx.model.VehicleDetailUrl, 25274 "data-loc": `available inventory:${_ctx.model.Vin}`, 25275 "aria-label": viewDetailsLabel.value, 25276 "data-dotagging-event": "media_interaction", 25277 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 25278 "data-dotagging-event-action": "click", 25279 "data-dotagging-event-action-result": "open", 25280 "data-dotagging-affiliation": _ctx.model.DealerName, 25281 "data-dotagging-element-subtype": "image", 25282 "data-dotagging-media-type": "gallery", 25283 "data-dotagging-element-position": "top" 25284 }, [ 25285 (_ctx.model.SrpImageBreakpointWidthPairs.length > 1) 25286 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("picture", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_5, [ 25287 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.SrpImageBreakpointWidthPairs, (pair) => { 25288 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("source", { 25289 media: `max-width:${pair.Breakpoint}px`, 25290 srcset: `${_ctx.model.VehiclePhotoSrc}?width=${pair.Width}` 25291 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_6)); 25292 }), 256 /* UNKEYED_FRAGMENT */)), 25293 (_ctx.model.SrpImageBreakpointWidthPairs.length > 1) 25294 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("source", { 25295 key: 0, 25296 media: `min-width:${_ctx.model.SrpImageBreakpointWidthPairs[numberOfBreakpoints.value].Width}px`, 25297 srcset: `${_ctx.model.VehiclePhotoSrc}?width=${_ctx.model.SrpImageBreakpointWidthPairs[numberOfBreakpoints.value].Width}` 25298 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_7)) 25299 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25300 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25301 loading: "lazy", 25302 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(`vehicle-image__image vehicle-image__image--${_ctx.model.CornerType} img-responsive margin-auto`), 25303 alt: altText.value, 25304 title: altText.value, 25305 src: _ctx.model.VehiclePhotoSrc, 25306 "data-img": _ctx.model.VehiclePhotoSrc, 25307 "data-thumbnail-vin": _ctx.model.Vin, 25308 "data-dotagging-image-provider": (_a = _ctx.model.ImageProvider) !== null && _a !== void 0 ? _a : '' 25309 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_8) 25310 ])) 25311 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("picture", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_9, [ 25312 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("source", { 25313 media: "(max-width: 991px)", 25314 srcset: `${_ctx.model.VehiclePhotoSrc}?width=992` 25315 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_10), 25316 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("source", { 25317 media: "(min-width: 992px)", 25318 srcset: `${_ctx.model.VehiclePhotoSrc}?width=1500` 25319 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_11), 25320 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25321 loading: "lazy", 25322 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(`vehicle-image__image vehicle-image__image--${_ctx.model.CornerType} img-responsive margin-auto`), 25323 alt: altText.value, 25324 title: altText.value, 25325 src: _ctx.model.VehiclePhotoSrc, 25326 "data-img": _ctx.model.VehiclePhotoSrc, 25327 "data-thumbnail-vin": _ctx.model.Vin, 25328 "data-dotagging-image-provider": (_b = _ctx.model.ImageProvider) !== null && _b !== void 0 ? _b : '' 25329 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_12) 25330 ])) 25331 ], 8 /* PROPS */, vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_4) 25332 ])), 25333 (isMissingImage.value) 25334 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_13, [ 25335 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_14, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(photoUnavailabel.value), 1 /* TEXT */), 25336 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts_hoisted_15, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(checkBackSoonLabel.value), 1 /* TEXT */) 25337 ])) 25338 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 25339 ]) 25340 ])); 25341 }; 25342 } 25343})); 25344 25345;// ./src/components/spaCosmos/vehicleCards/vehicleImage/vehicleImage.vue?vue&type=script&setup=true&lang=ts 25346 25347;// ./src/components/spaCosmos/vehicleCards/vehicleImage/vehicleImage.vue 25348 25349 25350 25351const vehicleCardDeck_vehicleImage_exports_ = vehicleCardDeck_vehicleImagevue_type_script_setup_true_lang_ts; 25352 25353/* harmony default export */ const vehicleCardDeck_vehicleImage = (vehicleCardDeck_vehicleImage_exports_); 25354;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/consumerReports/consumerReports.vue?vue&type=script&setup=true&lang=ts 25355 25356 25357const vehicleCardDeck_consumerReportsvue_type_script_setup_true_lang_ts_hoisted_1 = { 25358 key: 0,
25359 class: "icon-img__benefit" 25360}; 25361const vehicleCardDeck_consumerReportsvue_type_script_setup_true_lang_ts_hoisted_2 = ["id", "data-oem", "data-vehicle-year", "data-type", "data-loc"]; 25362 25363 25364/* harmony default export */ const vehicleCardDeck_consumerReportsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25365 __name: 'consumerReports', 25366 props: { 25367 model: {} 25368 }, 25369 setup(__props) { 25370 const globalStore = (0,vehicleCardDeck_cosmosSrp_globalStore/* useGlobalStore */.o)(); 25371 const props = __props; 25372 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 25373 globalStore.vehicleStore.addConsumerReportsScript(); 25374 }); 25375 return (_ctx, _cache) => { 25376 return (_ctx.model.HasConsumerReport) 25377 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_consumerReportsvue_type_script_setup_true_lang_ts_hoisted_1, [ 25378 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 25379 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["consumerReports stat-icon-link", _ctx.model.ConsumerReport]), 25380 id: `${_ctx.model.ConsumerReport}-${_ctx.model.VIN}`, 25381 "data-oem": _ctx.model.OemName, 25382 "data-vehicle-year": _ctx.model.VehicleYear, 25383 "data-type": _ctx.model.Type, 25384 "data-tagging-event": "linkClick", 25385 "data-tagging-value": "CR Trust Mark", 25386 "data-loc": `available inventory:${_ctx.model.VIN}`, 25387 "data-dotagging-event": "cta_interaction", 25388 "data-dotagging-element-type": "item_details", 25389 "data-dotagging-element-subtype": "hyperlink", 25390 "data-dotagging-event-action": "click", 25391 "data-dotagging-event-action-result": "open", 25392 "data-dotagging-element-order": "0", 25393 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 25394 "data-dotagging-value": "CR Trust Mark" 25395 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_consumerReportsvue_type_script_setup_true_lang_ts_hoisted_2) 25396 ])) 25397 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 25398 }; 25399 } 25400})); 25401 25402;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/consumerReports/consumerReports.vue?vue&type=script&setup=true&lang=ts 25403 25404;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/consumerReports/consumerReports.vue 25405 25406 25407 25408const vehicleCardDeck_consumerReports_exports_ = vehicleCardDeck_consumerReportsvue_type_script_setup_true_lang_ts; 25409 25410/* harmony default export */ const vehicleCardDeck_consumerReports = (vehicleCardDeck_consumerReports_exports_); 25411;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/cpoImage.vue?vue&type=script&setup=true&lang=ts 25412 25413 25414const vehicleCardDeck_cpoImagevue_type_script_setup_true_lang_ts_hoisted_1 = ["src", "title", "alt"]; 25415/* harmony default export */ const vehicleCardDeck_cpoImagevue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25416 __name: 'cpoImage', 25417 props: { 25418 model: {} 25419 }, 25420 setup(__props) { 25421 const props = __props; 25422 return (_ctx, _cache) => { 25423 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("img", { 25424 src: _ctx.model.cpoImage, 25425 class: "img-responsive margin-auto", 25426 title: _ctx.model.cpoAltTitle, 25427 alt: _ctx.model.cpoAltTitle, 25428 loading: "lazy"
25429 }, null, 8 /* PROPS */, vehicleCardDeck_cpoImagevue_type_script_setup_true_lang_ts_hoisted_1)); 25430 }; 25431 } 25432})); 25433 25434;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/cpoImage.vue?vue&type=script&setup=true&lang=ts 25435 25436;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/cpoImage.vue 25437 25438 25439 25440const vehicleCardDeck_cpoImage_exports_ = vehicleCardDeck_cpoImagevue_type_script_setup_true_lang_ts; 25441 25442/* harmony default export */ const vehicleCardDeck_cpoImage = (vehicleCardDeck_cpoImage_exports_); 25443;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogoType.ts 25444var vehicleCardDeck_FeatureLogoType; 25445(function (FeatureLogoType) { 25446 FeatureLogoType[FeatureLogoType["FeatureLogo"] = 0] = "FeatureLogo"; 25447 FeatureLogoType[FeatureLogoType["FeatureLogoWithDisclaimer"] = 1] = "FeatureLogoWithDisclaimer"; 25448 FeatureLogoType[FeatureLogoType["Rebate"] = 2] = "Rebate"; 25449 FeatureLogoType[FeatureLogoType["TextFeatureWithDisclaimer"] = 3] = "TextFeatureWithDisclaimer"; 25450 FeatureLogoType[FeatureLogoType["Text"] = 4] = "Text"; 25451})(vehicleCardDeck_FeatureLogoType || (vehicleCardDeck_FeatureLogoType = {})); 25452 25453;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogo.vue?vue&type=script&setup=true&lang=ts 25454 25455 25456const vehicleCardDeck_featureLogovue_type_script_setup_true_lang_ts_hoisted_1 = ["src", "alt", "title"]; 25457/* harmony default export */ const vehicleCardDeck_featureLogovue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25458 __name: 'featureLogo', 25459 props: { 25460 model: { 25461 type: Object, 25462 required: true 25463 }, 25464 cadillacInTransitEta: { 25465 type: String 25466 }, 25467 imageClass: { 25468 type: String, 25469 default: "img-responsive" 25470 } 25471 }, 25472 setup(__props) { 25473 const props = __props; 25474 return (_ctx, _cache) => { 25475 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 25476 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25477 src: __props.model.ImageUrl, 25478 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(__props.imageClass), 25479 alt: __props.model.AltText, 25480 title: __props.model.AltText, 25481 loading: "lazy" 25482 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_featureLogovue_type_script_setup_true_lang_ts_hoisted_1), 25483 (__props.model.ShowCadillacInTransitEta) 25484 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, [ 25485 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(__props.cadillacInTransitEta), 1 /* TEXT */) 25486 ], 64 /* STABLE_FRAGMENT */)) 25487 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 25488 ], 64 /* STABLE_FRAGMENT */)); 25489 }; 25490 } 25491})); 25492 25493;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogo.vue?vue&type=script&setup=true&lang=ts 25494 25495;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogo.vue 25496 25497 25498 25499const vehicleCardDeck_featureLogo_exports_ = vehicleCardDeck_featureLogovue_type_script_setup_true_lang_ts; 25500 25501/* harmony default export */ const vehicleCardDeck_featureLogo = (vehicleCardDeck_featureLogo_exports_); 25502;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogos.vue?vue&type=script&setup=true&lang=ts 25503 25504 25505const vehicleCardDeck_featureLogosvue_type_script_setup_true_lang_ts_hoisted_1 = ["data-loc", "href"]; 25506const vehicleCardDeck_featureLogosvue_type_script_setup_true_lang_ts_hoisted_2 = ["data-title", "data-content"]; 25507 25508 25509 25510 25511const vehicleCardDeck_DisclaimerLabel = 'DISCLAIMER'; 25512/* harmony default export */ const vehicleCardDeck_featureLogosvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25513 __name: 'featureLogos', 25514 props: { 25515 model: {} 25516 }, 25517 setup(__props) { 25518 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 25519 const props = __props; 25520 const labelDisclaimer = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel(vehicleCardDeck_DisclaimerLabel)); 25521 function isDisclaimerType(logoType) { 25522 return (logoType === vehicleCardDeck_FeatureLogoType.FeatureLogoWithDisclaimer || logoType === vehicleCardDeck_FeatureLogoType.TextFeatureWithDisclaimer); 25523 } 25524 return (_ctx, _cache) => { 25525 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.Logos, (logo) => { 25526 var _a; 25527 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25528 key: logo.FeatureName, 25529 class: "icon-img margin-right-1x margin-bottom-1x feature-logo" 25530 }, [ 25531 (logo.LogoType === (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_FeatureLogoType).FeatureLogo) 25532 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, [ 25533 (logo.HasLinkUrl) 25534 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("a", (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* mergeProps */.v6)({ 25535 key: 0,
25536 class: ["icon-img__benefit stat-image-link", logo.CustomClass], 25537 "data-loc": `feature logos:${(_a = logo.FeatureName) === null || _a === void 0 ? void 0 : _a.toLowerCase()}`, 25538 target: "_blank", 25539 href: logo.LinkUrl, 25540 ref_for: true 25541 }, logo.ClickTaggingAttrObj), [ 25542 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_featureLogo, { 25543 model: logo, 25544 "cadillac-in-transit-eta": _ctx.model.CadillacInTransitEta 25545 }, null, 8 /* PROPS */, ["model", "cadillac-in-transit-eta"]) 25546 ], 16 /* FULL_PROPS */, vehicleCardDeck_featureLogosvue_type_script_setup_true_lang_ts_hoisted_1)) 25547 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_featureLogo, { 25548 key: 1, 25549 model: logo, 25550 "cadillac-in-transit-eta": _ctx.model.CadillacInTransitEta 25551 }, null, 8 /* PROPS */, ["model", "cadillac-in-transit-eta"])) 25552 ], 64 /* STABLE_FRAGMENT */)) 25553 : (isDisclaimerType(logo.LogoType)) 25554 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("button", { 25555 key: 1, 25556 type: "button", 25557 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["icon-img__button icon-img__benefit stat-disclaim", logo.CustomClass]), 25558 "data-toggle": "modal", 25559 "data-target": "#moreInfoModal", 25560 "aria-haspopup": "dialog", 25561 "data-title": logo.DisclaimerTitle ? logo.DisclaimerTitle : labelDisclaimer.value, 25562 "data-content": logo.Disclaimer, 25563 "data-loc": "available inventory", 25564 "data-dotagging-event": "cta_interaction", 25565 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 25566 "data-dotagging-event-action": "click", 25567 "data-dotagging-event-action-result": "popup", 25568 "data-dotagging-element-type": "item_details", 25569 "data-dotagging-element-order": "0", 25570 "data-dotagging-element-subtype": "cta_button" 25571 }, [ 25572 (logo.LogoType === (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_FeatureLogoType).TextFeatureWithDisclaimer) 25573 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, [ 25574 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(logo.FeatureName) + " ", 1 /* TEXT */), 25575 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_featureLogo, { 25576 model: logo, 25577 "image-class": "disclaimerIcon", 25578 "cadillac-in-transit-eta": _ctx.model.CadillacInTransitEta 25579 }, null, 8 /* PROPS */, ["model", "cadillac-in-transit-eta"]) 25580 ], 64 /* STABLE_FRAGMENT */)) 25581 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_featureLogo, { 25582 key: 1, 25583 model: logo, 25584 "cadillac-in-transit-eta": _ctx.model.CadillacInTransitEta 25585 }, null, 8 /* PROPS */, ["model", "cadillac-in-transit-eta"])) 25586 ], 10 /* CLASS, PROPS */, vehicleCardDeck_featureLogosvue_type_script_setup_true_lang_ts_hoisted_2)) 25587 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 25588 ])); 25589 }), 128 /* KEYED_FRAGMENT */)); 25590 }; 25591 } 25592})); 25593 25594;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogos.vue?vue&type=script&setup=true&lang=ts 25595 25596;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/featureLogos/featureLogos.vue 25597 25598 25599 25600const vehicleCardDeck_featureLogos_exports_ = vehicleCardDeck_featureLogosvue_type_script_setup_true_lang_ts; 25601 25602/* harmony default export */ const vehicleCardDeck_featureLogos = (vehicleCardDeck_featureLogos_exports_); 25603;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/manufacturerIcons.vue?vue&type=script&setup=true&lang=ts 25604 25605 25606const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_1 = { 25607 key: 0, 25608 class: "icon-custom icon-custom--bmw border-cta text-cta text-center small margin-right-1x margin-bottom-1x" 25609}; 25610const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_2 = ["data-content"]; 25611const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_3 = ["src", "title", "alt"]; 25612const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_4 = { 25613 key: 1, 25614 class: "icon-custom icon-custom--fca border-cta text-cta text-center small margin-right-1x margin-bottom-1x" 25615}; 25616const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_5 = ["data-content"]; 25617const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_6 = ["src", "title", "alt"]; 25618const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_7 = { 25619 key: 2, 25620 class: "icon-custom icon-custom--hyundai margin-right-1x margin-bottom-1x" 25621}; 25622const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_8 = { 25623 type: "button", 25624 class: "oem-hyundai__cpo--manu-logo-button stat-logo", 25625 "data-toggle": "modal", 25626 "data-target": "#hyundaiCpoModal", 25627 "aria-haspopup": "dialog", 25628 "data-loc": "available inventory" 25629}; 25630const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_9 = ["src", "title", "alt"]; 25631const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_10 = { 25632 key: 3, 25633 class: "icon-custom icon-custom--default border-cta text-cta text-center small margin-right-1x margin-bottom-1x cursorPointer" 25634}; 25635const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_11 = ["href"]; 25636const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_12 = { 25637 key: 0, 25638 class: "icon-img margin-right-1x margin-bottom-1x" 25639}; 25640const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_13 = ["href"]; 25641const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_14 = ["src"]; 25642const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_15 = ["innerHTML"]; 25643const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_16 = { 25644 key: 5,
25645 class: "icon-img margin-right-1x margin-bottom-1x" 25646}; 25647const vehicleCardDeck_hoisted_17 = ["innerHTML"]; 25648const vehicleCardDeck_hoisted_18 = ["src", "alt"]; 25649 25650 25651 25652 25653 25654/* harmony default export */ const vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25655 __name: 'manufacturerIcons', 25656 props: { 25657 model: {} 25658 }, 25659 setup(__props) { 25660 const props = __props; 25661 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 25662 const cpoImageModel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 25663 return { 25664 cpoImage: props.model.CpoImage, 25665 cpoAltTitle: props.model.CpoAltTitle 25666 }; 25667 }); 25668 return (_ctx, _cache) => { 25669 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 25670 (_ctx.model.ShowBmwCpoLogo) 25671 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_1, [ 25672 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 25673 type: "button", 25674 class: "oem-bmw__cpo--manu-logo-button stat-logo", 25675 "data-toggle": "modal", 25676 "data-target": "#moreInfoModal", 25677 "aria-haspopup": "dialog", 25678 "data-title": "The BMW Certified Advantage:", 25679 "data-content": _ctx.model.BmwCpoModalContent, 25680 "data-loc": "available inventory" 25681 }, [ 25682 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25683 src: _ctx.model.CpoImage, 25684 class: "img-responsive margin-auto", 25685 title: _ctx.model.CpoAltTitle, 25686 alt: _ctx.model.CpoAltTitle, 25687 loading: "lazy" 25688 }, null, 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_3) 25689 ], 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_2) 25690 ])) 25691 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25692 (_ctx.model.UseFcaGoldCpoModal) 25693 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_4, [ 25694 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 25695 type: "button", 25696 class: "oem-fca__cpo--manu-logo-button stat-logo", 25697 "data-toggle": "modal", 25698 "data-target": "#moreInfoModal", 25699 "aria-haspopup": "dialog", 25700 "data-content": _ctx.model.FcaGoldCpoModalContent, 25701 "data-loc": "available inventory" 25702 }, [ 25703 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25704 src: _ctx.model.CpoImage, 25705 class: "img-responsive margin-auto", 25706 title: _ctx.model.CpoAltTitle, 25707 alt: _ctx.model.CpoAltTitle, 25708 loading: "lazy"
25709 }, null, 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_6) 25710 ], 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_5) 25711 ])) 25712 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25713 (_ctx.model.ShowHyundaiCpo) 25714 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_7, [ 25715 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_8, [ 25716 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25717 src: _ctx.model.CpoImage, 25718 class: "img-responsive margin-auto", 25719 title: _ctx.model.CpoAltTitle, 25720 alt: _ctx.model.CpoAltTitle, 25721 loading: "lazy" 25722 }, null, 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_9) 25723 ]) 25724 ])) 25725 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25726 (_ctx.model.ShowDefaultCpoLogo) 25727 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_10, [ 25728 (_ctx.model.UseCpoLink) 25729 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("a", { 25730 key: 0, 25731 href: _ctx.model.CpoLink, 25732 class: "stat-image-link", 25733 "data-loc": "available inventory", 25734 rel: "noopener", 25735 target: "_blank" 25736 }, [ 25737 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_cpoImage, { model: cpoImageModel.value }, null, 8 /* PROPS */, ["model"]) 25738 ], 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_11)) 25739 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_cpoImage, { 25740 key: 1, 25741 model: cpoImageModel.value 25742 }, null, 8 /* PROPS */, ["model"])) 25743 ])) 25744 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25745 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_featureLogos, { 25746 model: _ctx.model.FeatureLogosViewModel 25747 }, null, 8 /* PROPS */, ["model"]), 25748 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_consumerReports, { 25749 model: _ctx.model.ConsumerReportsViewModel 25750 }, null, 8 /* PROPS */, ["model"]), 25751 (_ctx.model.IsUsed) 25752 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 4 }, [ 25753 (_ctx.model.HasCpoReportImage) 25754 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_12, [ 25755 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 25756 href: _ctx.model.CpoReport, 25757 class: "stat-image-link", 25758 "data-loc": "available inventory", 25759 rel: "noopener nofollow", 25760 target: "_blank" 25761 }, [ 25762 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25763 src: _ctx.model.CpoReportImage, 25764 class: "img-responsive margin-auto", 25765 alt: "Acura 182-Point Inspection", 25766 title: "Acura 182-Point Inspection", 25767 loading: "lazy"
25768 }, null, 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_14) 25769 ], 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_13) 25770 ])) 25771 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25772 (_ctx.model.HasCarHistoryReport) 25773 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25774 key: 1, 25775 class: "icon-img margin-right-1x margin-bottom-1x", 25776 innerHTML: _ctx.model.CarHistoryReport 25777 }, null, 8 /* PROPS */, vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_15)) 25778 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 25779 ], 64 /* STABLE_FRAGMENT */)) 25780 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25781 (_ctx.model.ShowFordSmartBonus) 25782 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts_hoisted_16, [ 25783 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("template", { 25784 innerHTML: _ctx.model.FordSmartBonus 25785 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_17) 25786 ])) 25787 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 25788 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.RebateImages, (rebateImage, index) => { 25789 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25790 class: "icon-img margin-right-1x margin-bottom-1x", 25791 key: `rebateImage${index.toString()}` 25792 }, [ 25793 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 25794 src: rebateImage.ImageUrl, 25795 alt: rebateImage.AltText 25796 }, null, 8 /* PROPS */, vehicleCardDeck_hoisted_18) 25797 ])); 25798 }), 128 /* KEYED_FRAGMENT */)) 25799 ], 64 /* STABLE_FRAGMENT */)); 25800 }; 25801 } 25802})); 25803 25804;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/manufacturerIcons.vue?vue&type=script&setup=true&lang=ts 25805 25806;// ./src/components/spaCosmos/vehicleCards/vehicleManufacturerIcons/manufacturerIcons.vue 25807 25808 25809 25810const vehicleCardDeck_manufacturerIcons_exports_ = vehicleCardDeck_manufacturerIconsvue_type_script_setup_true_lang_ts; 25811 25812/* harmony default export */ const vehicleCardDeck_manufacturerIcons = (vehicleCardDeck_manufacturerIcons_exports_); 25813;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/dgDisclaimersModal/dgDisclaimersModal.vue?vue&type=script&setup=true&lang=ts 25814 25815 25816const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_1 = ["id", "aria-labelledby"]; 25817const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_2 = { class: "modal-dialog modal-lg" }; 25818const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "modal-content" }; 25819const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "modal-header" }; 25820const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_5 = ["id"]; 25821const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_6 = { class: "modal-body" }; 25822const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_7 = ["id", "innerHTML"]; 25823const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_8 = ["id", "innerHTML"]; 25824 25825
25826/* harmony default export */ const vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25827 __name: 'dgDisclaimersModal', 25828 props: { 25829 model: {} 25830 }, 25831 setup(__props) { 25832 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 25833 const modalContainer = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(null); 25834 // computed translation labels 25835 const disclosuresLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getTitle("DISCLOSURES")}`); 25836 let superscriptCount = 0; 25837 const props = __props; 25838 const modalObserver = new MutationObserver(mutationObserverCallback); 25839 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 25840 observeModal(); 25841 }); 25842 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onBeforeUnmount */.xo)(() => { 25843 modalObserver.disconnect(); 25844 }); 25845 function incrementSuperscriptCount() { 25846 return ++superscriptCount; 25847 } 25848 function getDisclaimer(count, disclaimer) { 25849 return `${count}. ${disclaimer}`; 25850 } 25851 function observeModal() { 25852 modalObserver.observe(modalContainer.value, { attributes: true, attributeFilter: ['style'] }); 25853 } 25854 function onStyleChange() { 25855 var _a, _b; 25856 if (navigator.userAgent.includes('Chrome') || navigator.userAgent.includes('Firefox')) { 25857 (_a = document.querySelector('.selectedDgDisclaimer')) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: "smooth", block: "start", inline: "nearest" }); 25858 } 25859 else { 25860 (_b = document.querySelector('.selectedDgDisclaimer')) === null || _b === void 0 ? void 0 : _b.scrollIntoView(true); 25861 } 25862 } 25863 ; 25864 function mutationObserverCallback(mutations) { 25865 for (const mutation of mutations) { 25866 const newElem = mutation.target; 25867 if (newElem.style.display === 'block') { 25868 onStyleChange(); 25869 } 25870 } 25871 } 25872 return (_ctx, _cache) => { 25873 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 25874 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Start Digital Garage Disclaimers Modal "), 25875 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 25876 class: "modal fade dgDisclaimersModal", 25877 id: `dgDisclaimersModal-${_ctx.model.VehicleVin}`, 25878 tabindex: "-1", 25879 role: "dialog", 25880 "aria-labelledby": `dgDisclaimersModalTitle-${_ctx.model.VehicleVin}`, 25881 ref_key: "modalContainer", 25882 ref: modalContainer 25883 }, [ 25884 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_2, [ 25885 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_3, [ 25886 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_4, [ 25887 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 25888 type: "button", 25889 class: "close stat-button-close", 25890 "data-loc": "available inventory", 25891 "data-dismiss": "modal", 25892 "aria-hidden": "true" 25893 }, "Ã", -1 /* HOISTED */)), 25894 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h3", { 25895 id: `dgDisclaimersModalTitle-${_ctx.model.VehicleVin}`, 25896 class: "modal-title" 25897 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(disclosuresLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_5) 25898 ]), 25899 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_6, [ 25900 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.DigitalGarageEfcDisclaimerValues, (efcDesc, index) => { 25901 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25902 class: "dgDisclaimer", 25903 key: index, 25904 id: `dgDisclaimer${(Number(index) + 1)}-${_ctx.model.VehicleVin}`, 25905 innerHTML: getDisclaimer((Number(index) + 1), efcDesc) 25906 }, null, 8 /* PROPS */, vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_7)); 25907 }), 128 /* KEYED_FRAGMENT */)), 25908 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.DigitalGarageRtiDisclaimerDescriptions, (rtiDesc, index) => { 25909 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 25910 class: "dgDisclaimer", 25911 key: index, 25912 id: `dgDisclaimer${(Number(index) + 1)}-${_ctx.model.VehicleVin}`, 25913 innerHTML: getDisclaimer((Number(index) + 1), rtiDesc) 25914 }, null, 8 /* PROPS */, vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_8)); 25915 }), 128 /* KEYED_FRAGMENT */)) 25916 ]) 25917 ]) 25918 ]) 25919 ], 8 /* PROPS */, vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts_hoisted_1), 25920 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" End Digital Garage Disclaimers Modal ") 25921 ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)); 25922 }; 25923 } 25924})); 25925 25926;
25926// ./src/components/spaCosmos/vehicleCards/vehicleOverview/dgDisclaimersModal/dgDisclaimersModal.vue?vue&type=script&setup=true&lang=ts 25927 25928;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/dgDisclaimersModal/dgDisclaimersModal.vue 25929 25930 25931 25932const vehicleCardDeck_dgDisclaimersModal_exports_ = vehicleCardDeck_dgDisclaimersModalvue_type_script_setup_true_lang_ts; 25933 25934/* harmony default export */ const vehicleCardDeck_dgDisclaimersModal = (vehicleCardDeck_dgDisclaimersModal_exports_); 25935;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/dgDisclaimersModal/DgDisclaimersModalModel.ts 25936class vehicleCardDeck_DgDisclaimersModalModel { 25937} 25938 25939;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleDropdown/vehicleDropdownModel.ts 25940class vehicleCardDeck_VehicleDropdownModel { 25941} 25942 25943// EXTERNAL MODULE: ./src/services/toggles/toggleService.ts + 1 modules 25944var vehicleCardDeck_toggles_toggleService = __webpack_require__(7363); 25945;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleDropdown/vehicleDropdown.vue?vue&type=script&setup=true&lang=ts 25946 25947 25948const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-overview__dropdown" }; 25949const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_2 = { class: "vehicle-dropdown" }; 25950const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_3 = ["id", "aria-label", "title", "data-dotagging-element-text"]; 25951const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_4 = ["aria-labelledby"]; 25952const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "vehicle-dropdown__item vehicle-dropdown__item--copy-link" }; 25953const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_6 = { class: "vehicle-dropdown__item vehicle-dropdown__item--share" }; 25954const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_7 = ["data-vdp-url", "data-vehicle-id", "data-vin", "data-vehicle-name", "data-dealer-id", "data-altid"]; 25955const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_8 = { class: "dropdown-button__label" }; 25956const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_9 = { class: "vehicle-dropdown__item vehicle-dropdown__item--print" }; 25957const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_10 = ["data-vin", "data-dotagging-link-url"]; 25958const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_11 = { class: "vehicle-dropdown__label" }; 25959const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_12 = { class: "vehicle-dropdown__item vehicle-dropdown__item--details" }; 25960const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_13 = ["href"]; 25961const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_14 = { class: "vehicle-dropdown__label" }; 25962 25963 25964 25965const vehicleCardDeck_copyIconUrl = "https://cdn.dealeron.com/static/industry-automotive/icons/copy.svg"; 25966const vehicleCardDeck_shareIconUrl = "https://cdn.dealeron.com/static/industry-automotive/icons/share-2.svg"; 25967const vehicleCardDeck_printIconUrl = "https://cdn.dealeron.com/static/industry-automotive/icons/print.svg"; 25968const vehicleCardDeck_detailsIconUrl = "https://cdn.dealeron.com/static/industry-automotive/icons/car-icon.svg"; 25969/* harmony default export */ const vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 25970 __name: 'vehicleDropdown', 25971 props: { 25972 model: {} 25973 }, 25974 setup(__props) { 25975 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 25976 const storeProvider = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.StoreProvider); 25977 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 25978 const globalStore = storeProvider.getGlobalStore(); 25979 const vehicleCardAlignmentToggle = toggleService.getToggleStatus(vehicleCardDeck_toggles_toggleService/* Toggle */.lM.VehicleCardAlignment_DO48222); 25980 // computed translation labels 25981 const viewDetailsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getButton("VIEW_DETAILS")}`); 25982 const printLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("PRINT")}`); 25983 const shareLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("SHARE")}`); 25984 const copyLinkLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getButton("COPY_LINK")}`); 25985 const copiedLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getButton("COPIED")}!`); 25986 const actionsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("ACTIONS")}`); 25987 const offerType = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 25988 const offerTypeEl = document.querySelector("ul[data-priceStak-tab-container] > li.active > button"); 25989 if (offerTypeEl) { 25990 return offerTypeEl.dataset.pricestakTab !== "" ? offerTypeEl.dataset.pricestakTab : "buy"; 25991 } 25992 }); 25993 const getPrintUrl = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `print-email-vehicledetailsvin.aspx?vin=${props.model.VehicleVin}&childId=${props.model.DealerId}&offerType=${offerType.value}?print=true`); 25994 const getTaggingLinkUrl = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${window.location.hostname}/${getPrintUrl.value}`); 25995 const isVehicleDropdownOpen = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => globalStore.getActiveVehicleDropdown == props.model.VehicleVin); 25996 const shareVehicleButtonImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(); 25997 const printButtonImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(); 25998 const copyButtonImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(); 25999 const copyButtonLinkLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(); 26000 const isCopying = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 26001 const deatailsButtonImage = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(); 26002 const currentCopyLinkLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(copyLinkLabel.value); 26003 const props = __props; 26004 document.addEventListener("click", event => { 26005 if (!event.target.closest('[data-type="dropdown"], [data-type="dropdown-button"]')) { 26006 globalStore.setActiveVehicleDropdown(''); 26007 } 26008 }); 26009 function toggleVehicleDropdown(vin) { 26010 if (vin === globalStore.getActiveVehicleDropdown) { 26011 globalStore.setActiveVehicleDropdown(''); 26012 return; 26013 } 26014 globalStore.setActiveVehicleDropdown(vin); 26015 } 26016 function copyLink(vdpUrl) { 26017 if (navigator.clipboard) { 26018 navigator.clipboard.writeText(vdpUrl) 26019 .then(() => { 26020 toggleCopyButtonCopiedState(); 26021 setTimeout(() => { 26022 toggleCopyButtonCopiedState(); 26023 }, 3000); 26024 }) 26025 .catch(() => { 26026 alert(`Unable to copy link to clipboard: ${vdpUrl}`); 26027 }); 26028 } 26029 } 26030 function print(printUrl) { 26031 window.open(printUrl); 26032 } 26033 function toggleCopyButtonCopiedState() { 26034 if (!isCopying.value) { 26035 isCopying.value = true; 26036 currentCopyLinkLabel.value = copiedLabel.value; 26037 } 26038 else { 26039 isCopying.value = false;
26040 currentCopyLinkLabel.value = copyLinkLabel.value; 26041 } 26042 } 26043 return (_ctx, _cache) => { 26044 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_1, [ 26045 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_2, [ 26046 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26047 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-dropdown__trigger stat-dropdown", { 'less-whitespace': (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardAlignmentToggle) }]), 26048 id: `vehicle-dropdown-${_ctx.model.VehicleVin}`, 26049 "data-loc": "share vehicle", 26050 onClick: _cache[0] || (_cache[0] = ($event) => (toggleVehicleDropdown(`${_ctx.model.VehicleVin}`))), 26051 type: "button", 26052 "data-toggle": "dropdown", 26053 "aria-haspopup": "true", 26054 "aria-expanded": "false", 26055 "data-type": "dropdown-button", 26056 "aria-label": actionsLabel.value, 26057 title: actionsLabel.value, 26058 "data-dotagging-event": "cta_interaction", 26059 "data-dotagging-product-name": "Website|Share Item Details", 26060 "data-dotagging-event-action-result": "open", 26061 "data-dotagging-event-action": "click", 26062 "data-dotagging-element-order": "0", 26063 "data-dotagging-element-type": "item_details", 26064 "data-dotagging-element-subtype": "cta_icon", 26065 "data-dotagging-element-text": actionsLabel.value 26066 }, _cache[3] || (_cache[3] = [ 26067 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 26068 class: "vehicle-dropdown__dots", 26069 role: "img", 26070 "aria-label": "dropdown dots" 26071 }, [ 26072 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "vehicle-dropdown__dot fa fa-circle" }), 26073 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "vehicle-dropdown__dot fa fa-circle" }), 26074 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "vehicle-dropdown__dot fa fa-circle" }) 26075 ], -1 /* HOISTED */) 26076 ]), 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_3), 26077 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("ul", { 26078 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-dropdown__menu", { 'open': isVehicleDropdownOpen.value }]), 26079 "aria-labelledby": `vehicle-dropdown-${_ctx.model.VehicleVin}`, 26080 "data-type": "dropdown" 26081 }, [ 26082 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("li", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_5, [ 26083 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26084 type: "button", 26085 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["dropdown-button dropdown-button--copy stat-button-link", { 'copied': isCopying.value }]), 26086 "data-loc": "share vehicle", 26087 "data-type": "copy-link-button", 26088 style: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeStyle */.Tr)(`--copy-icon-url: url(${vehicleCardDeck_copyIconUrl});`), 26089 "data-dotagging-event": "cta_interaction", 26090 "data-dotagging-product-name": "Website|Copy Item Link", 26091 "data-dotagging-event-action": "click", 26092 "data-dotagging-event-action-result": "calc", 26093 "data-dotagging-element-order": "0", 26094 "data-dotagging-element-type": "form", 26095 "data-dotagging-element-subtype": "cta_button", 26096 onClick: _cache[1] || (_cache[1] = ($event) => (copyLink(_ctx.model.VehicleDetailUrl))) 26097 }, [ 26098 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 26099 ref_key: "copyButtonImage", 26100 ref: copyButtonImage, 26101 class: "dropdown-button__icon", 26102 alt: "", 26103 src: vehicleCardDeck_copyIconUrl 26104 }, null, 512 /* NEED_PATCH */), 26105 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 26106 ref_key: "copyButtonLinkLabel", 26107 ref: copyButtonLinkLabel, 26108 class: "vehicle-dropdown__label" 26109 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(currentCopyLinkLabel.value), 513 /* TEXT, NEED_PATCH */) 26110 ], 6 /* CLASS, STYLE */) 26111 ]), 26112 _cache[5] || (_cache[5] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("hr", null, null, -1 /* HOISTED */)), 26113 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("li", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_6, [ 26114 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26115 "data-type": "share-vehicle-button", 26116 class: "dropdown-button dropdown-button--share stat-button-link sms-lead-modal", 26117 onclick: "TrackGeneralCTA(this);", 26118 "data-toggle": "modal", 26119 "data-target": "#shareVehicleModal",
26120 "data-vdp-url": _ctx.model.VehicleDetailUrl, 26121 "data-vehicle-id": _ctx.model.VehicleId, 26122 "data-vin": _ctx.model.VehicleVin, 26123 "data-vehicle-name": _ctx.model.VehicleName, 26124 "data-dealer-id": _ctx.model.DealerId, 26125 "data-altid": _ctx.model.DealerLocatedAtId, 26126 "data-loc": "share vehicle", 26127 style: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeStyle */.Tr)(`--share-icon-url: url(${vehicleCardDeck_shareIconUrl});`), 26128 "data-dotagging-event": "cta_interaction", 26129 "data-dotagging-product-name": "Website|Share Item Details", 26130 "data-dotagging-event-action": "click", 26131 "data-dotagging-event-action-result": "open", 26132 "data-dotagging-element-type": "item_details", 26133 "data-dotagging-element-order": "1", 26134 "data-dotagging-element-subtype": "cta_button" 26135 }, [ 26136 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 26137 ref_key: "shareVehicleButtonImage", 26138 ref: shareVehicleButtonImage, 26139 class: "dropdown-button__icon", 26140 alt: "", 26141 src: vehicleCardDeck_shareIconUrl 26142 }, null, 512 /* NEED_PATCH */), 26143 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_8, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(shareLabel.value), 1 /* TEXT */) 26144 ], 12 /* STYLE, PROPS */, vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_7) 26145 ]), 26146 _cache[6] || (_cache[6] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("hr", null, null, -1 /* HOISTED */)), 26147 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("li", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_9, [ 26148 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26149 type: "button", 26150 class: "dropdown-button dropdown-button--print stat-button-link", 26151 "data-loc": "share vehicle", 26152 "data-type": "print-button", 26153 "data-vin": _ctx.model.VehicleVin, 26154 style: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeStyle */.Tr)(`--print-icon-url: url(${vehicleCardDeck_printIconUrl});`), 26155 "data-dotagging-event": "cta_interaction", 26156 "data-dotagging-product-name": "Website|Print Item Details", 26157 "data-dotagging-event-action": "click", 26158 "data-dotagging-event-action-result": "redirect", 26159 "data-dotagging-element-order": "2", 26160 "data-dotagging-element-type": "form", 26161 "data-dotagging-element-subtype": "cta_button", 26162 "data-dotagging-link-url": getTaggingLinkUrl.value, 26163 onClick: _cache[2] || (_cache[2] = ($event) => (print(getPrintUrl.value))) 26164 }, [ 26165 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 26166 ref_key: "printButtonImage", 26167 ref: printButtonImage, 26168 class: "dropdown-button__icon", 26169 alt: "", 26170 src: vehicleCardDeck_printIconUrl 26171 }, null, 512 /* NEED_PATCH */), 26172 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_11, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(printLabel.value), 1 /* TEXT */) 26173 ], 12 /* STYLE, PROPS */, vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_10) 26174 ]), 26175 (_ctx.model.VehicleDetailUrl !== '') 26176 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, [ 26177 _cache[4] || (_cache[4] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("hr", null, null, -1 /* HOISTED */)), 26178 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("li", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_12, [ 26179 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 26180 class: "vehicle-dropdown__action vehicle-dropdown__action--detail
26180s stat-text-link", 26181 "data-loc": "share vehicle", 26182 href: _ctx.model.VehicleDetailUrl, 26183 "data-type": "view-details-button", 26184 style: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeStyle */.Tr)(`--details-icon-url: url(${vehicleCardDeck_detailsIconUrl});`), 26185 "data-dotagging-event": "cta_interaction", 26186 "data-dotagging-product-name": "Website|View Item Details", 26187 "data-dotagging-event-action": "click", 26188 "data-dotagging-event-action-result": "redirect", 26189 "data-dotagging-element-type": "item_details", 26190 "data-dotagging-element-subtype": "cta_icon", 26191 "data-dotagging-element-order": "3" 26192 }, [ 26193 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("img", { 26194 ref_key: "deatailsButtonImage", 26195 ref: deatailsButtonImage, 26196 class: "vehicle-dropdown__icon", 26197 alt: "", 26198 src: vehicleCardDeck_detailsIconUrl 26199 }, null, 512 /* NEED_PATCH */), 26200 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_14, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(viewDetailsLabel.value), 1 /* TEXT */) 26201 ], 12 /* STYLE, PROPS */, vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_13) 26202 ]) 26203 ], 64 /* STABLE_FRAGMENT */)) 26204 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26205 ], 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts_hoisted_4) 26206 ]) 26207 ])); 26208 }; 26209 } 26210})); 26211 26212;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleDropdown/vehicleDropdown.vue?vue&type=script&setup=true&lang=ts 26213 26214// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleDropdown/vehicleDropdown.vue?vue&type=style&index=0&id=12e549a4&scoped=true&lang=scss 26215var vehicleCardDeck_vehicleDropdownvue_type_style_index_0_id_12e549a4_scoped_true_lang_scss = __webpack_require__(1324); 26216;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleDropdown/vehicleDropdown.vue?vue&type=style&index=0&id=12e549a4&scoped=true&lang=scss 26217 26218;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleDropdown/vehicleDropdown.vue 26219 26220 26221 26222; 26223 26224 26225const vehicleCardDeck_vehicleDropdown_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_vehicleDropdownvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-12e549a4"]]) 26226 26227/* harmony default export */ const vehicleCardDeck_vehicleDropdown = (vehicleCardDeck_vehicleDropdown_exports_); 26228;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleLocation/iconLocationDot.vue?vue&type=script&setup=true&lang=ts 26229 26230 26231const vehicleCardDeck_iconLocationDotvue_type_script_setup_true_lang_ts_hoisted_1 = ["width", "height"]; 26232/* harmony default export */ const vehicleCardDeck_iconLocationDotvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26233 __name: 'iconLocationDot', 26234 props: { 26235 size: { 26236 type: [String, Number], 26237 default: 24 26238 } 26239 }, 26240 setup(__props) { 26241 return (_ctx, _cache) => { 26242 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("svg", { 26243 class: "location-dot", 26244 width: __props.size, 26245 height: __props.size,
26246 viewBox: "0 0 24 24", 26247 fill: "none", 26248 xmlns: "http://www.w3.org/2000/svg" 26249 }, _cache[0] || (_cache[0] = [ 26250 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("path", { 26251 d: "M11.5 21.5C11.5 21.5 19 13.375 19 9C19 4.85938 15.6406 1.5 11.5 1.5C7.35938 1.5 4 4.85938 4 9C4 13.375 11.5 21.5 11.5 21.5ZM11.5 6.5C12.163 6.5 12.7989 6.76339 13.2678 7.23223C13.7366 7.70107 14 8.33696 14 9C14 9.66304 13.7366 10.2989 13.2678 10.7678C12.7989 11.2366 12.163 11.5 11.5 11.5C10.837 11.5 10.2011 11.2366 9.73223 10.7678C9.26339 10.2989 9 9.66304 9 9C9 8.33696 9.26339 7.70107 9.73223 7.23223C10.2011 6.76339 10.837 6.5 11.5 6.5Z", 26252 fill: "black" 26253 }, null, -1 /* HOISTED */) 26254 ]), 8 /* PROPS */, vehicleCardDeck_iconLocationDotvue_type_script_setup_true_lang_ts_hoisted_1)); 26255 }; 26256 } 26257})); 26258 26259;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/iconLocationDot.vue?vue&type=script&setup=true&lang=ts 26260 26261// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleLocation/iconLocationDot.vue?vue&type=style&index=0&id=df36362e&scoped=true&lang=scss 26262var vehicleCardDeck_iconLocationDotvue_type_style_index_0_id_df36362e_scoped_true_lang_scss = __webpack_require__(3318); 26263;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/iconLocationDot.vue?vue&type=style&index=0&id=df36362e&scoped=true&lang=scss 26264 26265;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/iconLocationDot.vue 26266 26267 26268 26269; 26270 26271 26272const vehicleCardDeck_iconLocationDot_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_iconLocationDotvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-df36362e"]]) 26273 26274/* harmony default export */ const vehicleCardDeck_iconLocationDot = (vehicleCardDeck_iconLocationDot_exports_); 26275;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleLocation/vehicleLocation.vue?vue&type=script&lang=ts&setup=true 26276 26277 26278const vehicleCardDeck_vehicleLocationvue_type_script_lang_ts_setup_true_hoisted_1 = { 26279 key: 0, 26280 class: "vehicle-location" 26281}; 26282const vehicleCardDeck_vehicleLocationvue_type_script_lang_ts_setup_true_hoisted_2 = { class: "location-text" }; 26283 26284/* harmony default export */ const vehicleCardDeck_vehicleLocationvue_type_script_lang_ts_setup_true = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26285 __name: 'vehicleLocation', 26286 props: { 26287 model: {} 26288 }, 26289 setup(__props) { 26290 const props = __props; 26291 return (_ctx, _cache) => { 26292 return (props.model.enabled && props.model.location) 26293 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleLocationvue_type_script_lang_ts_setup_true_hoisted_1, [ 26294 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_iconLocationDot, { size: "14" }), 26295 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)()), 26296 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleLocationvue_type_script_lang_ts_setup_true_hoisted_2, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(props.model.location), 1 /* TEXT */) 26297 ])) 26298 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true); 26299 }; 26300 } 26301})); 26302 26303;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/vehicleLocation.vue?vue&type=script&lang=ts&setup=true 26304 26305// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
26305ader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleLocation/vehicleLocation.vue?vue&type=style&index=0&id=312f7248&lang=css 26306var vehicleCardDeck_vehicleLocationvue_type_style_index_0_id_312f7248_lang_css = __webpack_require__(8220); 26307;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/vehicleLocation.vue?vue&type=style&index=0&id=312f7248&lang=css 26308 26309;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/vehicleLocation.vue 26310 26311 26312 26313; 26314 26315const vehicleCardDeck_vehicleLocation_exports_ = vehicleCardDeck_vehicleLocationvue_type_script_lang_ts_setup_true; 26316 26317/* harmony default export */ const vehicleCardDeck_vehicleLocation = (vehicleCardDeck_vehicleLocation_exports_); 26318;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/tdgHeart/tdgHeart.vue?vue&type=script&setup=true&lang=ts 26319 26320 26321const vehicleCardDeck_tdgHeartvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "oem-toyota__tdg--srp-card-heart" }; 26322const vehicleCardDeck_tdgHeartvue_type_script_setup_true_lang_ts_hoisted_2 = ["id"]; 26323/* harmony default export */ const vehicleCardDeck_tdgHeartvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26324 __name: 'tdgHeart', 26325 props: { 26326 model: {} 26327 }, 26328 setup(__props) { 26329 const props = __props; 26330 return (_ctx, _cache) => { 26331 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_tdgHeartvue_type_script_setup_true_lang_ts_hoisted_1, [ 26332 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 26333 id: `${_ctx.model.DivId}${_ctx.model.AppendId}` 26334 }, null, 8 /* PROPS */, vehicleCardDeck_tdgHeartvue_type_script_setup_true_lang_ts_hoisted_2) 26335 ])); 26336 }; 26337 } 26338})); 26339 26340;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/tdgHeart/tdgHeart.vue?vue&type=script&setup=true&lang=ts 26341 26342// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/tdgHeart/tdgHeart.vue?vue&type=style&index=0&id=21576078&lang=scss 26343var vehicleCardDeck_tdgHeartvue_type_style_index_0_id_21576078_lang_scss = __webpack_require__(5326); 26344;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/tdgHeart/tdgHeart.vue?vue&type=style&index=0&id=21576078&lang=scss 26345 26346;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/tdgHeart/tdgHeart.vue 26347 26348 26349 26350; 26351 26352const vehicleCardDeck_tdgHeart_exports_ = vehicleCardDeck_tdgHeartvue_type_script_setup_true_lang_ts; 26353 26354/* harmony default export */ const vehicleCardDeck_tdgHeart = (vehicleCardDeck_tdgHeart_exports_); 26355;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleAuto.vue?vue&type=script&setup=true&lang=ts 26356 26357 26358const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-overview__title" }; 26359const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_2 = ["data-loc", "href", "title"]; 26360const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_3 = { class: "vehicle-title__text h2" }; 26361const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_4 = { class: "vehicle-title__year-make-model" }; 26362const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_5 = { 26363 key: 1, 26364 class: "vehicle-title__condition-year" 26365}; 26366const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_6 = { 26367 key: 0, 26368 class: "vehicle-title__car-bravo" 26369}; 26370const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_7 = { 26371 key: 1, 26372 class: "vehicle-title__condition" 26373}; 26374const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_8 = { class: "vehicle-title__year" }; 26375const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_9 = { class: "vehicle-title__make-model" }; 26376const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_10 = { class: "vehicle-title__trim" }; 26377const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_11 = { class: "vehicle-title__appended" }; 26378const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_12 = { 26379 key: 0, 26380 class: "oem-toyota__tdg--srp-card-heart-wrapper" 26381}; 26382const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_13 = { class: "vehicle-overview__identifiers" }; 26383const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_14 = { 26384 key: 0, 26385 class: "vehicle-special-tags" 26386}; 26387const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_15 = { 26388 key: 0, 26389 class: "vehicle-special-tags__special-offer" 26390}; 26391const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_16 = { class: "vehicle-special-tags__label" }; 26392const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_17 = { 26393 key: 1, 26394 class: "vehicle-special-tags__price-drop" 26395}; 26396const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_18 = { class: "vehicle-special-tags__label" }; 26397const vehicleCardDeck_hoisted_19 = { class: "vehicle-identifiers" }; 26398const vehicleCardDeck_hoisted_20 = { 26399 key: 0, 26400 class: "vehicle-identifiers__vin" 26401}; 26402const vehicleCardDeck_hoisted_21 = { class: "vehicle-identifiers__label" }; 26403const vehicleCardDeck_hoisted_22 = { class: "vehicle-identifiers__value" }; 26404const vehicleCardDeck_hoisted_23 = { 26405 key: 1, 26406 class: "vehicle-identifiers__stock" 26407}; 26408const vehicleCardDeck_hoisted_24 = { class: "vehicle-identifiers__label" }; 26409const vehicleCardDeck_hoisted_25 = { class: "vehicle-identifiers__value" }; 26410const vehicleCardDeck_hoisted_26 = { 26411 key: 2, 26412 class: "vehicle-identifiers__model-code" 26413}; 26414const vehicleCardDeck_hoisted_27 = { class: "vehicle-identifiers__label" }; 26415const vehicleCardDeck_hoisted_28 = { class: "vehicle-identifiers__value" }; 26416 26417 26418 26419 26420 26421 26422/* harmony default export */ const vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26423 __name: 'vehicleTitleAuto', 26424 props: { 26425 model: {}, 26426 tdgHeartModel: {}, 26427 vehicleDropdownModel: {}, 26428 vehicleLocationModel: {} 26429 }, 26430 setup(__props) { 26431 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 26432 const carBravoLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("CARBRAVO")}`); 26433 const vinLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("VIN")}`); 26434 const stockLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("STOCK")}`); 26435 const modelLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("MODEL")}`); 26436 const priceDropLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("PRICE_DROP3")); 26437 const specialLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SPECIAL_OFFER_INV")); 26438 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 26439 const vehicleCardAlignmentToggle = toggleService.getToggleStatus(vehicleCardDeck_toggles_toggleService/* Toggle */.lM.VehicleCardAlignment_DO48222); 26440 const props = __props; 26441 return (_ctx, _cache) => { 26442 const _component_heart_icon = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* resolve
26442Component */.g2)("heart-icon"); 26443 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 26444 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_1, [ 26445 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 26446 class: "vehicle-title stat-text-link", 26447 "data-loc": `available inventory:${_ctx.model.VehicleVin}`, 26448 href: _ctx.model.VehicleDetailUrl, 26449 title: `${_ctx.model.VehicleRuleAdjustedYear} ${_ctx.model.VehicleMakeAndModel} ${_ctx.model.VehicleRuleAdjustedTrim}`, 26450 "data-dotagging-event": "cta_interaction", 26451 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 26452 "data-dotagging-event-action-result": "open", 26453 "data-dotagging-element-type": "item_details", 26454 "data-dotagging-element-subtype": "hyperlink" 26455 }, [ 26456 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h3", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_3, [ 26457 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_4, [ 26458 (_ctx.model.IsMiniOem) 26459 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, [ 26460 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleName), 1 /* TEXT */) 26461 ], 64 /* STABLE_FRAGMENT */)) 26462 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_5, [ 26463 (_ctx.model.IsCarBravoVehicle) 26464 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_6, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(carBravoLabel.value), 1 /* TEXT */)) 26465 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26466 (_ctx.model.ShowVehicleCondition) 26467 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_7, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleCondition), 1 /* TEXT */)) 26468 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26469 (_ctx.model.ShowCpoTier) 26470 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 26471 key: 2, 26472 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(_ctx.model.CpoTierClass) 26473 }, [ 26474 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.CpoTierTitle), 1 /* TEXT */), 26475 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", null, "Â ", -1 /* HOISTED */)) 26476 ], 2 /* CLASS */)) 26477 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26478 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_8, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleRuleAdjustedYear), 1 /* TEXT */), 26479 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_9, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleMakeAndModel), 1 /* TEXT */), 26480 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_10, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleRuleAdjustedTrim), 1 /* TEXT */), 26481 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_11, "Â " + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleTitleAppendText), 1 /* TEXT */) 26482 ])) 26483 ]) 26484 ]) 26485 ], 8 /* PROPS */, vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_2) 26486 ]), 26487 (_ctx.model.ShowTdgHeart) 26488 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_12, [ 26489 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_tdgHeart, { model: _ctx.tdgHeartModel }, null, 8 /* PROPS */, ["model"]) 26490 ])) 26491 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26492 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 26493 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["save-heart__srp-card-heart-wrapper", { 'less-whitespace': (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardAlignmentToggle) }]) 26494 }, [ 26495 (_ctx.model.ShowVehicleSavingHeart) 26496 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(_component_heart_icon, { key: 0 })) 26497 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26498 ], 2 /* CLASS */), 26499 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleDropdown, { model: _ctx.vehicleDropdownModel }, null, 8 /* PROPS */, ["model"]), 26500 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_13, [ 26501 (_ctx.model.ShowSpecialTags) 26502 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_14, [ 26503 (_ctx.model.ShowSpecialIcon) 26504 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_15, [ 26505 _cache[1] || (_cache[1] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { class: "vehicle-special-tags__icon" }, [ 26506 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-tags" }) 26507 ], -1 /* HOISTED */)), 26508 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_16, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(specialLabel.value), 1 /* TEXT */) 26509 ])) 26510 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26511 (_ctx.model.ShouldDisplayPriceDropIcon) 26512 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_17, [ 26513 _cache[2] || (_cache[2] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { class: "vehicle-special-tags__icon" }, [ 26514 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-arrow-circle-down" }) 26515 ], -1 /* HOISTED */)), 26516 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts_hoisted_18, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(priceDropLabel.value), 1 /* TEXT */) 26517 ])) 26518 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26519 ])) 26520 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26521 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleLocation, { model: _ctx.vehicleLocationModel }, null, 8 /* PROPS */, ["model"]), 26522 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_hoisted_19, [ 26523 (_ctx.model.ShowVin) 26524 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_hoisted_20, [ 26525 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_21, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(vinLabel.value) + ": ", 1 /* TEXT */), 26526 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_22, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleVin), 1 /* TEXT */) 26527 ])) 26528 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26529 (_ctx.model.ShowStockNumber) 26530 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_hoisted_23, [ 26531 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_24, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(stockLabel.value) + ": ", 1 /* TEXT */), 26532 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_25, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleStockNumber), 1 /* TEXT */) 26533 ])) 26534 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26535 (_ctx.model.ShowModelCode) 26536 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_hoisted_26, [ 26537 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_27, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(modelLabel.value) + ": ", 1 /* TEXT */), 26538 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_hoisted_28, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleModelCode), 1 /* TEXT */) 26539 ])) 26540 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26541 ]) 26542 ]) 26543 ], 64 /* STABLE_FRAGMENT */)); 26544 }; 26545 } 26546})); 26547 26548;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleAuto.vue?vue&type=script&setup=true&lang=ts 26549 26550// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
26550ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleAuto.vue?vue&type=style&index=0&id=6c17e541&lang=scss 26551var vehicleCardDeck_vehicleTitleAutovue_type_style_index_0_id_6c17e541_lang_scss = __webpack_require__(7569); 26552;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleAuto.vue?vue&type=style&index=0&id=6c17e541&lang=scss 26553 26554;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleAuto.vue 26555 26556 26557 26558; 26559 26560const vehicleCardDeck_vehicleTitleAuto_exports_ = vehicleCardDeck_vehicleTitleAutovue_type_script_setup_true_lang_ts; 26561 26562/* harmony default export */ const vehicleCardDeck_vehicleTitleAuto = (vehicleCardDeck_vehicleTitleAuto_exports_); 26563;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleRecreationalVehicles.vue?vue&type=script&setup=true&lang=ts 26564 26565 26566const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-overview__title" }; 26567const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_2 = ["data-loc", "href", "title"]; 26568const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "vehicle-title__text h2" }; 26569const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "vehicle-title__year-make-model" }; 26570const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "vehicle-title__condition-year" }; 26571const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_6 = { 26572 key: 0, 26573 class: "vehicle-title__condition" 26574}; 26575const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_7 = { class: "vehicle-title__year" }; 26576const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_8 = { class: "vehicle-title__trim" }; 26577const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_9 = { class: "vehicle-title__appended" }; 26578const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_10 = { 26579 key: 0, 26580 class: "vehicle-overview__identifiers" 26581}; 26582const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_11 = { 26583 key: 0, 26584 class: "vehicle-special-tags" 26585}; 26586const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_12 = { 26587 key: 0, 26588 class: "vehicle-special-tags__special-offer" 26589}; 26590const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_13 = { class: "vehicle-special-tags__label" }; 26591const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_14 = { 26592 key: 1, 26593 class: "vehicle-special-tags__price-drop" 26594}; 26595const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_15 = { class: "vehicle-special-tags__label" }; 26596const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_16 = { class: "vehicle-identifiers" }; 26597const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_17 = { 26598 key: 0, 26599 class: "vehicle-identifiers__vin" 26600}; 26601const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_18 = { class: "vehicle-identifiers__label" }; 26602const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_19 = { class: "vehicle-identifiers__value" }; 26603const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_20 = { 26604 key: 1, 26605 class: "vehicle-identifiers__stock" 26606}; 26607const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_21 = { class: "vehicle-identifiers__label" }; 26608const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_22 = { class: "vehicle-identifiers__value" }; 26609 26610 26611 26612 26613/* harmony default export */ const vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26614 __name: 'vehicleTitleRecreationalVehicles', 26615 props: { 26616 model: {}, 26617 vehicleDropdownModel: {} 26618 }, 26619 setup(__props) { 26620 var _a, _b, _c; 26621 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 26622 const vinLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("VIN")}` + " "); 26623 const stockLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("STOCK")}` + " "); 26624 const priceDropLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("PRICE_DROP3")); 26625 const specialLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SPECIAL_OFFER_INV")); 26626 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 26627 const vehicleCardAlignmentToggle = toggleService.getToggleStatus(vehicleCardDeck_toggles_toggleService/* Toggle */.lM.VehicleCardAlignment_DO48222); 26628 const props = __props; 26629 const rvManufacturer = (_a = props.model.RvInfoViewModel.Manufacturer) !== null && _a !== void 0 ? _a : ""; 26630 const rvBrand = (_b = props.model.RvInfoViewModel.Brand) !== null && _b !== void 0 ? _b : ""; 26631 const rvModelName = (_c = props.model.RvInfoViewModel.ModelName) !== null && _c !== void 0 ? _c : ""; 26632 const rvManufacturerAndBrand = ` ${rvManufacturer} ${rvBrand} `; 26633 return (_ctx, _cache) => { 26634 const _component_heart_icon = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* resolve
26634Component */.g2)("heart-icon"); 26635 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 26636 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_1, [ 26637 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("a", { 26638 class: "vehicle-title stat-text-link", 26639 "data-loc": `available inventory:${_ctx.model.VehicleVin}`, 26640 href: _ctx.model.VehicleDetailUrl, 26641 title: `${_ctx.model.VehicleRuleAdjustedYear} ${rvManufacturerAndBrand} ${(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(rvModelName)}`, 26642 "data-dotagging-event": "cta_interaction", 26643 "data-dotagging-product-name": "SRP 2.0|Vehicle Item Details", 26644 "data-dotagging-event-action-result": "open", 26645 "data-dotagging-element-type": "item_details", 26646 "data-dotagging-element-subtype": "hyperlink" 26647 }, [ 26648 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h3", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_3, [ 26649 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_4, [ 26650 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_5, [ 26651 (_ctx.model.ShowVehicleCondition) 26652 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_6, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleCondition), 1 /* TEXT */)) 26653 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26654 (_ctx.model.ShowCpoTier) 26655 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 26656 key: 1, 26657 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(_ctx.model.CpoTierClass) 26658 }, [ 26659 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.CpoTierTitle), 1 /* TEXT */), 26660 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", null, "Â ", -1 /* HOISTED */)) 26661 ], 2 /* CLASS */)) 26662 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26663 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_7, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleRuleAdjustedYear), 1 /* TEXT */), 26664 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { class: "vehicle-title__make-model" }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(rvManufacturerAndBrand)), 26665 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_8, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.RvInfoViewModel.ModelName), 1 /* TEXT */), 26666 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_9, "Â " + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleTitleAppendText), 1 /* TEXT */) 26667 ]) 26668 ]) 26669 ]) 26670 ], 8 /* PROPS */, vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_2) 26671 ]), 26672 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 26673 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["save-heart__srp-card-heart-wrapper", { 'less-whitepsace': (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardAlignmentToggle) }]) 26674 }, [ 26675 (_ctx.model.ShowVehicleSavingHeart) 26676 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(_component_heart_icon, { key: 0 })) 26677 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26678 ], 2 /* CLASS */), 26679 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleDropdown, { model: _ctx.vehicleDropdownModel }, null, 8 /* PROPS */, ["model"]), 26680 (_ctx.model.ShowIdentifiers) 26681 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_10, [ 26682 (_ctx.model.ShowSpecialTags) 26683 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_11, [ 26684 (_ctx.model.ShowSpecialIcon) 26685 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_12, [ 26686 _cache[1] || (_cache[1] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { class: "vehicle-special-tags__icon" }, [ 26687 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-tags" }) 26688 ], -1 /* HOISTED */)), 26689 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_13, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(specialLabel.value), 1 /* TEXT */) 26690 ])) 26691 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26692 (_ctx.model.ShouldDisplayPriceDropIcon) 26693 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_14, [ 26694 _cache[2] || (_cache[2] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { class: "vehicle-special-tags__icon" }, [ 26695 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { class: "fa fa-arrow-circle-down" }) 26696 ], -1 /* HOISTED */)), 26697 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_15, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(priceDropLabel.value), 1 /* TEXT */) 26698 ])) 26699 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26700 ])) 26701 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26702 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_16, [ 26703 (_ctx.model.ShowVin) 26704 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_17, [ 26705 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_18, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(vinLabel.value), 1 /* TEXT */), 26706 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_19, "#" + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleVin), 1 /* TEXT */) 26707 ])) 26708 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26709 (_ctx.model.ShowStockNumber) 26710 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_20, [ 26711 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_21, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(stockLabel.value), 1 /* TEXT */), 26712 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts_hoisted_22, "#" + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.VehicleStockNumber), 1 /* TEXT */) 26713 ])) 26714 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26715 ]) 26716 ])) 26717 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26718 ], 64 /* STABLE_FRAGMENT */)); 26719 }; 26720 } 26721})); 26722 26723;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleRecreationalVehicles.vue?vue&type=script&setup=true&lang=ts 26724 26725// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
26725ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleRecreationalVehicles.vue?vue&type=style&index=0&id=8e879ab6&lang=scss 26726var vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_style_index_0_id_8e879ab6_lang_scss = __webpack_require__(3108); 26727;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleRecreationalVehicles.vue?vue&type=style&index=0&id=8e879ab6&lang=scss 26728 26729;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleRecreationalVehicles.vue 26730 26731 26732 26733; 26734 26735const vehicleCardDeck_vehicleTitleRecreationalVehicles_exports_ = vehicleCardDeck_vehicleTitleRecreationalVehiclesvue_type_script_setup_true_lang_ts; 26736 26737/* harmony default export */ const vehicleCardDeck_vehicleTitleRecreationalVehicles = (vehicleCardDeck_vehicleTitleRecreationalVehicles_exports_); 26738;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitle.vue?vue&type=script&setup=true&lang=ts 26739 26740 26741 26742 26743 26744 26745 26746/* harmony default export */ const vehicleCardDeck_vehicleTitlevue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26747 __name: 'vehicleTitle', 26748 props: { 26749 model: {}, 26750 tdgHeartModel: {}, 26751 vehicleDropdownModel: {}, 26752 vehicleLocationModel: {} 26753 }, 26754 setup(__props) { 26755 const globalStore = (0,vehicleCardDeck_cosmosSrp_globalStore/* useGlobalStore */.o)(); 26756 const isRvIndustry = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => globalStore.getIndustry == vehicleCardDeck_industry/* Industry */.j.RecreationalVehicles); 26757 const props = __props; 26758 return (_ctx, _cache) => { 26759 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 26760 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("VehicleTitle.vue"), 26761 (!isRvIndustry.value) 26762 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleTitleAuto, { 26763 key: 0, 26764 model: _ctx.model, 26765 vehicleDropdownModel: _ctx.vehicleDropdownModel, 26766 vehicleLocationModel: _ctx.vehicleLocationModel, 26767 tdgHeartModel: _ctx.tdgHeartModel 26768 }, null, 8 /* PROPS */, ["model", "vehicleDropdownModel", "vehicleLocationModel", "tdgHeartModel"])) 26769 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleTitleRecreationalVehicles, { 26770 key: 1, 26771 model: _ctx.model, 26772 vehicleDropdownModel: _ctx.vehicleDropdownModel 26773 }, null, 8 /* PROPS */, ["model", "vehicleDropdownModel"])) 26774 ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)); 26775 }; 26776 } 26777})); 26778 26779;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitle.vue?vue&type=script&setup=true&lang=ts 26780 26781;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitle.vue 26782 26783 26784 26785const vehicleCardDeck_vehicleTitle_exports_ = vehicleCardDeck_vehicleTitlevue_type_script_setup_true_lang_ts; 26786 26787/* harmony default export */ const vehicleCardDeck_vehicleTitle = (vehicleCardDeck_vehicleTitle_exports_); 26788;// ./src/components/spaCosmos/vehicleCards/vehicleOverview/vehicleTitle/vehicleTitleViewModel.ts 26789class vehicleCardDeck_VehicleTitleViewModel { 26790} 26791 26792// EXTERNAL MODULE: ./src/components/pricing/pricingTypeCookie.ts 26793var vehicleCardDeck_pricingTypeCookie = __webpack_require__(1373); 26794;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakTabs.vue?vue&type=script&setup=true&lang=ts 26795 26796 26797const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_1 = { 26798 key: 0, 26799 role: "tablist", 26800 class: "multi-tabs multi-tabs--pricing nav nav-tabs nav-justified flex-box", 26801 "data-priceStak-tab-container": "" 26802}; 26803const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_2 = ["i
26803d", "aria-expanded", "data-loc"]; 26804const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_3 = ["id", "aria-expanded", "data-loc"]; 26805const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_4 = ["id", "aria-expanded", "data-loc", "data-dotagging-element-order"]; 26806const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "pricing-tab-content tab-content" }; 26807const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_6 = ["id"]; 26808const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_7 = { 26809 key: 0, 26810 class: "beforeLeadSubmission" 26811}; 26812const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_8 = ["innerHTML"]; 26813const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_9 = ["innerHTML"]; 26814const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_10 = { 26815 key: 1, 26816 class: "afterLeadSubmission" 26817}; 26818const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_11 = ["innerHTML"]; 26819const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_12 = ["innerHTML"]; 26820const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_13 = ["id"]; 26821const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_14 = ["innerHTML"]; 26822const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_15 = ["innerHTML"]; 26823const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_16 = ["id"]; 26824const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_17 = ["innerHTML"]; 26825const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_18 = ["innerHTML"]; 26826 26827 26828 26829 26830/* harmony default export */ const vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 26831 __name: 'priceStakTabs', 26832 props: { 26833 model: {} 26834 }, 26835 setup(__props) { 26836 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 26837 const storeProvider = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.StoreProvider); 26838 const globalStore = storeProvider.getGlobalStore(); 26839 const buyLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("BUY")}`); 26840 const financeLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("FINANCE")}`); 26841 const leaseLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("LEASE")}`); 26842 const isMobile = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => globalStore.isMobile); 26843 const tabNames = ["buy", "finance", "lease"]; 26844 let selectedTab = "buy"; 26845 let showBuy = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(true); 26846 let showFinance = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 26847 let showLease = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 26848 let isPostLead = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 26849 const props = __props; 26850 const taggingTitle = props.model.StakTypeString + " - Pricestak"; 26851 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 26852 document.addEventListener(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.SwitchPricingTab, handlePricingTabSwitch); 26853 // A card mounted by infinite scroll defaults to buy until the next SwitchPricingTab dispatch. Seed it 26854 // from the cookie so it never renders out of step with the cards already on the page. 26855 const cookieTab = vehicleCardDeck_pricingTypeCookie/* PricingTypeCookie */.L.currentCookieValue; 26856 if (tabNames.includes(cookieTab)) { 26857 setSelectedTab(cookieTab); 26858 } 26859 setupLeadListener(); 26860 }); 26861 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onUnmounted */.hi)(() => { 26862 // Cards are torn down and rebuilt on every filter/pagination change.
26863 // Without this the document accumulates a handler per destroyed card. 26864 document.removeEventListener(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.SwitchPricingTab, handlePricingTabSwitch); 26865 }); 26866 function setupLeadListener() { 26867 const isDoPriceUnlocked = window.DealeronCookie.getItem(window.DlronGlobal_PriceUnlocked) === "?v=7HWvMx0ytdM"; 26868 const isTdgPriceUnlocked = window.hasOwnProperty("toyotaDigitalGarageScript") && window.toyotaDigitalGarageScript.globalPriceUnlocked; 26869 isPostLead.value = isDoPriceUnlocked || isTdgPriceUnlocked; 26870 document.addEventListener('trigger-adjust-pricing-visibility', () => { 26871 isPostLead.value = true; 26872 //NOTE: we want to make sure that the DOM is updated so that this finds all 26873 // the eprice modal buttons. For timing issues, we'll do this here instead 26874 // of in the pricemodal.ts file. 26875 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* nextTick */.dY)(() => { 26876 var _a; 26877 (_a = window.ePriceModal) === null || _a === void 0 ? void 0 : _a.setupEvents(); 26878 document.dispatchEvent(new Event(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.PricingVisibilityAdjusted)); 26879 }); 26880 }); 26881 } 26882 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* watch */.wB)(isMobile, () => { 26883 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* nextTick */.dY)(() => { 26884 var _a; 26885 (_a = window.ePriceModal) === null || _a === void 0 ? void 0 : _a.setupEvents(); 26886 }); 26887 }); 26888 function handlePricingTabSwitch(data) { 26889 setSelectedTab(data.detail); 26890 } 26891 function setSelectedTab(tabName) { 26892 selectedTab = tabName; 26893 if ((tabName === "lease" && !shouldDisplay(props.model.LeaseContent)) || 26894 (tabName === "finance" && !shouldDisplay(props.model.FinanceContent))) { 26895 selectedTab = "buy"; 26896 } 26897 showBuy.value = selectedTab === 'buy'; 26898 showFinance.value = selectedTab === 'finance'; 26899 showLease.value = selectedTab === 'lease'; 26900 } 26901 function shouldDisplay(content) { 26902 return content && content.trim(); 26903 } 26904 return (_ctx, _cache) => { 26905 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 26906 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" No data-toggle/href, so Bootstrap's tab plugin never touches these buttons, and Vue owns the\n .active highlight from the same state that drives the panes' v-show. "), 26907 (shouldDisplay(_ctx.model.LeaseContent) || shouldDisplay(_ctx.model.FinanceContent)) 26908 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("ul", vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_1, [ 26909 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("li", { 26910 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["multi-tabs__tab multi-tabs__tab--buy nav-item", { active: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showBuy) }]), 26911 role: "presentation", 26912 "data-pricestak-tab-wrapper": "buy" 26913 }, [ 26914 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26915 class: "multi-tabs__tab-button text-uppercase buy-btn stat-tab-link", 26916 "data-priceStak-tab": "buy", 26917 type: "button", 26918 role: "tab", 26919 id: 'buy-btn-' + _ctx.model.Vin, 26920 "data-pricestak-element": "pricestak-tab-button", 26921 "aria-expanded": String((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showBuy)), 26922 "data-loc": `available inventory:${_ctx.model.Vin}`, 26923 "data-dotagging-event": "element_c
26923onfiguration", 26924 "data-dotagging-product-name": "SRP 2.0|", 26925 "data-dotagging-event-action-result": "calc", 26926 "data-dotagging-element-type": "item_details", 26927 "data-dotagging-element-subtype": "nav_tab", 26928 "data-dotagging-element-state": "active", 26929 "data-dotagging-element-position": "top_right", 26930 "data-dotagging-element-title": taggingTitle, 26931 "data-dotagging-element-order": "0" 26932 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(buyLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_2) 26933 ], 2 /* CLASS */), 26934 (shouldDisplay(_ctx.model.FinanceContent)) 26935 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("li", { 26936 key: 0, 26937 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["multi-tabs__tab multi-tabs__tab--finance nav-item", { active: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showFinance) }]), 26938 role: "presentation", 26939 "data-pricestak-tab-wrapper": "finance" 26940 }, [ 26941 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26942 class: "multi-tabs__tab-button text-uppercase finance-btn stat-tab-link", 26943 "data-priceStak-tab": "finance", 26944 type: "button", 26945 role: "tab", 26946 id: 'finance-btn-' + _ctx.model.Vin, 26947 "data-pricestak-element": "pricestak-tab-button", 26948 "aria-expanded": String((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showFinance)), 26949 "data-loc": `available inventory:${_ctx.model.Vin}`, 26950 "data-dotagging-event": "element_configuration", 26951 "data-dotagging-product-name": "SRP 2.0|", 26952 "data-dotagging-event-action-result": "calc", 26953 "data-dotagging-element-type": "item_details", 26954 "data-dotagging-element-subtype": "nav_tab", 26955 "data-dotagging-element-state": "active", 26956 "data-dotagging-element-position": "top_right", 26957 "data-dotagging-element-title": taggingTitle, 26958 "data-dotagging-element-order": "1" 26959 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(financeLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_3) 26960 ], 2 /* CLASS */)) 26961 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26962 (shouldDisplay(_ctx.model.LeaseContent)) 26963 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("li", { 26964 key: 1, 26965 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["multi-tabs__tab multi-tabs__tab--lease nav-item", { active: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showLease) }]), 26966 role: "presentation", 26967 "data-pricestak-tab-wrapper": "lease" 26968 }, [ 26969 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 26970 class: "multi-tabs__tab-button text-uppercase lease-btn stat-tab-link", 26971 "data-priceStak-tab": "lease", 26972 type: "button", 26973 role: "tab", 26974 id: 'lease-btn-' + _ctx.model.Vin, 26975 "data-pricestak-element": "pricestak-tab-button", 26976 "aria-expanded": String((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showLease)), 26977 "data-loc": `available inventory:${_ctx.model.Vin}`, 26978 "data-dotagging-event": "element_c
26978onfiguration", 26979 "data-dotagging-product-name": "SRP 2.0|", 26980 "data-dotagging-event-action-result": "calc", 26981 "data-dotagging-element-type": "item_details", 26982 "data-dotagging-element-subtype": "nav_tab", 26983 "data-dotagging-element-state": "active", 26984 "data-dotagging-element-position": "top_right", 26985 "data-dotagging-element-title": taggingTitle, 26986 "data-dotagging-element-order": (shouldDisplay(_ctx.model.FinanceContent) ? '2' : '1') 26987 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(leaseLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_4) 26988 ], 2 /* CLASS */)) 26989 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 26990 ])) 26991 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 26992 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_5, [ 26993 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* withDirectives */.bo)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 26994 id: _ctx.model.BuyRef, 26995 class: "pricing-tab-content__pane pricing-tab-content__pane--buy vehiclePricing tab-pane buy-content active", 26996 "data-pricestak-tab-pane": "buy" 26997 }, [ 26998 (!(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(isPostLead)) 26999 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_7, [ 27000 (!isMobile.value) 27001 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27002 key: 0, 27003 class: "hidden-xs", 27004 innerHTML: _ctx.model.BuyContent 27005 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_8)) 27006 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27007 key: 1, 27008 class: "visible-xs", 27009 innerHTML: _ctx.model.MobileBuyContent 27010 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_9)) 27011 ])) 27012 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_10, [ 27013 (!isMobile.value) 27014 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27015 key: 0, 27016 class: "hidden-xs", 27017 innerHTML: _ctx.model.BuyContentAfterLead 27018 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_11)) 27019 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27020 key: 1, 27021 class: "visible-xs", 27022 innerHTML: _ctx.model.MobileBuyContentAfterLead 27023 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_12)) 27024 ])) 27025 ], 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_6), [ 27026 [vehicleCardDeck_vue_runtime_esm_browser_prod/* vShow */.aG, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showBuy)] 27027 ]), 27028 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* withDirectives */.bo)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27029 id: _ctx.model.FinanceRef, 27030 class: "pricing-tab-content__pane pricing-tab-content__pane--finance vehiclePricing tab-pane finance-content active", 27031 "data-pricestak-tab-pane": "finance" 27032 }, [ 27033 (!isMobile.value) 27034 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27035 key: 0, 27036 class: "hidden-xs", 27037 innerHTML: _ctx.model.FinanceContent 27038 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_14)) 27039 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27040 key: 1, 27041 class: "visible-xs", 27042 innerHTML: _ctx.model.MobileFinanceContent 27043 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_15)) 27044 ], 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_13), [ 27045 [vehicleCardDeck_vue_runtime_esm_browser_prod/* vShow */.aG, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showFinance)] 27046 ]), 27047 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* withDirectives */.bo)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27048 id: _ctx.model.LeaseRef, 27049 class: "pricing-tab-content__pane pricing-tab-content__pane--lease vehiclePricing tab-pane lease-content active", 27050 "data-pricestak-tab-pane": "lease" 27051 }, [ 27052 (!isMobile.value) 27053 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27054 key: 0, 27055 class: "hidden-xs", 27056 innerHTML: _ctx.model.LeaseContent 27057 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_17)) 27058 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27059 key: 1, 27060 class: "visible-xs", 27061 innerHTML: _ctx.model.MobileLeaseContent 27062 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_18)) 27063 ], 8 /* PROPS */, vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts_hoisted_16), [ 27064 [vehicleCardDeck_vue_runtime_esm_browser_prod/* vShow */.aG, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(showLease)] 27065 ]) 27066 ]) 27067 ], 64 /* STABLE_FRAGMENT */)); 27068 }; 27069 } 27070})); 27071 27072;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakTabs.vue?vue&type=script&setup=true&lang=ts 27073 27074;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakTabs.vue 27075 27076 27077 27078const vehicleCardDeck_priceStakTabs_exports_ = vehicleCardDeck_priceStakTabsvue_type_script_setup_true_lang_ts; 27079 27080/* harmony default export */ const vehicleCardDeck_priceStakTabs = (vehicleCardDeck_priceStakTabs_exports_); 27081;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakContent.vue?vue&type=script&setup=true&lang=ts 27082 27083 27084const vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "pricestak" }; 27085const vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_2 = ["innerHTML"]; 27086const vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_3 = { 27087 "data-pricestak-main": "", 27088 "data-pricestak-vue-managed": "true" 27089}; 27090const vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_4 = ["innerHTML"]; 27091const vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_5 = ["innerHTML"]; 27092 27093 27094 27095 27096/* harmony default export */ const vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 27097 __name: 'priceStakContent', 27098 props: { 27099 model: {} 27100 }, 27101 setup(__props) { 27102 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 27103 const vehicleCardAlignmentToggle = toggleService.getToggleStatus(vehicleCardDeck_toggles_toggleService/* Toggle */.lM.VehicleCardAlignment_DO48222); 27104 const props = __props; 27105 return (_ctx, _cache) => { 27106 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_1, [ 27107 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27108 innerHTML: _ctx.model.PricePreHtml, 27109 class: "pricestak-pre" 27110 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_2), 27111 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { "data-pricestak-tpi-location": "above" }, null, -1 /* HOISTED */)), 27112 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_3, [ 27113 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_priceStakTabs, { 27114 model: _ctx.model.PriceStakTabsModel 27115 }, null, 8 /* PROPS */, ["model"]) 27116 ]), 27117 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27118 "data-pricestak-tpi-location": "below", 27119 innerHTML: _ctx.model.TpiBelowHtml 27120 }, null, 8 /* PROPS */, vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_4), 27121 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27122 innerHTML: _ctx.model.PricePostHtml, 27123 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["pricestak-post", { 'less-whitespace': (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardAlignmentToggle) }]) 27124 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts_hoisted_5) 27125 ])); 27126 }; 27127 } 27128})); 27129 27130;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakContent.vue?vue&type=script&setup=true&lang=ts 27131 27132// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
27132ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakContent.vue?vue&type=style&index=0&id=520844d0&scoped=true&lang=scss 27133var vehicleCardDeck_priceStakContentvue_type_style_index_0_id_520844d0_scoped_true_lang_scss = __webpack_require__(7753); 27134;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakContent.vue?vue&type=style&index=0&id=520844d0&scoped=true&lang=scss 27135 27136;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/priceStakContent.vue 27137 27138 27139 27140; 27141 27142 27143const vehicleCardDeck_priceStakContent_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_priceStakContentvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-520844d0"]]) 27144 27145/* harmony default export */ const vehicleCardDeck_priceStakContent = (vehicleCardDeck_priceStakContent_exports_); 27146;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/vehiclePricingPanel.vue?vue&type=script&setup=true&lang=ts 27147 27148 27149const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-pricing__content pricingStackContainer" }; 27150const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_2 = { key: 0 }; 27151const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "text-center" }; 27152const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "small" }; 27153const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_5 = ["innerHTML"]; 27154const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_6 = ["innerHTML"]; 27155const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_7 = ["innerHTML"]; 27156const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_8 = ["innerHTML"]; 27157 27158 27159 27160 27161/* harmony default export */ const vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 27162 __name: 'vehiclePricingPanel', 27163 props: { 27164 model: {} 27165 }, 27166 setup(__props) { 27167 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 27168 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 27169 const vehicleCardAlignmentToggle = toggleService.getToggleStatus(vehicleCardDeck_toggles_toggleService/* Toggle */.lM.VehicleCardAlignment_DO48222); 27170 const props = __props; 27171 const hasFacebookMessengerContent = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return (_b = ((_a = props.model.FacebookMessengerContent) === null || _a === void 0 ? void 0 : _a.length) > 0) !== null && _b !== void 0 ? _b : false; }); 27172 const reservedVehicleTitle = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getTitle("RESERVED_VEHICLE")); 27173 const reservedVehicleComment = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getComment("RESERVED_VEHICLE_TOYOTA_LEXUS")); 27174 return (_ctx, _cache) => { 27175 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27176 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-pricing vehiclePricingStack", { 'shift-ctas': (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardAlignmentToggle) }]) 27177 }, [ 27178 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_1, [ 27179 (_ctx.model.ShowReservedDisclaimer) 27180 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_2, [ 27181 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h4", vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_3, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(reservedVehicleTitle.value), 1 /* TEXT */), 27182 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_4, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(reservedVehicleComment.value), 1 /* TEXT */) 27183 ])) 27184 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27185 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_priceStakContent, { 27186 model: _ctx.model.PriceStakViewModel 27187 }, null, 8 /* PROPS */, ["model"]), 27188 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.BeforeCommentCustomContentCollection, (tpi, index) => { 27189 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27190 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["margin-top_5x", tpi.Key]) 27191 }, [ 27192 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 27193 innerHTML: tpi.Value 27194 }, null, 8 /* PROPS */, vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_5) 27195 ], 2 /* CLASS */)); 27196 }), 256 /* UNKEYED_FRAGMENT */)), 27197 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27198 class: "custom-comments invExtComments", 27199 innerHTML: _ctx.model.CustomCommentContent 27200 }, null, 8 /* PROPS */, vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_6), 27201 (hasFacebookMessengerContent.value) 27202 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 27203 key: 1, 27204 innerHTML: _ctx.model.FacebookMessengerContent 27205 }, null, 8 /* PROPS */, vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_7)) 27206 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27207 ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(_ctx.model.AfterCommentCustomContentCollection, (tpi, index) => { 27208 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27209 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["margin-top_5x", tpi.Key]) 27210 }, [ 27211 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", { 27212 innerHTML: tpi.Value 27213 }, null, 8 /* PROPS */, vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts_hoisted_8) 27214 ], 2 /* CLASS */)); 27215 }), 256 /* UNKEYED_FRAGMENT */)) 27216 ]) 27217 ], 2 /* CLASS */)); 27218 }; 27219 } 27220})); 27221 27222;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/vehiclePricingPanel.vue?vue&type=script&setup=true&lang=ts 27223 27224;// ./src/components/spaCosmos/vehicleCards/vehiclePricingPanel/vehiclePricingPanel.vue 27225 27226 27227 27228const vehicleCardDeck_vehiclePricingPanel_exports_ = vehicleCardDeck_vehiclePricingPanelvue_type_script_setup_true_lang_ts; 27229 27230/* harmony default export */ const vehicleCardDeck_vehiclePricingPanel = (vehicleCardDeck_vehiclePricingPanel_exports_); 27231;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleSpecs/vehicleSpecs.vue?vue&type=script&setup=true&lang=ts 27232 27233 27234const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-specs" }; 27235const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_2 = { 27236 key: 1, 27237 class: "vehicle-mileage" 27238}; 27239const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_3 = ["title"]; 27240const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "vehicle-colors__label" }; 27241const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_5 = ["innerHTML"]; 27242const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_6 = ["title"]; 27243const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_7 = { 27244 key: 1, 27245 class: "vehicle-colors__label" 27246}; 27247const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_8 = ["innerHTML"]; 27248 27249 27250 27251 27252/* harmony default export */ const vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 27253 __name: 'vehicleSpecs', 27254 props: { 27255 model: {} 27256 }, 27257 setup(__props) { 27258 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 27259 const props = __props; 27260 const interiorShortLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("INTERIOR_SHORT")}`); 27261 const exteriorShortLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("EXTERIOR_SHORT")}`); 27262 const showExteriorColors = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.ShowExteriorColorLabel || props.model.ShowExteriorColorSwatch); 27263 const showInternalColors = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() =>
27263 props.model.ShowInteriorColorLabel || props.model.ShowInteriorColorSwatch); 27264 return (_ctx, _cache) => { 27265 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_1, [ 27266 (_ctx.model.ShowStatus) 27267 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleStatus, { 27268 key: 0, 27269 model: _ctx.model.VehicleStatusModel 27270 }, null, 8 /* PROPS */, ["model"])) 27271 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27272 (_ctx.model.ShowMileage) 27273 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_2, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.Mileage), 1 /* TEXT */)) 27274 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27275 (_ctx.model.ShowColors) 27276 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27277 key: 2, 27278 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-colors", { 'oem-toyota__tdg--srp-card-colors': _ctx.model.UseTdgColorClasses }]) 27279 }, [ 27280 (showExteriorColors.value) 27281 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27282 key: 0, 27283 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-colors__ext", { 'oem-toyota__tdg--srp-card-color': _ctx.model.UseTdgColorClasses }]) 27284 }, [ 27285 (_ctx.model.ShowExteriorColorSwatch) 27286 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* mergeProps */.v6)({ 27287 key: 0, 27288 class: ["vehicle-colors__icon", [ 27289 `vehicle-colors__icon--${_ctx.model.CornerType}`, 27290 { 27291 'oem-toyota__tdg--srp-card-color-icon': _ctx.model.UseTdgColorClasses, 27292 }, 27293 ]] 27294 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_SpaHelpers/* SpaHelpers */.A).ParseHtmlAttrs(_ctx.model.ExternalColorAccessibilityAttributes), { 27295 title: _ctx.model.ExteriorColorIconTitleAttribute, 27296 style: `background-color: ${_ctx.model.ExteriorColorCode}` 27297 }), null, 16 /* FULL_PROPS */, vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_3)) 27298 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27299 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("span", vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_4, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(exteriorShortLabel.value) + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.ShowExteriorColorLabel ? ":" : ""), 1 /* TEXT */), 27300 (_ctx.model.ShowExteriorColorLabel) 27301 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 27302 key: 1, 27303 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-colors__value", { 27304 'oem-toyota__tdg--srp-card-color-value': _ctx.model.UseTdgColorClasses, 27305 }]), 27306 innerHTML: _ctx.model.ExteriorColorLabel 27307 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_5)) 27308 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27309 ], 2 /* CLASS */)) 27310 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27311 (showInternalColors.value) 27312 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27313 key: 1, 27314 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-colors__int", { 'oem-toyota__tdg--srp-card-color': _ctx.model.UseTdgColorClasses }]) 27315 }, [
27316 (_ctx.model.ShowInteriorColorSwatch) 27317 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* mergeProps */.v6)({ 27318 key: 0, 27319 class: ["vehicle-colors__icon", [ 27320 `vehicle-colors__icon--${_ctx.model.CornerType}`, 27321 { 27322 'oem-toyota__tdg--srp-card-color-icon': _ctx.model.UseTdgColorClasses, 27323 }, 27324 ]] 27325 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_SpaHelpers/* SpaHelpers */.A).ParseHtmlAttrs(_ctx.model.InteriorColorAccessibilityAttributes), { 27326 title: _ctx.model.InteriorColorIconTitleAttribute, 27327 style: `background-color: ${_ctx.model.InteriorColorCode}` 27328 }), null, 16 /* FULL_PROPS */, vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_6)) 27329 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27330 (_ctx.model.ShowInteriorColorSwatch || _ctx.model.IsCosmosTdgEnabled) 27331 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_7, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(interiorShortLabel.value) + (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(_ctx.model.ShowInteriorColorLabel ? ":" : ""), 1 /* TEXT */)) 27332 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27333 (_ctx.model.ShowInteriorColorLabel) 27334 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 27335 key: 2, 27336 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-colors__value", { 27337 'oem-toyota__tdg--srp-card-color-value': _ctx.model.UseTdgColorClasses, 27338 }]), 27339 innerHTML: _ctx.model.InteriorColorLabel 27340 }, null, 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts_hoisted_8)) 27341 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27342 ], 2 /* CLASS */)) 27343 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27344 ], 2 /* CLASS */)) 27345 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27346 ])); 27347 }; 27348 } 27349})); 27350 27351;// ./src/components/spaCosmos/vehicleCards/vehicleSpecs/vehicleSpecs.vue?vue&type=script&setup=true&lang=ts 27352 27353// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleSpecs/vehicleSpecs.vue?vue&type=style&index=0&id=5a269b74&lang=scss&scoped=true 27354var vehicleCardDeck_vehicleSpecsvue_type_style_index_0_id_5a269b74_lang_scss_
27354scoped_true = __webpack_require__(761); 27355;// ./src/components/spaCosmos/vehicleCards/vehicleSpecs/vehicleSpecs.vue?vue&type=style&index=0&id=5a269b74&lang=scss&scoped=true 27356 27357;// ./src/components/spaCosmos/vehicleCards/vehicleSpecs/vehicleSpecs.vue 27358 27359 27360 27361; 27362 27363 27364const vehicleCardDeck_vehicleSpecs_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_vehicleSpecsvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-5a269b74"]]) 27365 27366/* harmony default export */ const vehicleCardDeck_vehicleSpecs = (vehicleCardDeck_vehicleSpecs_exports_); 27367;// ./src/components/spaCosmos/vehicleCards/vehicleSpecs/vehicleSpecsModel.ts 27368class vehicleCardDeck_VehicleSpecsModel { 27369} 27370 27371;// ./src/components/spaCosmos/vehicleCards/vehicleLocation/vehicleLocationModel.ts 27372class vehicleCardDeck_VehicleLocationModel { 27373} 27374 27375;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleCard.vue?vue&type=script&setup=true&lang=ts 27376 27377 27378const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_1 = ["id", "data-altdealerid", "data-vin", "data-make", "data-model", "data-year", "data-trim", "data-extcolor", "data-extcolorcode", "data-intcolor", "data-intcolorcode", "data-trans", "data-price", "data-priceLib", "data-vehicleid", "data-engine", "data-fueltype", "data-vehicletype", "data-bodystyle", "data-modelcode", "data-msrp", "data-name", "data-cpo", "data-stocknum", "data-mpgcity", "data-mpghwy", "data-intransit", "data-inproduction", "data-instock", "data-drivetrain", "data-dotagging-item-id", "data-dotagging-item-number", "data-dotagging-item-price", "data-dotagging-item-condition", "data-dotagging-item-year", "data-dotagging-item-make", "data-dotagging-item-model", "data-dotagging-item-variant", "data-dotagging-item-color", "data-dotagging-item-fuel-type", "data-dotagging-item-type", "data-dotagging-affiliation", "data-dotagging-item-inventory-date", "data-dotagging-item-recommended", "data-dotagging-item-location", "data-dotagging-item-generic-color", "data-dotagging-item-drivetrain", "data-dotagging-item-body-type", "data-dotagging-item-color-interior", "data-dotagging-item-engine", "data-dotagging-item-fuel-efficiency-city", "data-dotagging-item-fuel-efficiency-highway", "data-dotagging-item-odometer", "data-dotagging-item-transmission", "data-stellantis-ccode", "data-odometer", "data-cdsid"]; 27379const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_2 = { 27380 key: 0, 27381 class: "vehicle-card__head" 27382}; 27383const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "vehicle-card__image" }; 27384const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "vehicle-card__overview" }; 27385const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "vehicle-card__pricing" }; 27386const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_6 = { 27387 key: 1, 27388 class: "vehicle-card__more-info" 27389}; 27390const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_7 = { class: "vehicle-more-info" }; 27391const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_8 = { 27392 key: 0, 27393 class: "vehicle-more-info__icons" 27394}; 27395const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_9 = { 27396 key: 1, 27397 class: "vehicle-more-info__location-info" 27398}; 27399const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_10 = { class: "location-info" }; 27400const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_11 = ["innerHTML"]; 27401const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_12 = ["innerHTML"]; 27402const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_13 = { 27403 key: 2, 27404 class: "vehicle-card__more-info" 27405}; 27406const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_14 = { class: "vehicle-more-info" }; 27407const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_15 = { class: "eligible-benefits" }; 27408const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_16 = { class: "vehicle-card__compare" }; 27409 27410 27411 27412 27413 27414 27415 27416 27417 27418 27419 27420 27421 27422 27423 27424 27425 27426 27427 27428 27429/* harmony default export */ const vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 27430 __name: 'vehicleCard', 27431 props: { 27432 model: {}, 27433 shouldPadCardHeader: { type: Boolean } 27434 }, 27435 setup(__props) { 27436 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 27437 const storeProvider = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.StoreProvider); 27438 const globalStore = storeProvider.getGlobalStore(); 27439 // computed translation labels 27440 const carBravoLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => `${translationService.getLabel("CARBRAVO")}`); 27441 const hasEligibleBenefits = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { var _a, _b; return ((_b = (_a = props.model.EligibleBenefitsViewModel) === null || _a === void 0 ? void 0 : _a.EligibleBenefits) === null || _b === void 0 ? void 0 : _b.length) > 0; }); 27442 // see DO-25741 - rendering this HTML on used pages sometimes caused display issues, so rather than fixing their HTML, Toyota pushed this responsibility onto us 27443 const showTdgDisclaimersModal = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => props.model.ShowDgDisclaimersModal && props.model.VehicleType.toLowerCase() === "new"); 27444 const isRvIndustry = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => globalStore.getIndustry == vehicleCardDeck_industry/* Industry */.j.RecreationalVehicles); 27445 const props = __props; 27446 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => { 27447 document.dispatchEvent(new CustomEvent(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleCardLoaded)); 27448 }); 27449 const showAutoSpecs = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 27450 return props.model.ShowSpecs && !isRvIndustry.value; 27451 }); 27452 const showAutoFeatures = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 27453 return !isRvIndustry.value && props.model.ShowFeatures; 27454 }); 27455 const showRvFeatures = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 27456 var _a; 27457 return isRvIndustry.value && ((_a = props.model.RvInfoViewModel) === null || _a === void 0 ? void 0 : _a.ShowRvDetails); 27458 }); 27459 const showFeatures = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 27460 return showAutoFeatures.value || showRvFeatures.value; 27461 }); 27462 const industryClassSuffix = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => { 27463 return isRvIndustry.value ? "rv" : "auto"; 27464 }); 27465 function getVehicleDropdownModel() { 27466 const vdModel = new vehicleCardDeck_VehicleDropdownModel(); 27467 vdModel.VehicleVin = props.model.VehicleVin; 27468 vdModel.VehicleId = props.model.VehicleId; 27469 vdModel.VehicleMake = props.model.VehicleMake; 27470 vdModel.VehicleModel = props.model.VehicleModel; 27471 vdModel.VehicleName = props.model.VehicleName; 27472 vdModel.VehicleType = props.model.VehicleType; 27473 vdModel.DealerId = props.model.DealerId; 27474 vdModel.DealerLocatedAtId = props.model.DealerLocatedAtId; 27475 vdModel.VehicleDetailUrl = props.model.VehicleDetailUrl; 27476 return vdModel; 27477 } 27478 function getDgDisclaimersModalModel() { 27479 const dgModel = new vehicleCardDeck_DgDisclaimersModalModel(); 27480 dgModel.VehicleVin = props.model.VehicleVin; 27481 dgModel.DigitalGarageEfcDisclaimerValues = props.model.DigitalGarageEfcDisclaimerValues; 27482 dgModel.DigitalGarageRtiDisclaimerDescriptions = props.model.DigitalGarageRtiDisclaimerDescriptions; 27483 return dgModel; 27484 } 27485 function getRvFeaturesModel() { 27486 const rvSpecsModel = new vehicleCardDeck_RecreationalVehicleFeaturesModel(); 27487 rvSpecsModel.CornerType = props.model.CornerType; 27488 rvSpecsModel.DealerLocatedAtCity = props.model.DealerLocatedAtCity; 27489 rvSpecsModel.VehicleLocationName = props.model.VehicleLocationName; 27490 rvSpecsModel.DealerLocatedAtState = props.model.DealerLocatedAtState; 27491 rvSpecsModel.Features = props.model.Features; 27492 rvSpecsModel.Length = props.model.Length; 27493 rvSpecsModel.Mileage = props.model.Mileage; 27494 rvSpecsModel.RvInfoViewModel = props.model.RvInfoViewModel; 27495 rvSpecsModel.VehicleStatusModel = props.model.VehicleStatusModel; 27496 rvSpecsModel.ShowDealerLocatedAt = props.model.ShowDealerLocatedAt; 27497 rvSpecsModel.ShowLength = props.model.ShowLength; 27498 rvSpecsModel.ShowMileage = props.model.ShowMileage; 27499 rvSpecsModel.ShowRvDetails = props.model.RvInfoViewModel.ShowRvDetails; 27500 rvSpecsModel.ShowStatus = props.model.ShowStatus; 27501 rvSpecsModel.VehicleDetailUrl = props.model.VehicleDetailUrl; 27502 return rvSpecsModel; 27503 } 27504 function getVehicleSpecsModel() { 27505 const vehicleSpecsModel = new vehicleCardDeck_VehicleSpecsModel(); 27506 vehicleSpecsModel.CornerType = props.model.CornerType; 27507 vehicleSpecsModel.ExternalColorAccessibilityAttributes = props.model.ExternalColorAccessibilityAttributes; 27508 vehicleSpecsModel.ExteriorColorCode = props.model.ExteriorColorCode; 27509 vehicleSpecsModel.ExteriorColorIconTitleAttribute = props.model.ExteriorColorIconTitleAttribute; 27510 vehicleSpecsModel.ExteriorColorLabel = props.model.ExteriorColorLabel; 27511 vehicleSpecsModel.InteriorColorAccessibilityAttributes = props.model.InteriorColorAccessibilityAttributes; 27512 vehicleSpecsModel.InteriorColorCode = props.model.InteriorColorCode; 27513 vehicleSpecsModel.InteriorColorIconTitleAttribute = props.model.InteriorColorIconTitleAttribute; 27514 vehicleSpecsModel.InteriorColorLabel = props.model.InteriorColorLabel; 27515 vehicleSpecsModel.IsCosmosTdgEnabled = props.model.IsCosmosTdgEnabled; 27516 vehicleSpecsModel.Mileage = props.model.Mileage; 27517 vehicleSpecsModel.ShowColors = props.model.ShowColors; 27518 vehicleSpecsModel.ShowExteriorColorLabel = props.model.ShowExteriorColorLabel; 27519 vehicleSpecsModel.ShowExteriorColorSwatch = props.model.ShowExteriorColorSwatch;
27520 vehicleSpecsModel.ShowInteriorColorLabel = props.model.ShowInteriorColorLabel; 27521 vehicleSpecsModel.ShowInteriorColorSwatch = props.model.ShowInteriorColorSwatch; 27522 vehicleSpecsModel.ShowMileage = props.model.ShowMileage; 27523 vehicleSpecsModel.ShowStatus = props.model.ShowStatus; 27524 vehicleSpecsModel.UseTdgColorClasses = props.model.UseTdgColorClasses; 27525 vehicleSpecsModel.VehicleStatusModel = props.model.VehicleStatusModel; 27526 return vehicleSpecsModel; 27527 } 27528 function getVehicleTitleModel() { 27529 const titleModel = new vehicleCardDeck_VehicleTitleViewModel(); 27530 titleModel.CpoTierTitle = props.model.CpoTierTitle; 27531 titleModel.CpoTierClass = props.model.CpoTierClass; 27532 titleModel.IsCarBravoVehicle = props.model.IsCarBravoVehicle; 27533 titleModel.IsMiniOem = props.model.IsMiniOem; 27534 titleModel.ShowCpoTier = props.model.ShowCpoTier; 27535 titleModel.ShowIdentifiers = props.model.ShowIdentifiers; 27536 titleModel.ShowModelCode = props.model.ShowModelCode; 27537 titleModel.ShowStockNumber = props.model.ShowStockNumber; 27538 titleModel.ShowTdgHeart = props.model.ShowTdgHeart; 27539 titleModel.ShowVehicleCondition = props.model.ShowVehicleCondition; 27540 titleModel.ShowVehicleSavingHeart = props.model.ShowVehicleSavingHeart; 27541 titleModel.ShowVin = props.model.ShowVin; 27542 titleModel.VehicleCondition = props.model.VehicleCondition; 27543 titleModel.VehicleDetailUrl = props.model.VehicleDetailUrl; 27544 titleModel.VehicleMake = props.model.VehicleMake; 27545 titleModel.VehicleMakeAndModel = props.model.VehicleMakeAndModel; 27546 titleModel.VehicleModel = props.model.VehicleModel; 27547 titleModel.VehicleModelCode = props.model.VehicleModelCode; 27548 titleModel.VehicleName = props.model.VehicleName; 27549 titleModel.VehicleRuleAdjustedTrim = props.model.VehicleRuleAdjustedTrim; 27550 titleModel.VehicleRuleAdjustedYear = props.model.VehicleRuleAdjustedYear; 27551 titleModel.VehicleStockNumber = props.model.VehicleStockNumber; 27552 titleModel.VehicleTitleAppendText = props.model.VehicleTitleAppendText; 27553 titleModel.VehicleVin = props.model.VehicleVin; 27554 titleModel.RvInfoViewModel = props.model.RvInfoViewModel; 27555 titleModel.ShowSpecialTags = props.model.ShowSpecialTags; 27556 titleModel.ShouldDisplayPriceDropIcon = props.model.ShouldDisplayPriceDropIcon; 27557 titleModel.ShowSpecialIcon = props.model.ShowSpecialIcon; 27558 return titleModel; 27559 } 27560 function getVehicleLocationModel() { 27561 const locationModel = new vehicleCardDeck_VehicleLocationModel(); 27562 locationModel.enabled = props.model.ShowLocation; 27563 locationModel.location = props.model.VehicleLocationLabel; 27564 return locationModel; 27565 } 27566 return (_ctx, _cache) => { 27567 var _a; 27568 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27569 "data-vehicle-information": "", 27570 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-card vehicle-card--mod", [`vehicle-card--${_ctx.model.CornerType}`, 27571 { 'vehicle-card--carbravo': _ctx.model.IsCarBravoVehicle }, 27572 { 'vehicle-card--no-icons-location': !_ctx.model.ShowIconsAndLocation }, 27573 `vehicle_${_ctx.model.VehicleUxPosition}`, 27574 { 'vehicle-card--signalsforyou': _ctx.model.IsSignalsForYou }, 27575 { 'vehicle-card--signalsforyou-margin': _ctx.shouldPadCardHeader }]]), 27576 id: `vehicle_${_ctx.model.VehicleUxPosition}`, 27577 "data-altdealerid": _ctx.model.DealerLocatedAtId, 27578 "data-vin": _ctx.model.VehicleVin, 27579 "data-make": _ctx.model.VehicleMake, 27580 "data-model": _ctx.model.VehicleModel, 27581 "data-year": _ctx.model.VehicleYear, 27582 "data-trim": _ctx.model.VehicleTrim, 27583 "data-extcolor": _ctx.model.ExteriorColorLabel, 27584 "data-extcolorcode": _ctx.model.VehicleExteriorColorCode, 27585 "data-intcolor": _ctx.model.InteriorColorLabel, 27586 "data-intcolorcode": _ctx.model.VehicleInteriorColorCode, 27587 "data-trans": _ctx.model.VehicleTransmission,
27588 "data-price": _ctx.model.VehicleInternetPrice, 27589 "data-priceLib": _ctx.model.VehiclePriceLibrary, 27590 "data-vehicleid": _ctx.model.VehicleId, 27591 "data-engine": _ctx.model.VehicleEngine, 27592 "data-fueltype": _ctx.model.VehicleFuelType, 27593 "data-vehicletype": _ctx.model.VehicleType, 27594 "data-bodystyle": _ctx.model.VehicleBodyStyle, 27595 "data-modelcode": _ctx.model.VehicleModelCode, 27596 "data-msrp": _ctx.model.VehicleMsrp, 27597 "data-name": _ctx.model.VehicleNameHtmlEncoded, 27598 "data-cpo": _ctx.model.VehicleCpo, 27599 "data-stocknum": _ctx.model.VehicleStockNumber, 27600 "data-mpgcity": _ctx.model.VehicleMpgCity, 27601 "data-mpghwy": _ctx.model.VehicleMpgHwy, 27602 "data-intransit": _ctx.model.VehicleInTransit, 27603 "data-inproduction": _ctx.model.VehicleInProduction, 27604 "data-instock": _ctx.model.VehicleInStock, 27605 "data-drivetrain": _ctx.model.VehicleDriveTrain, 27606 "data-dotagging-element-type": "item_details", 27607 "data-dotagging-item-id": _ctx.model.VehicleVin, 27608 "data-dotagging-item-number": _ctx.model.VehicleStockNumber, 27609 "data-dotagging-item-price": _ctx.model.TaggingPrice, 27610 "data-dotagging-item-condition": _ctx.model.TaggingItemCondition, 27611 "data-dotagging-item-year": _ctx.model.VehicleYear, 27612 "data-dotagging-item-make": _ctx.model.VehicleMake, 27613 "data-dotagging-item-model": _ctx.model.VehicleModel, 27614 "data-dotagging-item-variant": _ctx.model.VehicleTrim, 27615 "data-dotagging-item-color": _ctx.model.ExteriorColorLabel, 27616 "data-dotagging-item-category": "automotive", 27617 "data-dotagging-item-fuel-type": _ctx.model.VehicleFuelType, 27618 "data-dotagging-item-type": _ctx.model.TaggingItemType, 27619 "data-dotagging-affiliation": _ctx.model.DealerName, 27620 "data-dotagging-item-inventory-date": _ctx.model.VehicleTaggingInventoryDate, 27621 "data-dotagging-item-recommended": _ctx.model.IsSignalsForYou, 27622 "data-dotagging-item-location": _ctx.model.VehicleLocation, 27623 "data-dotagging-item-generic-color": _ctx.model.VehicleGenericColor, 27624 "data-dotagging-item-drivetrain": _ctx.model.VehicleDriveTrain, 27625 "data-dotagging-item-body-type": _ctx.model.VehicleBodyType, 27626 "data-dotagging-item-color-interior": _ctx.model.InteriorColorLabel, 27627 "data-dotagging-item-engine": _ctx.model.VehicleEngine, 27628 "data-dotagging-item-fuel-efficiency-city": _ctx.model.VehicleMpgCity, 27629 "data-dotagging-item-fuel-efficiency-highway": _ctx.model.VehicleMpgHwy, 27630 "data-dotagging-item-odometer": _ctx.model.Mileage, 27631 "data-dotagging-item-transmission": _ctx.model.VehicleTransmission, 27632 "data-stellantis-ccode": _ctx.model.StellantisCode, 27633 "data-odometer": _ctx.model.VehicleMileage, 27634 "data-cdsid": _ctx.model.ChromeStyleId > 0 ? _ctx.model.ChromeStyleId : undefined 27635 }, [ 27636 (_ctx.model.IsSignalsForYou) 27637 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_2, _cache[0] || (_cache[0] = [ 27638 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { class: "vehicle-card__head-tab" }, [ 27639 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", null, [ 27640 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("svg", { 27641 width: "15", 27642 height: "14",
27643 viewBox: "0 0 15 14", 27644 fill: "none", 27645 xmlns: "http://www.w3.org/2000/svg" 27646 }, [ 27647 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("path", { 27648 d: "M2.5211 0L1.78357 0.704947L2.88095 1.75485L3.61743 1.0499L2.5211 0ZM12.1461 0L11.0487 1.0499L11.7857 1.75485L12.8826 0.705449L12.1461 0ZM7.33333 0.312864C7.16048 0.31487 6.98552 0.324396 6.80952 0.344953C6.80429 0.344953 6.79905 0.34395 6.79381 0.344953C4.66924 0.578097 2.97838 2.22114 2.68452 4.24573C2.44986 5.87523 3.15176 7.35281 4.32143 8.30444C4.79988 8.69529 5.1235 9.23163 5.2381 9.82364V12.8319H6.43238C6.61467 13.1313 6.94729 13.3333 7.33333 13.3333C7.71938 13.3333 8.052 13.1313 8.23429 12.8319H9.42857V10.8264H9.47781V10.2308C9.47781 9.49573 9.87695 8.75468 10.5254 8.17859C11.3929 7.3473 12.0476 6.16653 12.0476 4.81029C12.0476 2.33345 9.91781 0.289801 7.33333 0.312864ZM7.33333 1.31563C9.35786 1.28856 11 2.87494 11 4.81029C11 5.86019 10.4919 6.78474 9.78843 7.4576L9.80519 7.47365C9.1061 8.0907 8.65405 8.92205 8.5271 9.82414H6.23595C6.12071 8.96476 5.73571 8.13297 5.00814 7.53632C4.08257 6.78424 3.531 5.65111 3.71538 4.37158C3.94429 2.79221 5.28314 1.5222 6.92372 1.34822C7.05916 1.33015 7.19557 1.31944 7.33229 1.31614L7.33333 1.31563ZM0 4.81029V5.81306H1.57143V4.81029H0ZM13.0952 4.81029V5.81306H14.6667V4.81029H13.0952ZM2.88095 8.8685L1.7841 9.9179L2.5211 10.6233L3.6169 9.57345L2.88095 8.8685ZM11.7857 8.8685L11.0492 9.57345L12.1456 10.6233L12.8826 9.9179L11.7857 8.8685ZM6.28571 10.8269H8.38095V11.8297H6.28571V10.8269Z", 27649 fill: "#F7F7F7" 27650 }) 27651 ]) 27652 ]), 27653 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", null, "FOR YOU") 27654 ], -1 /* HOISTED */) 27655 ]))) 27656 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27657 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27658 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-card__body", { 'vehicle-card__body--signalsforyou': _ctx.model.IsSignalsForYou }]) 27659 }, [ 27660 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_3, [ 27661 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleImage, { 27662 model: _ctx.model.VehicleImageModel 27663 }, null, 8 /* PROPS */, ["model"]) 27664 ]), 27665 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_4, [ 27666 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { 27667 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-overview", { 'oem-toyota__tdg--srp-card-overview': _ctx.model.ShowTdgHeart, 'save-heart__srp-card-overview': _ctx.model.ShowVehicleSavingHeart }]) 27668 }, [ 27669 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleTitle, { 27670 model: getVehicleTitleModel(), 27671 vehicleDropdownModel: getVehicleDropdownModel(), 27672 vehicleLocationModel: getVehicleLocationModel(), 27673 tdgHeartModel: _ctx.model.TdgHeartModel 27674 }, null, 8 /* PROPS */, ["model", "vehicleDropdownModel", "vehicleLocationModel", "tdgHeartModel"]), 27675 (showAutoSpecs.value) 27676 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27677 key: 0, 27678 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-overview__specs", { 'oem-toyota__tdg--srp-card-specs': _ctx.model.UseTdgColorClasses }]) 27679 }, [ 27680 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleSpecs, { 27681 model: getVehicleSpecsModel() 27682 }, null, 8 /* PROPS */, ["model"]) 27683 ], 2 /* CLASS */)) 27684 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27685 ], 2 /* CLASS */) 27686 ]), 27687 (showFeatures.value) 27688 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 27689 key: 0, 27690 class: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* normalizeClass */.C4)(["vehicle-card__features", `vehicle-card__features--${industryClassSuffix.value}`]) 27691 }, [ 27692 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_features, { 27693 "show-rv-details": (_a = _ctx.model.RvInfoViewModel) === null || _a === void 0 ? void 0 : _a.ShowRvDetails, 27694 "vehicle-features-model": _ctx.model.VehicleFeaturesModel, 27695 "oem-vehicle-features-model": _ctx.model.OemVehicleFeaturesModel, 27696 "rv-features-model": getRvFeaturesModel() 27697 }, null, 8 /* PROPS */, ["show-rv-details", "vehicle-features-model", "oem-vehicle-features-model", "rv-features-model"]) 27698 ], 2 /* CLASS */)) 27699 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27700 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_5, [ 27701 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehiclePricingPanel, { 27702 model: _ctx.model.WasabiVehiclePricingPanelViewModel 27703 }, null, 8 /* PROPS */, ["model"]) 27704 ]), 27705 (_ctx.model.ShowIconsAndLocation) 27706 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_6, [ 27707 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_7, [ 27708 (_ctx.model.ShowIcons) 27709 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_8, [ 27710 (hasEligibleBenefits.value || _ctx.model.HasModelEBrochure) 27711 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleEligibleBenefits, { 27712 key: 0, 27713 model: _ctx.model.EligibleBenefitsViewModel, 27714 vehicleModel: _ctx.model.VehicleModel, 27715 hasBrochure: _ctx.model.HasModelEBrochure 27716 }, null, 8 /* PROPS */, ["model", "vehicleModel", "hasBrochure"])) 27717 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27718 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_manufacturerIcons, {
27719 model: _ctx.model.ManufacturerHighlightsIconsViewModel 27720 }, null, 8 /* PROPS */, ["model"]) 27721 ])) 27722 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27723 (_ctx.model.ShowLocationInfo) 27724 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_9, [ 27725 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_10, [ 27726 (_ctx.model.ShowLocationDistance) 27727 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 27728 key: 0, 27729 innerHTML: _ctx.model.VehicleLocationDistanceLabel, 27730 class: "location-info__item location-info__item--miles-away" 27731 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_11)) 27732 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27733 (_ctx.model.ShowDaysOnLot) 27734 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("span", { 27735 key: 1, 27736 innerHTML: _ctx.model.DaysOnLotLabel, 27737 class: "location-info__item location-info__item--days-on-lot" 27738 }, null, 8 /* PROPS */, vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_12)) 27739 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27740 ]) 27741 ])) 27742 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27743 ]) 27744 ])) 27745 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27746 (!_ctx.model.ShowIconsAndLocation && _ctx.model.HasModelEBrochure) 27747 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_13, [ 27748 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_14, [ 27749 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_15, [ 27750 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_modelEBrochure, { 27751 vehicleModel: _ctx.model.VehicleModel, 27752 vin: _ctx.model.VehicleVin 27753 }, null, 8 /* PROPS */, ["vehicleModel", "vin"]) 27754 ]) 27755 ]) 27756 ])) 27757 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 27758 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_16, [ 27759 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleCompareButton, {
27760 model: _ctx.model.VehicleCompareButtonModel 27761 }, null, 8 /* PROPS */, ["model"]) 27762 ]) 27763 ], 2 /* CLASS */), 27764 (showTdgDisclaimersModal.value) 27765 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_dgDisclaimersModal, { 27766 key: 1, 27767 model: getDgDisclaimersModalModel() 27768 }, null, 8 /* PROPS */, ["model"])) 27769 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 27770 ], 10 /* CLASS, PROPS */, vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts_hoisted_1)); 27771 }; 27772 } 27773})); 27774 27775;// ./src/components/spaCosmos/vehicleCards/vehicleCard.vue?vue&type=script&setup=true&lang=ts 27776 27777// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/vehicleCards/vehicleCard.vue?vue&type=style&index=0&id=50b80fa6&scoped=true&lang=scss 27778var vehicleCardDeck_vehicleCardvue_type_style_index_0_id_50b80fa6_scoped_true_lang_scss = __webpack_require__(4506); 27779;// ./src/components/spaCosmos/vehicleCards/vehicleCard.vue?vue&type=style&index=0&id=50b80fa6&scoped=true&lang=scss 27780 27781;// ./src/components/spaCosmos/vehicleCards/vehicleCard.vue 27782 27783 27784 27785; 27786 27787 27788const vehicleCardDeck_vehicleCard_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_vehicleCardvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-50b80fa6"]]) 27789 27790/* harmony default export */ const vehicleCardDeck_vehicleCard = (vehicleCardDeck_vehicleCard_exports_); 27791// EXTERNAL MODULE: ./src/components/vehicleDisclaimerModal/vehiclePricestakDisclaimerModal.ts 27792var vehicleCardDeck_vehiclePricestakDisclaimerModal = __webpack_require__(6579); 27793;// ./src/components/vehicleCardDeck/vehicleCardDeckModel.ts 27794 27795class vehicleCardDeck_VehicleCardDeckModel { 27796 constructor() { 27797 this.AppendScriptUrls = []; 27798 this.CustomContentHtml = []; 27799 this.Industry = vehicleCardDeck_industry/* Industry */.j.Automotive; 27800 this.ModalsHtml = []; 27801 this.PrependScripts = []; 27802 this.StylesheetUrls = []; 27803 this.VehicleCards = []; 27804 } 27805} 27806 27807;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/vehicleCardDeck/vehicleCards.vue?vue&type=script&setup=true&lang=ts 27808var vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 27809 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 27810 return new (P || (P = Promise))(function (resolve, reject) { 27811 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 27812 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 27813 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 27814 step((generator = generator.apply(thisArg, _arguments || [])).next()); 27815 }); 27816}; 27817 27818 27819const vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_hoisted_1 = { class: "vehicle-cards grid-view" }; 27820 27821 27822 27823 27824 27825 27826 27827 27828 27829 27830/* harmony default export */ const vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 27831 __name: 'vehicleCards', 27832 props: { 27833 vins: {}, 27834 dealerId: {} 27835 }, 27836 setup(__props) { 27837 const props = __props; 27838 const vehicleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.VehicleService); 27839 const priceStakSynchronizer = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.PriceStakSynchronizer); 27840 const vehicleCardWasabi = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.VehicleCardWasabi); 27841 const shareVehicleModal = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ShareVehicleModel); 27842 const pricestakDisclaimerModal = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.VehiclePricestakDisclaimerModal); 27843 const globalStore = (0,vehicleCardDeck_vehicleCardDeck_globalStore/* useGlobalStore */.o)(); 27844 const vehicleStore = globalStore.vehicleStore; 27845 let cardDeckData = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(new vehicleCardDeck_VehicleCardDeckModel()); 27846 let cards = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)([]); 27847 const isLoadingVehicles = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => vehicleStore.isLoadingVehicles); 27848 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_awaiter(this, void 0, void 0, function* () { 27849 yield fetchVehicleCardDeckData(); 27850 // need to keep this exact order here to make sure all DOM is present when it needs to be 27851 addModals(); 27852 addCards(); 27853 addStylesAndScripts(); 27854 addCustomContent(); 27855 yield initializeServices(); 27856 })); 27857 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onUpdated */.$u)(() => { 27858 priceStakSynchronizer.initialize(vehicleCardDeck_srpScrollType/* SrpScrollType */.v.Pagination); 27859 }); 27860 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* watch */.wB)(() => props.vins, (newVins, oldVins) => vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_awaiter(this, void 0, void 0, function* () { 27861 yield fetchVehicleCardDeckData(); 27862 addCards(); //Updates the card list with the new set of vehicle cards after update. 27863 })); 27864 function fetchVehicleCardDeckData() { 27865 var _a; 27866 return vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_awaiter(this, void 0, void 0, function* () { 27867 vehicleStore.setLoadingVehicles(true); 27868 const response = yield vehicleService.getVehicleCardDeck(props.dealerId, props.vins); 27869 const invalidVins = checkVinValidity(response.VehicleCards, props.vins.split(',').map(vin => vin.trim())); 27870 cardDeckData.value = Object.assign(cardDeckData.value, response); 27871 globalStore.setIndustry(cardDeckData.value.Industry); 27872 vehicleStore.setLoadingVehicles(false); 27873 //Passes a list of invalid vins that dont have vehicles in the response 27874 //Also passes a boolean indicating if there are any vehicles in the response 27875 dispatchVehicleDeckLoadedEvent(invalidVins, ((_a = response === null || response === void 0 ? void 0 : response.VehicleCards) === null || _a === void 0 ? void 0 : _a.length) > 0); 27876 }); 27877 } 27878 function initializeServices() { 27879 return vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_awaiter(this, void 0, void 0, function* () { 27880 yield (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* nextTick */.dY)(); 27881 priceStakSynchronizer.initialize(vehicleCardDeck_srpScrollType/* SrpScrollType */.v.Pagination); 27882 vehicleCardWasabi.initialize(); 27883 shareVehicleModal.initialize(); 27884 pricestakDisclaimerModal.initialize(); 27885 }); 27886 } 27887 function addModals() { 27888 cardDeckData.value.ModalsHtml.forEach((modalHtml) => { 27889 const tempWrapper = document.createElement('div'); 27890 tempWrapper.innerHTML = modalHtml; 27891 const childNodes = Array.from(tempWrapper.childNodes);
27892 childNodes.forEach((node) => { 27893 // If an element node, append it to the body if it hasn't been added already 27894 if (node instanceof HTMLElement && !document.getElementById(node.id)) { 27895 document.body.append(node); 27896 } 27897 }); 27898 }); 27899 // Constructor intentionally triggers setup side effects (event listeners, DOM prep). NOSONAR 27900 new vehicleCardDeck_MoreInfoModal(); // NOSONAR 27901 } 27902 function addCustomContent() { 27903 cardDeckData.value.CustomContentHtml.forEach((html) => { 27904 const tempWrapper = document.createElement('div'); 27905 tempWrapper.innerHTML = html; 27906 const childNodes = Array.from(tempWrapper.childNodes); 27907 childNodes.forEach((node) => { 27908 // If an element node, append it to the body if it hasn't been added already 27909 if (node instanceof HTMLElement && !document.getElementById(node.id)) { 27910 document.body.append(node); 27911 } 27912 }); 27913 }); 27914 } 27915 function addCards() { 27916 cards.value = cardDeckData.value.VehicleCards; 27917 } 27918 function addStylesAndScripts() {
27919 cardDeckData.value.StylesheetUrls.forEach((styleUrl) => { 27920 if (!document.querySelector(`link[href="${styleUrl}"]`)) { 27921 const linkElement = document.createElement('link'); 27922 linkElement.href = styleUrl; 27923 linkElement.rel = "stylesheet"; 27924 document.head.appendChild(linkElement); 27925 } 27926 }); 27927 cardDeckData.value.PrependScripts.forEach((script) => { 27928 const tempWrapper = document.createElement('div'); 27929 tempWrapper.innerHTML = script; 27930 const childNodes = Array.from(tempWrapper.childNodes); 27931 childNodes.forEach((node) => { 27932 document.body.prepend(node); 27933 }); 27934 }); 27935 cardDeckData.value.AppendScriptUrls.forEach((scriptUrl) => { 27936 if (!document.querySelector(`script[src="${scriptUrl}"]`)) { 27937 const scriptElement = document.createElement('script'); 27938 scriptElement.src = scriptUrl; 27939 document.body.appendChild(scriptElement); 27940 } 27941 }); 27942 new vehicleCardDeck_vehiclePricestakDisclaimerModal/* VehiclePricestakDisclaimerModal */.F().initialize(); 27943 } 27944 function checkVinValidity(vehicleCards, vins) { 27945 const vehicleVins = vehicleCards.map(card => card.VehicleVin); 27946 const missingVins = vins.filter(vin => vehicleVins.indexOf(vin) === -1); 27947 return missingVins; 27948 } 27949 function dispatchVehicleDeckLoadedEvent(invalidVins, hasValidVin) { 27950 const eventData = { 27951 invalidVins, 27952 hasValidVin, 27953 }; 27954 const event = new CustomEvent(vehicleCardDeck_customEvents/* CosmosSrpCustomEvents */.A.VehicleDeckLoaded); 27955 event.data = eventData; 27956 window.dispatchEvent(event); 27957 } 27958 return (_ctx, _cache) => { 27959 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts_hoisted_1, [ 27960 (!isLoadingVehicles.value) 27961 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 0 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(cards), (card) => { 27962 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleCard, { 27963 model: card, 27964 "should-pad-card-header": false, 27965 key: card.VehicleVin 27966 }, null, 8 /* PROPS */, ["model"])); 27967 }), 128 /* KEYED_FRAGMENT */)) 27968 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(true), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, { key: 1 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* renderList */.pI)(props.vins.split(',').map(vin => vin.trim()), (n, index) => { 27969 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_vehicleCardSkeleton, { 27970 forceGridLayout: true, 27971 key: index 27972 })); 27973 }), 128 /* KEYED_FRAGMENT */)) 27974 ])); 27975 }; 27976 } 27977})); 27978 27979;// ./src/components/vehicleCardDeck/vehicleCards.vue?vue&type=script&setup=true&lang=ts 27980 27981// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
27981ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/vehicleCardDeck/vehicleCards.vue?vue&type=style&index=0&id=40341b2e&lang=scss 27982var vehicleCardDeck_vehicleCardsvue_type_style_index_0_id_40341b2e_lang_scss = __webpack_require__(8186); 27983;// ./src/components/vehicleCardDeck/vehicleCards.vue?vue&type=style&index=0&id=40341b2e&lang=scss 27984 27985;// ./src/components/vehicleCardDeck/vehicleCards.vue 27986 27987 27988 27989; 27990 27991const vehicleCardDeck_vehicleCards_exports_ = vehicleCardDeck_vehicleCardsvue_type_script_setup_true_lang_ts; 27992 27993/* harmony default export */ const vehicleCardDeck_vehicleCards = (vehicleCardDeck_vehicleCards_exports_); 27994// EXTERNAL MODULE: ./src/core/enums/uiLocationVersion.ts 27995var vehicleCardDeck_uiLocationVersion = __webpack_require__(3277); 27996;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/modals/geoFilterModal.vue?vue&type=script&setup=true&lang=ts 27997 27998 27999const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_1 = { 28000 class: "modal fade page-modal modal-background", 28001 id: "geoFilterModal", 28002 tabindex: "-1", 28003 "aria-labelledby": "geoFilterTitle" 28004}; 28005const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_2 = { class: "modal-dialog" }; 28006const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_3 = { class: "modal-content" }; 28007const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "modal-body" }; 28008const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "pad-bottom-1x" }; 28009const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_6 = { id: "geoFilterTitle" }; 28010const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_7 = { 28011 id: "zipForm", 28012 class: "row margin-top-2x" 28013}; 28014const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_8 = { class: "form-group col-xs-7 col-sm-8 margin-bottom-x pad-right_5x" }; 28015const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_9 = ["placeholder"]; 28016const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_10 = { class: "col-xs-5 col-sm-4 pad-left-x" }; 28017const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_11 = ["onclick"]; 28018const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_12 = ["onclick"]; 28019 28020 28021/* harmony default export */ const vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 28022 __name: 'geoFilterModal', 28023 props: { 28024 pageVehicleType: {} 28025 }, 28026 setup(__props) { 28027 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 28028 const searchVehiclesNearbyLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SEARCH_VEHICLES_NEARBY")); 28029 const searchNewVehiclesNearbyLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SEARCH_NEW_VEHICLES_NEARBY")); 28030 const searchUsedVehiclesNearbyLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SEARCH_USED_VEHICLES_NEARBY")); 28031 const locationInputLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("LOCATION_INPUT")); 28032 const zipCodeLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("ZIP_CODE")); 28033 const searchLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SEARCH")); 28034 const shareMyLocationLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("SHARE_MY_LOCATION")); 28035 const locationSortModalService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.LocationSortModalService); 28036 const props = __props; 28037 function getGeoFilterModalTitle() { 28038 switch (props.pageVehicleType.toLowerCase()) { 28039 case 'new': 28040 return searchNewVehiclesNearbyLabel.value; 28041 case 'used': 28042 return searchUsedVehiclesNearbyLabel.value; 28043 default: 28044 return searchVehiclesNearbyLabel.value; 28045 } 28046 } 28047 return (_ctx, _cache) => { 28048 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("dialog", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_1, [ 28049 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_2, [ 28050 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_3, [ 28051 _cache[1] || (_cache[1] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { class: "modal-header" }, [ 28052 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 28053 type: "button", 28054 class: "close stat-button-close", 28055 "data-loc": "search inventory", 28056 "data-dismiss": "modal" 28057 }, "Ã") 28058 ], -1 /* HOISTED */)), 28059 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_4, [ 28060 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_5, [ 28061 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h2", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_6, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(getGeoFilterModalTitle()), 1 /* TEXT */), 28062 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", null, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(locationInputLabel.value), 1 /* TEXT */), 28063 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("form", null, [ 28064 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_7, [ 28065 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_8, [ 28066 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("input", { 28067 type: "text", 28068 "data-dlron-type": "zipcode", 28069 class: "form-control stat-input-field", 28070 "data-loc": "search inventory", 28071 id: "zipCodeModalTxt", 28072 name: "zipcode", 28073 placeholder: zipCodeLabel.value, 28074 autocomplete: "postal-code", 28075 "aria-labelledby": "zipSearchModalBtn" 28076 }, null, 8 /* PROPS */, vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_9) 28077 ]), 28078 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_10, [ 28079 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 28080 id: "zipSearchModalBtn", 28081 class: "btn btn-default btn-block btn-main stat-search-submit", 28082 "data-loc": "search inventory", 28083 value: "", 28084 onclick: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(locationSortModalService).zipcodeSearchDynamic.bind((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(locationSortModalService)) 28085 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(searchLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_11) 28086 ]) 28087 ]) 28088 ]), 28089 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h3", { class: "text-muted text-center margin-vert-1x" }, "- or -", -1 /* HOISTED */)), 28090 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 28091 id: "getLocation", 28092 class: "btn btn-cta btn-block stat-button-link", 28093 "data-loc": "search inventory", 28094 value: "", 28095 onclick: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(locationSortModalService).askLocation.bind((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(locationSortModalService)) 28096 }, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(shareMyLocationLabel.value), 9 /* TEXT, PROPS */, vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts_hoisted_12) 28097 ]) 28098 ]) 28099 ]) 28100 ]) 28101 ])); 28102 }; 28103 } 28104})); 28105 28106;// ./src/components/spaCosmos/modals/geoFilterModal.vue?vue&type=script&setup=true&lang=ts 28107 28108// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
28108ader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/modals/geoFilterModal.vue?vue&type=style&index=0&id=29399bf6&lang=scss 28109var vehicleCardDeck_geoFilterModalvue_type_style_index_0_id_29399bf6_lang_scss = __webpack_require__(3960); 28110;// ./src/components/spaCosmos/modals/geoFilterModal.vue?vue&type=style&index=0&id=29399bf6&lang=scss 28111 28112;// ./src/components/spaCosmos/modals/geoFilterModal.vue 28113 28114 28115 28116; 28117 28118const vehicleCardDeck_geoFilterModal_exports_ = vehicleCardDeck_geoFilterModalvue_type_script_setup_true_lang_ts; 28119 28120/* harmony default export */ const vehicleCardDeck_geoFilterModal = (vehicleCardDeck_geoFilterModal_exports_); 28121;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/modals/modalDialogs.vue?vue&type=script&setup=true&lang=ts 28122 28123 28124const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_1 = { 28125 key: 0, 28126 class: "modal fade page-modal", 28127 id: "videoModal", 28128 tabindex: "-1", 28129 role: "dialog", 28130 "aria-label": "View Video", 28131 "aria-hidden": "true" 28132}; 28133const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_2 = { 28134 key: 1, 28135 class: "modal fade page-modal", 28136 id: "optionsModal", 28137 tabindex: "-1", 28138 role: "dialog", 28139 "aria-label": "View Options", 28140 "aria-hidden": "true" 28141}; 28142const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_3 = { 28143 key: 2, 28144 class: "modal fade page-modal", 28145 id: "commentsModal", 28146 tabindex: "-1", 28147 role: "dialog", 28148 "aria-label": "View Comments", 28149 "aria-hidden": "true" 28150}; 28151const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_4 = { class: "modal-dialog" }; 28152const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_5 = { class: "modal-content" }; 28153const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_6 = { class: "model-content__heading" }; 28154const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_7 = { 28155 key: 3, 28156 class: "modal fade", 28157 id: "rebateModal", 28158 tabindex: "-1", 28159 role: "dialog", 28160 "aria-label": "View More Rebate Information", 28161 "aria-hidden": "true" 28162}; 28163const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_8 = { class: "modal-dialog" }; 28164const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_9 = { class: "modal-content" }; 28165const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_10 = { class: "modal-footer" }; 28166const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_11 = { 28167 type: "button", 28168 class: "btn btn-main stat-button-link", 28169 "data-dismiss": "modal", 28170 "data-loc": "available inventory" 28171}; 28172 28173 28174 28175 28176/* harmony default export */ const vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 28177 __name: 'modalDialogs', 28178 props: { 28179 uiLocation: {}, 28180 pageVehicleType: {} 28181 }, 28182 setup(__props) { 28183 const translationService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService); 28184 const cancelLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("CANCEL")); 28185 const dealerCommentsLabel = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => translationService.getLabel("DEALER_COMMENTS")); 28186 const props = __props; 28187 return (_ctx, _cache) => { 28188 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)(vehicleCardDeck_vue_runtime_esm_browser_prod/* Fragment */.FK, null, [ 28189 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Video Modal "), 28190 (_ctx.uiLocation == (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).SrpWasabi) 28191 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_1, [ 28192 _cache[0] || (_cache[0] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createStaticVNode */.Fv)("<div class=\"modal-dialog\" style=\"width:700px;\" data-v-2f35092b><div class=\"modal-content\" data-v-2f35092b><div class=\"modal-header\" data-v-2f35092b><button type=\"button\" class=\"close stat-button-close\" data-dismiss=\"modal\" data-loc=\"available inventory\" data-v-2f35092b><i class=\"fa fa-times custom-dealer-styling__close--black\" aria-hidden=\"true\" data-v-2f35092b></i></button></div><div class=\"modal-body\" data-v-2f35092b></div></div><!-- /.modal-content --></div>", 1)), 28193 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" /.modal-dialog ") 28194 ])) 28195 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28196 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" End Video Modal "), 28197 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Options Modal "), 28198 (_ctx.uiLocation == (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).SrpWasabi) 28199 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_2, [ 28200 _cache[1] || (_cache[1] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { class: "modal-dialog" }, [ 28201 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { class: "modal-content" }, [ 28202 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Content retrieved from remote source indicated in targeting element ") 28203 ]), 28204 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" /.modal-content ") 28205 ], -1 /* HOISTED */)), 28206 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" /.modal-dialog ") 28207 ])) 28208 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28209 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" End Options Modal "), 28210 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Comments Modal "), 28211 (_ctx.uiLocation == (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).SrpWasabi || _ctx.uiLocation == (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).VehicleCardDeck) 28212 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_3, [ 28213 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_4, [ 28214 _cache[3] || (_cache[3] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { class: "modal-close" }, [ 28215 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", { 28216 type: "button", 28217 role: "button", 28218 class: "close stat-button-close", 28219 "data-dismiss": "modal", 28220 "data-loc": "available inventory", 28221 "aria-label": "Close" 28222 }, [ 28223 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("i", { 28224 class: "fa fa-times custom-dealer-styling__close--black", 28225 "aria-hidden": "true" 28226 }) 28227 ]) 28228 ], -1 /* HOISTED */)), 28229 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_5, [ 28230 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("h2", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_6, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(dealerCommentsLabel.value), 1 /* TEXT */), 28231 _cache[2] || (_cache[2] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", { class: "model-content__text" }, [ 28232 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Content retrieved from remote source indicated in targeting element ") 28233 ], -1 /* HOISTED */)) 28234 ]), 28235 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" /.modal-content ") 28236 ]), 28237 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" /.modal-dialog ") 28238 ])) 28239 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28240 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" End Comments Modal "), 28241 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Rebate Modal "), 28242 (_ctx.uiLocation == (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).SrpWasabi) 28243 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_7, [ 28244 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Content retrieved from remote source indicated in targeting element "), 28245 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_8, [ 28246 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_9, [ 28247 _cache[4] || (_cache[4] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createStaticVNode */.Fv)("<div class=\"modal-header\" data-v-2f35092b><button type=\"button\" class=\"close stat-button-close\" data-dismiss=\"modal\" data-loc=\"available inventory\" data-v-2f35092b><i class=\"fa fa-times custom-dealer-styling__close--black\" aria-hidden=\"true\" data-v-2f35092b></i></button></div><div class=\"modal-body\" data-v-2f35092b><iframe width=\"100%\" height=\"100%\" id=\"rebateIframe\" data-v-2f35092b></iframe></div>", 2)), 28248 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("div", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_10, [ 28249 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("button", vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts_hoisted_11, (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* toDisplayString */.v_)(cancelLabel.value) + "> ", 1 /* TEXT */) 28250 ]) 28251 ]) 28252 ]) 28253 ])) 28254 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28255 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" End Rebate Modal "), 28256 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)(" Geo Filter Modal "), 28257 (_ctx.uiLocation == (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).SrpWasabi) 28258 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createBlock */.Wv)(vehicleCardDeck_geoFilterModal, { 28259 key: 4, 28260 pageVehicleType: _ctx.pageVehicleType 28261 }, null, 8 /* PROPS */, ["pageVehicleType"])) 28262 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28263 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("End Geo Filter Modal ") 28264 ], 64 /* STABLE_FRAGMENT */)); 28265 }; 28266 } 28267})); 28268 28269;// ./src/components/spaCosmos/modals/modalDialogs.vue?vue&type=script&setup=true&lang=ts 28270 28271// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLo
28271ader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/spaCosmos/modals/modalDialogs.vue?vue&type=style&index=0&id=2f35092b&scoped=true&lang=css 28272var vehicleCardDeck_modalDialogsvue_type_style_index_0_id_2f35092b_scoped_true_lang_css = __webpack_require__(6833); 28273;// ./src/components/spaCosmos/modals/modalDialogs.vue?vue&type=style&index=0&id=2f35092b&scoped=true&lang=css 28274 28275;// ./src/components/spaCosmos/modals/modalDialogs.vue 28276 28277 28278 28279; 28280 28281 28282const vehicleCardDeck_modalDialogs_exports_ = /*#__PURE__*/(0,vehicleCardDeck_exportHelper/* default */.A)(vehicleCardDeck_modalDialogsvue_type_script_setup_true_lang_ts, [['__scopeId',"data-v-2f35092b"]]) 28283 28284/* harmony default export */ const vehicleCardDeck_modalDialogs = (vehicleCardDeck_modalDialogs_exports_); 28285;// ./node_modules/ts-loader/index.js??clonedRuleSet-1!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/infrastructure/vue/vehicleCardDeck/AppVehicleCardDeck.vue?vue&type=script&setup=true&lang=ts 28286var vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 28287 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 28288 return new (P || (P = Promise))(function (resolve, reject) { 28289 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 28290 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 28291 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 28292 step((generator = generator.apply(thisArg, _arguments || [])).next()); 28293 }); 28294}; 28295 28296 28297const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_1 = { 28298 key: 0, 28299 class: "vehicle-card-deck__cards" 28300}; 28301const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_2 = { 28302 key: 1, 28303 class: "vehicle-card-deck__no-vehicles" 28304}; 28305const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_3 = { 28306 key: 2, 28307 class: "invalid-props" 28308}; 28309const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_4 = { 28310 key: 0, 28311 class: "invalid-props__invalid-vins" 28312}; 28313const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_5 = { 28314 key: 1, 28315 class: "invalid-props__no-dealerid" 28316}; 28317const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_6 = { 28318 key: 2, 28319 class: "invalid-props__invalid-dealerid" 28320}; 28321 28322 28323 28324 28325 28326 28327 28328/* harmony default export */ const vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts = (/*@__PURE__*/(0,vehicleCardDeck_vue_runtime_esm_browser_prod/* defineComponent */.pM)({ 28329 __name: 'AppVehicleCardDeck', 28330 props: { 28331 vins: {}, 28332 dealerId: {} 28333 }, 28334 setup(__props) { 28335 const toggleService = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* inject */.WQ)(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService); 28336 const props = __props; 28337 // Store 28338 const pinia = (0,vehicleCardDeck_dist_pinia/* createPinia */.Ey)(); 28339 (0,vehicleCardDeck_dist_pinia/* setActivePinia */.oO)(pinia); 28340 const globalStore = (0,vehicleCardDeck_vehicleCardDeck_globalStore/* useGlobalStore */.o)(); 28341 const vehicleCardDeck = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(null); 28342 // Prop validation refs 28343 const localVins = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(""); 28344 const hasVins = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 28345 const vinsHasValidCharacters = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 28346 const hasDealerId = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 28347 const dealerIdIsNumber = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* ref */.KR)(false); 28348 // Prop validation computed properties 28349 const isValidVins = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => hasVins.value && vinsHasValidCharacters.value); 28350 const isValidDealerId = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => hasDealerId.value && dealerIdIsNumber.value); 28351 const arePropsValid = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* computed */.EW)(() => isValidVins.value && isValidDealerId.value); 28352 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* onMounted */.sV)(() => vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_awaiter(this, void 0, void 0, function* () { 28353 initialize(); 28354 if (!arePropsValid.value) { 28355 return; 28356 } 28357 ; 28358 })); 28359 function initialize() { 28360 document.addEventListener("vins-update", (event) => { 28361 localVins.value = event.detail.vins; 28362 validateProps(); 28363 }); 28364 //props are immutable, so work with a local ref for Vins which can be updated 28365 localVins.value = props.vins; 28366 validateProps(); 28367 setupResizeObserver(); 28368 } 28369 /** 28370 * Validates the props passed to the component through custom code. Doing this outside of standard prop validation to allow for visible warnings in production mode. 28371 */ 28372 function validateProps() { 28373 validateVins(); 28374 validateDealerId(); 28375 } 28376 function validateVins() { 28377 var _a, _b; 28378 const vinString = (_b = (_a = localVins.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''; 28379 hasVins.value = vinString.length > 0 && vinString.split(',').length > 0; 28380 vinsHasValidCharacters.value = /^[a-zA-Z0-9,]+$/.test(vinString); 28381 if (!vinsHasValidCharacters.value) { 28382 logPropValidationWarning('vins', 'The vins attribute must only contain numbers, letters, and commas.'); 28383 } 28384 } 28385 function validateDealerId() { 28386 var _a, _b; 28387 const dealerId = (_b = (_a = props.dealerId) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''; 28388 hasDealerId.value = dealerId.length > 0; 28389 dealerIdIsNumber.value = /^\d+$/.test(dealerId); 28390 if (!hasDealerId.value) { 28391 logPropValidationWarning('dealerId', 'The dealerId attribute must contain at least one character.'); 28392 } 28393 if (!dealerIdIsNumber.value) { 28394 logPropValidationWarning('dealerId', 'The dealerId attribute must only contain numbers.'); 28395 } 28396 } 28397 function logPropValidationWarning(attr, errorMessage) { 28398 console.warn(`Warning: Invalid "${attr}" attribute in <vehicle-card-deck> component. ${errorMessage}`); 28399 } 28400 function setupResizeObserver() { 28401 const resizeObserver = new ResizeObserver(() => { 28402 if (window.innerWidth <= 768) { 28403 globalStore.isMobile = true; 28404 } 28405 else { 28406 globalStore.isMobile = false;
28407 } 28408 }); 28409 resizeObserver.observe(document.body); 28410 } 28411 return (_ctx, _cache) => { 28412 return ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", { 28413 ref_key: "vehicleCardDeck", 28414 ref: vehicleCardDeck, 28415 class: "vehicle-card-deck" 28416 }, [ 28417 (arePropsValid.value) 28418 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_1, [ 28419 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_vehicleCards, { 28420 vins: localVins.value, 28421 "dealer-id": _ctx.dealerId 28422 }, null, 8 /* PROPS */, ["vins", "dealer-id"]) 28423 ])) 28424 : (!hasVins.value) 28425 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_2, " No vehicles to display ")) 28426 : ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("div", vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_3, [ 28427 _cache[3] || (_cache[3] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", { class: "invalid-props__warning" }, [ 28428 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)("WARNING: "), 28429 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("code", null, "<vehicle-card-deck>"), 28430 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)(" element props are not valid. Please check the following in your custom code:") 28431 ], -1 /* HOISTED */)), 28432 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("ul", null, [ 28433 (!vinsHasValidCharacters.value) 28434 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("li", vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_4, _cache[0] || (_cache[0] = [ 28435 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)("The "), 28436 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("code", null, "vins", -1 /* HOISTED */), 28437 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)(" attribute must be a comma-separated list of VINs, and must only contain numbers, letters, and commas.") 28438 ]))) 28439 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28440 (!hasDealerId.value) 28441 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("li", vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_5, _cache[1] || (_cache[1] = [ 28442 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)("The "), 28443 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("code", null, "dealerId", -1 /* HOISTED */), 28444 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)(" attribute must contain at least one character.") 28445 ]))) 28446 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true), 28447 (!dealerIdIsNumber.value) 28448 ? ((0,vehicleCardDeck_vue_runtime_esm_browser_prod/* openBlock */.uX)(), (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementBlock */.CE)("li", vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts_hoisted_6, _cache[2] || (_cache[2] = [ 28449 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)("The "), 28450 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("code", null, "dealerId", -1 /* HOISTED */), 28451 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createTextVNode */.eW)(" attribute must only contain numbers.") 28452 ]))) 28453 : (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createCommentVNode */.Q3)("v-if", true) 28454 ]), 28455 _cache[4] || (_cache[4] = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("p", null, [ 28456 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("strong", null, "When used correctly, your card deck element should look similar to the following:"), 28457 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("br"), 28458 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createElementVNode */.Lk)("code", null, "<vehicle-card-deck vins=\"VIN1,VIN2,VIN3\" dealer-id=\"12345\"></vehicle-card-deck>") 28459 ], -1 /* HOISTED */)) 28460 ])), 28461 (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createVNode */.bF)(vehicleCardDeck_modalDialogs, { 28462 uiLocation: (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* unref */.R1)(vehicleCardDeck_uiLocationVersion/* UiLocationVersion */.I).VehicleCardDeck 28463 }, null, 8 /* PROPS */, ["uiLocation"])
28464 ], 512 /* NEED_PATCH */)); 28465 }; 28466 } 28467})); 28468 28469;// ./src/infrastructure/vue/vehicleCardDeck/AppVehicleCardDeck.vue?vue&type=script&setup=true&lang=ts 28470 28471// EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-7.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/infrastructure/vue/vehicleCardDeck/AppVehicleCardDeck.vue?vue&type=style&index=0&id=48ee9f99&lang=scss 28472var vehicleCardDeck_AppVehicleCardDeckvue_type_style_index_0_id_48ee9f99_lang_scss = __webpack_require__(5577); 28473;// ./src/infrastructure/vue/vehicleCardDeck/AppVehicleCardDeck.vue?vue&type=style&index=0&id=48ee9f99&lang=scss 28474 28475;// ./src/infrastructure/vue/vehicleCardDeck/AppVehicleCardDeck.vue 28476 28477 28478 28479; 28480 28481const vehicleCardDeck_AppVehicleCardDeck_exports_ = vehicleCardDeck_AppVehicleCardDeckvue_type_script_setup_true_lang_ts; 28482 28483/* harmony default export */ const vehicleCardDeck_AppVehicleCardDeck = (vehicleCardDeck_AppVehicleCardDeck_exports_); 28484// EXTERNAL MODULE: ./src/infrastructure/vue/types/appLocation.ts 28485var vehicleCardDeck_appLocation = __webpack_require__(8602); 28486;// ./src/components/vehicleCardDeck/vehicleCardDeckLoader.ts 28487var vehicleCardDeck_vehicleCardDeckLoader_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { 28488 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 28489 return new (P || (P = Promise))(function (resolve, reject) { 28490 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 28491 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 28492 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 28493 step((generator = generator.apply(thisArg, _arguments || [])).next()); 28494 }); 28495}; 28496//DEPENDENCY INJECTION 28497// reflect-metadata should only be called once at the root of the application 28498 28499 28500 28501 28502 28503 28504class vehicleCardDeck_VehicleCardDeckLoader { 28505 constructor(appHostElement) { 28506 this._appHostElement = appHostElement; 28507 } 28508 initialize() { 28509 return vehicleCardDeck_vehicleCardDeckLoader_awaiter(this, void 0, void 0, function* () { 28510 yield this.initializeServices(); 28511 this.initializeApp(); 28512 }); 28513 } 28514 initializeServices() { 28515 return vehicleCardDeck_vehicleCardDeckLoader_awaiter(this, void 0, void 0, function* () { 28516 this.toggleService = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.IToggleService); 28517 this.translationService = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.ITranslationService); 28518 this.vehicleService = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.IVehicleService); 28519 this.storeProvider = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.IStoreProvider); 28520 this.vehicleCardWasabi = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.VehicleCardWasabi); 28521 this.priceStakSynchronizer = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.IPriceStakSynchronizer); 28522 this.shareVehicleModal = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.ShareVehicleModel); 28523 this.pricestakDisclaimerModal = vehicleCardDeck_inversify_config/* doIocContainer */.E.get(vehicleCardDeck_types/* TYPES */.Q.VehiclePricestakDisclaimerModal); 28524 yield this.translationService.initialize(true, true, true, true); 28525 yield this.toggleService.initialize(); 28526 this.storeProvider.initialize(vehicleCardDeck_appLocation/* AppLocation */.V.VehicleCardDeck); 28527 // Other services are not initialized here because they need to wait until after cards are loaded 28528 }); 28529 } 28530 initializeApp() { 28531 const app = (0,vehicleCardDeck_vue_runtime_esm_browser_prod/* createApp */.Ef)(vehicleCardDeck_AppVehicleCardDeck, { 28532 vins: this._appHostElement.getAttribute('vins'), 28533 dealerId: this._appHostElement.getAttribute('dealer-id') 28534 }); 28535 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.ToggleService, this.toggleService); 28536 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.TranslationService, this.translationService); 28537 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.VehicleService, this.vehicleService); 28538 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.StoreProvider, this.storeProvider); 28539 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.VehicleCardWasabi, this.vehicleCardWasabi); 28540 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.PriceStakSynchronizer, this.priceStakSynchronizer); 28541 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.ShareVehicleModel, this.shareVehicleModal); 28542 app.provide(vehicleCardDeck_types/* PROVIDERS */.x.VehiclePricestakDisclaimerModal, this.pricestakDisclaimerModal); 28543 app.mount(this._appHostElement); 28544 } 28545} 28546 28547;// ./src/components/vehicleCardDeck/vehicleCardDeck.ts 28548 28549class vehicleCardDeck_VehicleCardDeck extends HTMLElement { 28550 constructor() { 28551 super(); 28552 } 28553 static get observedAttributes() { 28554 return ['vins']; 28555 } 28556 attributeChangedCallback(name, oldValue, newValue) { 28557 if (name === 'vins' && oldValue !== newValue) { 28558 this.dispatchEvent(new CustomEvent('vins-update', { 28559 detail: { vins: newValue, oldVins: oldValue }, 28560 bubbles: true, 28561 composed: true, // Allow crossing the shadow DOM boundary 28562 })); 28563 } 28564 } 28565 connectedCallback() { 28566 const loader = new vehicleCardDeck_VehicleCardDeckLoader(this); 28567 loader.initialize(); 28568 } 28569} 28570customElements.define('vehicle-card-deck', vehicleCardDeck_VehicleCardDeck); 28571 28572})(); 28573 28574/******/ })() 28575;
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.