vendor: 4,114 bytes, lines 1-114
1/** 2* @vue/shared v3.5.16 3* (c) 2018-present Yuxi (Evan) You and Vue contributors 4* @license MIT 5**/ 6/*! #__NO_SIDE_EFFECTS__ */ 7// @__NO_SIDE_EFFECTS__ 8function makeMap(str) { 9 const map = /* @__PURE__ */ Object.create(null); 10 for (const key of str.split(",")) map[key] = 1; 11 return (val) => val in map; 12} 13const EMPTY_OBJ = {}; 14const EMPTY_ARR = []; 15const NOOP = () => { 16}; 17const NO = () => false; 18const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter 19(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); 20const isModelListener = (key) => key.startsWith("onUpdate:"); 21const extend$5 = Object.assign; 22const remove = (arr, el) => { 23 const i = arr.indexOf(el); 24 if (i > -1) { 25 arr.splice(i, 1); 26 } 27}; 28const hasOwnProperty$4 = Object.prototype.hasOwnProperty; 29const hasOwn$2 = (val, key) => hasOwnProperty$4.call(val, key); 30const isArray$3 = Array.isArray; 31const isMap = (val) => toTypeString$2(val) === "[object Map]"; 32const isSet = (val) => toTypeString$2(val) === "[object Set]"; 33const isDate$2 = (val) => toTypeString$2(val) === "[object Date]"; 34const isRegExp$3 = (val) => toTypeString$2(val) === "[object RegExp]"; 35const isFunction$3 = (val) => typeof val === "function"; 36const isString$3 = (val) => typeof val === "string"; 37const isSymbol$2 = (val) => typeof val === "symbol"; 38const isObject$9 = (val) => val !== null && typeof val === "object"; 39const isPromise$2 = (val) => { 40 return (isObject$9(val) || isFunction$3(val)) && isFunction$3(val.then) && isFunction$3(val.catch); 41}; 42const objectToString$4 = Object.prototype.toString; 43const toTypeString$2 = (value) => objectToString$4.call(value); 44const toRawType = (value) => { 45 return toTypeString$2(value).slice(8, -1); 46}; 47const isPlainObject$3 = (val) => toTypeString$2(val) === "[object Object]"; 48const isIntegerKey = (key) => isString$3(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; 49const isReservedProp = /* @__PURE__ */ makeMap( 50 // the leading comma is intentional so empty string "" is also included 51 ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" 52); 53const isBuiltInDirective = /* @__PURE__ */ makeMap( 54 "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" 55); 56const cacheStringFunction = (fn) => { 57 const cache2 = /* @__PURE__ */ Object.create(null); 58 return (str) => { 59 const hit = cache2[str]; 60 return hit || (cache2[str] = fn(str)); 61 }; 62}; 63const camelizeRE = /-(\w)/g; 64const camelize = cacheStringFunction( 65 (str) => { 66 return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); 67 } 68); 69const hyphenateRE = /\B([A-Z])/g; 70const hyphenate = cacheStringFunction( 71 (str) => str.replace(hyphenateRE, "-$1").toLowerCase() 72); 73const capitalize$1 = cacheStringFunction((str) => { 74 return str.charAt(0).toUpperCase() + str.slice(1); 75}); 76const toHandlerKey = cacheStringFunction( 77 (str) => { 78 const s = str ? `on${capitalize$1(str)}` : ``; 79 return s; 80 } 81); 82const hasChanged = (value, oldValue) => !Object.is(value, oldValue); 83const invokeArrayFns = (fns, ...arg) => { 84 for (let i = 0; i < fns.length; i++) { 85 fns[i](...arg); 86 } 87}; 88const def = (obj, key, value, writable = false) => { 89 Object.defineProperty(obj, key, { 90 configurable: true, 91 enumerable: false, 92 writable, 93 value 94 }); 95}; 96const looseToNumber = (val) => { 97 const n = parseFloat(val); 98 return isNaN(n) ? val : n; 99}; 100const toNumber$2 = (val) => { 101 const n = isString$3(val) ? Number(val) : NaN; 102 return isNaN(n) ? val : n; 103}; 104let _globalThis$2; 105const getGlobalThis$2 = () => { 106 return _globalThis$2 || (_globalThis$2 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); 107}; 108function genCacheKey(source, options2) { 109 return source + JSON.stringify( 110 options2, 111 (_, val) => typeof val === "function" ? val.toString() : val 112 ); 113} 114const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decode
vendor: 4,106 bytes, lines 114-191
114URI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; 115const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); 116function normalizeStyle(value) { 117 if (isArray$3(value)) { 118 const res = {}; 119 for (let i = 0; i < value.length; i++) { 120 const item = value[i]; 121 const normalized = isString$3(item) ? parseStringStyle(item) : normalizeStyle(item); 122 if (normalized) { 123 for (const key in normalized) { 124 res[key] = normalized[key]; 125 } 126 } 127 } 128 return res; 129 } else if (isString$3(value) || isObject$9(value)) { 130 return value; 131 } 132} 133const listDelimiterRE = /;(?![^(]*\))/g; 134const propertyDelimiterRE = /:([^]+)/; 135const styleCommentRE = /\/\*[^]*?\*\//g; 136function parseStringStyle(cssText) { 137 const ret = {}; 138 cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { 139 if (item) { 140 const tmp = item.split(propertyDelimiterRE); 141 tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); 142 } 143 }); 144 return ret; 145} 146function normalizeClass(value) { 147 let res = ""; 148 if (isString$3(value)) { 149 res = value; 150 } else if (isArray$3(value)) { 151 for (let i = 0; i < value.length; i++) { 152 const normalized = normalizeClass(value[i]); 153 if (normalized) { 154 res += normalized + " "; 155 } 156 } 157 } else if (isObject$9(value)) { 158 for (const name in value) { 159 if (value[name]) { 160 res += name + " "; 161 } 162 } 163 } 164 return res.trim(); 165} 166function normalizeProps(props2) { 167 if (!props2) return null; 168 let { class: klass, style } = props2; 169 if (klass && !isString$3(klass)) { 170 props2.class = normalizeClass(klass); 171 } 172 if (style) { 173 props2.style = normalizeStyle(style); 174 } 175 return props2; 176} 177const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; 178const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; 179const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; 180const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; 181const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); 182const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); 183const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); 184const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); 185const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; 186const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); 187function includeBooleanAttr(value) { 188 return !!value || value === ""; 189} 190function looseCompareArrays(a, b) { 191 if (a.length !== b.length) return false;
vendor: 2,708 bytes, lines 192-280
192 let equal2 = true; 193 for (let i = 0; equal2 && i < a.length; i++) { 194 equal2 = looseEqual(a[i], b[i]); 195 } 196 return equal2; 197} 198function looseEqual(a, b) { 199 if (a === b) return true; 200 let aValidType = isDate$2(a); 201 let bValidType = isDate$2(b); 202 if (aValidType || bValidType) { 203 return aValidType && bValidType ? a.getTime() === b.getTime() : false; 204 } 205 aValidType = isSymbol$2(a); 206 bValidType = isSymbol$2(b); 207 if (aValidType || bValidType) { 208 return a === b; 209 } 210 aValidType = isArray$3(a); 211 bValidType = isArray$3(b); 212 if (aValidType || bValidType) { 213 return aValidType && bValidType ? looseCompareArrays(a, b) : false; 214 } 215 aValidType = isObject$9(a); 216 bValidType = isObject$9(b); 217 if (aValidType || bValidType) { 218 if (!aValidType || !bValidType) { 219 return false; 220 } 221 const aKeysCount = Object.keys(a).length; 222 const bKeysCount = Object.keys(b).length; 223 if (aKeysCount !== bKeysCount) { 224 return false; 225 } 226 for (const key in a) { 227 const aHasKey = a.hasOwnProperty(key); 228 const bHasKey = b.hasOwnProperty(key); 229 if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { 230 return false; 231 } 232 } 233 } 234 return String(a) === String(b); 235} 236function looseIndexOf(arr, val) { 237 return arr.findIndex((item) => looseEqual(item, val)); 238} 239const isRef$1 = (val) => { 240 return !!(val && val["__v_isRef"] === true); 241}; 242const toDisplayString$1 = (val) => { 243 return isString$3(val) ? val : val == null ? "" : isArray$3(val) || isObject$9(val) && (val.toString === objectToString$4 || !isFunction$3(val.toString)) ? isRef$1(val) ? toDisplayString$1(val.value) : JSON.stringify(val, replacer, 2) : String(val); 244}; 245const replacer = (_key, val) => { 246 if (isRef$1(val)) { 247 return replacer(_key, val.value); 248 } else if (isMap(val)) { 249 return { 250 [`Map(${val.size})`]: [...val.entries()].reduce( 251 (entries, [key, val2], i) => { 252 entries[stringifySymbol(key, i) + " =>"] = val2; 253 return entries; 254 }, 255 {} 256 ) 257 }; 258 } else if (isSet(val)) { 259 return { 260 [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) 261 }; 262 } else if (isSymbol$2(val)) { 263 return stringifySymbol(val); 264 } else if (isObject$9(val) && !isArray$3(val) && !isPlainObject$3(val)) { 265 return String(val); 266 } 267 return val; 268}; 269const stringifySymbol = (v, i = "") => { 270 var _a; 271 return ( 272 // Symbol.description in es2019+ so we need to cast here to pass 273 // the lib: es2016 check 274 isSymbol$2(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v 275 ); 276}; 277/** 278* @vue/reactivity v3.5.16 279* (c) 2018-present Yuxi (Evan) You and Vue contributors 280* @license MIT
281**/ 282let activeEffectScope; 283class EffectScope { 284 constructor(detached = false) { 285 this.detached = detached; 286 this._active = true; 287 this._on = 0; 288 this.effects = []; 289 this.cleanups = []; 290 this._isPaused = false; 291 this.parent = activeEffectScope; 292 if (!detached && activeEffectScope) { 293 this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( 294 this 295 ) - 1; 296 } 297 } 298 get active() { 299 return this._active; 300 } 301 pause() { 302 if (this._active) { 303 this._isPaused = true; 304 let i, l; 305 if (this.scopes) { 306 for (i = 0, l = this.scopes.length; i < l; i++) { 307 this.scopes[i].pause(); 308 } 309 } 310 for (i = 0, l = this.effects.length; i < l; i++) { 311 this.effects[i].pause(); 312 } 313 } 314 } 315 /** 316 * Resumes the effect scope, including all child scopes and effects. 317 */ 318 resume() { 319 if (this._active) { 320 if (this._isPaused) { 321 this._isPaused = false; 322 let i, l; 323 if (this.scopes) { 324 for (i = 0, l = this.scopes.length; i < l; i++) { 325 this.scopes[i].resume(); 326 } 327 } 328 for (i = 0, l = this.effects.length; i < l; i++) { 329 this.effects[i].resume(); 330 } 331 } 332 } 333 } 334 run(fn) { 335 if (this._active) { 336 const currentEffectScope = activeEffectScope; 337 try { 338 activeEffectScope = this; 339 return fn(); 340 } finally { 341 activeEffectScope = currentEffectScope; 342 } 343 } 344 } 345 /** 346 * This should only be called on non-detached scopes 347 * @internal 348 */ 349 on() { 350 if (++this._on === 1) { 351 this.prevScope = activeEffectScope; 352 activeEffectScope = this; 353 } 354 } 355 /** 356 * This should only be called on non-detached scopes 357 * @internal 358 */ 359 off() { 360 if (this._on > 0 && --this._on === 0) { 361 activeEffectScope = this.prevScope; 362 this.prevScope = void 0; 363 } 364 } 365 stop(fromParent) { 366 if (this._active) { 367 this._active = false; 368 let i, l; 369 for (i = 0, l = this.effects.length; i < l; i++) { 370 this.effects[i].stop(); 371 } 372 this.effects.length = 0; 373 for (i = 0, l = this.cleanups.length; i < l; i++) { 374 this.cleanups[i](); 375 } 376 this.cleanups.length = 0; 377 if (this.scopes) { 378 for (i = 0, l = this.scopes.length; i < l; i++) { 379 this.scopes[i].stop(true); 380 } 381 this.scopes.length = 0; 382 } 383 if (!this.detached && this.parent && !fromParent) { 384 const last = this.parent.scopes.pop(); 385 if (last && last !== this) { 386 this.parent.scopes[this.index] = last; 387 last.index = this.index; 388 } 389 } 390 this.parent = void 0; 391 } 392 } 393} 394function effectScope(detached) { 395 return new EffectScope(detached); 396} 397function getCurrentScope() { 398 return activeEffectScope; 399} 400function onScopeDispose(fn, failSilently = false) { 401 if (activeEffectScope) { 402 activeEffectScope.cleanups.push(fn); 403 } 404} 405let activeSub; 406const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); 407class ReactiveEffect { 408 constructor(fn) { 409 this.fn = fn; 410 this.deps = void 0; 411 this.depsTail = void 0; 412 this.flags = 1 | 4; 413 this.next = void 0; 414 this.cleanup = void 0; 415 this.scheduler = void 0; 416 if (activeEffectScope && activeEffectScope.active) { 417 activeEffectScope.effects.push(this); 418 } 419 } 420 pause() { 421 this.flags |= 64; 422 } 423 resume() { 424 if (this.flags & 64) { 425 this.flags &= -65; 426 if (pausedQueueEffects.has(this)) { 427 pausedQueueEffects.delete(this); 428 this.trigger(); 429 } 430 } 431 } 432 /** 433 * @internal 434 */ 435 notify() { 436 if (this.flags & 2 && !(this.flags & 32)) { 437 return; 438 } 439 if (!(this.flags & 8)) { 440 batch(this); 441 } 442 } 443 run() { 444 if (!(this.flags & 1)) { 445 return this.fn(); 446 } 447 this.flags |= 2; 448 cleanupEffect(this); 449 prepareDeps(this); 450 const prevEffect = activeSub; 451 const prevShouldTrack = shouldTrack; 452 activeSub = this; 453 shouldTrack = true; 454 try { 455 return this.fn(); 456 } finally { 457 cleanupDeps(this); 458 activeSub = prevEffect; 459 shouldTrack = prevShouldTrack; 460 this.flags &= -3; 461 } 462 } 463 stop() { 464 if (this.flags & 1) { 465 for (let link = this.deps; link; link = link.nextDep) { 466 removeSub(link); 467 } 468 this.deps = this.depsTail = void 0; 469 cleanupEffect(this); 470 this.onStop && this.onStop(); 471 this.flags &= -2; 472 } 473 } 474 trigger() { 475 if (this.flags & 64) {
vendor: 4,413 bytes, lines 476-679
476 pausedQueueEffects.add(this); 477 } else if (this.scheduler) { 478 this.scheduler(); 479 } else { 480 this.runIfDirty(); 481 } 482 } 483 /** 484 * @internal 485 */ 486 runIfDirty() { 487 if (isDirty(this)) { 488 this.run(); 489 } 490 } 491 get dirty() { 492 return isDirty(this); 493 } 494} 495let batchDepth = 0; 496let batchedSub; 497let batchedComputed; 498function batch(sub, isComputed = false) { 499 sub.flags |= 8; 500 if (isComputed) { 501 sub.next = batchedComputed; 502 batchedComputed = sub; 503 return; 504 } 505 sub.next = batchedSub; 506 batchedSub = sub; 507} 508function startBatch() { 509 batchDepth++; 510} 511function endBatch() { 512 if (--batchDepth > 0) { 513 return; 514 } 515 if (batchedComputed) { 516 let e = batchedComputed; 517 batchedComputed = void 0; 518 while (e) { 519 const next = e.next; 520 e.next = void 0; 521 e.flags &= -9; 522 e = next; 523 } 524 } 525 let error; 526 while (batchedSub) { 527 let e = batchedSub; 528 batchedSub = void 0; 529 while (e) { 530 const next = e.next; 531 e.next = void 0; 532 e.flags &= -9; 533 if (e.flags & 1) { 534 try { 535 ; 536 e.trigger(); 537 } catch (err) { 538 if (!error) error = err; 539 } 540 } 541 e = next; 542 } 543 } 544 if (error) throw error; 545} 546function prepareDeps(sub) { 547 for (let link = sub.deps; link; link = link.nextDep) { 548 link.version = -1; 549 link.prevActiveLink = link.dep.activeLink; 550 link.dep.activeLink = link; 551 } 552} 553function cleanupDeps(sub) { 554 let head; 555 let tail = sub.depsTail; 556 let link = tail; 557 while (link) { 558 const prev = link.prevDep; 559 if (link.version === -1) { 560 if (link === tail) tail = prev; 561 removeSub(link); 562 removeDep(link); 563 } else { 564 head = link; 565 } 566 link.dep.activeLink = link.prevActiveLink; 567 link.prevActiveLink = void 0; 568 link = prev; 569 } 570 sub.deps = head; 571 sub.depsTail = tail; 572} 573function isDirty(sub) { 574 for (let link = sub.deps; link; link = link.nextDep) { 575 if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { 576 return true; 577 } 578 } 579 if (sub._dirty) { 580 return true; 581 } 582 return false; 583} 584function refreshComputed(computed2) { 585 if (computed2.flags & 4 && !(computed2.flags & 16)) { 586 return; 587 } 588 computed2.flags &= -17; 589 if (computed2.globalVersion === globalVersion) { 590 return; 591 } 592 computed2.globalVersion = globalVersion; 593 if (!computed2.isSSR && computed2.flags & 128 && (!computed2.deps && !computed2._dirty || !isDirty(computed2))) { 594 return; 595 } 596 computed2.flags |= 2; 597 const dep = computed2.dep; 598 const prevSub = activeSub; 599 const prevShouldTrack = shouldTrack; 600 activeSub = computed2; 601 shouldTrack = true; 602 try { 603 prepareDeps(computed2); 604 const value = computed2.fn(computed2._value); 605 if (dep.version === 0 || hasChanged(value, computed2._value)) { 606 computed2.flags |= 128; 607 computed2._value = value; 608 dep.version++; 609 } 610 } catch (err) { 611 dep.version++; 612 throw err; 613 } finally { 614 activeSub = prevSub; 615 shouldTrack = prevShouldTrack; 616 cleanupDeps(computed2); 617 computed2.flags &= -3; 618 } 619} 620function removeSub(link, soft = false) { 621 const { dep, prevSub, nextSub } = link; 622 if (prevSub) { 623 prevSub.nextSub = nextSub; 624 link.prevSub = void 0; 625 } 626 if (nextSub) { 627 nextSub.prevSub = prevSub; 628 link.nextSub = void 0; 629 } 630 if (dep.subs === link) { 631 dep.subs = prevSub; 632 if (!prevSub && dep.computed) { 633 dep.computed.flags &= -5; 634 for (let l = dep.computed.deps; l; l = l.nextDep) { 635 removeSub(l, true); 636 } 637 } 638 } 639 if (!soft && !--dep.sc && dep.map) { 640 dep.map.delete(dep.key); 641 } 642} 643function removeDep(link) { 644 const { prevDep, nextDep } = link; 645 if (prevDep) { 646 prevDep.nextDep = nextDep; 647 link.prevDep = void 0; 648 } 649 if (nextDep) { 650 nextDep.prevDep = prevDep; 651 link.nextDep = void 0; 652 } 653} 654function effect(fn, options2) { 655 if (fn.effect instanceof ReactiveEffect) { 656 fn = fn.effect.fn; 657 } 658 const e = new ReactiveEffect(fn); 659 if (options2) { 660 extend$5(e, options2); 661 } 662 try { 663 e.run(); 664 } catch (err) { 665 e.stop(); 666 throw err; 667 } 668 const runner = e.run.bind(e); 669 runner.effect = e; 670 return runner; 671} 672function stop(runner) { 673 runner.effect.stop(); 674} 675let shouldTrack = true; 676const trackStack = []; 677function pauseTracking() { 678 trackStack.push(shouldTrack); 679 shouldTrack = false;
vendor: 3,753 bytes, lines 680-837
680} 681function resetTracking() { 682 const last = trackStack.pop(); 683 shouldTrack = last === void 0 ? true : last; 684} 685function cleanupEffect(e) { 686 const { cleanup } = e; 687 e.cleanup = void 0; 688 if (cleanup) { 689 const prevSub = activeSub; 690 activeSub = void 0; 691 try { 692 cleanup(); 693 } finally { 694 activeSub = prevSub; 695 } 696 } 697} 698let globalVersion = 0; 699class Link { 700 constructor(sub, dep) { 701 this.sub = sub; 702 this.dep = dep; 703 this.version = dep.version; 704 this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; 705 } 706} 707class Dep { 708 constructor(computed2) { 709 this.computed = computed2; 710 this.version = 0; 711 this.activeLink = void 0; 712 this.subs = void 0; 713 this.map = void 0; 714 this.key = void 0; 715 this.sc = 0; 716 } 717 track(debugInfo) { 718 if (!activeSub || !shouldTrack || activeSub === this.computed) { 719 return; 720 } 721 let link = this.activeLink; 722 if (link === void 0 || link.sub !== activeSub) { 723 link = this.activeLink = new Link(activeSub, this); 724 if (!activeSub.deps) { 725 activeSub.deps = activeSub.depsTail = link; 726 } else { 727 link.prevDep = activeSub.depsTail; 728 activeSub.depsTail.nextDep = link; 729 activeSub.depsTail = link; 730 } 731 addSub(link); 732 } else if (link.version === -1) { 733 link.version = this.version; 734 if (link.nextDep) { 735 const next = link.nextDep; 736 next.prevDep = link.prevDep; 737 if (link.prevDep) { 738 link.prevDep.nextDep = next; 739 } 740 link.prevDep = activeSub.depsTail; 741 link.nextDep = void 0; 742 activeSub.depsTail.nextDep = link; 743 activeSub.depsTail = link; 744 if (activeSub.deps === link) { 745 activeSub.deps = next; 746 } 747 } 748 } 749 return link; 750 } 751 trigger(debugInfo) { 752 this.version++; 753 globalVersion++; 754 this.notify(debugInfo); 755 } 756 notify(debugInfo) { 757 startBatch(); 758 try { 759 if (false) ; 760 for (let link = this.subs; link; link = link.prevSub) { 761 if (link.sub.notify()) { 762 ; 763 link.sub.dep.notify(); 764 } 765 } 766 } finally { 767 endBatch(); 768 } 769 } 770} 771function addSub(link) { 772 link.dep.sc++; 773 if (link.sub.flags & 4) { 774 const computed2 = link.dep.computed; 775 if (computed2 && !link.dep.subs) { 776 computed2.flags |= 4 | 16; 777 for (let l = computed2.deps; l; l = l.nextDep) { 778 addSub(l); 779 } 780 } 781 const currentTail = link.dep.subs; 782 if (currentTail !== link) { 783 link.prevSub = currentTail; 784 if (currentTail) currentTail.nextSub = link; 785 } 786 link.dep.subs = link; 787 } 788} 789const targetMap = /* @__PURE__ */ new WeakMap(); 790const ITERATE_KEY = Symbol( 791 "" 792); 793const MAP_KEY_ITERATE_KEY = Symbol( 794 "" 795); 796const ARRAY_ITERATE_KEY = Symbol( 797 "" 798); 799function track(target, type, key) { 800 if (shouldTrack && activeSub) { 801 let depsMap = targetMap.get(target); 802 if (!depsMap) { 803 targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); 804 } 805 let dep = depsMap.get(key); 806 if (!dep) { 807 depsMap.set(key, dep = new Dep()); 808 dep.map = depsMap; 809 dep.key = key; 810 } 811 { 812 dep.track(); 813 } 814 } 815} 816function trigger(target, type, key, newValue, oldValue, oldTarget) { 817 const depsMap = targetMap.get(target); 818 if (!depsMap) { 819 globalVersion++; 820 return; 821 } 822 const run = (dep) => { 823 if (dep) { 824 { 825 dep.trigger(); 826 } 827 } 828 }; 829 startBatch(); 830 if (type === "clear") { 831 depsMap.forEach(run); 832 } else { 833 const targetIsArray = isArray$3(target); 834 const isArrayIndex = targetIsArray && isIntegerKey(key); 835 if (targetIsArray && key === "length") { 836 const newLength = Number(newValue); 837 depsMap.forEach((dep, key2) => {
838 if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol$2(key2) && key2 >= newLength) { 839 run(dep); 840 } 841 }); 842 } else { 843 if (key !== void 0 || depsMap.has(void 0)) { 844 run(depsMap.get(key)); 845 } 846 if (isArrayIndex) { 847 run(depsMap.get(ARRAY_ITERATE_KEY)); 848 } 849 switch (type) { 850 case "add": 851 if (!targetIsArray) { 852 run(depsMap.get(ITERATE_KEY)); 853 if (isMap(target)) { 854 run(depsMap.get(MAP_KEY_ITERATE_KEY)); 855 } 856 } else if (isArrayIndex) { 857 run(depsMap.get("length")); 858 } 859 break; 860 case "delete": 861 if (!targetIsArray) { 862 run(depsMap.get(ITERATE_KEY)); 863 if (isMap(target)) { 864 run(depsMap.get(MAP_KEY_ITERATE_KEY)); 865 } 866 } 867 break; 868 case "set": 869 if (isMap(target)) { 870 run(depsMap.get(ITERATE_KEY)); 871 } 872 break; 873 } 874 } 875 } 876 endBatch(); 877} 878function getDepFromReactive(object, key) { 879 const depMap = targetMap.get(object); 880 return depMap && depMap.get(key); 881} 882function reactiveReadArray(array) { 883 const raw = toRaw(array); 884 if (raw === array) return raw; 885 track(raw, "iterate", ARRAY_ITERATE_KEY); 886 return isShallow(array) ? raw : raw.map(toReactive); 887} 888function shallowReadArray(arr) { 889 track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); 890 return arr; 891} 892const arrayInstrumentations = { 893 __proto__: null, 894 [Symbol.iterator]() { 895 return iterator$1(this, Symbol.iterator, toReactive); 896 }, 897 concat(...args) { 898 return reactiveReadArray(this).concat( 899 ...args.map((x) => isArray$3(x) ? reactiveReadArray(x) : x) 900 ); 901 }, 902 entries() { 903 return iterator$1(this, "entries", (value) => { 904 value[1] = toReactive(value[1]); 905 return value; 906 }); 907 }, 908 every(fn, thisArg) { 909 return apply$1(this, "every", fn, thisArg, void 0, arguments); 910 }, 911 filter(fn, thisArg) { 912 return apply$1(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); 913 }, 914 find(fn, thisArg) { 915 return apply$1(this, "find", fn, thisArg, toReactive, arguments); 916 }, 917 findIndex(fn, thisArg) { 918 return apply$1(this, "findIndex", fn, thisArg, void 0, arguments); 919 }, 920 findLast(fn, thisArg) { 921 return apply$1(this, "findLast", fn, thisArg, toReactive, arguments); 922 }, 923 findLastIndex(fn, thisArg) { 924 return apply$1(this, "findLastIndex", fn, thisArg, void 0, arguments); 925 }, 926 // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement 927 forEach(fn, thisArg) { 928 return apply$1(this, "forEach", fn, thisArg, void 0, arguments); 929 }, 930 includes(...args) { 931 return searchProxy(this, "includes", args); 932 }, 933 indexOf(...args) { 934 return searchProxy(this, "indexOf", args); 935 }, 936 join(separator) { 937 return reactiveReadArray(this).join(separator); 938 }, 939 // keys() iterator only reads `length`, no optimisation required 940 lastIndexOf(...args) { 941 return searchProxy(this, "lastIndexOf", args); 942 }, 943 map(fn, thisArg) { 944 return apply$1(this, "map", fn, thisArg, void 0, arguments); 945 }, 946 pop() { 947 return noTracking(this, "pop"); 948 }, 949 push(...args) { 950 return noTracking(this, "push", args); 951 }, 952 reduce(fn, ...args) { 953 return reduce(this, "reduce", fn, args); 954 }, 955 reduceRight(fn, ...args) { 956 return reduce(this, "reduceRight", fn, args); 957 }, 958 shift() { 959 return noTracking(this, "shift"); 960 }, 961 // slice could use ARRAY_ITERATE but also seems to beg for range tracking 962 some(fn, thisArg) { 963 return apply$1(this, "some", fn, thisArg, void 0, arguments); 964 }, 965 splice(...args) { 966 return noTracking(this, "splice", args); 967 }, 968 toReversed() { 969 return reactiveReadArray(this).toReversed(); 970 }, 971 toSorted(comparer) { 972 return reactiveReadArray(this).toSorted(comparer); 973 }, 974 toSpliced(...args) { 975 return reactiveReadArray(this).toSpliced(...args); 976 }, 977 unshift(...args) { 978 return noTracking(this, "unshift", args); 979 }, 980 values() { 981 return iterator$1(this, "values", toReactive); 982 } 983}; 984function iterator$1(self2, method, wrapValue) { 985 const arr = shallowReadArray(self2); 986 const iter = arr[method](); 987 if (arr !== self2 && !isShallow(self2)) { 988 iter._next = iter.next; 989 iter.next = () => { 990 const result = iter._next(); 991 if (result.value) { 992 result.value = wrapValue(result.value); 993 } 994 return result; 995 }; 996 } 997 return iter; 998} 999const arrayProto = Array.prototype; 1000function apply$1(self2, method, fn, thisArg, wrappedRetFn, args) { 1001 const arr = shallowReadArray(self2); 1002 const needsWrap = arr !== self2 && !isShallow(self2); 1003 const methodFn = arr[method]; 1004 if (methodFn !== arrayProto[method]) { 1005 const result2 = methodFn.apply(self2, args); 1006 return needsWrap ? toReactive(result2) : result2; 1007 } 1008 let wrappedFn = fn; 1009 if (arr !== self2) { 1010 if (needsWrap) { 1011 wrappedFn = function(item, index2) {
1012 return fn.call(this, toReactive(item), index2, self2); 1013 }; 1014 } else if (fn.length > 2) { 1015 wrappedFn = function(item, index2) { 1016 return fn.call(this, item, index2, self2); 1017 }; 1018 } 1019 } 1020 const result = methodFn.call(arr, wrappedFn, thisArg); 1021 return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; 1022} 1023function reduce(self2, method, fn, args) { 1024 const arr = shallowReadArray(self2); 1025 let wrappedFn = fn; 1026 if (arr !== self2) { 1027 if (!isShallow(self2)) { 1028 wrappedFn = function(acc, item, index2) { 1029 return fn.call(this, acc, toReactive(item), index2, self2); 1030 }; 1031 } else if (fn.length > 3) { 1032 wrappedFn = function(acc, item, index2) { 1033 return fn.call(this, acc, item, index2, self2); 1034 }; 1035 } 1036 } 1037 return arr[method](wrappedFn, ...args); 1038} 1039function searchProxy(self2, method, args) { 1040 const arr = toRaw(self2); 1041 track(arr, "iterate", ARRAY_ITERATE_KEY); 1042 const res = arr[method](...args); 1043 if ((res === -1 || res === false) && isProxy(args[0])) { 1044 args[0] = toRaw(args[0]); 1045 return arr[method](...args); 1046 } 1047 return res; 1048} 1049function noTracking(self2, method, args = []) { 1050 pauseTracking(); 1051 startBatch(); 1052 const res = toRaw(self2)[method].apply(self2, args); 1053 endBatch(); 1054 resetTracking(); 1055 return res; 1056} 1057const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); 1058const builtInSymbols = new Set( 1059 /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol$2) 1060); 1061function hasOwnProperty$3(key) { 1062 if (!isSymbol$2(key)) key = String(key); 1063 const obj = toRaw(this); 1064 track(obj, "has", key); 1065 return obj.hasOwnProperty(key); 1066} 1067class BaseReactiveHandler { 1068 constructor(_isReadonly = false, _isShallow = false) { 1069 this._isReadonly = _isReadonly; 1070 this._isShallow = _isShallow; 1071 } 1072 get(target, key, receiver) { 1073 if (key === "__v_skip") return target["__v_skip"]; 1074 const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; 1075 if (key === "__v_isReactive") { 1076 return !isReadonly2; 1077 } else if (key === "__v_isReadonly") { 1078 return isReadonly2; 1079 } else if (key === "__v_isShallow") { 1080 return isShallow2; 1081 } else if (key === "__v_raw") { 1082 if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype 1083 // this means the receiver is a user proxy of the reactive proxy 1084 Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { 1085 return target; 1086 } 1087 return; 1088 } 1089 const targetIsArray = isArray$3(target); 1090 if (!isReadonly2) { 1091 let fn; 1092 if (targetIsArray && (fn = arrayInstrumentations[key])) { 1093 return fn; 1094 } 1095 if (key === "hasOwnProperty") { 1096 return hasOwnProperty$3; 1097 } 1098 } 1099 const res = Reflect.get( 1100 target, 1101 key, 1102 // if this is a proxy wrapping a ref, return methods using the raw ref 1103 // as receiver so that we don't have to call `toRaw` on the ref in all 1104 // its class methods 1105 isRef(target) ? target : receiver 1106 ); 1107 if (isSymbol$2(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { 1108 return res; 1109 } 1110 if (!isReadonly2) { 1111 track(target, "get", key); 1112 } 1113 if (isShallow2) { 1114 return res; 1115 } 1116 if (isRef(res)) { 1117 return targetIsArray && isIntegerKey(key) ? res : res.value; 1118 } 1119 if (isObject$9(res)) { 1120 return isReadonly2 ? readonly(res) : reactive(res); 1121 } 1122 return res; 1123 } 1124} 1125class MutableReactiveHandler extends BaseReactiveHandler { 1126 constructor(isShallow2 = false) { 1127 super(false, isShallow2); 1128 } 1129 set(target, key, value, receiver) { 1130 let oldValue = target[key]; 1131 if (!this._isShallow) { 1132 const isOldValueReadonly = isReadonly(oldValue); 1133 if (!isShallow(value) && !isReadonly(value)) { 1134 oldValue = toRaw(oldValue); 1135 value = toRaw(value); 1136 } 1137 if (!isArray$3(target) && isRef(oldValue) && !isRef(value)) { 1138 if (isOldValueReadonly) { 1139 return false;
1140 } else { 1141 oldValue.value = value; 1142 return true; 1143 } 1144 } 1145 } 1146 const hadKey = isArray$3(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn$2(target, key); 1147 const result = Reflect.set( 1148 target, 1149 key, 1150 value, 1151 isRef(target) ? target : receiver 1152 ); 1153 if (target === toRaw(receiver)) { 1154 if (!hadKey) { 1155 trigger(target, "add", key, value); 1156 } else if (hasChanged(value, oldValue)) { 1157 trigger(target, "set", key, value); 1158 } 1159 } 1160 return result; 1161 } 1162 deleteProperty(target, key) { 1163 const hadKey = hasOwn$2(target, key); 1164 target[key]; 1165 const result = Reflect.deleteProperty(target, key); 1166 if (result && hadKey) { 1167 trigger(target, "delete", key, void 0); 1168 } 1169 return result; 1170 } 1171 has(target, key) { 1172 const result = Reflect.has(target, key); 1173 if (!isSymbol$2(key) || !builtInSymbols.has(key)) { 1174 track(target, "has", key); 1175 } 1176 return result; 1177 } 1178 ownKeys(target) { 1179 track( 1180 target, 1181 "iterate", 1182 isArray$3(target) ? "length" : ITERATE_KEY 1183 ); 1184 return Reflect.ownKeys(target); 1185 } 1186} 1187class ReadonlyReactiveHandler extends BaseReactiveHandler { 1188 constructor(isShallow2 = false) { 1189 super(true, isShallow2); 1190 } 1191 set(target, key) { 1192 return true; 1193 } 1194 deleteProperty(target, key) { 1195 return true; 1196 } 1197} 1198const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); 1199const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); 1200const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); 1201const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); 1202const toShallow = (value) => value; 1203const getProto = (v) => Reflect.getPrototypeOf(v); 1204function createIterableMethod(method, isReadonly2, isShallow2) { 1205 return function(...args) { 1206 const target = this["__v_raw"]; 1207 const rawTarget = toRaw(target); 1208 const targetIsMap = isMap(rawTarget); 1209 const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; 1210 const isKeyOnly = method === "keys" && targetIsMap; 1211 const innerIterator = target[method](...args); 1212 const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; 1213 !isReadonly2 && track( 1214 rawTarget, 1215 "iterate", 1216 isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY 1217 ); 1218 return { 1219 // iterator protocol 1220 next() { 1221 const { value, done } = innerIterator.next(); 1222 return done ? { value, done } : { 1223 value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), 1224 done 1225 }; 1226 }, 1227 // iterable protocol 1228 [Symbol.iterator]() { 1229 return this; 1230 } 1231 }; 1232 }; 1233} 1234function createReadonlyMethod(type) { 1235 return function(...args) { 1236 return type === "delete" ? false : type === "clear" ? void 0 : this; 1237 }; 1238} 1239function createInstrumentations(readonly2, shallow) { 1240 const instrumentations = { 1241 get(key) { 1242 const target = this["__v_raw"]; 1243 const rawTarget = toRaw(target); 1244 const rawKey = toRaw(key); 1245 if (!readonly2) { 1246 if (hasChanged(key, rawKey)) { 1247 track(rawTarget, "get", key); 1248 } 1249 track(rawTarget, "get", rawKey); 1250 } 1251 const { has } = getProto(rawTarget); 1252 const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive; 1253 if (has.call(rawTarget, key)) { 1254 return wrap(target.get(key)); 1255 } else if (has.call(rawTarget, rawKey)) { 1256 return wrap(target.get(rawKey)); 1257 } else if (target !== rawTarget) { 1258 target.get(key); 1259 } 1260 }, 1261 get size() { 1262 const target = this["__v_raw"]; 1263 !readonly2 && track(toRaw(target), "iterate", ITERATE_KEY); 1264 return Reflect.get(target, "size", target); 1265 }, 1266 has(key) { 1267 const target = this["__v_raw"]; 1268 const rawTarget = toRaw(target); 1269 const rawKey = toRaw(key); 1270 if (!readonly2) { 1271 if (hasChanged(key, rawKey)) { 1272 track(rawTarget, "has", key); 1273 } 1274 track(rawTarget, "has", rawKey); 1275 } 1276 return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); 1277 },
vendor: 16,931 bytes, lines 1278-1906
1278 forEach(callback, thisArg) { 1279 const observed = this; 1280 const target = observed["__v_raw"]; 1281 const rawTarget = toRaw(target); 1282 const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive; 1283 !readonly2 && track(rawTarget, "iterate", ITERATE_KEY); 1284 return target.forEach((value, key) => { 1285 return callback.call(thisArg, wrap(value), wrap(key), observed); 1286 }); 1287 } 1288 }; 1289 extend$5( 1290 instrumentations, 1291 readonly2 ? { 1292 add: createReadonlyMethod("add"), 1293 set: createReadonlyMethod("set"), 1294 delete: createReadonlyMethod("delete"), 1295 clear: createReadonlyMethod("clear") 1296 } : { 1297 add(value) { 1298 if (!shallow && !isShallow(value) && !isReadonly(value)) { 1299 value = toRaw(value); 1300 } 1301 const target = toRaw(this); 1302 const proto = getProto(target); 1303 const hadKey = proto.has.call(target, value); 1304 if (!hadKey) { 1305 target.add(value); 1306 trigger(target, "add", value, value); 1307 } 1308 return this; 1309 }, 1310 set(key, value) { 1311 if (!shallow && !isShallow(value) && !isReadonly(value)) { 1312 value = toRaw(value); 1313 } 1314 const target = toRaw(this); 1315 const { has, get: get2 } = getProto(target); 1316 let hadKey = has.call(target, key); 1317 if (!hadKey) { 1318 key = toRaw(key); 1319 hadKey = has.call(target, key); 1320 } 1321 const oldValue = get2.call(target, key); 1322 target.set(key, value); 1323 if (!hadKey) { 1324 trigger(target, "add", key, value); 1325 } else if (hasChanged(value, oldValue)) { 1326 trigger(target, "set", key, value); 1327 } 1328 return this; 1329 }, 1330 delete(key) { 1331 const target = toRaw(this); 1332 const { has, get: get2 } = getProto(target); 1333 let hadKey = has.call(target, key); 1334 if (!hadKey) { 1335 key = toRaw(key); 1336 hadKey = has.call(target, key); 1337 } 1338 get2 ? get2.call(target, key) : void 0; 1339 const result = target.delete(key); 1340 if (hadKey) { 1341 trigger(target, "delete", key, void 0); 1342 } 1343 return result; 1344 }, 1345 clear() { 1346 const target = toRaw(this); 1347 const hadItems = target.size !== 0; 1348 const result = target.clear(); 1349 if (hadItems) { 1350 trigger( 1351 target, 1352 "clear", 1353 void 0, 1354 void 0 1355 ); 1356 } 1357 return result; 1358 } 1359 } 1360 ); 1361 const iteratorMethods = [ 1362 "keys", 1363 "values", 1364 "entries", 1365 Symbol.iterator 1366 ]; 1367 iteratorMethods.forEach((method) => { 1368 instrumentations[method] = createIterableMethod(method, readonly2, shallow); 1369 }); 1370 return instrumentations; 1371} 1372function createInstrumentationGetter(isReadonly2, shallow) { 1373 const instrumentations = createInstrumentations(isReadonly2, shallow); 1374 return (target, key, receiver) => { 1375 if (key === "__v_isReactive") { 1376 return !isReadonly2; 1377 } else if (key === "__v_isReadonly") { 1378 return isReadonly2; 1379 } else if (key === "__v_raw") { 1380 return target; 1381 } 1382 return Reflect.get( 1383 hasOwn$2(instrumentations, key) && key in target ? instrumentations : target, 1384 key, 1385 receiver 1386 ); 1387 }; 1388} 1389const mutableCollectionHandlers = { 1390 get: /* @__PURE__ */ createInstrumentationGetter(false, false) 1391}; 1392const shallowCollectionHandlers = { 1393 get: /* @__PURE__ */ createInstrumentationGetter(false, true) 1394}; 1395const readonlyCollectionHandlers = { 1396 get: /* @__PURE__ */ createInstrumentationGetter(true, false) 1397}; 1398const shallowReadonlyCollectionHandlers = { 1399 get: /* @__PURE__ */ createInstrumentationGetter(true, true) 1400}; 1401const reactiveMap = /* @__PURE__ */ new WeakMap(); 1402const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); 1403const readonlyMap = /* @__PURE__ */ new WeakMap(); 1404const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); 1405function targetTypeMap(rawType) { 1406 switch (rawType) { 1407 case "Object": 1408 case "Array": 1409 return 1; 1410 case "Map": 1411 case "Set": 1412 case "WeakMap": 1413 case "WeakSet": 1414 return 2; 1415 default: 1416 return 0; 1417 } 1418} 1419function getTargetType(value) { 1420 return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); 1421} 1422function reactive(target) { 1423 if (isReadonly(target)) { 1424 return target; 1425 } 1426 return createReactiveObject( 1427 target, 1428 false, 1429 mutableHandlers, 1430 mutableCollectionHandlers, 1431 reactiveMap 1432 ); 1433} 1434function shallowReactive(target) { 1435 return createReactiveObject( 1436 target, 1437 false, 1438 shallowReactiveHandlers, 1439 shallowCollectionHandlers, 1440 shallowReactiveMap 1441 ); 1442} 1443function readonly(target) { 1444 return createReactiveObject( 1445 target, 1446 true, 1447 readonlyHandlers, 1448 readonlyCollectionHandlers, 1449 readonlyMap 1450 ); 1451} 1452function shallowReadonly(target) { 1453 return createReactiveObject( 1454 target, 1455 true, 1456 shallowReadonlyHandlers, 1457 shallowReadonlyCollectionHandlers, 1458 shallowReadonlyMap 1459 ); 1460} 1461function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { 1462 if (!isObject$9(target)) { 1463 return target; 1464 } 1465 if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { 1466 return target; 1467 } 1468 const targetType = getTargetType(target); 1469 if (targetType === 0) { 1470 return target; 1471 } 1472 const existingProxy = proxyMap.get(target); 1473 if (existingProxy) { 1474 return existingProxy; 1475 } 1476 const proxy = new Proxy( 1477 target, 1478 targetType === 2 ? collectionHandlers : baseHandlers 1479 ); 1480 proxyMap.set(target, proxy); 1481 return proxy; 1482} 1483function isReactive(value) { 1484 if (isReadonly(value)) { 1485 return isReactive(value["__v_raw"]); 1486 } 1487 return !!(value && value["__v_isReactive"]); 1488} 1489function isReadonly(value) { 1490 return !!(value && value["__v_isReadonly"]); 1491} 1492function isShallow(value) { 1493 return !!(value && value["__v_isShallow"]); 1494} 1495function isProxy(value) { 1496 return value ? !!value["__v_raw"] : false; 1497} 1498function toRaw(observed) { 1499 const raw = observed && observed["__v_raw"]; 1500 return raw ? toRaw(raw) : observed; 1501} 1502function markRaw(value) { 1503 if (!hasOwn$2(value, "__v_skip") && Object.isExtensible(value)) { 1504 def(value, "__v_skip", true); 1505 } 1506 return value; 1507} 1508const toReactive = (value) => isObject$9(value) ? reactive(value) : value; 1509const toReadonly = (value) => isObject$9(value) ? readonly(value) : value; 1510function isRef(r) { 1511 return r ? r["__v_isRef"] === true : false; 1512} 1513function ref(value) { 1514 return createRef(value, false); 1515} 1516function shallowRef(value) { 1517 return createRef(value, true); 1518} 1519function createRef(rawValue, shallow) { 1520 if (isRef(rawValue)) { 1521 return rawValue; 1522 } 1523 return new RefImpl(rawValue, shallow); 1524} 1525class RefImpl { 1526 constructor(value, isShallow2) { 1527 this.dep = new Dep(); 1528 this["__v_isRef"] = true; 1529 this["__v_isShallow"] = false; 1530 this._rawValue = isShallow2 ? value : toRaw(value); 1531 this._value = isShallow2 ? value : toReactive(value); 1532 this["__v_isShallow"] = isShallow2; 1533 } 1534 get value() { 1535 { 1536 this.dep.track(); 1537 } 1538 return this._value; 1539 } 1540 set value(newValue) { 1541 const oldValue = this._rawValue; 1542 const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); 1543 newValue = useDirectValue ? newValue : toRaw(newValue); 1544 if (hasChanged(newValue, oldValue)) { 1545 this._rawValue = newValue; 1546 this._value = useDirectValue ? newValue : toReactive(newValue); 1547 { 1548 this.dep.trigger(); 1549 } 1550 } 1551 } 1552} 1553function triggerRef(ref2) { 1554 if (ref2.dep) { 1555 { 1556 ref2.dep.trigger(); 1557 } 1558 } 1559} 1560function unref(ref2) { 1561 return isRef(ref2) ? ref2.value : ref2; 1562} 1563function toValue(source) { 1564 return isFunction$3(source) ? source() : unref(source); 1565} 1566const shallowUnwrapHandlers = { 1567 get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), 1568 set: (target, key, value, receiver) => { 1569 const oldValue = target[key]; 1570 if (isRef(oldValue) && !isRef(value)) { 1571 oldValue.value = value; 1572 return true; 1573 } else { 1574 return Reflect.set(target, key, value, receiver); 1575 } 1576 } 1577}; 1578function proxyRefs(objectWithRefs) { 1579 return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); 1580} 1581class CustomRefImpl { 1582 constructor(factory) { 1583 this["__v_isRef"] = true; 1584 this._value = void 0; 1585 const dep = this.dep = new Dep(); 1586 const { get: get2, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); 1587 this._get = get2; 1588 this._set = set; 1589 } 1590 get value() { 1591 return this._value = this._get(); 1592 } 1593 set value(newVal) { 1594 this._set(newVal); 1595 } 1596} 1597function customRef(factory) { 1598 return new CustomRefImpl(factory); 1599} 1600function toRefs(object) { 1601 const ret = isArray$3(object) ? new Array(object.length) : {}; 1602 for (const key in object) { 1603 ret[key] = propertyToRef(object, key); 1604 } 1605 return ret; 1606} 1607class ObjectRefImpl { 1608 constructor(_object, _key, _defaultValue) { 1609 this._object = _object; 1610 this._key = _key; 1611 this._defaultValue = _defaultValue; 1612 this["__v_isRef"] = true; 1613 this._value = void 0; 1614 } 1615 get value() { 1616 const val = this._object[this._key]; 1617 return this._value = val === void 0 ? this._defaultValue : val; 1618 } 1619 set value(newVal) { 1620 this._object[this._key] = newVal; 1621 } 1622 get dep() { 1623 return getDepFromReactive(toRaw(this._object), this._key); 1624 } 1625} 1626class GetterRefImpl { 1627 constructor(_getter) { 1628 this._getter = _getter; 1629 this["__v_isRef"] = true; 1630 this["__v_isReadonly"] = true; 1631 this._value = void 0; 1632 } 1633 get value() { 1634 return this._value = this._getter(); 1635 } 1636} 1637function toRef(source, key, defaultValue) { 1638 if (isRef(source)) { 1639 return source; 1640 } else if (isFunction$3(source)) { 1641 return new GetterRefImpl(source); 1642 } else if (isObject$9(source) && arguments.length > 1) { 1643 return propertyToRef(source, key, defaultValue); 1644 } else { 1645 return ref(source); 1646 } 1647} 1648function propertyToRef(source, key, defaultValue) { 1649 const val = source[key]; 1650 return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); 1651} 1652class ComputedRefImpl { 1653 constructor(fn, setter, isSSR) { 1654 this.fn = fn; 1655 this.setter = setter; 1656 this._value = void 0; 1657 this.dep = new Dep(this); 1658 this.__v_isRef = true; 1659 this.deps = void 0; 1660 this.depsTail = void 0; 1661 this.flags = 16; 1662 this.globalVersion = globalVersion - 1; 1663 this.next = void 0; 1664 this.effect = this; 1665 this["__v_isReadonly"] = !setter; 1666 this.isSSR = isSSR; 1667 } 1668 /** 1669 * @internal 1670 */ 1671 notify() { 1672 this.flags |= 16; 1673 if (!(this.flags & 8) && // avoid infinite self recursion 1674 activeSub !== this) { 1675 batch(this, true); 1676 return true; 1677 } 1678 } 1679 get value() { 1680 const link = this.dep.track(); 1681 refreshComputed(this); 1682 if (link) { 1683 link.version = this.dep.version; 1684 } 1685 return this._value; 1686 } 1687 set value(newValue) { 1688 if (this.setter) { 1689 this.setter(newValue); 1690 } 1691 } 1692} 1693function computed$1(getterOrOptions, debugOptions, isSSR = false) { 1694 let getter; 1695 let setter; 1696 if (isFunction$3(getterOrOptions)) { 1697 getter = getterOrOptions; 1698 } else { 1699 getter = getterOrOptions.get; 1700 setter = getterOrOptions.set; 1701 } 1702 const cRef = new ComputedRefImpl(getter, setter, isSSR); 1703 return cRef; 1704} 1705const TrackOpTypes = { 1706 "GET": "get", 1707 "HAS": "has", 1708 "ITERATE": "iterate" 1709}; 1710const TriggerOpTypes = { 1711 "SET": "set", 1712 "ADD": "add", 1713 "DELETE": "delete", 1714 "CLEAR": "clear" 1715}; 1716const INITIAL_WATCHER_VALUE = {}; 1717const cleanupMap = /* @__PURE__ */ new WeakMap(); 1718let activeWatcher = void 0; 1719function getCurrentWatcher() { 1720 return activeWatcher; 1721} 1722function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { 1723 if (owner) { 1724 let cleanups = cleanupMap.get(owner); 1725 if (!cleanups) cleanupMap.set(owner, cleanups = []); 1726 cleanups.push(cleanupFn); 1727 } 1728} 1729function watch$1(source, cb, options2 = EMPTY_OBJ) { 1730 const { immediate, deep, once, scheduler, augmentJob, call } = options2; 1731 const reactiveGetter = (source2) => { 1732 if (deep) return source2; 1733 if (isShallow(source2) || deep === false || deep === 0) 1734 return traverse(source2, 1); 1735 return traverse(source2); 1736 }; 1737 let effect2; 1738 let getter; 1739 let cleanup; 1740 let boundCleanup; 1741 let forceTrigger = false; 1742 let isMultiSource = false; 1743 if (isRef(source)) { 1744 getter = () => source.value; 1745 forceTrigger = isShallow(source); 1746 } else if (isReactive(source)) { 1747 getter = () => reactiveGetter(source); 1748 forceTrigger = true; 1749 } else if (isArray$3(source)) { 1750 isMultiSource = true; 1751 forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); 1752 getter = () => source.map((s) => { 1753 if (isRef(s)) { 1754 return s.value; 1755 } else if (isReactive(s)) { 1756 return reactiveGetter(s); 1757 } else if (isFunction$3(s)) { 1758 return call ? call(s, 2) : s(); 1759 } else ; 1760 }); 1761 } else if (isFunction$3(source)) { 1762 if (cb) { 1763 getter = call ? () => call(source, 2) : source; 1764 } else { 1765 getter = () => { 1766 if (cleanup) { 1767 pauseTracking(); 1768 try { 1769 cleanup(); 1770 } finally { 1771 resetTracking(); 1772 } 1773 } 1774 const currentEffect = activeWatcher; 1775 activeWatcher = effect2; 1776 try { 1777 return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); 1778 } finally { 1779 activeWatcher = currentEffect; 1780 } 1781 }; 1782 } 1783 } else { 1784 getter = NOOP; 1785 } 1786 if (cb && deep) { 1787 const baseGetter = getter; 1788 const depth = deep === true ? Infinity : deep; 1789 getter = () => traverse(baseGetter(), depth); 1790 } 1791 const scope = getCurrentScope(); 1792 const watchHandle = () => { 1793 effect2.stop(); 1794 if (scope && scope.active) { 1795 remove(scope.effects, effect2); 1796 } 1797 }; 1798 if (once && cb) { 1799 const _cb = cb; 1800 cb = (...args) => { 1801 _cb(...args); 1802 watchHandle(); 1803 }; 1804 } 1805 let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; 1806 const job = (immediateFirstRun) => { 1807 if (!(effect2.flags & 1) || !effect2.dirty && !immediateFirstRun) { 1808 return; 1809 } 1810 if (cb) { 1811 const newValue = effect2.run(); 1812 if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { 1813 if (cleanup) { 1814 cleanup(); 1815 } 1816 const currentWatcher = activeWatcher; 1817 activeWatcher = effect2; 1818 try { 1819 const args = [ 1820 newValue, 1821 // pass undefined as the old value when it's changed for the first time 1822 oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, 1823 boundCleanup 1824 ]; 1825 oldValue = newValue; 1826 call ? call(cb, 3, args) : ( 1827 // @ts-expect-error 1828 cb(...args) 1829 ); 1830 } finally { 1831 activeWatcher = currentWatcher; 1832 } 1833 } 1834 } else { 1835 effect2.run(); 1836 } 1837 }; 1838 if (augmentJob) { 1839 augmentJob(job); 1840 } 1841 effect2 = new ReactiveEffect(getter); 1842 effect2.scheduler = scheduler ? () => scheduler(job, false) : job; 1843 boundCleanup = (fn) => onWatcherCleanup(fn, false, effect2); 1844 cleanup = effect2.onStop = () => { 1845 const cleanups = cleanupMap.get(effect2); 1846 if (cleanups) { 1847 if (call) { 1848 call(cleanups, 4); 1849 } else { 1850 for (const cleanup2 of cleanups) cleanup2(); 1851 } 1852 cleanupMap.delete(effect2); 1853 } 1854 }; 1855 if (cb) { 1856 if (immediate) { 1857 job(true); 1858 } else { 1859 oldValue = effect2.run(); 1860 } 1861 } else if (scheduler) { 1862 scheduler(job.bind(null, true), true); 1863 } else { 1864 effect2.run(); 1865 } 1866 watchHandle.pause = effect2.pause.bind(effect2); 1867 watchHandle.resume = effect2.resume.bind(effect2); 1868 watchHandle.stop = watchHandle; 1869 return watchHandle; 1870} 1871function traverse(value, depth = Infinity, seen2) { 1872 if (depth <= 0 || !isObject$9(value) || value["__v_skip"]) { 1873 return value; 1874 } 1875 seen2 = seen2 || /* @__PURE__ */ new Set(); 1876 if (seen2.has(value)) { 1877 return value; 1878 } 1879 seen2.add(value); 1880 depth--; 1881 if (isRef(value)) { 1882 traverse(value.value, depth, seen2); 1883 } else if (isArray$3(value)) { 1884 for (let i = 0; i < value.length; i++) { 1885 traverse(value[i], depth, seen2); 1886 } 1887 } else if (isSet(value) || isMap(value)) { 1888 value.forEach((v) => { 1889 traverse(v, depth, seen2); 1890 }); 1891 } else if (isPlainObject$3(value)) { 1892 for (const key in value) { 1893 traverse(value[key], depth, seen2); 1894 } 1895 for (const key of Object.getOwnPropertySymbols(value)) { 1896 if (Object.prototype.propertyIsEnumerable.call(value, key)) { 1897 traverse(value[key], depth, seen2); 1898 } 1899 } 1900 } 1901 return value; 1902} 1903/** 1904* @vue/runtime-core v3.5.16 1905* (c) 2018-present Yuxi (Evan) You and Vue contributors 1906* @license MIT
vendor: 4,602 bytes, lines 1907-2070
1907**/ 1908const stack$1 = []; 1909function pushWarningContext(vnode) { 1910 stack$1.push(vnode); 1911} 1912function popWarningContext() { 1913 stack$1.pop(); 1914} 1915let isWarning = false; 1916function warn$1(msg, ...args) { 1917 if (isWarning) return; 1918 isWarning = true; 1919 pauseTracking(); 1920 const instance = stack$1.length ? stack$1[stack$1.length - 1].component : null; 1921 const appWarnHandler = instance && instance.appContext.config.warnHandler; 1922 const trace = getComponentTrace(); 1923 if (appWarnHandler) { 1924 callWithErrorHandling( 1925 appWarnHandler, 1926 instance, 1927 11, 1928 [ 1929 // eslint-disable-next-line no-restricted-syntax 1930 msg + args.map((a) => { 1931 var _a, _b; 1932 return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); 1933 }).join(""), 1934 instance && instance.proxy, 1935 trace.map( 1936 ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` 1937 ).join("\n"), 1938 trace 1939 ] 1940 ); 1941 } else { 1942 const warnArgs = [`[Vue warn]: ${msg}`, ...args]; 1943 if (trace.length && // avoid spamming console during tests 1944 true) { 1945 warnArgs.push(` 1946`, ...formatTrace(trace)); 1947 } 1948 console.warn(...warnArgs); 1949 } 1950 resetTracking(); 1951 isWarning = false; 1952} 1953function getComponentTrace() { 1954 let currentVNode = stack$1[stack$1.length - 1]; 1955 if (!currentVNode) { 1956 return []; 1957 } 1958 const normalizedStack = []; 1959 while (currentVNode) { 1960 const last = normalizedStack[0]; 1961 if (last && last.vnode === currentVNode) { 1962 last.recurseCount++; 1963 } else { 1964 normalizedStack.push({ 1965 vnode: currentVNode, 1966 recurseCount: 0 1967 }); 1968 } 1969 const parentInstance = currentVNode.component && currentVNode.component.parent; 1970 currentVNode = parentInstance && parentInstance.vnode; 1971 } 1972 return normalizedStack; 1973} 1974function formatTrace(trace) { 1975 const logs = []; 1976 trace.forEach((entry, i) => { 1977 logs.push(...i === 0 ? [] : [` 1978`], ...formatTraceEntry(entry)); 1979 }); 1980 return logs; 1981} 1982function formatTraceEntry({ vnode, recurseCount }) { 1983 const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; 1984 const isRoot = vnode.component ? vnode.component.parent == null : false; 1985 const open = ` at <${formatComponentName( 1986 vnode.component, 1987 vnode.type, 1988 isRoot 1989 )}`; 1990 const close = `>` + postfix; 1991 return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; 1992} 1993function formatProps(props2) { 1994 const res = []; 1995 const keys = Object.keys(props2); 1996 keys.slice(0, 3).forEach((key) => { 1997 res.push(...formatProp(key, props2[key])); 1998 }); 1999 if (keys.length > 3) { 2000 res.push(` ...`); 2001 } 2002 return res; 2003} 2004function formatProp(key, value, raw) { 2005 if (isString$3(value)) { 2006 value = JSON.stringify(value); 2007 return raw ? value : [`${key}=${value}`]; 2008 } else if (typeof value === "number" || typeof value === "boolean" || value == null) { 2009 return raw ? value : [`${key}=${value}`]; 2010 } else if (isRef(value)) { 2011 value = formatProp(key, toRaw(value.value), true); 2012 return raw ? value : [`${key}=Ref<`, value, `>`]; 2013 } else if (isFunction$3(value)) { 2014 return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; 2015 } else { 2016 value = toRaw(value); 2017 return raw ? value : [`${key}=`, value]; 2018 } 2019} 2020function assertNumber(val, type) { 2021 return; 2022} 2023const ErrorCodes = { 2024 "SETUP_FUNCTION": 0, 2025 "0": "SETUP_FUNCTION", 2026 "RENDER_FUNCTION": 1, 2027 "1": "RENDER_FUNCTION", 2028 "NATIVE_EVENT_HANDLER": 5, 2029 "5": "NATIVE_EVENT_HANDLER", 2030 "COMPONENT_EVENT_HANDLER": 6, 2031 "6": "COMPONENT_EVENT_HANDLER", 2032 "VNODE_HOOK": 7, 2033 "7": "VNODE_HOOK", 2034 "DIRECTIVE_HOOK": 8, 2035 "8": "DIRECTIVE_HOOK", 2036 "TRANSITION_HOOK": 9, 2037 "9": "TRANSITION_HOOK", 2038 "APP_ERROR_HANDLER": 10, 2039 "10": "APP_ERROR_HANDLER", 2040 "APP_WARN_HANDLER": 11, 2041 "11": "APP_WARN_HANDLER", 2042 "FUNCTION_REF": 12, 2043 "12": "FUNCTION_REF", 2044 "ASYNC_COMPONENT_LOADER": 13, 2045 "13": "ASYNC_COMPONENT_LOADER", 2046 "SCHEDULER": 14, 2047 "14": "SCHEDULER", 2048 "COMPONENT_UPDATE": 15, 2049 "15": "COMPONENT_UPDATE", 2050 "APP_UNMOUNT_CLEANUP": 16, 2051 "16": "APP_UNMOUNT_CLEANUP" 2052}; 2053const ErrorTypeStrings$1 = { 2054 ["sp"]: "serverPrefetch hook", 2055 ["bc"]: "beforeCreate hook", 2056 ["c"]: "created hook", 2057 ["bm"]: "beforeMount hook", 2058 ["m"]: "mounted hook", 2059 ["bu"]: "beforeUpdate hook", 2060 ["u"]: "updated", 2061 ["bum"]: "beforeUnmount hook", 2062 ["um"]: "unmounted hook", 2063 ["a"]: "activated hook", 2064 ["da"]: "deactivated hook", 2065 ["ec"]: "errorCaptured hook", 2066 ["rtc"]: "renderTracked hook", 2067 ["rtg"]: "renderTriggered hook", 2068 [0]: "setup function", 2069 [1]: "render function", 2070 [2]: "watcher getter",
vendor: 1,486 bytes, lines 2071-2118
2071 [3]: "watcher callback", 2072 [4]: "watcher cleanup function", 2073 [5]: "native event handler", 2074 [6]: "component event handler", 2075 [7]: "vnode hook", 2076 [8]: "directive hook", 2077 [9]: "transition hook", 2078 [10]: "app errorHandler", 2079 [11]: "app warnHandler", 2080 [12]: "ref function", 2081 [13]: "async component loader", 2082 [14]: "scheduler flush", 2083 [15]: "component update", 2084 [16]: "app unmount cleanup function" 2085}; 2086function callWithErrorHandling(fn, instance, type, args) { 2087 try { 2088 return args ? fn(...args) : fn(); 2089 } catch (err) { 2090 handleError(err, instance, type); 2091 } 2092} 2093function callWithAsyncErrorHandling(fn, instance, type, args) { 2094 if (isFunction$3(fn)) { 2095 const res = callWithErrorHandling(fn, instance, type, args); 2096 if (res && isPromise$2(res)) { 2097 res.catch((err) => { 2098 handleError(err, instance, type); 2099 }); 2100 } 2101 return res; 2102 } 2103 if (isArray$3(fn)) { 2104 const values = []; 2105 for (let i = 0; i < fn.length; i++) { 2106 values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); 2107 } 2108 return values; 2109 } 2110} 2111function handleError(err, instance, type, throwInDev = true) { 2112 const contextVNode = instance ? instance.vnode : null; 2113 const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; 2114 if (instance) { 2115 let cur = instance.parent; 2116 const exposedInstance = instance.proxy; 2117 const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`; 2118 while (cur) {
2119 const errorCapturedHooks = cur.ec; 2120 if (errorCapturedHooks) { 2121 for (let i = 0; i < errorCapturedHooks.length; i++) { 2122 if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { 2123 return; 2124 } 2125 } 2126 } 2127 cur = cur.parent; 2128 } 2129 if (errorHandler) { 2130 pauseTracking(); 2131 callWithErrorHandling(errorHandler, null, 10, [ 2132 err, 2133 exposedInstance, 2134 errorInfo 2135 ]); 2136 resetTracking(); 2137 return; 2138 } 2139 } 2140 logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); 2141} 2142function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { 2143 if (throwInProd) { 2144 throw err; 2145 } else { 2146 console.error(err); 2147 } 2148} 2149const queue = []; 2150let flushIndex = -1; 2151const pendingPostFlushCbs = []; 2152let activePostFlushCbs = null; 2153let postFlushIndex = 0; 2154const resolvedPromise = /* @__PURE__ */ Promise.resolve(); 2155let currentFlushPromise = null; 2156function nextTick$1(fn) { 2157 const p2 = currentFlushPromise || resolvedPromise; 2158 return fn ? p2.then(this ? fn.bind(this) : fn) : p2; 2159} 2160function findInsertionIndex(id) { 2161 let start = flushIndex + 1; 2162 let end = queue.length; 2163 while (start < end) { 2164 const middle = start + end >>> 1; 2165 const middleJob = queue[middle]; 2166 const middleJobId = getId(middleJob); 2167 if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { 2168 start = middle + 1; 2169 } else { 2170 end = middle; 2171 } 2172 } 2173 return start; 2174} 2175function queueJob(job) { 2176 if (!(job.flags & 1)) { 2177 const jobId = getId(job); 2178 const lastJob = queue[queue.length - 1]; 2179 if (!lastJob || // fast path when the job id is larger than the tail 2180 !(job.flags & 2) && jobId >= getId(lastJob)) { 2181 queue.push(job); 2182 } else { 2183 queue.splice(findInsertionIndex(jobId), 0, job); 2184 } 2185 job.flags |= 1; 2186 queueFlush(); 2187 } 2188} 2189function queueFlush() { 2190 if (!currentFlushPromise) { 2191 currentFlushPromise = resolvedPromise.then(flushJobs); 2192 } 2193} 2194function queuePostFlushCb(cb) { 2195 if (!isArray$3(cb)) { 2196 if (activePostFlushCbs && cb.id === -1) { 2197 activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); 2198 } else if (!(cb.flags & 1)) { 2199 pendingPostFlushCbs.push(cb); 2200 cb.flags |= 1; 2201 } 2202 } else { 2203 pendingPostFlushCbs.push(...cb); 2204 } 2205 queueFlush(); 2206} 2207function flushPreFlushCbs(instance, seen2, i = flushIndex + 1) { 2208 for (; i < queue.length; i++) { 2209 const cb = queue[i]; 2210 if (cb && cb.flags & 2) { 2211 if (instance && cb.id !== instance.uid) { 2212 continue; 2213 } 2214 queue.splice(i, 1); 2215 i--; 2216 if (cb.flags & 4) { 2217 cb.flags &= -2; 2218 } 2219 cb(); 2220 if (!(cb.flags & 4)) { 2221 cb.flags &= -2; 2222 } 2223 } 2224 } 2225} 2226function flushPostFlushCbs(seen2) { 2227 if (pendingPostFlushCbs.length) { 2228 const deduped = [...new Set(pendingPostFlushCbs)].sort( 2229 (a, b) => getId(a) - getId(b) 2230 ); 2231 pendingPostFlushCbs.length = 0; 2232 if (activePostFlushCbs) { 2233 activePostFlushCbs.push(...deduped); 2234 return; 2235 } 2236 activePostFlushCbs = deduped; 2237 for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { 2238 const cb = activePostFlushCbs[postFlushIndex]; 2239 if (cb.flags & 4) { 2240 cb.flags &= -2; 2241 } 2242 if (!(cb.flags & 8)) cb(); 2243 cb.flags &= -2; 2244 } 2245 activePostFlushCbs = null; 2246 postFlushIndex = 0; 2247 } 2248} 2249const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; 2250function flushJobs(seen2) { 2251 try { 2252 for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { 2253 const job = queue[flushIndex]; 2254 if (job && !(job.flags & 8)) { 2255 if (false) ; 2256 if (job.flags & 4) { 2257 job.flags &= ~1; 2258 } 2259 callWithErrorHandling( 2260 job, 2261 job.i, 2262 job.i ? 15 : 14 2263 ); 2264 if (!(job.flags & 4)) { 2265 job.flags &= ~1; 2266 } 2267 } 2268 } 2269 } finally { 2270 for (; flushIndex < queue.length; flushIndex++) { 2271 const job = queue[flushIndex]; 2272 if (job) { 2273 job.flags &= -2; 2274 } 2275 } 2276 flushIndex = -1; 2277 queue.length = 0; 2278 flushPostFlushCbs(); 2279 currentFlushPromise = null; 2280 if (queue.length || pendingPostFlushCbs.length) { 2281 flushJobs(); 2282 } 2283 } 2284} 2285let devtools$1; 2286let buffer = []; 2287function setDevtoolsHook$1(hook, target) { 2288 var _a, _b; 2289 devtools$1 = hook; 2290 if (devtools$1) { 2291 devtools$1.enabled = true; 2292 buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); 2293 buffer = []; 2294 } else if ( 2295 // handle late devtools injection - only do this if we are in an actual 2296 // browser environment to avoid the timer handle stalling test runner exit 2297 // (#4815) 2298 typeof window !== "undefined" && // some envs mock window but not fully 2299 window.HTMLElement && // also exclude jsdom 2300 // eslint-disable-next-line no-restricted-syntax 2301 !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) 2302 ) { 2303 const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; 2304 replay.push((newHook) => {
2305 setDevtoolsHook$1(newHook, target); 2306 }); 2307 setTimeout(() => { 2308 if (!devtools$1) { 2309 target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; 2310 buffer = []; 2311 } 2312 }, 3e3); 2313 } else { 2314 buffer = []; 2315 } 2316} 2317let currentRenderingInstance = null; 2318let currentScopeId = null; 2319function setCurrentRenderingInstance(instance) { 2320 const prev = currentRenderingInstance; 2321 currentRenderingInstance = instance; 2322 currentScopeId = instance && instance.type.__scopeId || null; 2323 return prev; 2324} 2325function pushScopeId(id) { 2326 currentScopeId = id; 2327} 2328function popScopeId() { 2329 currentScopeId = null; 2330} 2331const withScopeId = (_id) => withCtx; 2332function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { 2333 if (!ctx) return fn; 2334 if (fn._n) { 2335 return fn; 2336 } 2337 const renderFnWithContext = (...args) => { 2338 if (renderFnWithContext._d) { 2339 setBlockTracking(-1); 2340 } 2341 const prevInstance = setCurrentRenderingInstance(ctx); 2342 let res; 2343 try { 2344 res = fn(...args); 2345 } finally { 2346 setCurrentRenderingInstance(prevInstance); 2347 if (renderFnWithContext._d) { 2348 setBlockTracking(1); 2349 } 2350 } 2351 return res; 2352 }; 2353 renderFnWithContext._n = true; 2354 renderFnWithContext._c = true; 2355 renderFnWithContext._d = true; 2356 return renderFnWithContext; 2357} 2358function withDirectives(vnode, directives) { 2359 if (currentRenderingInstance === null) { 2360 return vnode; 2361 } 2362 const instance = getComponentPublicInstance(currentRenderingInstance); 2363 const bindings = vnode.dirs || (vnode.dirs = []); 2364 for (let i = 0; i < directives.length; i++) { 2365 let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; 2366 if (dir) { 2367 if (isFunction$3(dir)) { 2368 dir = { 2369 mounted: dir, 2370 updated: dir 2371 }; 2372 } 2373 if (dir.deep) { 2374 traverse(value); 2375 } 2376 bindings.push({ 2377 dir, 2378 instance, 2379 value, 2380 oldValue: void 0, 2381 arg, 2382 modifiers 2383 }); 2384 } 2385 } 2386 return vnode; 2387} 2388function invokeDirectiveHook(vnode, prevVNode, instance, name) { 2389 const bindings = vnode.dirs; 2390 const oldBindings = prevVNode && prevVNode.dirs; 2391 for (let i = 0; i < bindings.length; i++) { 2392 const binding = bindings[i]; 2393 if (oldBindings) { 2394 binding.oldValue = oldBindings[i].value; 2395 } 2396 let hook = binding.dir[name]; 2397 if (hook) { 2398 pauseTracking(); 2399 callWithAsyncErrorHandling(hook, instance, 8, [ 2400 vnode.el, 2401 binding, 2402 vnode, 2403 prevVNode 2404 ]); 2405 resetTracking(); 2406 } 2407 } 2408} 2409const TeleportEndKey = Symbol("_vte"); 2410const isTeleport = (type) => type.__isTeleport; 2411const isTeleportDisabled = (props2) => props2 && (props2.disabled || props2.disabled === ""); 2412const isTeleportDeferred = (props2) => props2 && (props2.defer || props2.defer === ""); 2413const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; 2414const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; 2415const resolveTarget = (props2, select2) => { 2416 const targetSelector = props2 && props2.to; 2417 if (isString$3(targetSelector)) { 2418 if (!select2) { 2419 return null; 2420 } else { 2421 const target = select2(targetSelector); 2422 return target; 2423 } 2424 } else { 2425 return targetSelector; 2426 } 2427}; 2428const TeleportImpl = { 2429 name: "Teleport", 2430 __isTeleport: true, 2431 process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { 2432 const { 2433 mc: mountChildren, 2434 pc: patchChildren, 2435 pbc: patchBlockChildren, 2436 o: { insert, querySelector, createText, createComment } 2437 } = internals; 2438 const disabled = isTeleportDisabled(n2.props); 2439 let { shapeFlag, children, dynamicChildren } = n2; 2440 if (n1 == null) { 2441 const placeholder = n2.el = createText(""); 2442 const mainAnchor = n2.anchor = createText(""); 2443 insert(placeholder, container, anchor); 2444 insert(mainAnchor, container, anchor); 2445 const mount = (container2, anchor2) => { 2446 if (shapeFlag & 16) { 2447 if (parentComponent && parentComponent.isCE) { 2448 parentComponent.ce._teleportTarget = container2; 2449 } 2450 mountChildren( 2451 children, 2452 container2, 2453 anchor2, 2454 parentComponent, 2455 parentSuspense, 2456 namespace, 2457 slotScopeIds, 2458 optimized 2459 ); 2460 } 2461 }; 2462 const mountToTarget = () => { 2463 const target = n2.target = resolveTarget(n2.props, querySelector); 2464 const targetAnchor = prepareAnchor(target, n2, createText, insert); 2465 if (target) { 2466 if (namespace !== "svg" && isTargetSVG(target)) { 2467 namespace = "svg"; 2468 } else if (namespace !== "mathml" && isTargetMathML(target)) { 2469 namespace = "mathml"; 2470 } 2471 if (!disabled) { 2472 mount(target, targetAnchor); 2473 updateCssVars(n2, false); 2474 } 2475 } 2476 }; 2477 if (disabled) { 2478 mount(container, mainAnchor); 2479 updateCssVars(n2, true); 2480 } 2481 if (isTeleportDeferred(n2.props)) { 2482 n2.el.__isMounted = false;
2483 queuePostRenderEffect(() => { 2484 mountToTarget(); 2485 delete n2.el.__isMounted; 2486 }, parentSuspense); 2487 } else { 2488 mountToTarget(); 2489 } 2490 } else { 2491 if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { 2492 queuePostRenderEffect(() => { 2493 TeleportImpl.process( 2494 n1, 2495 n2, 2496 container, 2497 anchor, 2498 parentComponent, 2499 parentSuspense, 2500 namespace, 2501 slotScopeIds, 2502 optimized, 2503 internals 2504 ); 2505 }, parentSuspense); 2506 return; 2507 } 2508 n2.el = n1.el; 2509 n2.targetStart = n1.targetStart; 2510 const mainAnchor = n2.anchor = n1.anchor; 2511 const target = n2.target = n1.target; 2512 const targetAnchor = n2.targetAnchor = n1.targetAnchor; 2513 const wasDisabled = isTeleportDisabled(n1.props); 2514 const currentContainer = wasDisabled ? container : target; 2515 const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; 2516 if (namespace === "svg" || isTargetSVG(target)) { 2517 namespace = "svg"; 2518 } else if (namespace === "mathml" || isTargetMathML(target)) { 2519 namespace = "mathml"; 2520 } 2521 if (dynamicChildren) { 2522 patchBlockChildren( 2523 n1.dynamicChildren, 2524 dynamicChildren, 2525 currentContainer, 2526 parentComponent, 2527 parentSuspense, 2528 namespace, 2529 slotScopeIds 2530 ); 2531 traverseStaticChildren(n1, n2, true); 2532 } else if (!optimized) { 2533 patchChildren( 2534 n1, 2535 n2, 2536 currentContainer, 2537 currentAnchor, 2538 parentComponent, 2539 parentSuspense, 2540 namespace, 2541 slotScopeIds, 2542 false 2543 ); 2544 } 2545 if (disabled) { 2546 if (!wasDisabled) { 2547 moveTeleport( 2548 n2, 2549 container, 2550 mainAnchor, 2551 internals, 2552 1 2553 ); 2554 } else { 2555 if (n2.props && n1.props && n2.props.to !== n1.props.to) { 2556 n2.props.to = n1.props.to; 2557 } 2558 } 2559 } else { 2560 if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { 2561 const nextTarget = n2.target = resolveTarget( 2562 n2.props, 2563 querySelector 2564 ); 2565 if (nextTarget) { 2566 moveTeleport( 2567 n2, 2568 nextTarget, 2569 null, 2570 internals, 2571 0 2572 ); 2573 } 2574 } else if (wasDisabled) { 2575 moveTeleport( 2576 n2, 2577 target, 2578 targetAnchor, 2579 internals, 2580 1 2581 ); 2582 } 2583 } 2584 updateCssVars(n2, disabled); 2585 } 2586 }, 2587 remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { 2588 const { 2589 shapeFlag, 2590 children, 2591 anchor, 2592 targetStart, 2593 targetAnchor, 2594 target, 2595 props: props2 2596 } = vnode; 2597 if (target) { 2598 hostRemove(targetStart); 2599 hostRemove(targetAnchor); 2600 } 2601 doRemove && hostRemove(anchor); 2602 if (shapeFlag & 16) { 2603 const shouldRemove = doRemove || !isTeleportDisabled(props2); 2604 for (let i = 0; i < children.length; i++) { 2605 const child = children[i]; 2606 unmount( 2607 child, 2608 parentComponent, 2609 parentSuspense, 2610 shouldRemove, 2611 !!child.dynamicChildren 2612 ); 2613 } 2614 } 2615 }, 2616 move: moveTeleport, 2617 hydrate: hydrateTeleport 2618}; 2619function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { 2620 if (moveType === 0) { 2621 insert(vnode.targetAnchor, container, parentAnchor); 2622 } 2623 const { el, anchor, shapeFlag, children, props: props2 } = vnode; 2624 const isReorder = moveType === 2; 2625 if (isReorder) { 2626 insert(el, container, parentAnchor); 2627 } 2628 if (!isReorder || isTeleportDisabled(props2)) { 2629 if (shapeFlag & 16) { 2630 for (let i = 0; i < children.length; i++) { 2631 move( 2632 children[i], 2633 container, 2634 parentAnchor, 2635 2 2636 ); 2637 } 2638 } 2639 } 2640 if (isReorder) { 2641 insert(anchor, container, parentAnchor); 2642 } 2643} 2644function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { 2645 o: { nextSibling, parentNode, querySelector, insert, createText } 2646}, hydrateChildren) { 2647 const target = vnode.target = resolveTarget( 2648 vnode.props, 2649 querySelector 2650 ); 2651 if (target) { 2652 const disabled = isTeleportDisabled(vnode.props); 2653 const targetNode = target._lpa || target.firstChild; 2654 if (vnode.shapeFlag & 16) { 2655 if (disabled) { 2656 vnode.anchor = hydrateChildren( 2657 nextSibling(node), 2658 vnode, 2659 parentNode(node), 2660 parentComponent, 2661 parentSuspense, 2662 slotScopeIds, 2663 optimized 2664 ); 2665 vnode.targetStart = targetNode;
2666 vnode.targetAnchor = targetNode && nextSibling(targetNode); 2667 } else { 2668 vnode.anchor = nextSibling(node); 2669 let targetAnchor = targetNode; 2670 while (targetAnchor) { 2671 if (targetAnchor && targetAnchor.nodeType === 8) { 2672 if (targetAnchor.data === "teleport start anchor") { 2673 vnode.targetStart = targetAnchor; 2674 } else if (targetAnchor.data === "teleport anchor") { 2675 vnode.targetAnchor = targetAnchor; 2676 target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); 2677 break; 2678 } 2679 } 2680 targetAnchor = nextSibling(targetAnchor); 2681 } 2682 if (!vnode.targetAnchor) { 2683 prepareAnchor(target, vnode, createText, insert); 2684 } 2685 hydrateChildren( 2686 targetNode && nextSibling(targetNode), 2687 vnode, 2688 target, 2689 parentComponent, 2690 parentSuspense, 2691 slotScopeIds, 2692 optimized 2693 ); 2694 } 2695 } 2696 updateCssVars(vnode, disabled); 2697 } 2698 return vnode.anchor && nextSibling(vnode.anchor); 2699} 2700const Teleport = TeleportImpl; 2701function updateCssVars(vnode, isDisabled) { 2702 const ctx = vnode.ctx; 2703 if (ctx && ctx.ut) { 2704 let node, anchor; 2705 if (isDisabled) { 2706 node = vnode.el; 2707 anchor = vnode.anchor; 2708 } else { 2709 node = vnode.targetStart; 2710 anchor = vnode.targetAnchor; 2711 } 2712 while (node && node !== anchor) { 2713 if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); 2714 node = node.nextSibling; 2715 } 2716 ctx.ut(); 2717 } 2718} 2719function prepareAnchor(target, vnode, createText, insert) { 2720 const targetStart = vnode.targetStart = createText(""); 2721 const targetAnchor = vnode.targetAnchor = createText(""); 2722 targetStart[TeleportEndKey] = targetAnchor; 2723 if (target) { 2724 insert(targetStart, target); 2725 insert(targetAnchor, target); 2726 } 2727 return targetAnchor; 2728} 2729const leaveCbKey = Symbol("_leaveCb"); 2730const enterCbKey$1 = Symbol("_enterCb"); 2731function useTransitionState() { 2732 const state2 = { 2733 isMounted: false, 2734 isLeaving: false, 2735 isUnmounting: false, 2736 leavingVNodes: /* @__PURE__ */ new Map() 2737 }; 2738 onMounted(() => { 2739 state2.isMounted = true; 2740 }); 2741 onBeforeUnmount(() => { 2742 state2.isUnmounting = true; 2743 }); 2744 return state2; 2745} 2746const TransitionHookValidator = [Function, Array]; 2747const BaseTransitionPropsValidators = { 2748 mode: String, 2749 appear: Boolean, 2750 persisted: Boolean, 2751 // enter 2752 onBeforeEnter: TransitionHookValidator, 2753 onEnter: TransitionHookValidator, 2754 onAfterEnter: TransitionHookValidator, 2755 onEnterCancelled: TransitionHookValidator, 2756 // leave 2757 onBeforeLeave: TransitionHookValidator, 2758 onLeave: TransitionHookValidator, 2759 onAfterLeave: TransitionHookValidator, 2760 onLeaveCancelled: TransitionHookValidator, 2761 // appear 2762 onBeforeAppear: TransitionHookValidator, 2763 onAppear: TransitionHookValidator, 2764 onAfterAppear: TransitionHookValidator, 2765 onAppearCancelled: TransitionHookValidator 2766}; 2767const recursiveGetSubtree = (instance) => { 2768 const subTree = instance.subTree; 2769 return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; 2770}; 2771const BaseTransitionImpl = { 2772 name: `BaseTransition`, 2773 props: BaseTransitionPropsValidators, 2774 setup(props2, { slots }) { 2775 const instance = getCurrentInstance(); 2776 const state2 = useTransitionState(); 2777 return () => { 2778 const children = slots.default && getTransitionRawChildren(slots.default(), true); 2779 if (!children || !children.length) { 2780 return; 2781 } 2782 const child = findNonCommentChild(children); 2783 const rawProps = toRaw(props2); 2784 const { mode } = rawProps; 2785 if (state2.isLeaving) { 2786 return emptyPlaceholder(child); 2787 } 2788 const innerChild = getInnerChild$1(child); 2789 if (!innerChild) { 2790 return emptyPlaceholder(child); 2791 } 2792 let enterHooks = resolveTransitionHooks( 2793 innerChild, 2794 rawProps, 2795 state2, 2796 instance, 2797 // #11061, ensure enterHooks is fresh after clone 2798 (hooks) => enterHooks = hooks 2799 ); 2800 if (innerChild.type !== Comment) { 2801 setTransitionHooks(innerChild, enterHooks); 2802 } 2803 let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); 2804 if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {
vendor: 4,448 bytes, lines 2805-2968
2805 let leavingHooks = resolveTransitionHooks( 2806 oldInnerChild, 2807 rawProps, 2808 state2, 2809 instance 2810 ); 2811 setTransitionHooks(oldInnerChild, leavingHooks); 2812 if (mode === "out-in" && innerChild.type !== Comment) { 2813 state2.isLeaving = true; 2814 leavingHooks.afterLeave = () => { 2815 state2.isLeaving = false; 2816 if (!(instance.job.flags & 8)) { 2817 instance.update(); 2818 } 2819 delete leavingHooks.afterLeave; 2820 oldInnerChild = void 0; 2821 }; 2822 return emptyPlaceholder(child); 2823 } else if (mode === "in-out" && innerChild.type !== Comment) { 2824 leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { 2825 const leavingVNodesCache = getLeavingNodesForType( 2826 state2, 2827 oldInnerChild 2828 ); 2829 leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; 2830 el[leaveCbKey] = () => { 2831 earlyRemove(); 2832 el[leaveCbKey] = void 0; 2833 delete enterHooks.delayedLeave; 2834 oldInnerChild = void 0; 2835 }; 2836 enterHooks.delayedLeave = () => { 2837 delayedLeave(); 2838 delete enterHooks.delayedLeave; 2839 oldInnerChild = void 0; 2840 }; 2841 }; 2842 } else { 2843 oldInnerChild = void 0; 2844 } 2845 } else if (oldInnerChild) { 2846 oldInnerChild = void 0; 2847 } 2848 return child; 2849 }; 2850 } 2851}; 2852function findNonCommentChild(children) { 2853 let child = children[0]; 2854 if (children.length > 1) { 2855 for (const c of children) { 2856 if (c.type !== Comment) { 2857 child = c; 2858 break; 2859 } 2860 } 2861 } 2862 return child; 2863} 2864const BaseTransition = BaseTransitionImpl; 2865function getLeavingNodesForType(state2, vnode) { 2866 const { leavingVNodes } = state2; 2867 let leavingVNodesCache = leavingVNodes.get(vnode.type); 2868 if (!leavingVNodesCache) { 2869 leavingVNodesCache = /* @__PURE__ */ Object.create(null); 2870 leavingVNodes.set(vnode.type, leavingVNodesCache); 2871 } 2872 return leavingVNodesCache; 2873} 2874function resolveTransitionHooks(vnode, props2, state2, instance, postClone) { 2875 const { 2876 appear, 2877 mode, 2878 persisted = false, 2879 onBeforeEnter, 2880 onEnter, 2881 onAfterEnter, 2882 onEnterCancelled, 2883 onBeforeLeave, 2884 onLeave, 2885 onAfterLeave, 2886 onLeaveCancelled, 2887 onBeforeAppear, 2888 onAppear, 2889 onAfterAppear, 2890 onAppearCancelled 2891 } = props2; 2892 const key = String(vnode.key); 2893 const leavingVNodesCache = getLeavingNodesForType(state2, vnode); 2894 const callHook2 = (hook, args) => { 2895 hook && callWithAsyncErrorHandling( 2896 hook, 2897 instance, 2898 9, 2899 args 2900 ); 2901 }; 2902 const callAsyncHook = (hook, args) => { 2903 const done = args[1]; 2904 callHook2(hook, args); 2905 if (isArray$3(hook)) { 2906 if (hook.every((hook2) => hook2.length <= 1)) done(); 2907 } else if (hook.length <= 1) { 2908 done(); 2909 } 2910 }; 2911 const hooks = { 2912 mode, 2913 persisted, 2914 beforeEnter(el) { 2915 let hook = onBeforeEnter; 2916 if (!state2.isMounted) { 2917 if (appear) { 2918 hook = onBeforeAppear || onBeforeEnter; 2919 } else { 2920 return; 2921 } 2922 } 2923 if (el[leaveCbKey]) { 2924 el[leaveCbKey]( 2925 true 2926 /* cancelled */ 2927 ); 2928 } 2929 const leavingVNode = leavingVNodesCache[key]; 2930 if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { 2931 leavingVNode.el[leaveCbKey](); 2932 } 2933 callHook2(hook, [el]); 2934 }, 2935 enter(el) { 2936 let hook = onEnter; 2937 let afterHook = onAfterEnter; 2938 let cancelHook = onEnterCancelled; 2939 if (!state2.isMounted) { 2940 if (appear) { 2941 hook = onAppear || onEnter; 2942 afterHook = onAfterAppear || onAfterEnter; 2943 cancelHook = onAppearCancelled || onEnterCancelled; 2944 } else { 2945 return; 2946 } 2947 } 2948 let called = false; 2949 const done = el[enterCbKey$1] = (cancelled) => { 2950 if (called) return; 2951 called = true; 2952 if (cancelled) { 2953 callHook2(cancelHook, [el]); 2954 } else { 2955 callHook2(afterHook, [el]); 2956 } 2957 if (hooks.delayedLeave) { 2958 hooks.delayedLeave(); 2959 } 2960 el[enterCbKey$1] = void 0; 2961 }; 2962 if (hook) { 2963 callAsyncHook(hook, [el, done]); 2964 } else { 2965 done(); 2966 } 2967 }, 2968 leave(el, remove2) {
vendor: 2,276 bytes, lines 2969-3057
2969 const key2 = String(vnode.key); 2970 if (el[enterCbKey$1]) { 2971 el[enterCbKey$1]( 2972 true 2973 /* cancelled */ 2974 ); 2975 } 2976 if (state2.isUnmounting) { 2977 return remove2(); 2978 } 2979 callHook2(onBeforeLeave, [el]); 2980 let called = false; 2981 const done = el[leaveCbKey] = (cancelled) => { 2982 if (called) return; 2983 called = true; 2984 remove2(); 2985 if (cancelled) { 2986 callHook2(onLeaveCancelled, [el]); 2987 } else { 2988 callHook2(onAfterLeave, [el]); 2989 } 2990 el[leaveCbKey] = void 0; 2991 if (leavingVNodesCache[key2] === vnode) { 2992 delete leavingVNodesCache[key2]; 2993 } 2994 }; 2995 leavingVNodesCache[key2] = vnode; 2996 if (onLeave) { 2997 callAsyncHook(onLeave, [el, done]); 2998 } else { 2999 done(); 3000 } 3001 }, 3002 clone(vnode2) { 3003 const hooks2 = resolveTransitionHooks( 3004 vnode2, 3005 props2, 3006 state2, 3007 instance, 3008 postClone 3009 ); 3010 if (postClone) postClone(hooks2); 3011 return hooks2; 3012 } 3013 }; 3014 return hooks; 3015} 3016function emptyPlaceholder(vnode) { 3017 if (isKeepAlive(vnode)) { 3018 vnode = cloneVNode(vnode); 3019 vnode.children = null; 3020 return vnode; 3021 } 3022} 3023function getInnerChild$1(vnode) { 3024 if (!isKeepAlive(vnode)) { 3025 if (isTeleport(vnode.type) && vnode.children) { 3026 return findNonCommentChild(vnode.children); 3027 } 3028 return vnode; 3029 } 3030 if (vnode.component) { 3031 return vnode.component.subTree; 3032 } 3033 const { shapeFlag, children } = vnode; 3034 if (children) { 3035 if (shapeFlag & 16) { 3036 return children[0]; 3037 } 3038 if (shapeFlag & 32 && isFunction$3(children.default)) { 3039 return children.default(); 3040 } 3041 } 3042} 3043function setTransitionHooks(vnode, hooks) { 3044 if (vnode.shapeFlag & 6 && vnode.component) { 3045 vnode.transition = hooks; 3046 setTransitionHooks(vnode.component.subTree, hooks); 3047 } else if (vnode.shapeFlag & 128) { 3048 vnode.ssContent.transition = hooks.clone(vnode.ssContent); 3049 vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); 3050 } else { 3051 vnode.transition = hooks; 3052 } 3053} 3054function getTransitionRawChildren(children, keepComment = false, parentKey) { 3055 let ret = []; 3056 let keyedFragmentCount = 0; 3057 for (let i = 0; i < children.length; i++) {
3058 let child = children[i]; 3059 const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); 3060 if (child.type === Fragment) { 3061 if (child.patchFlag & 128) keyedFragmentCount++; 3062 ret = ret.concat( 3063 getTransitionRawChildren(child.children, keepComment, key) 3064 ); 3065 } else if (keepComment || child.type !== Comment) { 3066 ret.push(key != null ? cloneVNode(child, { key }) : child); 3067 } 3068 } 3069 if (keyedFragmentCount > 1) { 3070 for (let i = 0; i < ret.length; i++) { 3071 ret[i].patchFlag = -2; 3072 } 3073 } 3074 return ret; 3075} 3076/*! #__NO_SIDE_EFFECTS__ */ 3077// @__NO_SIDE_EFFECTS__ 3078function defineComponent(options2, extraOptions) { 3079 return isFunction$3(options2) ? ( 3080 // #8236: extend call and options.name access are considered side-effects 3081 // by Rollup, so we have to wrap it in a pure-annotated IIFE. 3082 /* @__PURE__ */ (() => extend$5({ name: options2.name }, extraOptions, { setup: options2 }))() 3083 ) : options2; 3084} 3085function useId() { 3086 const i = getCurrentInstance(); 3087 if (i) { 3088 return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; 3089 } 3090 return ""; 3091} 3092function markAsyncBoundary(instance) { 3093 instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; 3094} 3095function useTemplateRef(key) { 3096 const i = getCurrentInstance(); 3097 const r = shallowRef(null); 3098 if (i) { 3099 const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs; 3100 { 3101 Object.defineProperty(refs, key, { 3102 enumerable: true, 3103 get: () => r.value, 3104 set: (val) => r.value = val 3105 }); 3106 } 3107 } 3108 const ret = r; 3109 return ret; 3110} 3111function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { 3112 if (isArray$3(rawRef)) { 3113 rawRef.forEach( 3114 (r, i) => setRef( 3115 r, 3116 oldRawRef && (isArray$3(oldRawRef) ? oldRawRef[i] : oldRawRef), 3117 parentSuspense, 3118 vnode, 3119 isUnmount 3120 ) 3121 ); 3122 return; 3123 } 3124 if (isAsyncWrapper(vnode) && !isUnmount) { 3125 if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { 3126 setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); 3127 } 3128 return; 3129 } 3130 const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; 3131 const value = isUnmount ? null : refValue; 3132 const { i: owner, r: ref3 } = rawRef; 3133 const oldRef = oldRawRef && oldRawRef.r; 3134 const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; 3135 const setupState = owner.setupState; 3136 const rawSetupState = toRaw(setupState); 3137 const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => { 3138 return hasOwn$2(rawSetupState, key); 3139 }; 3140 if (oldRef != null && oldRef !== ref3) { 3141 if (isString$3(oldRef)) { 3142 refs[oldRef] = null; 3143 if (canSetSetupRef(oldRef)) { 3144 setupState[oldRef] = null; 3145 } 3146 } else if (isRef(oldRef)) { 3147 oldRef.value = null; 3148 } 3149 } 3150 if (isFunction$3(ref3)) { 3151 callWithErrorHandling(ref3, owner, 12, [value, refs]); 3152 } else { 3153 const _isString = isString$3(ref3); 3154 const _isRef = isRef(ref3); 3155 if (_isString || _isRef) { 3156 const doSet = () => { 3157 if (rawRef.f) { 3158 const existing = _isString ? canSetSetupRef(ref3) ? setupState[ref3] : refs[ref3] : ref3.value; 3159 if (isUnmount) { 3160 isArray$3(existing) && remove(existing, refValue); 3161 } else { 3162 if (!isArray$3(existing)) { 3163 if (_isString) { 3164 refs[ref3] = [refValue]; 3165 if (canSetSetupRef(ref3)) { 3166 setupState[ref3] = refs[ref3]; 3167 } 3168 } else { 3169 ref3.value = [refValue]; 3170 if (rawRef.k) refs[rawRef.k] = ref3.value; 3171 } 3172 } else if (!existing.includes(refValue)) { 3173 existing.push(refValue); 3174 } 3175 } 3176 } else if (_isString) { 3177 refs[ref3] = value; 3178 if (canSetSetupRef(ref3)) { 3179 setupState[ref3] = value; 3180 } 3181 } else if (_isRef) { 3182 ref3.value = value; 3183 if (rawRef.k) refs[rawRef.k] = value; 3184 } else ; 3185 }; 3186 if (value) { 3187 doSet.id = -1; 3188 queuePostRenderEffect(doSet, parentSuspense); 3189 } else { 3190 doSet(); 3191 } 3192 } 3193 } 3194} 3195let hasLoggedMismatchError = false;
vendor: 6,767 bytes, lines 3196-3408
3196const logMismatchError = () => { 3197 if (hasLoggedMismatchError) { 3198 return; 3199 } 3200 console.error("Hydration completed but contains mismatches."); 3201 hasLoggedMismatchError = true; 3202}; 3203const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; 3204const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); 3205const getContainerType = (container) => { 3206 if (container.nodeType !== 1) return void 0; 3207 if (isSVGContainer(container)) return "svg"; 3208 if (isMathMLContainer(container)) return "mathml"; 3209 return void 0; 3210}; 3211const isComment = (node) => node.nodeType === 8; 3212function createHydrationFunctions(rendererInternals) { 3213 const { 3214 mt: mountComponent, 3215 p: patch, 3216 o: { 3217 patchProp: patchProp2, 3218 createText, 3219 nextSibling, 3220 parentNode, 3221 remove: remove2, 3222 insert, 3223 createComment 3224 } 3225 } = rendererInternals; 3226 const hydrate2 = (vnode, container) => { 3227 if (!container.hasChildNodes()) { 3228 patch(null, vnode, container); 3229 flushPostFlushCbs(); 3230 container._vnode = vnode; 3231 return; 3232 } 3233 hydrateNode(container.firstChild, vnode, null, null, null); 3234 flushPostFlushCbs(); 3235 container._vnode = vnode; 3236 }; 3237 const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { 3238 optimized = optimized || !!vnode.dynamicChildren; 3239 const isFragmentStart = isComment(node) && node.data === "["; 3240 const onMismatch = () => handleMismatch( 3241 node, 3242 vnode, 3243 parentComponent, 3244 parentSuspense, 3245 slotScopeIds, 3246 isFragmentStart 3247 ); 3248 const { type, ref: ref3, shapeFlag, patchFlag } = vnode; 3249 let domType = node.nodeType; 3250 vnode.el = node; 3251 if (patchFlag === -2) { 3252 optimized = false; 3253 vnode.dynamicChildren = null; 3254 } 3255 let nextNode = null; 3256 switch (type) { 3257 case Text: 3258 if (domType !== 3) { 3259 if (vnode.children === "") { 3260 insert(vnode.el = createText(""), parentNode(node), node); 3261 nextNode = node; 3262 } else { 3263 nextNode = onMismatch(); 3264 } 3265 } else { 3266 if (node.data !== vnode.children) { 3267 logMismatchError(); 3268 node.data = vnode.children; 3269 } 3270 nextNode = nextSibling(node); 3271 } 3272 break; 3273 case Comment: 3274 if (isTemplateNode2(node)) { 3275 nextNode = nextSibling(node); 3276 replaceNode( 3277 vnode.el = node.content.firstChild, 3278 node, 3279 parentComponent 3280 ); 3281 } else if (domType !== 8 || isFragmentStart) { 3282 nextNode = onMismatch(); 3283 } else { 3284 nextNode = nextSibling(node); 3285 } 3286 break; 3287 case Static: 3288 if (isFragmentStart) { 3289 node = nextSibling(node); 3290 domType = node.nodeType; 3291 } 3292 if (domType === 1 || domType === 3) { 3293 nextNode = node; 3294 const needToAdoptContent = !vnode.children.length; 3295 for (let i = 0; i < vnode.staticCount; i++) { 3296 if (needToAdoptContent) 3297 vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; 3298 if (i === vnode.staticCount - 1) { 3299 vnode.anchor = nextNode; 3300 } 3301 nextNode = nextSibling(nextNode); 3302 } 3303 return isFragmentStart ? nextSibling(nextNode) : nextNode; 3304 } else { 3305 onMismatch(); 3306 } 3307 break; 3308 case Fragment: 3309 if (!isFragmentStart) { 3310 nextNode = onMismatch(); 3311 } else { 3312 nextNode = hydrateFragment( 3313 node, 3314 vnode, 3315 parentComponent, 3316 parentSuspense, 3317 slotScopeIds, 3318 optimized 3319 ); 3320 } 3321 break; 3322 default: 3323 if (shapeFlag & 1) { 3324 if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode2(node)) { 3325 nextNode = onMismatch(); 3326 } else { 3327 nextNode = hydrateElement( 3328 node, 3329 vnode, 3330 parentComponent, 3331 parentSuspense, 3332 slotScopeIds, 3333 optimized 3334 ); 3335 } 3336 } else if (shapeFlag & 6) { 3337 vnode.slotScopeIds = slotScopeIds; 3338 const container = parentNode(node); 3339 if (isFragmentStart) { 3340 nextNode = locateClosingAnchor(node); 3341 } else if (isComment(node) && node.data === "teleport start") { 3342 nextNode = locateClosingAnchor(node, node.data, "teleport end"); 3343 } else { 3344 nextNode = nextSibling(node); 3345 } 3346 mountComponent( 3347 vnode, 3348 container, 3349 null, 3350 parentComponent, 3351 parentSuspense, 3352 getContainerType(container), 3353 optimized 3354 ); 3355 if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { 3356 let subTree; 3357 if (isFragmentStart) { 3358 subTree = createVNode(Fragment); 3359 subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; 3360 } else { 3361 subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); 3362 } 3363 subTree.el = node; 3364 vnode.component.subTree = subTree; 3365 } 3366 } else if (shapeFlag & 64) { 3367 if (domType !== 8) { 3368 nextNode = onMismatch(); 3369 } else { 3370 nextNode = vnode.type.hydrate( 3371 node, 3372 vnode, 3373 parentComponent, 3374 parentSuspense, 3375 slotScopeIds, 3376 optimized, 3377 rendererInternals, 3378 hydrateChildren 3379 ); 3380 } 3381 } else if (shapeFlag & 128) { 3382 nextNode = vnode.type.hydrate( 3383 node, 3384 vnode, 3385 parentComponent, 3386 parentSuspense, 3387 getContainerType(parentNode(node)), 3388 slotScopeIds, 3389 optimized, 3390 rendererInternals, 3391 hydrateNode 3392 ); 3393 } else ; 3394 } 3395 if (ref3 != null) { 3396 setRef(ref3, null, parentSuspense, vnode); 3397 } 3398 return nextNode; 3399 }; 3400 const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { 3401 optimized = optimized || !!vnode.dynamicChildren; 3402 const { type, props: props2, patchFlag, shapeFlag, dirs, transition: transition2 } = vnode; 3403 const forcePatch = type === "input" || type === "option"; 3404 if (forcePatch || patchFlag !== -1) { 3405 if (dirs) { 3406 invokeDirectiveHook(vnode, null, parentComponent, "created"); 3407 } 3408 let needCallTransitionHooks = false;
vendor: 13,835 bytes, lines 3409-3889
3409 if (isTemplateNode2(el)) { 3410 needCallTransitionHooks = needTransition( 3411 null, 3412 // no need check parentSuspense in hydration 3413 transition2 3414 ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; 3415 const content = el.content.firstChild; 3416 if (needCallTransitionHooks) { 3417 const cls = content.getAttribute("class"); 3418 if (cls) content.$cls = cls; 3419 transition2.beforeEnter(content); 3420 } 3421 replaceNode(content, el, parentComponent); 3422 vnode.el = el = content; 3423 } 3424 if (shapeFlag & 16 && // skip if element has innerHTML / textContent 3425 !(props2 && (props2.innerHTML || props2.textContent))) { 3426 let next = hydrateChildren( 3427 el.firstChild, 3428 vnode, 3429 el, 3430 parentComponent, 3431 parentSuspense, 3432 slotScopeIds, 3433 optimized 3434 ); 3435 while (next) { 3436 if (!isMismatchAllowed( 3437 el, 3438 1 3439 /* CHILDREN */ 3440 )) { 3441 logMismatchError(); 3442 } 3443 const cur = next; 3444 next = next.nextSibling; 3445 remove2(cur); 3446 } 3447 } else if (shapeFlag & 8) { 3448 let clientText = vnode.children; 3449 if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { 3450 clientText = clientText.slice(1); 3451 } 3452 if (el.textContent !== clientText) { 3453 if (!isMismatchAllowed( 3454 el, 3455 0 3456 /* TEXT */ 3457 )) { 3458 logMismatchError(); 3459 } 3460 el.textContent = vnode.children; 3461 } 3462 } 3463 if (props2) { 3464 if (forcePatch || !optimized || patchFlag & (16 | 32)) { 3465 const isCustomElement = el.tagName.includes("-"); 3466 for (const key in props2) { 3467 if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers 3468 key[0] === "." || isCustomElement) { 3469 patchProp2(el, key, null, props2[key], void 0, parentComponent); 3470 } 3471 } 3472 } else if (props2.onClick) { 3473 patchProp2( 3474 el, 3475 "onClick", 3476 null, 3477 props2.onClick, 3478 void 0, 3479 parentComponent 3480 ); 3481 } else if (patchFlag & 4 && isReactive(props2.style)) { 3482 for (const key in props2.style) props2.style[key]; 3483 } 3484 } 3485 let vnodeHooks; 3486 if (vnodeHooks = props2 && props2.onVnodeBeforeMount) { 3487 invokeVNodeHook(vnodeHooks, parentComponent, vnode); 3488 } 3489 if (dirs) { 3490 invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); 3491 } 3492 if ((vnodeHooks = props2 && props2.onVnodeMounted) || dirs || needCallTransitionHooks) { 3493 queueEffectWithSuspense(() => { 3494 vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); 3495 needCallTransitionHooks && transition2.enter(el); 3496 dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); 3497 }, parentSuspense); 3498 } 3499 } 3500 return el.nextSibling; 3501 }; 3502 const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { 3503 optimized = optimized || !!parentVNode.dynamicChildren; 3504 const children = parentVNode.children; 3505 const l = children.length; 3506 for (let i = 0; i < l; i++) { 3507 const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); 3508 const isText = vnode.type === Text; 3509 if (node) { 3510 if (isText && !optimized) { 3511 if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { 3512 insert( 3513 createText( 3514 node.data.slice(vnode.children.length) 3515 ), 3516 container, 3517 nextSibling(node) 3518 ); 3519 node.data = vnode.children; 3520 } 3521 } 3522 node = hydrateNode( 3523 node, 3524 vnode, 3525 parentComponent, 3526 parentSuspense, 3527 slotScopeIds, 3528 optimized 3529 ); 3530 } else if (isText && !vnode.children) { 3531 insert(vnode.el = createText(""), container); 3532 } else { 3533 if (!isMismatchAllowed( 3534 container, 3535 1 3536 /* CHILDREN */ 3537 )) { 3538 logMismatchError(); 3539 } 3540 patch( 3541 null, 3542 vnode, 3543 container, 3544 null, 3545 parentComponent, 3546 parentSuspense, 3547 getContainerType(container), 3548 slotScopeIds 3549 ); 3550 } 3551 } 3552 return node; 3553 }; 3554 const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { 3555 const { slotScopeIds: fragmentSlotScopeIds } = vnode; 3556 if (fragmentSlotScopeIds) { 3557 slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; 3558 } 3559 const container = parentNode(node); 3560 const next = hydrateChildren( 3561 nextSibling(node), 3562 vnode, 3563 container, 3564 parentComponent, 3565 parentSuspense, 3566 slotScopeIds, 3567 optimized 3568 ); 3569 if (next && isComment(next) && next.data === "]") { 3570 return nextSibling(vnode.anchor = next); 3571 } else { 3572 logMismatchError(); 3573 insert(vnode.anchor = createComment(`]`), container, next); 3574 return next; 3575 } 3576 }; 3577 const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { 3578 if (!isMismatchAllowed( 3579 node.parentElement, 3580 1 3581 /* CHILDREN */ 3582 )) { 3583 logMismatchError(); 3584 } 3585 vnode.el = null; 3586 if (isFragment) { 3587 const end = locateClosingAnchor(node); 3588 while (true) { 3589 const next2 = nextSibling(node); 3590 if (next2 && next2 !== end) { 3591 remove2(next2); 3592 } else { 3593 break; 3594 } 3595 } 3596 } 3597 const next = nextSibling(node); 3598 const container = parentNode(node); 3599 remove2(node); 3600 patch( 3601 null, 3602 vnode, 3603 container, 3604 next, 3605 parentComponent, 3606 parentSuspense, 3607 getContainerType(container), 3608 slotScopeIds 3609 ); 3610 if (parentComponent) { 3611 parentComponent.vnode.el = vnode.el; 3612 updateHOCHostEl(parentComponent, vnode.el); 3613 } 3614 return next; 3615 }; 3616 const locateClosingAnchor = (node, open = "[", close = "]") => { 3617 let match = 0; 3618 while (node) { 3619 node = nextSibling(node); 3620 if (node && isComment(node)) { 3621 if (node.data === open) match++; 3622 if (node.data === close) { 3623 if (match === 0) { 3624 return nextSibling(node); 3625 } else { 3626 match--; 3627 } 3628 } 3629 } 3630 } 3631 return node; 3632 }; 3633 const replaceNode = (newNode, oldNode, parentComponent) => { 3634 const parentNode2 = oldNode.parentNode; 3635 if (parentNode2) { 3636 parentNode2.replaceChild(newNode, oldNode); 3637 } 3638 let parent = parentComponent; 3639 while (parent) { 3640 if (parent.vnode.el === oldNode) { 3641 parent.vnode.el = parent.subTree.el = newNode; 3642 } 3643 parent = parent.parent; 3644 } 3645 }; 3646 const isTemplateNode2 = (node) => { 3647 return node.nodeType === 1 && node.tagName === "TEMPLATE"; 3648 }; 3649 return [hydrate2, hydrateNode]; 3650} 3651const allowMismatchAttr = "data-allow-mismatch"; 3652const MismatchTypeString = { 3653 [ 3654 0 3655 /* TEXT */ 3656 ]: "text", 3657 [ 3658 1 3659 /* CHILDREN */ 3660 ]: "children", 3661 [ 3662 2 3663 /* CLASS */ 3664 ]: "class", 3665 [ 3666 3 3667 /* STYLE */ 3668 ]: "style", 3669 [ 3670 4 3671 /* ATTRIBUTE */ 3672 ]: "attribute" 3673}; 3674function isMismatchAllowed(el, allowedType) { 3675 if (allowedType === 0 || allowedType === 1) { 3676 while (el && !el.hasAttribute(allowMismatchAttr)) { 3677 el = el.parentElement; 3678 } 3679 } 3680 const allowedAttr = el && el.getAttribute(allowMismatchAttr); 3681 if (allowedAttr == null) { 3682 return false; 3683 } else if (allowedAttr === "") { 3684 return true; 3685 } else { 3686 const list = allowedAttr.split(","); 3687 if (allowedType === 0 && list.includes("children")) { 3688 return true; 3689 } 3690 return allowedAttr.split(",").includes(MismatchTypeString[allowedType]); 3691 } 3692} 3693const requestIdleCallback = getGlobalThis$2().requestIdleCallback || ((cb) => setTimeout(cb, 1)); 3694const cancelIdleCallback = getGlobalThis$2().cancelIdleCallback || ((id) => clearTimeout(id)); 3695const hydrateOnIdle = (timeout = 1e4) => (hydrate2) => { 3696 const id = requestIdleCallback(hydrate2, { timeout }); 3697 return () => cancelIdleCallback(id); 3698}; 3699function elementIsVisibleInViewport(el) { 3700 const { top, left, bottom, right } = el.getBoundingClientRect(); 3701 const { innerHeight, innerWidth } = window; 3702 return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); 3703} 3704const hydrateOnVisible = (opts) => (hydrate2, forEach2) => { 3705 const ob = new IntersectionObserver((entries) => { 3706 for (const e of entries) { 3707 if (!e.isIntersecting) continue; 3708 ob.disconnect(); 3709 hydrate2(); 3710 break; 3711 } 3712 }, opts); 3713 forEach2((el) => { 3714 if (!(el instanceof Element)) return; 3715 if (elementIsVisibleInViewport(el)) { 3716 hydrate2(); 3717 ob.disconnect(); 3718 return false; 3719 } 3720 ob.observe(el); 3721 }); 3722 return () => ob.disconnect(); 3723}; 3724const hydrateOnMediaQuery = (query) => (hydrate2) => { 3725 if (query) { 3726 const mql = matchMedia(query); 3727 if (mql.matches) { 3728 hydrate2(); 3729 } else { 3730 mql.addEventListener("change", hydrate2, { once: true }); 3731 return () => mql.removeEventListener("change", hydrate2); 3732 } 3733 } 3734}; 3735const hydrateOnInteraction = (interactions = []) => (hydrate2, forEach2) => { 3736 if (isString$3(interactions)) interactions = [interactions]; 3737 let hasHydrated = false; 3738 const doHydrate = (e) => { 3739 if (!hasHydrated) { 3740 hasHydrated = true; 3741 teardown(); 3742 hydrate2(); 3743 e.target.dispatchEvent(new e.constructor(e.type, e)); 3744 } 3745 }; 3746 const teardown = () => { 3747 forEach2((el) => { 3748 for (const i of interactions) { 3749 el.removeEventListener(i, doHydrate); 3750 } 3751 }); 3752 }; 3753 forEach2((el) => { 3754 for (const i of interactions) { 3755 el.addEventListener(i, doHydrate, { once: true }); 3756 } 3757 }); 3758 return teardown; 3759}; 3760function forEachElement(node, cb) { 3761 if (isComment(node) && node.data === "[") { 3762 let depth = 1; 3763 let next = node.nextSibling; 3764 while (next) { 3765 if (next.nodeType === 1) { 3766 const result = cb(next); 3767 if (result === false) { 3768 break; 3769 } 3770 } else if (isComment(next)) { 3771 if (next.data === "]") { 3772 if (--depth === 0) break; 3773 } else if (next.data === "[") { 3774 depth++; 3775 } 3776 } 3777 next = next.nextSibling; 3778 } 3779 } else { 3780 cb(node); 3781 } 3782} 3783const isAsyncWrapper = (i) => !!i.type.__asyncLoader; 3784/*! #__NO_SIDE_EFFECTS__ */ 3785// @__NO_SIDE_EFFECTS__ 3786function defineAsyncComponent(source) { 3787 if (isFunction$3(source)) { 3788 source = { loader: source }; 3789 } 3790 const { 3791 loader, 3792 loadingComponent, 3793 errorComponent, 3794 delay = 200, 3795 hydrate: hydrateStrategy, 3796 timeout, 3797 // undefined = never times out 3798 suspensible = true, 3799 onError: userOnError 3800 } = source; 3801 let pendingRequest = null; 3802 let resolvedComp; 3803 let retries = 0; 3804 const retry = () => { 3805 retries++; 3806 pendingRequest = null; 3807 return load(); 3808 }; 3809 const load = () => { 3810 let thisRequest; 3811 return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { 3812 err = err instanceof Error ? err : new Error(String(err)); 3813 if (userOnError) { 3814 return new Promise((resolve2, reject) => { 3815 const userRetry = () => resolve2(retry()); 3816 const userFail = () => reject(err); 3817 userOnError(err, userRetry, userFail, retries + 1); 3818 }); 3819 } else { 3820 throw err; 3821 } 3822 }).then((comp) => { 3823 if (thisRequest !== pendingRequest && pendingRequest) { 3824 return pendingRequest; 3825 } 3826 if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { 3827 comp = comp.default; 3828 } 3829 resolvedComp = comp; 3830 return comp; 3831 })); 3832 }; 3833 return /* @__PURE__ */ defineComponent({ 3834 name: "AsyncComponentWrapper", 3835 __asyncLoader: load, 3836 __asyncHydrate(el, instance, hydrate2) { 3837 const doHydrate = hydrateStrategy ? () => { 3838 const performHydrate = () => { 3839 hydrate2(); 3840 }; 3841 const teardown = hydrateStrategy( 3842 performHydrate, 3843 (cb) => forEachElement(el, cb) 3844 ); 3845 if (teardown) { 3846 (instance.bum || (instance.bum = [])).push(teardown); 3847 } 3848 (instance.u || (instance.u = [])).push(() => true); 3849 } : hydrate2; 3850 if (resolvedComp) { 3851 doHydrate(); 3852 } else { 3853 load().then(() => !instance.isUnmounted && doHydrate()); 3854 } 3855 }, 3856 get __asyncResolved() { 3857 return resolvedComp; 3858 }, 3859 setup() { 3860 const instance = currentInstance; 3861 markAsyncBoundary(instance); 3862 if (resolvedComp) { 3863 return () => createInnerComp(resolvedComp, instance); 3864 } 3865 const onError = (err) => { 3866 pendingRequest = null; 3867 handleError( 3868 err, 3869 instance, 3870 13, 3871 !errorComponent 3872 ); 3873 }; 3874 if (suspensible && instance.suspense || isInSSRComponentSetup) { 3875 return load().then((comp) => { 3876 return () => createInnerComp(comp, instance); 3877 }).catch((err) => { 3878 onError(err); 3879 return () => errorComponent ? createVNode(errorComponent, { 3880 error: err 3881 }) : null; 3882 }); 3883 } 3884 const loaded = ref(false); 3885 const error = ref(); 3886 const delayed = ref(!!delay); 3887 if (delay) { 3888 setTimeout(() => { 3889 delayed.value = false;
3890 }, delay); 3891 } 3892 if (timeout != null) { 3893 setTimeout(() => { 3894 if (!loaded.value && !error.value) { 3895 const err = new Error( 3896 `Async component timed out after ${timeout}ms.` 3897 ); 3898 onError(err); 3899 error.value = err; 3900 } 3901 }, timeout); 3902 } 3903 load().then(() => { 3904 loaded.value = true; 3905 if (instance.parent && isKeepAlive(instance.parent.vnode)) { 3906 instance.parent.update(); 3907 } 3908 }).catch((err) => { 3909 onError(err); 3910 error.value = err; 3911 }); 3912 return () => { 3913 if (loaded.value && resolvedComp) { 3914 return createInnerComp(resolvedComp, instance); 3915 } else if (error.value && errorComponent) { 3916 return createVNode(errorComponent, { 3917 error: error.value 3918 }); 3919 } else if (loadingComponent && !delayed.value) { 3920 return createVNode(loadingComponent); 3921 } 3922 }; 3923 } 3924 }); 3925} 3926function createInnerComp(comp, parent) { 3927 const { ref: ref22, props: props2, children, ce } = parent.vnode; 3928 const vnode = createVNode(comp, props2, children); 3929 vnode.ref = ref22; 3930 vnode.ce = ce; 3931 delete parent.vnode.ce; 3932 return vnode; 3933} 3934const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; 3935const KeepAliveImpl = { 3936 name: `KeepAlive`, 3937 // Marker for special handling inside the renderer. We are not using a === 3938 // check directly on KeepAlive in the renderer, because importing it directly 3939 // would prevent it from being tree-shaken. 3940 __isKeepAlive: true, 3941 props: { 3942 include: [String, RegExp, Array], 3943 exclude: [String, RegExp, Array], 3944 max: [String, Number] 3945 }, 3946 setup(props2, { slots }) { 3947 const instance = getCurrentInstance(); 3948 const sharedContext = instance.ctx; 3949 if (!sharedContext.renderer) { 3950 return () => { 3951 const children = slots.default && slots.default(); 3952 return children && children.length === 1 ? children[0] : children; 3953 }; 3954 } 3955 const cache2 = /* @__PURE__ */ new Map(); 3956 const keys = /* @__PURE__ */ new Set(); 3957 let current = null; 3958 const parentSuspense = instance.suspense; 3959 const { 3960 renderer: { 3961 p: patch, 3962 m: move, 3963 um: _unmount, 3964 o: { createElement: createElement2 } 3965 } 3966 } = sharedContext; 3967 const storageContainer = createElement2("div"); 3968 sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { 3969 const instance2 = vnode.component; 3970 move(vnode, container, anchor, 0, parentSuspense); 3971 patch( 3972 instance2.vnode, 3973 vnode, 3974 container, 3975 anchor, 3976 instance2, 3977 parentSuspense, 3978 namespace, 3979 vnode.slotScopeIds, 3980 optimized 3981 ); 3982 queuePostRenderEffect(() => { 3983 instance2.isDeactivated = false; 3984 if (instance2.a) { 3985 invokeArrayFns(instance2.a); 3986 } 3987 const vnodeHook = vnode.props && vnode.props.onVnodeMounted; 3988 if (vnodeHook) { 3989 invokeVNodeHook(vnodeHook, instance2.parent, vnode); 3990 } 3991 }, parentSuspense); 3992 }; 3993 sharedContext.deactivate = (vnode) => { 3994 const instance2 = vnode.component; 3995 invalidateMount(instance2.m); 3996 invalidateMount(instance2.a); 3997 move(vnode, storageContainer, null, 1, parentSuspense); 3998 queuePostRenderEffect(() => { 3999 if (instance2.da) { 4000 invokeArrayFns(instance2.da); 4001 } 4002 const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; 4003 if (vnodeHook) { 4004 invokeVNodeHook(vnodeHook, instance2.parent, vnode); 4005 } 4006 instance2.isDeactivated = true; 4007 }, parentSuspense); 4008 }; 4009 function unmount(vnode) { 4010 resetShapeFlag(vnode); 4011 _unmount(vnode, instance, parentSuspense, true); 4012 } 4013 function pruneCache(filter2) { 4014 cache2.forEach((vnode, key) => { 4015 const name = getComponentName(vnode.type); 4016 if (name && !filter2(name)) { 4017 pruneCacheEntry(key); 4018 } 4019 }); 4020 } 4021 function pruneCacheEntry(key) {
vendor: 3,951 bytes, lines 4022-4145
4022 const cached = cache2.get(key); 4023 if (cached && (!current || !isSameVNodeType(cached, current))) { 4024 unmount(cached); 4025 } else if (current) { 4026 resetShapeFlag(current); 4027 } 4028 cache2.delete(key); 4029 keys.delete(key); 4030 } 4031 watch( 4032 () => [props2.include, props2.exclude], 4033 ([include, exclude]) => { 4034 include && pruneCache((name) => matches(include, name)); 4035 exclude && pruneCache((name) => !matches(exclude, name)); 4036 }, 4037 // prune post-render after `current` has been updated 4038 { flush: "post", deep: true } 4039 ); 4040 let pendingCacheKey = null; 4041 const cacheSubtree = () => { 4042 if (pendingCacheKey != null) { 4043 if (isSuspense(instance.subTree.type)) { 4044 queuePostRenderEffect(() => { 4045 cache2.set(pendingCacheKey, getInnerChild(instance.subTree)); 4046 }, instance.subTree.suspense); 4047 } else { 4048 cache2.set(pendingCacheKey, getInnerChild(instance.subTree)); 4049 } 4050 } 4051 }; 4052 onMounted(cacheSubtree); 4053 onUpdated(cacheSubtree); 4054 onBeforeUnmount(() => { 4055 cache2.forEach((cached) => { 4056 const { subTree, suspense } = instance; 4057 const vnode = getInnerChild(subTree); 4058 if (cached.type === vnode.type && cached.key === vnode.key) { 4059 resetShapeFlag(vnode); 4060 const da = vnode.component.da; 4061 da && queuePostRenderEffect(da, suspense); 4062 return; 4063 } 4064 unmount(cached); 4065 }); 4066 }); 4067 return () => { 4068 pendingCacheKey = null; 4069 if (!slots.default) { 4070 return current = null; 4071 } 4072 const children = slots.default(); 4073 const rawVNode = children[0]; 4074 if (children.length > 1) { 4075 current = null; 4076 return children; 4077 } else if (!isVNode$1(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { 4078 current = null; 4079 return rawVNode; 4080 } 4081 let vnode = getInnerChild(rawVNode); 4082 if (vnode.type === Comment) { 4083 current = null; 4084 return vnode; 4085 } 4086 const comp = vnode.type; 4087 const name = getComponentName( 4088 isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp 4089 ); 4090 const { include, exclude, max } = props2; 4091 if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { 4092 vnode.shapeFlag &= -257; 4093 current = vnode; 4094 return rawVNode; 4095 } 4096 const key = vnode.key == null ? comp : vnode.key; 4097 const cachedVNode = cache2.get(key); 4098 if (vnode.el) { 4099 vnode = cloneVNode(vnode); 4100 if (rawVNode.shapeFlag & 128) { 4101 rawVNode.ssContent = vnode; 4102 } 4103 } 4104 pendingCacheKey = key; 4105 if (cachedVNode) { 4106 vnode.el = cachedVNode.el; 4107 vnode.component = cachedVNode.component; 4108 if (vnode.transition) { 4109 setTransitionHooks(vnode, vnode.transition); 4110 } 4111 vnode.shapeFlag |= 512; 4112 keys.delete(key); 4113 keys.add(key); 4114 } else { 4115 keys.add(key); 4116 if (max && keys.size > parseInt(max, 10)) { 4117 pruneCacheEntry(keys.values().next().value); 4118 } 4119 } 4120 vnode.shapeFlag |= 256; 4121 current = vnode; 4122 return isSuspense(rawVNode.type) ? rawVNode : vnode; 4123 }; 4124 } 4125}; 4126const KeepAlive = KeepAliveImpl; 4127function matches(pattern, name) { 4128 if (isArray$3(pattern)) { 4129 return pattern.some((p2) => matches(p2, name)); 4130 } else if (isString$3(pattern)) { 4131 return pattern.split(",").includes(name); 4132 } else if (isRegExp$3(pattern)) { 4133 pattern.lastIndex = 0; 4134 return pattern.test(name); 4135 } 4136 return false; 4137} 4138function onActivated(hook, target) { 4139 registerKeepAliveHook(hook, "a", target); 4140} 4141function onDeactivated(hook, target) { 4142 registerKeepAliveHook(hook, "da", target); 4143} 4144function registerKeepAliveHook(hook, type, target = currentInstance) { 4145 const wrappedHook = hook.__wdc || (hook.__wdc = () => {
vendor: 3,954 bytes, lines 4146-4278
4146 let current = target; 4147 while (current) { 4148 if (current.isDeactivated) { 4149 return; 4150 } 4151 current = current.parent; 4152 } 4153 return hook(); 4154 }); 4155 injectHook(type, wrappedHook, target); 4156 if (target) { 4157 let current = target.parent; 4158 while (current && current.parent) { 4159 if (isKeepAlive(current.parent.vnode)) { 4160 injectToKeepAliveRoot(wrappedHook, type, target, current); 4161 } 4162 current = current.parent; 4163 } 4164 } 4165} 4166function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { 4167 const injected = injectHook( 4168 type, 4169 hook, 4170 keepAliveRoot, 4171 true 4172 /* prepend */ 4173 ); 4174 onUnmounted(() => { 4175 remove(keepAliveRoot[type], injected); 4176 }, target); 4177} 4178function resetShapeFlag(vnode) { 4179 vnode.shapeFlag &= -257; 4180 vnode.shapeFlag &= -513; 4181} 4182function getInnerChild(vnode) { 4183 return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; 4184} 4185function injectHook(type, hook, target = currentInstance, prepend = false) { 4186 if (target) { 4187 const hooks = target[type] || (target[type] = []); 4188 const wrappedHook = hook.__weh || (hook.__weh = (...args) => { 4189 pauseTracking(); 4190 const reset2 = setCurrentInstance(target); 4191 const res = callWithAsyncErrorHandling(hook, target, type, args); 4192 reset2(); 4193 resetTracking(); 4194 return res; 4195 }); 4196 if (prepend) { 4197 hooks.unshift(wrappedHook); 4198 } else { 4199 hooks.push(wrappedHook); 4200 } 4201 return wrappedHook; 4202 } 4203} 4204const createHook = (lifecycle) => (hook, target = currentInstance) => { 4205 if (!isInSSRComponentSetup || lifecycle === "sp") { 4206 injectHook(lifecycle, (...args) => hook(...args), target); 4207 } 4208}; 4209const onBeforeMount = createHook("bm"); 4210const onMounted = createHook("m"); 4211const onBeforeUpdate = createHook( 4212 "bu" 4213); 4214const onUpdated = createHook("u"); 4215const onBeforeUnmount = createHook( 4216 "bum" 4217); 4218const onUnmounted = createHook("um"); 4219const onServerPrefetch = createHook( 4220 "sp" 4221); 4222const onRenderTriggered = createHook("rtg"); 4223const onRenderTracked = createHook("rtc"); 4224function onErrorCaptured(hook, target = currentInstance) { 4225 injectHook("ec", hook, target); 4226} 4227const COMPONENTS = "components"; 4228const DIRECTIVES = "directives"; 4229function resolveComponent(name, maybeSelfReference) { 4230 return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; 4231} 4232const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); 4233function resolveDynamicComponent(component) { 4234 if (isString$3(component)) { 4235 return resolveAsset(COMPONENTS, component, false) || component; 4236 } else { 4237 return component || NULL_DYNAMIC_COMPONENT; 4238 } 4239} 4240function resolveDirective(name) { 4241 return resolveAsset(DIRECTIVES, name); 4242} 4243function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { 4244 const instance = currentRenderingInstance || currentInstance; 4245 if (instance) { 4246 const Component = instance.type; 4247 if (type === COMPONENTS) { 4248 const selfName = getComponentName( 4249 Component, 4250 false 4251 ); 4252 if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize$1(camelize(name)))) { 4253 return Component; 4254 } 4255 } 4256 const res = ( 4257 // local registration 4258 // check instance[type] first which is resolved for options API 4259 resolve(instance[type] || Component[type], name) || // global registration 4260 resolve(instance.appContext[type], name) 4261 ); 4262 if (!res && maybeSelfReference) { 4263 return Component; 4264 } 4265 return res; 4266 } 4267} 4268function resolve(registry, name) { 4269 return registry && (registry[name] || registry[camelize(name)] || registry[capitalize$1(camelize(name))]); 4270} 4271function renderList(source, renderItem, cache2, index2) { 4272 let ret; 4273 const cached = cache2 && cache2[index2]; 4274 const sourceIsArray = isArray$3(source); 4275 if (sourceIsArray || isString$3(source)) { 4276 const sourceIsReactiveArray = sourceIsArray && isReactive(source); 4277 let needsWrap = false; 4278 let isReadonlySource = false;
vendor: 1,645 bytes, lines 4279-4336
4279 if (sourceIsReactiveArray) { 4280 needsWrap = !isShallow(source); 4281 isReadonlySource = isReadonly(source); 4282 source = shallowReadArray(source); 4283 } 4284 ret = new Array(source.length); 4285 for (let i = 0, l = source.length; i < l; i++) { 4286 ret[i] = renderItem( 4287 needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i], 4288 i, 4289 void 0, 4290 cached && cached[i] 4291 ); 4292 } 4293 } else if (typeof source === "number") { 4294 ret = new Array(source); 4295 for (let i = 0; i < source; i++) { 4296 ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); 4297 } 4298 } else if (isObject$9(source)) { 4299 if (source[Symbol.iterator]) { 4300 ret = Array.from( 4301 source, 4302 (item, i) => renderItem(item, i, void 0, cached && cached[i]) 4303 ); 4304 } else { 4305 const keys = Object.keys(source); 4306 ret = new Array(keys.length); 4307 for (let i = 0, l = keys.length; i < l; i++) { 4308 const key = keys[i]; 4309 ret[i] = renderItem(source[key], key, i, cached && cached[i]); 4310 } 4311 } 4312 } else { 4313 ret = []; 4314 } 4315 if (cache2) { 4316 cache2[index2] = ret; 4317 } 4318 return ret; 4319} 4320function createSlots(slots, dynamicSlots) { 4321 for (let i = 0; i < dynamicSlots.length; i++) { 4322 const slot = dynamicSlots[i]; 4323 if (isArray$3(slot)) { 4324 for (let j = 0; j < slot.length; j++) { 4325 slots[slot[j].name] = slot[j].fn; 4326 } 4327 } else if (slot) { 4328 slots[slot.name] = slot.key ? (...args) => { 4329 const res = slot.fn(...args); 4330 if (res) res.key = slot.key; 4331 return res; 4332 } : slot.fn; 4333 } 4334 } 4335 return slots; 4336}
4337function renderSlot(slots, name, props2 = {}, fallback, noSlotted) { 4338 if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { 4339 if (name !== "default") props2.name = name; 4340 return openBlock(), createBlock( 4341 Fragment, 4342 null, 4343 [createVNode("slot", props2, fallback && fallback())], 4344 64 4345 ); 4346 } 4347 let slot = slots[name]; 4348 if (slot && slot._c) { 4349 slot._d = false; 4350 } 4351 openBlock(); 4352 const validSlotContent = slot && ensureValidVNode(slot(props2)); 4353 const slotKey = props2.key || // slot content array of a dynamic conditional slot may have a branch 4354 // key attached in the `createSlots` helper, respect that 4355 validSlotContent && validSlotContent.key; 4356 const rendered = createBlock( 4357 Fragment, 4358 { 4359 key: (slotKey && !isSymbol$2(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content 4360 (!validSlotContent && fallback ? "_fb" : "") 4361 }, 4362 validSlotContent || (fallback ? fallback() : []), 4363 validSlotContent && slots._ === 1 ? 64 : -2 4364 ); 4365 if (!noSlotted && rendered.scopeId) { 4366 rendered.slotScopeIds = [rendered.scopeId + "-s"]; 4367 } 4368 if (slot && slot._c) { 4369 slot._d = true; 4370 } 4371 return rendered; 4372} 4373function ensureValidVNode(vnodes) { 4374 return vnodes.some((child) => { 4375 if (!isVNode$1(child)) return true; 4376 if (child.type === Comment) return false; 4377 if (child.type === Fragment && !ensureValidVNode(child.children)) 4378 return false; 4379 return true; 4380 }) ? vnodes : null; 4381} 4382function toHandlers(obj, preserveCaseIfNecessary) { 4383 const ret = {}; 4384 for (const key in obj) { 4385 ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; 4386 } 4387 return ret; 4388} 4389const getPublicInstance = (i) => { 4390 if (!i) return null; 4391 if (isStatefulComponent(i)) return getComponentPublicInstance(i); 4392 return getPublicInstance(i.parent); 4393}; 4394const publicPropertiesMap = ( 4395 // Move PURE marker to new line to workaround compiler discarding it 4396 // due to type annotation 4397 /* @__PURE__ */ extend$5(/* @__PURE__ */ Object.create(null), { 4398 $: (i) => i, 4399 $el: (i) => i.vnode.el, 4400 $data: (i) => i.data, 4401 $props: (i) => i.props, 4402 $attrs: (i) => i.attrs, 4403 $slots: (i) => i.slots, 4404 $refs: (i) => i.refs, 4405 $parent: (i) => getPublicInstance(i.parent), 4406 $root: (i) => getPublicInstance(i.root), 4407 $host: (i) => i.ce, 4408 $emit: (i) => i.emit, 4409 $options: (i) => resolveMergedOptions(i), 4410 $forceUpdate: (i) => i.f || (i.f = () => { 4411 queueJob(i.update); 4412 }), 4413 $nextTick: (i) => i.n || (i.n = nextTick$1.bind(i.proxy)), 4414 $watch: (i) => instanceWatch.bind(i) 4415 }) 4416); 4417const hasSetupBinding = (state2, key) => state2 !== EMPTY_OBJ && !state2.__isScriptSetup && hasOwn$2(state2, key); 4418const PublicInstanceProxyHandlers = { 4419 get({ _: instance }, key) { 4420 if (key === "__v_skip") { 4421 return true; 4422 } 4423 const { ctx, setupState, data, props: props2, accessCache, type, appContext } = instance; 4424 let normalizedProps; 4425 if (key[0] !== "$") { 4426 const n = accessCache[key]; 4427 if (n !== void 0) { 4428 switch (n) { 4429 case 1: 4430 return setupState[key]; 4431 case 2: 4432 return data[key]; 4433 case 4: 4434 return ctx[key]; 4435 case 3: 4436 return props2[key]; 4437 } 4438 } else if (hasSetupBinding(setupState, key)) { 4439 accessCache[key] = 1; 4440 return setupState[key]; 4441 } else if (data !== EMPTY_OBJ && hasOwn$2(data, key)) { 4442 accessCache[key] = 2; 4443 return data[key]; 4444 } else if ( 4445 // only cache other properties when instance has declared (thus stable) 4446 // props 4447 (normalizedProps = instance.propsOptions[0]) && hasOwn$2(normalizedProps, key) 4448 ) { 4449 accessCache[key] = 3; 4450 return props2[key]; 4451 } else if (ctx !== EMPTY_OBJ && hasOwn$2(ctx, key)) { 4452 accessCache[key] = 4; 4453 return ctx[key]; 4454 } else if (shouldCacheAccess) { 4455 accessCache[key] = 0; 4456 } 4457 } 4458 const publicGetter = publicPropertiesMap[key];
4459 let cssModule, globalProperties; 4460 if (publicGetter) { 4461 if (key === "$attrs") { 4462 track(instance.attrs, "get", ""); 4463 } 4464 return publicGetter(instance); 4465 } else if ( 4466 // css module (injected by vue-loader) 4467 (cssModule = type.__cssModules) && (cssModule = cssModule[key]) 4468 ) { 4469 return cssModule; 4470 } else if (ctx !== EMPTY_OBJ && hasOwn$2(ctx, key)) { 4471 accessCache[key] = 4; 4472 return ctx[key]; 4473 } else if ( 4474 // global properties 4475 globalProperties = appContext.config.globalProperties, hasOwn$2(globalProperties, key) 4476 ) { 4477 { 4478 return globalProperties[key]; 4479 } 4480 } else ; 4481 }, 4482 set({ _: instance }, key, value) { 4483 const { data, setupState, ctx } = instance; 4484 if (hasSetupBinding(setupState, key)) { 4485 setupState[key] = value; 4486 return true; 4487 } else if (data !== EMPTY_OBJ && hasOwn$2(data, key)) { 4488 data[key] = value; 4489 return true; 4490 } else if (hasOwn$2(instance.props, key)) { 4491 return false; 4492 } 4493 if (key[0] === "$" && key.slice(1) in instance) { 4494 return false; 4495 } else { 4496 { 4497 ctx[key] = value; 4498 } 4499 } 4500 return true; 4501 }, 4502 has({ 4503 _: { data, setupState, accessCache, ctx, appContext, propsOptions } 4504 }, key) { 4505 let normalizedProps; 4506 return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn$2(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn$2(normalizedProps, key) || hasOwn$2(ctx, key) || hasOwn$2(publicPropertiesMap, key) || hasOwn$2(appContext.config.globalProperties, key); 4507 }, 4508 defineProperty(target, key, descriptor) { 4509 if (descriptor.get != null) { 4510 target._.accessCache[key] = 0; 4511 } else if (hasOwn$2(descriptor, "value")) { 4512 this.set(target, key, descriptor.value, null); 4513 } 4514 return Reflect.defineProperty(target, key, descriptor); 4515 } 4516}; 4517const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend$5({}, PublicInstanceProxyHandlers, { 4518 get(target, key) { 4519 if (key === Symbol.unscopables) { 4520 return; 4521 } 4522 return PublicInstanceProxyHandlers.get(target, key, target); 4523 }, 4524 has(_, key) { 4525 const has = key[0] !== "_" && !isGloballyAllowed(key); 4526 return has; 4527 } 4528}); 4529function defineProps() { 4530 return null; 4531} 4532function defineEmits() { 4533 return null; 4534} 4535function defineExpose(exposed) { 4536} 4537function defineOptions(options2) { 4538} 4539function defineSlots() { 4540 return null; 4541} 4542function defineModel() { 4543} 4544function withDefaults(props2, defaults2) { 4545 return null; 4546} 4547function useSlots() { 4548 return getContext().slots; 4549} 4550function useAttrs() { 4551 return getContext().attrs; 4552} 4553function getContext() { 4554 const i = getCurrentInstance(); 4555 return i.setupContext || (i.setupContext = createSetupContext(i)); 4556} 4557function normalizePropsOrEmits(props2) { 4558 return isArray$3(props2) ? props2.reduce( 4559 (normalized, p2) => (normalized[p2] = null, normalized), 4560 {} 4561 ) : props2; 4562} 4563function mergeDefaults(raw, defaults2) { 4564 const props2 = normalizePropsOrEmits(raw); 4565 for (const key in defaults2) { 4566 if (key.startsWith("__skip")) continue; 4567 let opt = props2[key]; 4568 if (opt) { 4569 if (isArray$3(opt) || isFunction$3(opt)) { 4570 opt = props2[key] = { type: opt, default: defaults2[key] }; 4571 } else { 4572 opt.default = defaults2[key]; 4573 } 4574 } else if (opt === null) { 4575 opt = props2[key] = { default: defaults2[key] }; 4576 } else ; 4577 if (opt && defaults2[`__skip_${key}`]) { 4578 opt.skipFactory = true; 4579 } 4580 } 4581 return props2; 4582} 4583function mergeModels(a, b) { 4584 if (!a || !b) return a || b; 4585 if (isArray$3(a) && isArray$3(b)) return a.concat(b); 4586 return extend$5({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); 4587} 4588function createPropsRestProxy(props2, excludedKeys) { 4589 const ret = {}; 4590 for (const key in props2) { 4591 if (!excludedKeys.includes(key)) { 4592 Object.defineProperty(ret, key, { 4593 enumerable: true, 4594 get: () => props2[key] 4595 }); 4596 } 4597 } 4598 return ret; 4599} 4600function withAsyncContext(getAwaitable) { 4601 const ctx = getCurrentInstance(); 4602 let awaitable = getAwaitable(); 4603 unsetCurrentInstance();
vendor: 6,144 bytes, lines 4604-4821
4604 if (isPromise$2(awaitable)) { 4605 awaitable = awaitable.catch((e) => { 4606 setCurrentInstance(ctx); 4607 throw e; 4608 }); 4609 } 4610 return [awaitable, () => setCurrentInstance(ctx)]; 4611} 4612let shouldCacheAccess = true; 4613function applyOptions(instance) { 4614 const options2 = resolveMergedOptions(instance); 4615 const publicThis = instance.proxy; 4616 const ctx = instance.ctx; 4617 shouldCacheAccess = false; 4618 if (options2.beforeCreate) { 4619 callHook$1(options2.beforeCreate, instance, "bc"); 4620 } 4621 const { 4622 // state 4623 data: dataOptions, 4624 computed: computedOptions, 4625 methods, 4626 watch: watchOptions, 4627 provide: provideOptions, 4628 inject: injectOptions, 4629 // lifecycle 4630 created, 4631 beforeMount, 4632 mounted, 4633 beforeUpdate, 4634 updated, 4635 activated, 4636 deactivated, 4637 beforeDestroy, 4638 beforeUnmount, 4639 destroyed, 4640 unmounted, 4641 render: render2, 4642 renderTracked, 4643 renderTriggered, 4644 errorCaptured, 4645 serverPrefetch, 4646 // public API 4647 expose, 4648 inheritAttrs, 4649 // assets 4650 components, 4651 directives, 4652 filters 4653 } = options2; 4654 const checkDuplicateProperties = null; 4655 if (injectOptions) { 4656 resolveInjections(injectOptions, ctx, checkDuplicateProperties); 4657 } 4658 if (methods) { 4659 for (const key in methods) { 4660 const methodHandler = methods[key]; 4661 if (isFunction$3(methodHandler)) { 4662 { 4663 ctx[key] = methodHandler.bind(publicThis); 4664 } 4665 } 4666 } 4667 } 4668 if (dataOptions) { 4669 const data = dataOptions.call(publicThis, publicThis); 4670 if (!isObject$9(data)) ; 4671 else { 4672 instance.data = reactive(data); 4673 } 4674 } 4675 shouldCacheAccess = true; 4676 if (computedOptions) { 4677 for (const key in computedOptions) { 4678 const opt = computedOptions[key]; 4679 const get2 = isFunction$3(opt) ? opt.bind(publicThis, publicThis) : isFunction$3(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; 4680 const set = !isFunction$3(opt) && isFunction$3(opt.set) ? opt.set.bind(publicThis) : NOOP; 4681 const c = computed({ 4682 get: get2, 4683 set 4684 }); 4685 Object.defineProperty(ctx, key, { 4686 enumerable: true, 4687 configurable: true, 4688 get: () => c.value, 4689 set: (v) => c.value = v 4690 }); 4691 } 4692 } 4693 if (watchOptions) { 4694 for (const key in watchOptions) { 4695 createWatcher(watchOptions[key], ctx, publicThis, key); 4696 } 4697 } 4698 if (provideOptions) { 4699 const provides = isFunction$3(provideOptions) ? provideOptions.call(publicThis) : provideOptions; 4700 Reflect.ownKeys(provides).forEach((key) => { 4701 provide(key, provides[key]); 4702 }); 4703 } 4704 if (created) { 4705 callHook$1(created, instance, "c"); 4706 } 4707 function registerLifecycleHook(register2, hook) { 4708 if (isArray$3(hook)) { 4709 hook.forEach((_hook) => register2(_hook.bind(publicThis))); 4710 } else if (hook) { 4711 register2(hook.bind(publicThis)); 4712 } 4713 } 4714 registerLifecycleHook(onBeforeMount, beforeMount); 4715 registerLifecycleHook(onMounted, mounted); 4716 registerLifecycleHook(onBeforeUpdate, beforeUpdate); 4717 registerLifecycleHook(onUpdated, updated); 4718 registerLifecycleHook(onActivated, activated); 4719 registerLifecycleHook(onDeactivated, deactivated); 4720 registerLifecycleHook(onErrorCaptured, errorCaptured); 4721 registerLifecycleHook(onRenderTracked, renderTracked); 4722 registerLifecycleHook(onRenderTriggered, renderTriggered); 4723 registerLifecycleHook(onBeforeUnmount, beforeUnmount); 4724 registerLifecycleHook(onUnmounted, unmounted); 4725 registerLifecycleHook(onServerPrefetch, serverPrefetch); 4726 if (isArray$3(expose)) { 4727 if (expose.length) { 4728 const exposed = instance.exposed || (instance.exposed = {}); 4729 expose.forEach((key) => { 4730 Object.defineProperty(exposed, key, { 4731 get: () => publicThis[key], 4732 set: (val) => publicThis[key] = val 4733 }); 4734 }); 4735 } else if (!instance.exposed) { 4736 instance.exposed = {}; 4737 } 4738 } 4739 if (render2 && instance.render === NOOP) { 4740 instance.render = render2; 4741 } 4742 if (inheritAttrs != null) { 4743 instance.inheritAttrs = inheritAttrs; 4744 } 4745 if (components) instance.components = components; 4746 if (directives) instance.directives = directives; 4747 if (serverPrefetch) { 4748 markAsyncBoundary(instance); 4749 } 4750} 4751function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { 4752 if (isArray$3(injectOptions)) { 4753 injectOptions = normalizeInject(injectOptions); 4754 } 4755 for (const key in injectOptions) { 4756 const opt = injectOptions[key]; 4757 let injected; 4758 if (isObject$9(opt)) { 4759 if ("default" in opt) { 4760 injected = inject( 4761 opt.from || key, 4762 opt.default, 4763 true 4764 ); 4765 } else { 4766 injected = inject(opt.from || key); 4767 } 4768 } else { 4769 injected = inject(opt); 4770 } 4771 if (isRef(injected)) { 4772 Object.defineProperty(ctx, key, { 4773 enumerable: true, 4774 configurable: true, 4775 get: () => injected.value, 4776 set: (v) => injected.value = v 4777 }); 4778 } else { 4779 ctx[key] = injected; 4780 } 4781 } 4782} 4783function callHook$1(hook, instance, type) { 4784 callWithAsyncErrorHandling( 4785 isArray$3(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy), 4786 instance, 4787 type 4788 ); 4789} 4790function createWatcher(raw, ctx, publicThis, key) { 4791 let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; 4792 if (isString$3(raw)) { 4793 const handler = ctx[raw]; 4794 if (isFunction$3(handler)) { 4795 { 4796 watch(getter, handler); 4797 } 4798 } 4799 } else if (isFunction$3(raw)) { 4800 { 4801 watch(getter, raw.bind(publicThis)); 4802 } 4803 } else if (isObject$9(raw)) { 4804 if (isArray$3(raw)) { 4805 raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); 4806 } else { 4807 const handler = isFunction$3(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; 4808 if (isFunction$3(handler)) { 4809 watch(getter, handler, raw); 4810 } 4811 } 4812 } else ; 4813} 4814function resolveMergedOptions(instance) { 4815 const base = instance.type; 4816 const { mixins, extends: extendsOptions } = base; 4817 const { 4818 mixins: globalMixins, 4819 optionsCache: cache2, 4820 config: { optionMergeStrategies } 4821 } = instance.appContext;
vendor: 2,852 bytes, lines 4822-4932
4822 const cached = cache2.get(base); 4823 let resolved; 4824 if (cached) { 4825 resolved = cached; 4826 } else if (!globalMixins.length && !mixins && !extendsOptions) { 4827 { 4828 resolved = base; 4829 } 4830 } else { 4831 resolved = {}; 4832 if (globalMixins.length) { 4833 globalMixins.forEach( 4834 (m) => mergeOptions(resolved, m, optionMergeStrategies, true) 4835 ); 4836 } 4837 mergeOptions(resolved, base, optionMergeStrategies); 4838 } 4839 if (isObject$9(base)) { 4840 cache2.set(base, resolved); 4841 } 4842 return resolved; 4843} 4844function mergeOptions(to, from, strats, asMixin = false) { 4845 const { mixins, extends: extendsOptions } = from; 4846 if (extendsOptions) { 4847 mergeOptions(to, extendsOptions, strats, true); 4848 } 4849 if (mixins) { 4850 mixins.forEach( 4851 (m) => mergeOptions(to, m, strats, true) 4852 ); 4853 } 4854 for (const key in from) { 4855 if (asMixin && key === "expose") ; 4856 else { 4857 const strat = internalOptionMergeStrats[key] || strats && strats[key]; 4858 to[key] = strat ? strat(to[key], from[key]) : from[key]; 4859 } 4860 } 4861 return to; 4862} 4863const internalOptionMergeStrats = { 4864 data: mergeDataFn, 4865 props: mergeEmitsOrPropsOptions, 4866 emits: mergeEmitsOrPropsOptions, 4867 // objects 4868 methods: mergeObjectOptions, 4869 computed: mergeObjectOptions, 4870 // lifecycle 4871 beforeCreate: mergeAsArray$1, 4872 created: mergeAsArray$1, 4873 beforeMount: mergeAsArray$1, 4874 mounted: mergeAsArray$1, 4875 beforeUpdate: mergeAsArray$1, 4876 updated: mergeAsArray$1, 4877 beforeDestroy: mergeAsArray$1, 4878 beforeUnmount: mergeAsArray$1, 4879 destroyed: mergeAsArray$1, 4880 unmounted: mergeAsArray$1, 4881 activated: mergeAsArray$1, 4882 deactivated: mergeAsArray$1, 4883 errorCaptured: mergeAsArray$1, 4884 serverPrefetch: mergeAsArray$1, 4885 // assets 4886 components: mergeObjectOptions, 4887 directives: mergeObjectOptions, 4888 // watch 4889 watch: mergeWatchOptions, 4890 // provide / inject 4891 provide: mergeDataFn, 4892 inject: mergeInject 4893}; 4894function mergeDataFn(to, from) { 4895 if (!from) { 4896 return to; 4897 } 4898 if (!to) { 4899 return from; 4900 } 4901 return function mergedDataFn() { 4902 return extend$5( 4903 isFunction$3(to) ? to.call(this, this) : to, 4904 isFunction$3(from) ? from.call(this, this) : from 4905 ); 4906 }; 4907} 4908function mergeInject(to, from) { 4909 return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); 4910} 4911function normalizeInject(raw) { 4912 if (isArray$3(raw)) { 4913 const res = {}; 4914 for (let i = 0; i < raw.length; i++) { 4915 res[raw[i]] = raw[i]; 4916 } 4917 return res; 4918 } 4919 return raw; 4920} 4921function mergeAsArray$1(to, from) { 4922 return to ? [...new Set([].concat(to, from))] : from; 4923} 4924function mergeObjectOptions(to, from) { 4925 return to ? extend$5(/* @__PURE__ */ Object.create(null), to, from) : from; 4926} 4927function mergeEmitsOrPropsOptions(to, from) { 4928 if (to) { 4929 if (isArray$3(to) && isArray$3(from)) { 4930 return [.../* @__PURE__ */ new Set([...to, ...from])]; 4931 } 4932 return extend$5(
vendor: 6,207 bytes, lines 4933-5139
4933 /* @__PURE__ */ Object.create(null), 4934 normalizePropsOrEmits(to), 4935 normalizePropsOrEmits(from != null ? from : {}) 4936 ); 4937 } else { 4938 return from; 4939 } 4940} 4941function mergeWatchOptions(to, from) { 4942 if (!to) return from; 4943 if (!from) return to; 4944 const merged = extend$5(/* @__PURE__ */ Object.create(null), to); 4945 for (const key in from) { 4946 merged[key] = mergeAsArray$1(to[key], from[key]); 4947 } 4948 return merged; 4949} 4950function createAppContext() { 4951 return { 4952 app: null, 4953 config: { 4954 isNativeTag: NO, 4955 performance: false, 4956 globalProperties: {}, 4957 optionMergeStrategies: {}, 4958 errorHandler: void 0, 4959 warnHandler: void 0, 4960 compilerOptions: {} 4961 }, 4962 mixins: [], 4963 components: {}, 4964 directives: {}, 4965 provides: /* @__PURE__ */ Object.create(null), 4966 optionsCache: /* @__PURE__ */ new WeakMap(), 4967 propsCache: /* @__PURE__ */ new WeakMap(), 4968 emitsCache: /* @__PURE__ */ new WeakMap() 4969 }; 4970} 4971let uid$1 = 0; 4972function createAppAPI(render2, hydrate2) { 4973 return function createApp2(rootComponent, rootProps = null) { 4974 if (!isFunction$3(rootComponent)) { 4975 rootComponent = extend$5({}, rootComponent); 4976 } 4977 if (rootProps != null && !isObject$9(rootProps)) { 4978 rootProps = null; 4979 } 4980 const context = createAppContext(); 4981 const installedPlugins = /* @__PURE__ */ new WeakSet(); 4982 const pluginCleanupFns = []; 4983 let isMounted = false; 4984 const app2 = context.app = { 4985 _uid: uid$1++, 4986 _component: rootComponent, 4987 _props: rootProps, 4988 _container: null, 4989 _context: context, 4990 _instance: null, 4991 version, 4992 get config() { 4993 return context.config; 4994 }, 4995 set config(v) { 4996 }, 4997 use(plugin, ...options2) { 4998 if (installedPlugins.has(plugin)) ; 4999 else if (plugin && isFunction$3(plugin.install)) { 5000 installedPlugins.add(plugin); 5001 plugin.install(app2, ...options2); 5002 } else if (isFunction$3(plugin)) { 5003 installedPlugins.add(plugin); 5004 plugin(app2, ...options2); 5005 } else ; 5006 return app2; 5007 }, 5008 mixin(mixin) { 5009 { 5010 if (!context.mixins.includes(mixin)) { 5011 context.mixins.push(mixin); 5012 } 5013 } 5014 return app2; 5015 }, 5016 component(name, component) { 5017 if (!component) { 5018 return context.components[name]; 5019 } 5020 context.components[name] = component; 5021 return app2; 5022 }, 5023 directive(name, directive) { 5024 if (!directive) { 5025 return context.directives[name]; 5026 } 5027 context.directives[name] = directive; 5028 return app2; 5029 }, 5030 mount(rootContainer, isHydrate, namespace) { 5031 if (!isMounted) { 5032 const vnode = app2._ceVNode || createVNode(rootComponent, rootProps); 5033 vnode.appContext = context; 5034 if (namespace === true) { 5035 namespace = "svg"; 5036 } else if (namespace === false) { 5037 namespace = void 0; 5038 } 5039 if (isHydrate && hydrate2) { 5040 hydrate2(vnode, rootContainer); 5041 } else { 5042 render2(vnode, rootContainer, namespace); 5043 } 5044 isMounted = true; 5045 app2._container = rootContainer; 5046 rootContainer.__vue_app__ = app2; 5047 return getComponentPublicInstance(vnode.component); 5048 } 5049 }, 5050 onUnmount(cleanupFn) { 5051 pluginCleanupFns.push(cleanupFn); 5052 }, 5053 unmount() { 5054 if (isMounted) { 5055 callWithAsyncErrorHandling( 5056 pluginCleanupFns, 5057 app2._instance, 5058 16 5059 ); 5060 render2(null, app2._container); 5061 delete app2._container.__vue_app__; 5062 } 5063 }, 5064 provide(key, value) { 5065 context.provides[key] = value; 5066 return app2; 5067 }, 5068 runWithContext(fn) { 5069 const lastApp = currentApp; 5070 currentApp = app2; 5071 try { 5072 return fn(); 5073 } finally { 5074 currentApp = lastApp; 5075 } 5076 } 5077 }; 5078 return app2; 5079 }; 5080} 5081let currentApp = null; 5082function provide(key, value) { 5083 if (!currentInstance) ; 5084 else { 5085 let provides = currentInstance.provides; 5086 const parentProvides = currentInstance.parent && currentInstance.parent.provides; 5087 if (parentProvides === provides) { 5088 provides = currentInstance.provides = Object.create(parentProvides); 5089 } 5090 provides[key] = value; 5091 } 5092} 5093function inject(key, defaultValue, treatDefaultAsFactory = false) { 5094 const instance = currentInstance || currentRenderingInstance; 5095 if (instance || currentApp) { 5096 let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; 5097 if (provides && key in provides) { 5098 return provides[key]; 5099 } else if (arguments.length > 1) { 5100 return treatDefaultAsFactory && isFunction$3(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; 5101 } else ; 5102 } 5103} 5104function hasInjectionContext() { 5105 return !!(currentInstance || currentRenderingInstance || currentApp); 5106} 5107const internalObjectProto = {}; 5108const createInternalObject = () => Object.create(internalObjectProto); 5109const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; 5110function initProps(instance, rawProps, isStateful, isSSR = false) { 5111 const props2 = {}; 5112 const attrs = createInternalObject(); 5113 instance.propsDefaults = /* @__PURE__ */ Object.create(null); 5114 setFullProps(instance, rawProps, props2, attrs); 5115 for (const key in instance.propsOptions[0]) { 5116 if (!(key in props2)) { 5117 props2[key] = void 0; 5118 } 5119 } 5120 if (isStateful) { 5121 instance.props = isSSR ? props2 : shallowReactive(props2); 5122 } else { 5123 if (!instance.type.props) { 5124 instance.props = attrs; 5125 } else { 5126 instance.props = props2; 5127 } 5128 } 5129 instance.attrs = attrs; 5130} 5131function updateProps(instance, rawProps, rawPrevProps, optimized) { 5132 const { 5133 props: props2, 5134 attrs, 5135 vnode: { patchFlag } 5136 } = instance; 5137 const rawCurrentProps = toRaw(props2); 5138 const [options2] = instance.propsOptions; 5139 let hasAttrsChanged = false;
vendor: 4,486 bytes, lines 5140-5292
5140 if ( 5141 // always force full diff in dev 5142 // - #1942 if hmr is enabled with sfc component 5143 // - vite#872 non-sfc component used by sfc component 5144 (optimized || patchFlag > 0) && !(patchFlag & 16) 5145 ) { 5146 if (patchFlag & 8) { 5147 const propsToUpdate = instance.vnode.dynamicProps; 5148 for (let i = 0; i < propsToUpdate.length; i++) { 5149 let key = propsToUpdate[i]; 5150 if (isEmitListener(instance.emitsOptions, key)) { 5151 continue; 5152 } 5153 const value = rawProps[key]; 5154 if (options2) { 5155 if (hasOwn$2(attrs, key)) { 5156 if (value !== attrs[key]) { 5157 attrs[key] = value; 5158 hasAttrsChanged = true; 5159 } 5160 } else { 5161 const camelizedKey = camelize(key); 5162 props2[camelizedKey] = resolvePropValue( 5163 options2, 5164 rawCurrentProps, 5165 camelizedKey, 5166 value, 5167 instance, 5168 false 5169 ); 5170 } 5171 } else { 5172 if (value !== attrs[key]) { 5173 attrs[key] = value; 5174 hasAttrsChanged = true; 5175 } 5176 } 5177 } 5178 } 5179 } else { 5180 if (setFullProps(instance, rawProps, props2, attrs)) { 5181 hasAttrsChanged = true; 5182 } 5183 let kebabKey; 5184 for (const key in rawCurrentProps) { 5185 if (!rawProps || // for camelCase 5186 !hasOwn$2(rawProps, key) && // it's possible the original props was passed in as kebab-case 5187 // and converted to camelCase (#955) 5188 ((kebabKey = hyphenate(key)) === key || !hasOwn$2(rawProps, kebabKey))) { 5189 if (options2) { 5190 if (rawPrevProps && // for camelCase 5191 (rawPrevProps[key] !== void 0 || // for kebab-case 5192 rawPrevProps[kebabKey] !== void 0)) { 5193 props2[key] = resolvePropValue( 5194 options2, 5195 rawCurrentProps, 5196 key, 5197 void 0, 5198 instance, 5199 true 5200 ); 5201 } 5202 } else { 5203 delete props2[key]; 5204 } 5205 } 5206 } 5207 if (attrs !== rawCurrentProps) { 5208 for (const key in attrs) { 5209 if (!rawProps || !hasOwn$2(rawProps, key) && true) { 5210 delete attrs[key]; 5211 hasAttrsChanged = true; 5212 } 5213 } 5214 } 5215 } 5216 if (hasAttrsChanged) { 5217 trigger(instance.attrs, "set", ""); 5218 } 5219} 5220function setFullProps(instance, rawProps, props2, attrs) { 5221 const [options2, needCastKeys] = instance.propsOptions; 5222 let hasAttrsChanged = false; 5223 let rawCastValues; 5224 if (rawProps) { 5225 for (let key in rawProps) { 5226 if (isReservedProp(key)) { 5227 continue; 5228 } 5229 const value = rawProps[key]; 5230 let camelKey; 5231 if (options2 && hasOwn$2(options2, camelKey = camelize(key))) { 5232 if (!needCastKeys || !needCastKeys.includes(camelKey)) { 5233 props2[camelKey] = value; 5234 } else { 5235 (rawCastValues || (rawCastValues = {}))[camelKey] = value; 5236 } 5237 } else if (!isEmitListener(instance.emitsOptions, key)) { 5238 if (!(key in attrs) || value !== attrs[key]) { 5239 attrs[key] = value; 5240 hasAttrsChanged = true; 5241 } 5242 } 5243 } 5244 } 5245 if (needCastKeys) { 5246 const rawCurrentProps = toRaw(props2); 5247 const castValues = rawCastValues || EMPTY_OBJ; 5248 for (let i = 0; i < needCastKeys.length; i++) { 5249 const key = needCastKeys[i]; 5250 props2[key] = resolvePropValue( 5251 options2, 5252 rawCurrentProps, 5253 key, 5254 castValues[key], 5255 instance, 5256 !hasOwn$2(castValues, key) 5257 ); 5258 } 5259 } 5260 return hasAttrsChanged; 5261} 5262function resolvePropValue(options2, props2, key, value, instance, isAbsent) { 5263 const opt = options2[key]; 5264 if (opt != null) { 5265 const hasDefault = hasOwn$2(opt, "default"); 5266 if (hasDefault && value === void 0) { 5267 const defaultValue = opt.default; 5268 if (opt.type !== Function && !opt.skipFactory && isFunction$3(defaultValue)) { 5269 const { propsDefaults } = instance; 5270 if (key in propsDefaults) { 5271 value = propsDefaults[key]; 5272 } else { 5273 const reset2 = setCurrentInstance(instance); 5274 value = propsDefaults[key] = defaultValue.call( 5275 null, 5276 props2 5277 ); 5278 reset2(); 5279 } 5280 } else { 5281 value = defaultValue; 5282 } 5283 if (instance.ce) { 5284 instance.ce._setProp(key, value); 5285 } 5286 } 5287 if (opt[ 5288 0 5289 /* shouldCast */ 5290 ]) { 5291 if (isAbsent && !hasDefault) { 5292 value = false;
vendor: 15,450 bytes, lines 5293-5828
5293 } else if (opt[ 5294 1 5295 /* shouldCastTrue */ 5296 ] && (value === "" || value === hyphenate(key))) { 5297 value = true; 5298 } 5299 } 5300 } 5301 return value; 5302} 5303const mixinPropsCache = /* @__PURE__ */ new WeakMap(); 5304function normalizePropsOptions(comp, appContext, asMixin = false) { 5305 const cache2 = asMixin ? mixinPropsCache : appContext.propsCache; 5306 const cached = cache2.get(comp); 5307 if (cached) { 5308 return cached; 5309 } 5310 const raw = comp.props; 5311 const normalized = {}; 5312 const needCastKeys = []; 5313 let hasExtends = false; 5314 if (!isFunction$3(comp)) { 5315 const extendProps = (raw2) => { 5316 hasExtends = true; 5317 const [props2, keys] = normalizePropsOptions(raw2, appContext, true); 5318 extend$5(normalized, props2); 5319 if (keys) needCastKeys.push(...keys); 5320 }; 5321 if (!asMixin && appContext.mixins.length) { 5322 appContext.mixins.forEach(extendProps); 5323 } 5324 if (comp.extends) { 5325 extendProps(comp.extends); 5326 } 5327 if (comp.mixins) { 5328 comp.mixins.forEach(extendProps); 5329 } 5330 } 5331 if (!raw && !hasExtends) { 5332 if (isObject$9(comp)) { 5333 cache2.set(comp, EMPTY_ARR); 5334 } 5335 return EMPTY_ARR; 5336 } 5337 if (isArray$3(raw)) { 5338 for (let i = 0; i < raw.length; i++) { 5339 const normalizedKey = camelize(raw[i]); 5340 if (validatePropName(normalizedKey)) { 5341 normalized[normalizedKey] = EMPTY_OBJ; 5342 } 5343 } 5344 } else if (raw) { 5345 for (const key in raw) { 5346 const normalizedKey = camelize(key); 5347 if (validatePropName(normalizedKey)) { 5348 const opt = raw[key]; 5349 const prop = normalized[normalizedKey] = isArray$3(opt) || isFunction$3(opt) ? { type: opt } : extend$5({}, opt); 5350 const propType = prop.type; 5351 let shouldCast = false; 5352 let shouldCastTrue = true; 5353 if (isArray$3(propType)) { 5354 for (let index2 = 0; index2 < propType.length; ++index2) { 5355 const type = propType[index2]; 5356 const typeName = isFunction$3(type) && type.name; 5357 if (typeName === "Boolean") { 5358 shouldCast = true; 5359 break; 5360 } else if (typeName === "String") { 5361 shouldCastTrue = false; 5362 } 5363 } 5364 } else { 5365 shouldCast = isFunction$3(propType) && propType.name === "Boolean"; 5366 } 5367 prop[ 5368 0 5369 /* shouldCast */ 5370 ] = shouldCast; 5371 prop[ 5372 1 5373 /* shouldCastTrue */ 5374 ] = shouldCastTrue; 5375 if (shouldCast || hasOwn$2(prop, "default")) { 5376 needCastKeys.push(normalizedKey); 5377 } 5378 } 5379 } 5380 } 5381 const res = [normalized, needCastKeys]; 5382 if (isObject$9(comp)) { 5383 cache2.set(comp, res); 5384 } 5385 return res; 5386} 5387function validatePropName(key) { 5388 if (key[0] !== "$" && !isReservedProp(key)) { 5389 return true; 5390 } 5391 return false; 5392} 5393const isInternalKey = (key) => key[0] === "_" || key === "$stable"; 5394const normalizeSlotValue = (value) => isArray$3(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; 5395const normalizeSlot = (key, rawSlot, ctx) => { 5396 if (rawSlot._n) { 5397 return rawSlot; 5398 } 5399 const normalized = withCtx((...args) => { 5400 if (false) ; 5401 return normalizeSlotValue(rawSlot(...args)); 5402 }, ctx); 5403 normalized._c = false; 5404 return normalized; 5405}; 5406const normalizeObjectSlots = (rawSlots, slots, instance) => { 5407 const ctx = rawSlots._ctx; 5408 for (const key in rawSlots) { 5409 if (isInternalKey(key)) continue; 5410 const value = rawSlots[key]; 5411 if (isFunction$3(value)) { 5412 slots[key] = normalizeSlot(key, value, ctx); 5413 } else if (value != null) { 5414 const normalized = normalizeSlotValue(value); 5415 slots[key] = () => normalized; 5416 } 5417 } 5418}; 5419const normalizeVNodeSlots = (instance, children) => { 5420 const normalized = normalizeSlotValue(children); 5421 instance.slots.default = () => normalized; 5422}; 5423const assignSlots = (slots, children, optimized) => { 5424 for (const key in children) { 5425 if (optimized || !isInternalKey(key)) { 5426 slots[key] = children[key]; 5427 } 5428 } 5429}; 5430const initSlots = (instance, children, optimized) => { 5431 const slots = instance.slots = createInternalObject(); 5432 if (instance.vnode.shapeFlag & 32) { 5433 const type = children._; 5434 if (type) { 5435 assignSlots(slots, children, optimized); 5436 if (optimized) { 5437 def(slots, "_", type, true); 5438 } 5439 } else { 5440 normalizeObjectSlots(children, slots); 5441 } 5442 } else if (children) { 5443 normalizeVNodeSlots(instance, children); 5444 } 5445}; 5446const updateSlots = (instance, children, optimized) => { 5447 const { vnode, slots } = instance; 5448 let needDeletionCheck = true; 5449 let deletionComparisonTarget = EMPTY_OBJ; 5450 if (vnode.shapeFlag & 32) { 5451 const type = children._; 5452 if (type) { 5453 if (optimized && type === 1) { 5454 needDeletionCheck = false; 5455 } else { 5456 assignSlots(slots, children, optimized); 5457 } 5458 } else { 5459 needDeletionCheck = !children.$stable; 5460 normalizeObjectSlots(children, slots); 5461 } 5462 deletionComparisonTarget = children; 5463 } else if (children) { 5464 normalizeVNodeSlots(instance, children); 5465 deletionComparisonTarget = { default: 1 }; 5466 } 5467 if (needDeletionCheck) { 5468 for (const key in slots) { 5469 if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { 5470 delete slots[key]; 5471 } 5472 } 5473 } 5474}; 5475const queuePostRenderEffect = queueEffectWithSuspense; 5476function createRenderer(options2) { 5477 return baseCreateRenderer(options2); 5478} 5479function createHydrationRenderer(options2) { 5480 return baseCreateRenderer(options2, createHydrationFunctions); 5481} 5482function baseCreateRenderer(options2, createHydrationFns) { 5483 const target = getGlobalThis$2(); 5484 target.__VUE__ = true; 5485 const { 5486 insert: hostInsert, 5487 remove: hostRemove, 5488 patchProp: hostPatchProp, 5489 createElement: hostCreateElement, 5490 createText: hostCreateText, 5491 createComment: hostCreateComment, 5492 setText: hostSetText, 5493 setElementText: hostSetElementText, 5494 parentNode: hostParentNode, 5495 nextSibling: hostNextSibling, 5496 setScopeId: hostSetScopeId = NOOP, 5497 insertStaticContent: hostInsertStaticContent 5498 } = options2; 5499 const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { 5500 if (n1 === n2) { 5501 return; 5502 } 5503 if (n1 && !isSameVNodeType(n1, n2)) { 5504 anchor = getNextHostNode(n1); 5505 unmount(n1, parentComponent, parentSuspense, true); 5506 n1 = null; 5507 } 5508 if (n2.patchFlag === -2) { 5509 optimized = false; 5510 n2.dynamicChildren = null; 5511 } 5512 const { type, ref: ref3, shapeFlag } = n2; 5513 switch (type) { 5514 case Text: 5515 processText(n1, n2, container, anchor); 5516 break; 5517 case Comment: 5518 processCommentNode(n1, n2, container, anchor); 5519 break; 5520 case Static: 5521 if (n1 == null) { 5522 mountStaticNode(n2, container, anchor, namespace); 5523 } 5524 break; 5525 case Fragment: 5526 processFragment( 5527 n1, 5528 n2, 5529 container, 5530 anchor, 5531 parentComponent, 5532 parentSuspense, 5533 namespace, 5534 slotScopeIds, 5535 optimized 5536 ); 5537 break; 5538 default: 5539 if (shapeFlag & 1) { 5540 processElement( 5541 n1, 5542 n2, 5543 container, 5544 anchor, 5545 parentComponent, 5546 parentSuspense, 5547 namespace, 5548 slotScopeIds, 5549 optimized 5550 ); 5551 } else if (shapeFlag & 6) { 5552 processComponent( 5553 n1, 5554 n2, 5555 container, 5556 anchor, 5557 parentComponent, 5558 parentSuspense, 5559 namespace, 5560 slotScopeIds, 5561 optimized 5562 ); 5563 } else if (shapeFlag & 64) { 5564 type.process( 5565 n1, 5566 n2, 5567 container, 5568 anchor, 5569 parentComponent, 5570 parentSuspense, 5571 namespace, 5572 slotScopeIds, 5573 optimized, 5574 internals 5575 ); 5576 } else if (shapeFlag & 128) { 5577 type.process( 5578 n1, 5579 n2, 5580 container, 5581 anchor, 5582 parentComponent, 5583 parentSuspense, 5584 namespace, 5585 slotScopeIds, 5586 optimized, 5587 internals 5588 ); 5589 } else ; 5590 } 5591 if (ref3 != null && parentComponent) { 5592 setRef(ref3, n1 && n1.ref, parentSuspense, n2 || n1, !n2); 5593 } 5594 }; 5595 const processText = (n1, n2, container, anchor) => { 5596 if (n1 == null) { 5597 hostInsert( 5598 n2.el = hostCreateText(n2.children), 5599 container, 5600 anchor 5601 ); 5602 } else { 5603 const el = n2.el = n1.el; 5604 if (n2.children !== n1.children) { 5605 hostSetText(el, n2.children); 5606 } 5607 } 5608 }; 5609 const processCommentNode = (n1, n2, container, anchor) => { 5610 if (n1 == null) { 5611 hostInsert( 5612 n2.el = hostCreateComment(n2.children || ""), 5613 container, 5614 anchor 5615 ); 5616 } else { 5617 n2.el = n1.el; 5618 } 5619 }; 5620 const mountStaticNode = (n2, container, anchor, namespace) => { 5621 [n2.el, n2.anchor] = hostInsertStaticContent( 5622 n2.children, 5623 container, 5624 anchor, 5625 namespace, 5626 n2.el, 5627 n2.anchor 5628 ); 5629 }; 5630 const moveStaticNode = ({ el, anchor }, container, nextSibling) => { 5631 let next; 5632 while (el && el !== anchor) { 5633 next = hostNextSibling(el); 5634 hostInsert(el, container, nextSibling); 5635 el = next; 5636 } 5637 hostInsert(anchor, container, nextSibling); 5638 }; 5639 const removeStaticNode = ({ el, anchor }) => { 5640 let next; 5641 while (el && el !== anchor) { 5642 next = hostNextSibling(el); 5643 hostRemove(el); 5644 el = next; 5645 } 5646 hostRemove(anchor); 5647 }; 5648 const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 5649 if (n2.type === "svg") { 5650 namespace = "svg"; 5651 } else if (n2.type === "math") { 5652 namespace = "mathml"; 5653 } 5654 if (n1 == null) { 5655 mountElement( 5656 n2, 5657 container, 5658 anchor, 5659 parentComponent, 5660 parentSuspense, 5661 namespace, 5662 slotScopeIds, 5663 optimized 5664 ); 5665 } else { 5666 patchElement( 5667 n1, 5668 n2, 5669 parentComponent, 5670 parentSuspense, 5671 namespace, 5672 slotScopeIds, 5673 optimized 5674 ); 5675 } 5676 }; 5677 const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 5678 let el; 5679 let vnodeHook; 5680 const { props: props2, shapeFlag, transition: transition2, dirs } = vnode; 5681 el = vnode.el = hostCreateElement( 5682 vnode.type, 5683 namespace, 5684 props2 && props2.is, 5685 props2 5686 ); 5687 if (shapeFlag & 8) { 5688 hostSetElementText(el, vnode.children); 5689 } else if (shapeFlag & 16) { 5690 mountChildren( 5691 vnode.children, 5692 el, 5693 null, 5694 parentComponent, 5695 parentSuspense, 5696 resolveChildrenNamespace(vnode, namespace), 5697 slotScopeIds, 5698 optimized 5699 ); 5700 } 5701 if (dirs) { 5702 invokeDirectiveHook(vnode, null, parentComponent, "created"); 5703 } 5704 setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); 5705 if (props2) { 5706 for (const key in props2) { 5707 if (key !== "value" && !isReservedProp(key)) { 5708 hostPatchProp(el, key, null, props2[key], namespace, parentComponent); 5709 } 5710 } 5711 if ("value" in props2) { 5712 hostPatchProp(el, "value", null, props2.value, namespace); 5713 } 5714 if (vnodeHook = props2.onVnodeBeforeMount) { 5715 invokeVNodeHook(vnodeHook, parentComponent, vnode); 5716 } 5717 } 5718 if (dirs) { 5719 invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); 5720 } 5721 const needCallTransitionHooks = needTransition(parentSuspense, transition2); 5722 if (needCallTransitionHooks) { 5723 transition2.beforeEnter(el); 5724 } 5725 hostInsert(el, container, anchor); 5726 if ((vnodeHook = props2 && props2.onVnodeMounted) || needCallTransitionHooks || dirs) { 5727 queuePostRenderEffect(() => { 5728 vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); 5729 needCallTransitionHooks && transition2.enter(el); 5730 dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); 5731 }, parentSuspense); 5732 } 5733 }; 5734 const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { 5735 if (scopeId) { 5736 hostSetScopeId(el, scopeId); 5737 } 5738 if (slotScopeIds) { 5739 for (let i = 0; i < slotScopeIds.length; i++) { 5740 hostSetScopeId(el, slotScopeIds[i]); 5741 } 5742 } 5743 if (parentComponent) { 5744 let subTree = parentComponent.subTree; 5745 if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { 5746 const parentVNode = parentComponent.vnode; 5747 setScopeId( 5748 el, 5749 parentVNode, 5750 parentVNode.scopeId, 5751 parentVNode.slotScopeIds, 5752 parentComponent.parent 5753 ); 5754 } 5755 } 5756 }; 5757 const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { 5758 for (let i = start; i < children.length; i++) { 5759 const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); 5760 patch( 5761 null, 5762 child, 5763 container, 5764 anchor, 5765 parentComponent, 5766 parentSuspense, 5767 namespace, 5768 slotScopeIds, 5769 optimized 5770 ); 5771 } 5772 }; 5773 const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 5774 const el = n2.el = n1.el; 5775 let { patchFlag, dynamicChildren, dirs } = n2; 5776 patchFlag |= n1.patchFlag & 16; 5777 const oldProps = n1.props || EMPTY_OBJ; 5778 const newProps = n2.props || EMPTY_OBJ; 5779 let vnodeHook; 5780 parentComponent && toggleRecurse(parentComponent, false); 5781 if (vnodeHook = newProps.onVnodeBeforeUpdate) { 5782 invokeVNodeHook(vnodeHook, parentComponent, n2, n1); 5783 } 5784 if (dirs) { 5785 invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); 5786 } 5787 parentComponent && toggleRecurse(parentComponent, true); 5788 if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { 5789 hostSetElementText(el, ""); 5790 } 5791 if (dynamicChildren) { 5792 patchBlockChildren( 5793 n1.dynamicChildren, 5794 dynamicChildren, 5795 el, 5796 parentComponent, 5797 parentSuspense, 5798 resolveChildrenNamespace(n2, namespace), 5799 slotScopeIds 5800 ); 5801 } else if (!optimized) { 5802 patchChildren( 5803 n1, 5804 n2, 5805 el, 5806 null, 5807 parentComponent, 5808 parentSuspense, 5809 resolveChildrenNamespace(n2, namespace), 5810 slotScopeIds, 5811 false 5812 ); 5813 } 5814 if (patchFlag > 0) { 5815 if (patchFlag & 16) { 5816 patchProps(el, oldProps, newProps, parentComponent, namespace); 5817 } else { 5818 if (patchFlag & 2) { 5819 if (oldProps.class !== newProps.class) { 5820 hostPatchProp(el, "class", null, newProps.class, namespace); 5821 } 5822 } 5823 if (patchFlag & 4) { 5824 hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); 5825 } 5826 if (patchFlag & 8) { 5827 const propsToUpdate = n2.dynamicProps; 5828 for (let i = 0; i < propsToUpdate.length; i++) {
vendor: 4,703 bytes, lines 5829-5952
5829 const key = propsToUpdate[i]; 5830 const prev = oldProps[key]; 5831 const next = newProps[key]; 5832 if (next !== prev || key === "value") { 5833 hostPatchProp(el, key, prev, next, namespace, parentComponent); 5834 } 5835 } 5836 } 5837 } 5838 if (patchFlag & 1) { 5839 if (n1.children !== n2.children) { 5840 hostSetElementText(el, n2.children); 5841 } 5842 } 5843 } else if (!optimized && dynamicChildren == null) { 5844 patchProps(el, oldProps, newProps, parentComponent, namespace); 5845 } 5846 if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { 5847 queuePostRenderEffect(() => { 5848 vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); 5849 dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); 5850 }, parentSuspense); 5851 } 5852 }; 5853 const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { 5854 for (let i = 0; i < newChildren.length; i++) { 5855 const oldVNode = oldChildren[i]; 5856 const newVNode = newChildren[i]; 5857 const container = ( 5858 // oldVNode may be an errored async setup() component inside Suspense 5859 // which will not have a mounted element 5860 oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent 5861 // of the Fragment itself so it can move its children. 5862 (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement 5863 // which also requires the correct parent container 5864 !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. 5865 oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( 5866 // In other cases, the parent container is not actually used so we 5867 // just pass the block element here to avoid a DOM parentNode call. 5868 fallbackContainer 5869 ) 5870 ); 5871 patch( 5872 oldVNode, 5873 newVNode, 5874 container, 5875 null, 5876 parentComponent, 5877 parentSuspense, 5878 namespace, 5879 slotScopeIds, 5880 true 5881 ); 5882 } 5883 }; 5884 const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { 5885 if (oldProps !== newProps) { 5886 if (oldProps !== EMPTY_OBJ) { 5887 for (const key in oldProps) { 5888 if (!isReservedProp(key) && !(key in newProps)) { 5889 hostPatchProp( 5890 el, 5891 key, 5892 oldProps[key], 5893 null, 5894 namespace, 5895 parentComponent 5896 ); 5897 } 5898 } 5899 } 5900 for (const key in newProps) { 5901 if (isReservedProp(key)) continue; 5902 const next = newProps[key]; 5903 const prev = oldProps[key]; 5904 if (next !== prev && key !== "value") { 5905 hostPatchProp(el, key, prev, next, namespace, parentComponent); 5906 } 5907 } 5908 if ("value" in newProps) { 5909 hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); 5910 } 5911 } 5912 }; 5913 const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 5914 const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); 5915 const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); 5916 let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; 5917 if (fragmentSlotScopeIds) { 5918 slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; 5919 } 5920 if (n1 == null) { 5921 hostInsert(fragmentStartAnchor, container, anchor); 5922 hostInsert(fragmentEndAnchor, container, anchor); 5923 mountChildren( 5924 // #10007 5925 // such fragment like `<></>` will be compiled into 5926 // a fragment which doesn't have a children. 5927 // In this case fallback to an empty array 5928 n2.children || [], 5929 container, 5930 fragmentEndAnchor, 5931 parentComponent, 5932 parentSuspense, 5933 namespace, 5934 slotScopeIds, 5935 optimized 5936 ); 5937 } else { 5938 if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result 5939 // of renderSlot() with no valid children 5940 n1.dynamicChildren) { 5941 patchBlockChildren( 5942 n1.dynamicChildren, 5943 dynamicChildren, 5944 container, 5945 parentComponent, 5946 parentSuspense, 5947 namespace, 5948 slotScopeIds 5949 ); 5950 if ( 5951 // #2080 if the stable fragment has a key, it's a <template v-for> that may 5952 // get moved around. Make sure all root level vnodes inherit el.
vendor: 12,391 bytes, lines 5953-6393
5953 // #2134 or if it's a component root, it may also get moved around 5954 // as the component is being moved. 5955 n2.key != null || parentComponent && n2 === parentComponent.subTree 5956 ) { 5957 traverseStaticChildren( 5958 n1, 5959 n2, 5960 true 5961 /* shallow */ 5962 ); 5963 } 5964 } else { 5965 patchChildren( 5966 n1, 5967 n2, 5968 container, 5969 fragmentEndAnchor, 5970 parentComponent, 5971 parentSuspense, 5972 namespace, 5973 slotScopeIds, 5974 optimized 5975 ); 5976 } 5977 } 5978 }; 5979 const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 5980 n2.slotScopeIds = slotScopeIds; 5981 if (n1 == null) { 5982 if (n2.shapeFlag & 512) { 5983 parentComponent.ctx.activate( 5984 n2, 5985 container, 5986 anchor, 5987 namespace, 5988 optimized 5989 ); 5990 } else { 5991 mountComponent( 5992 n2, 5993 container, 5994 anchor, 5995 parentComponent, 5996 parentSuspense, 5997 namespace, 5998 optimized 5999 ); 6000 } 6001 } else { 6002 updateComponent(n1, n2, optimized); 6003 } 6004 }; 6005 const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { 6006 const instance = initialVNode.component = createComponentInstance( 6007 initialVNode, 6008 parentComponent, 6009 parentSuspense 6010 ); 6011 if (isKeepAlive(initialVNode)) { 6012 instance.ctx.renderer = internals; 6013 } 6014 { 6015 setupComponent(instance, false, optimized); 6016 } 6017 if (instance.asyncDep) { 6018 parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); 6019 if (!initialVNode.el) { 6020 const placeholder = instance.subTree = createVNode(Comment); 6021 processCommentNode(null, placeholder, container, anchor); 6022 } 6023 } else { 6024 setupRenderEffect( 6025 instance, 6026 initialVNode, 6027 container, 6028 anchor, 6029 parentSuspense, 6030 namespace, 6031 optimized 6032 ); 6033 } 6034 }; 6035 const updateComponent = (n1, n2, optimized) => { 6036 const instance = n2.component = n1.component; 6037 if (shouldUpdateComponent(n1, n2, optimized)) { 6038 if (instance.asyncDep && !instance.asyncResolved) { 6039 updateComponentPreRender(instance, n2, optimized); 6040 return; 6041 } else { 6042 instance.next = n2; 6043 instance.update(); 6044 } 6045 } else { 6046 n2.el = n1.el; 6047 instance.vnode = n2; 6048 } 6049 }; 6050 const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { 6051 const componentUpdateFn = () => { 6052 if (!instance.isMounted) { 6053 let vnodeHook; 6054 const { el, props: props2 } = initialVNode; 6055 const { bm, m, parent, root: root2, type } = instance; 6056 const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); 6057 toggleRecurse(instance, false); 6058 if (bm) { 6059 invokeArrayFns(bm); 6060 } 6061 if (!isAsyncWrapperVNode && (vnodeHook = props2 && props2.onVnodeBeforeMount)) { 6062 invokeVNodeHook(vnodeHook, parent, initialVNode); 6063 } 6064 toggleRecurse(instance, true); 6065 if (el && hydrateNode) { 6066 const hydrateSubTree = () => { 6067 instance.subTree = renderComponentRoot(instance); 6068 hydrateNode( 6069 el, 6070 instance.subTree, 6071 instance, 6072 parentSuspense, 6073 null 6074 ); 6075 }; 6076 if (isAsyncWrapperVNode && type.__asyncHydrate) { 6077 type.__asyncHydrate( 6078 el, 6079 instance, 6080 hydrateSubTree 6081 ); 6082 } else { 6083 hydrateSubTree(); 6084 } 6085 } else { 6086 if (root2.ce) { 6087 root2.ce._injectChildStyle(type); 6088 } 6089 const subTree = instance.subTree = renderComponentRoot(instance); 6090 patch( 6091 null, 6092 subTree, 6093 container, 6094 anchor, 6095 instance, 6096 parentSuspense, 6097 namespace 6098 ); 6099 initialVNode.el = subTree.el; 6100 } 6101 if (m) { 6102 queuePostRenderEffect(m, parentSuspense); 6103 } 6104 if (!isAsyncWrapperVNode && (vnodeHook = props2 && props2.onVnodeMounted)) { 6105 const scopedInitialVNode = initialVNode; 6106 queuePostRenderEffect( 6107 () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), 6108 parentSuspense 6109 ); 6110 } 6111 if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { 6112 instance.a && queuePostRenderEffect(instance.a, parentSuspense); 6113 } 6114 instance.isMounted = true; 6115 initialVNode = container = anchor = null; 6116 } else { 6117 let { next, bu, u, parent, vnode } = instance; 6118 { 6119 const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); 6120 if (nonHydratedAsyncRoot) { 6121 if (next) { 6122 next.el = vnode.el; 6123 updateComponentPreRender(instance, next, optimized); 6124 } 6125 nonHydratedAsyncRoot.asyncDep.then(() => { 6126 if (!instance.isUnmounted) { 6127 componentUpdateFn(); 6128 } 6129 }); 6130 return; 6131 } 6132 } 6133 let originNext = next; 6134 let vnodeHook; 6135 toggleRecurse(instance, false); 6136 if (next) { 6137 next.el = vnode.el; 6138 updateComponentPreRender(instance, next, optimized); 6139 } else { 6140 next = vnode; 6141 } 6142 if (bu) { 6143 invokeArrayFns(bu); 6144 } 6145 if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { 6146 invokeVNodeHook(vnodeHook, parent, next, vnode); 6147 } 6148 toggleRecurse(instance, true); 6149 const nextTree = renderComponentRoot(instance); 6150 const prevTree = instance.subTree; 6151 instance.subTree = nextTree; 6152 patch( 6153 prevTree, 6154 nextTree, 6155 // parent may have changed if it's in a teleport 6156 hostParentNode(prevTree.el), 6157 // anchor may have changed if it's in a fragment 6158 getNextHostNode(prevTree), 6159 instance, 6160 parentSuspense, 6161 namespace 6162 ); 6163 next.el = nextTree.el; 6164 if (originNext === null) { 6165 updateHOCHostEl(instance, nextTree.el); 6166 } 6167 if (u) { 6168 queuePostRenderEffect(u, parentSuspense); 6169 } 6170 if (vnodeHook = next.props && next.props.onVnodeUpdated) { 6171 queuePostRenderEffect( 6172 () => invokeVNodeHook(vnodeHook, parent, next, vnode), 6173 parentSuspense 6174 ); 6175 } 6176 } 6177 }; 6178 instance.scope.on(); 6179 const effect2 = instance.effect = new ReactiveEffect(componentUpdateFn); 6180 instance.scope.off(); 6181 const update4 = instance.update = effect2.run.bind(effect2); 6182 const job = instance.job = effect2.runIfDirty.bind(effect2); 6183 job.i = instance; 6184 job.id = instance.uid; 6185 effect2.scheduler = () => queueJob(job); 6186 toggleRecurse(instance, true); 6187 update4(); 6188 }; 6189 const updateComponentPreRender = (instance, nextVNode, optimized) => { 6190 nextVNode.component = instance; 6191 const prevProps = instance.vnode.props; 6192 instance.vnode = nextVNode; 6193 instance.next = null; 6194 updateProps(instance, nextVNode.props, prevProps, optimized); 6195 updateSlots(instance, nextVNode.children, optimized); 6196 pauseTracking(); 6197 flushPreFlushCbs(instance); 6198 resetTracking(); 6199 }; 6200 const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { 6201 const c1 = n1 && n1.children; 6202 const prevShapeFlag = n1 ? n1.shapeFlag : 0; 6203 const c2 = n2.children; 6204 const { patchFlag, shapeFlag } = n2; 6205 if (patchFlag > 0) { 6206 if (patchFlag & 128) { 6207 patchKeyedChildren( 6208 c1, 6209 c2, 6210 container, 6211 anchor, 6212 parentComponent, 6213 parentSuspense, 6214 namespace, 6215 slotScopeIds, 6216 optimized 6217 ); 6218 return; 6219 } else if (patchFlag & 256) { 6220 patchUnkeyedChildren( 6221 c1, 6222 c2, 6223 container, 6224 anchor, 6225 parentComponent, 6226 parentSuspense, 6227 namespace, 6228 slotScopeIds, 6229 optimized 6230 ); 6231 return; 6232 } 6233 } 6234 if (shapeFlag & 8) { 6235 if (prevShapeFlag & 16) { 6236 unmountChildren(c1, parentComponent, parentSuspense); 6237 } 6238 if (c2 !== c1) { 6239 hostSetElementText(container, c2); 6240 } 6241 } else { 6242 if (prevShapeFlag & 16) { 6243 if (shapeFlag & 16) { 6244 patchKeyedChildren( 6245 c1, 6246 c2, 6247 container, 6248 anchor, 6249 parentComponent, 6250 parentSuspense, 6251 namespace, 6252 slotScopeIds, 6253 optimized 6254 ); 6255 } else { 6256 unmountChildren(c1, parentComponent, parentSuspense, true); 6257 } 6258 } else { 6259 if (prevShapeFlag & 8) { 6260 hostSetElementText(container, ""); 6261 } 6262 if (shapeFlag & 16) { 6263 mountChildren( 6264 c2, 6265 container, 6266 anchor, 6267 parentComponent, 6268 parentSuspense, 6269 namespace, 6270 slotScopeIds, 6271 optimized 6272 ); 6273 } 6274 } 6275 } 6276 }; 6277 const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 6278 c1 = c1 || EMPTY_ARR; 6279 c2 = c2 || EMPTY_ARR; 6280 const oldLength = c1.length; 6281 const newLength = c2.length; 6282 const commonLength = Math.min(oldLength, newLength); 6283 let i; 6284 for (i = 0; i < commonLength; i++) { 6285 const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); 6286 patch( 6287 c1[i], 6288 nextChild, 6289 container, 6290 null, 6291 parentComponent, 6292 parentSuspense, 6293 namespace, 6294 slotScopeIds, 6295 optimized 6296 ); 6297 } 6298 if (oldLength > newLength) { 6299 unmountChildren( 6300 c1, 6301 parentComponent, 6302 parentSuspense, 6303 true, 6304 false, 6305 commonLength 6306 ); 6307 } else { 6308 mountChildren( 6309 c2, 6310 container, 6311 anchor, 6312 parentComponent, 6313 parentSuspense, 6314 namespace, 6315 slotScopeIds, 6316 optimized, 6317 commonLength 6318 ); 6319 } 6320 }; 6321 const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { 6322 let i = 0; 6323 const l2 = c2.length; 6324 let e1 = c1.length - 1; 6325 let e2 = l2 - 1; 6326 while (i <= e1 && i <= e2) { 6327 const n1 = c1[i]; 6328 const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); 6329 if (isSameVNodeType(n1, n2)) { 6330 patch( 6331 n1, 6332 n2, 6333 container, 6334 null, 6335 parentComponent, 6336 parentSuspense, 6337 namespace, 6338 slotScopeIds, 6339 optimized 6340 ); 6341 } else { 6342 break; 6343 } 6344 i++; 6345 } 6346 while (i <= e1 && i <= e2) { 6347 const n1 = c1[e1]; 6348 const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); 6349 if (isSameVNodeType(n1, n2)) { 6350 patch( 6351 n1, 6352 n2, 6353 container, 6354 null, 6355 parentComponent, 6356 parentSuspense, 6357 namespace, 6358 slotScopeIds, 6359 optimized 6360 ); 6361 } else { 6362 break; 6363 } 6364 e1--; 6365 e2--; 6366 } 6367 if (i > e1) { 6368 if (i <= e2) { 6369 const nextPos = e2 + 1; 6370 const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; 6371 while (i <= e2) { 6372 patch( 6373 null, 6374 c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), 6375 container, 6376 anchor, 6377 parentComponent, 6378 parentSuspense, 6379 namespace, 6380 slotScopeIds, 6381 optimized 6382 ); 6383 i++; 6384 } 6385 } 6386 } else if (i > e2) { 6387 while (i <= e1) { 6388 unmount(c1[i], parentComponent, parentSuspense, true); 6389 i++; 6390 } 6391 } else { 6392 const s1 = i; 6393 const s2 = i;
vendor: 4,636 bytes, lines 6394-6546
6394 const keyToNewIndexMap = /* @__PURE__ */ new Map(); 6395 for (i = s2; i <= e2; i++) { 6396 const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); 6397 if (nextChild.key != null) { 6398 keyToNewIndexMap.set(nextChild.key, i); 6399 } 6400 } 6401 let j; 6402 let patched = 0; 6403 const toBePatched = e2 - s2 + 1; 6404 let moved = false; 6405 let maxNewIndexSoFar = 0; 6406 const newIndexToOldIndexMap = new Array(toBePatched); 6407 for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; 6408 for (i = s1; i <= e1; i++) { 6409 const prevChild = c1[i]; 6410 if (patched >= toBePatched) { 6411 unmount(prevChild, parentComponent, parentSuspense, true); 6412 continue; 6413 } 6414 let newIndex; 6415 if (prevChild.key != null) { 6416 newIndex = keyToNewIndexMap.get(prevChild.key); 6417 } else { 6418 for (j = s2; j <= e2; j++) { 6419 if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { 6420 newIndex = j; 6421 break; 6422 } 6423 } 6424 } 6425 if (newIndex === void 0) { 6426 unmount(prevChild, parentComponent, parentSuspense, true); 6427 } else { 6428 newIndexToOldIndexMap[newIndex - s2] = i + 1; 6429 if (newIndex >= maxNewIndexSoFar) { 6430 maxNewIndexSoFar = newIndex; 6431 } else { 6432 moved = true; 6433 } 6434 patch( 6435 prevChild, 6436 c2[newIndex], 6437 container, 6438 null, 6439 parentComponent, 6440 parentSuspense, 6441 namespace, 6442 slotScopeIds, 6443 optimized 6444 ); 6445 patched++; 6446 } 6447 } 6448 const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR; 6449 j = increasingNewIndexSequence.length - 1; 6450 for (i = toBePatched - 1; i >= 0; i--) { 6451 const nextIndex = s2 + i; 6452 const nextChild = c2[nextIndex]; 6453 const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor; 6454 if (newIndexToOldIndexMap[i] === 0) { 6455 patch( 6456 null, 6457 nextChild, 6458 container, 6459 anchor, 6460 parentComponent, 6461 parentSuspense, 6462 namespace, 6463 slotScopeIds, 6464 optimized 6465 ); 6466 } else if (moved) { 6467 if (j < 0 || i !== increasingNewIndexSequence[j]) { 6468 move(nextChild, container, anchor, 2); 6469 } else { 6470 j--; 6471 } 6472 } 6473 } 6474 } 6475 }; 6476 const move = (vnode, container, anchor, moveType, parentSuspense = null) => { 6477 const { el, type, transition: transition2, children, shapeFlag } = vnode; 6478 if (shapeFlag & 6) { 6479 move(vnode.component.subTree, container, anchor, moveType); 6480 return; 6481 } 6482 if (shapeFlag & 128) { 6483 vnode.suspense.move(container, anchor, moveType); 6484 return; 6485 } 6486 if (shapeFlag & 64) { 6487 type.move(vnode, container, anchor, internals); 6488 return; 6489 } 6490 if (type === Fragment) { 6491 hostInsert(el, container, anchor); 6492 for (let i = 0; i < children.length; i++) { 6493 move(children[i], container, anchor, moveType); 6494 } 6495 hostInsert(vnode.anchor, container, anchor); 6496 return; 6497 } 6498 if (type === Static) { 6499 moveStaticNode(vnode, container, anchor); 6500 return; 6501 } 6502 const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition2; 6503 if (needTransition2) { 6504 if (moveType === 0) { 6505 transition2.beforeEnter(el); 6506 hostInsert(el, container, anchor); 6507 queuePostRenderEffect(() => transition2.enter(el), parentSuspense); 6508 } else { 6509 const { leave, delayLeave, afterLeave } = transition2; 6510 const remove22 = () => { 6511 if (vnode.ctx.isUnmounted) { 6512 hostRemove(el); 6513 } else { 6514 hostInsert(el, container, anchor); 6515 } 6516 }; 6517 const performLeave = () => { 6518 leave(el, () => { 6519 remove22(); 6520 afterLeave && afterLeave(); 6521 }); 6522 }; 6523 if (delayLeave) { 6524 delayLeave(el, remove22, performLeave); 6525 } else { 6526 performLeave(); 6527 } 6528 } 6529 } else { 6530 hostInsert(el, container, anchor); 6531 } 6532 }; 6533 const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { 6534 const { 6535 type, 6536 props: props2, 6537 ref: ref3, 6538 children, 6539 dynamicChildren, 6540 shapeFlag, 6541 patchFlag, 6542 dirs, 6543 cacheIndex 6544 } = vnode; 6545 if (patchFlag === -2) { 6546 optimized = false;
6547 } 6548 if (ref3 != null) { 6549 pauseTracking(); 6550 setRef(ref3, null, parentSuspense, vnode, true); 6551 resetTracking(); 6552 } 6553 if (cacheIndex != null) { 6554 parentComponent.renderCache[cacheIndex] = void 0; 6555 } 6556 if (shapeFlag & 256) { 6557 parentComponent.ctx.deactivate(vnode); 6558 return; 6559 } 6560 const shouldInvokeDirs = shapeFlag & 1 && dirs; 6561 const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); 6562 let vnodeHook; 6563 if (shouldInvokeVnodeHook && (vnodeHook = props2 && props2.onVnodeBeforeUnmount)) { 6564 invokeVNodeHook(vnodeHook, parentComponent, vnode); 6565 } 6566 if (shapeFlag & 6) { 6567 unmountComponent(vnode.component, parentSuspense, doRemove); 6568 } else { 6569 if (shapeFlag & 128) { 6570 vnode.suspense.unmount(parentSuspense, doRemove); 6571 return; 6572 } 6573 if (shouldInvokeDirs) { 6574 invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); 6575 } 6576 if (shapeFlag & 64) { 6577 vnode.type.remove( 6578 vnode, 6579 parentComponent, 6580 parentSuspense, 6581 internals, 6582 doRemove 6583 ); 6584 } else if (dynamicChildren && // #5154 6585 // when v-once is used inside a block, setBlockTracking(-1) marks the 6586 // parent block with hasOnce: true 6587 // so that it doesn't take the fast path during unmount - otherwise 6588 // components nested in v-once are never unmounted. 6589 !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments 6590 (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { 6591 unmountChildren( 6592 dynamicChildren, 6593 parentComponent, 6594 parentSuspense, 6595 false, 6596 true 6597 ); 6598 } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { 6599 unmountChildren(children, parentComponent, parentSuspense); 6600 } 6601 if (doRemove) { 6602 remove2(vnode); 6603 } 6604 } 6605 if (shouldInvokeVnodeHook && (vnodeHook = props2 && props2.onVnodeUnmounted) || shouldInvokeDirs) { 6606 queuePostRenderEffect(() => { 6607 vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); 6608 shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); 6609 }, parentSuspense); 6610 } 6611 }; 6612 const remove2 = (vnode) => { 6613 const { type, el, anchor, transition: transition2 } = vnode; 6614 if (type === Fragment) { 6615 { 6616 removeFragment(el, anchor); 6617 } 6618 return; 6619 } 6620 if (type === Static) { 6621 removeStaticNode(vnode); 6622 return; 6623 } 6624 const performRemove = () => { 6625 hostRemove(el); 6626 if (transition2 && !transition2.persisted && transition2.afterLeave) { 6627 transition2.afterLeave(); 6628 } 6629 }; 6630 if (vnode.shapeFlag & 1 && transition2 && !transition2.persisted) { 6631 const { leave, delayLeave } = transition2; 6632 const performLeave = () => leave(el, performRemove); 6633 if (delayLeave) { 6634 delayLeave(vnode.el, performRemove, performLeave); 6635 } else { 6636 performLeave(); 6637 } 6638 } else { 6639 performRemove(); 6640 } 6641 }; 6642 const removeFragment = (cur, end) => { 6643 let next; 6644 while (cur !== end) { 6645 next = hostNextSibling(cur); 6646 hostRemove(cur); 6647 cur = next; 6648 } 6649 hostRemove(end); 6650 }; 6651 const unmountComponent = (instance, parentSuspense, doRemove) => { 6652 const { 6653 bum, 6654 scope, 6655 job, 6656 subTree, 6657 um, 6658 m, 6659 a, 6660 parent, 6661 slots: { __: slotCacheKeys } 6662 } = instance; 6663 invalidateMount(m); 6664 invalidateMount(a); 6665 if (bum) { 6666 invokeArrayFns(bum); 6667 } 6668 if (parent && isArray$3(slotCacheKeys)) { 6669 slotCacheKeys.forEach((v) => { 6670 parent.renderCache[v] = void 0; 6671 }); 6672 } 6673 scope.stop(); 6674 if (job) { 6675 job.flags |= 8; 6676 unmount(subTree, instance, parentSuspense, doRemove); 6677 } 6678 if (um) { 6679 queuePostRenderEffect(um, parentSuspense); 6680 } 6681 queuePostRenderEffect(() => { 6682 instance.isUnmounted = true; 6683 }, parentSuspense); 6684 if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { 6685 parentSuspense.deps--; 6686 if (parentSuspense.deps === 0) { 6687 parentSuspense.resolve(); 6688 } 6689 } 6690 }; 6691 const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { 6692 for (let i = start; i < children.length; i++) { 6693 unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); 6694 } 6695 }; 6696 const getNextHostNode = (vnode) => { 6697 if (vnode.shapeFlag & 6) { 6698 return getNextHostNode(vnode.component.subTree); 6699 } 6700 if (vnode.shapeFlag & 128) { 6701 return vnode.suspense.next(); 6702 } 6703 const el = hostNextSibling(vnode.anchor || vnode.el); 6704 const teleportEnd = el && el[TeleportEndKey]; 6705 return teleportEnd ? hostNextSibling(teleportEnd) : el; 6706 }; 6707 let isFlushing = false;
vendor: 15,333 bytes, lines 6708-7270
6708 const render2 = (vnode, container, namespace) => { 6709 if (vnode == null) { 6710 if (container._vnode) { 6711 unmount(container._vnode, null, null, true); 6712 } 6713 } else { 6714 patch( 6715 container._vnode || null, 6716 vnode, 6717 container, 6718 null, 6719 null, 6720 null, 6721 namespace 6722 ); 6723 } 6724 container._vnode = vnode; 6725 if (!isFlushing) { 6726 isFlushing = true; 6727 flushPreFlushCbs(); 6728 flushPostFlushCbs(); 6729 isFlushing = false; 6730 } 6731 }; 6732 const internals = { 6733 p: patch, 6734 um: unmount, 6735 m: move, 6736 r: remove2, 6737 mt: mountComponent, 6738 mc: mountChildren, 6739 pc: patchChildren, 6740 pbc: patchBlockChildren, 6741 n: getNextHostNode, 6742 o: options2 6743 }; 6744 let hydrate2; 6745 let hydrateNode; 6746 if (createHydrationFns) { 6747 [hydrate2, hydrateNode] = createHydrationFns( 6748 internals 6749 ); 6750 } 6751 return { 6752 render: render2, 6753 hydrate: hydrate2, 6754 createApp: createAppAPI(render2, hydrate2) 6755 }; 6756} 6757function resolveChildrenNamespace({ type, props: props2 }, currentNamespace) { 6758 return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props2 && props2.encoding && props2.encoding.includes("html") ? void 0 : currentNamespace; 6759} 6760function toggleRecurse({ effect: effect2, job }, allowed) { 6761 if (allowed) { 6762 effect2.flags |= 32; 6763 job.flags |= 4; 6764 } else { 6765 effect2.flags &= -33; 6766 job.flags &= -5; 6767 } 6768} 6769function needTransition(parentSuspense, transition2) { 6770 return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition2 && !transition2.persisted; 6771} 6772function traverseStaticChildren(n1, n2, shallow = false) { 6773 const ch1 = n1.children; 6774 const ch2 = n2.children; 6775 if (isArray$3(ch1) && isArray$3(ch2)) { 6776 for (let i = 0; i < ch1.length; i++) { 6777 const c1 = ch1[i]; 6778 let c2 = ch2[i]; 6779 if (c2.shapeFlag & 1 && !c2.dynamicChildren) { 6780 if (c2.patchFlag <= 0 || c2.patchFlag === 32) { 6781 c2 = ch2[i] = cloneIfMounted(ch2[i]); 6782 c2.el = c1.el; 6783 } 6784 if (!shallow && c2.patchFlag !== -2) 6785 traverseStaticChildren(c1, c2); 6786 } 6787 if (c2.type === Text) { 6788 c2.el = c1.el; 6789 } 6790 if (c2.type === Comment && !c2.el) { 6791 c2.el = c1.el; 6792 } 6793 } 6794 } 6795} 6796function getSequence(arr) { 6797 const p2 = arr.slice(); 6798 const result = [0]; 6799 let i, j, u, v, c; 6800 const len = arr.length; 6801 for (i = 0; i < len; i++) { 6802 const arrI = arr[i]; 6803 if (arrI !== 0) { 6804 j = result[result.length - 1]; 6805 if (arr[j] < arrI) { 6806 p2[i] = j; 6807 result.push(i); 6808 continue; 6809 } 6810 u = 0; 6811 v = result.length - 1; 6812 while (u < v) { 6813 c = u + v >> 1; 6814 if (arr[result[c]] < arrI) { 6815 u = c + 1; 6816 } else { 6817 v = c; 6818 } 6819 } 6820 if (arrI < arr[result[u]]) { 6821 if (u > 0) { 6822 p2[i] = result[u - 1]; 6823 } 6824 result[u] = i; 6825 } 6826 } 6827 } 6828 u = result.length; 6829 v = result[u - 1]; 6830 while (u-- > 0) { 6831 result[u] = v; 6832 v = p2[v]; 6833 } 6834 return result; 6835} 6836function locateNonHydratedAsyncRoot(instance) { 6837 const subComponent = instance.subTree.component; 6838 if (subComponent) { 6839 if (subComponent.asyncDep && !subComponent.asyncResolved) { 6840 return subComponent; 6841 } else { 6842 return locateNonHydratedAsyncRoot(subComponent); 6843 } 6844 } 6845} 6846function invalidateMount(hooks) { 6847 if (hooks) { 6848 for (let i = 0; i < hooks.length; i++) 6849 hooks[i].flags |= 8; 6850 } 6851} 6852const ssrContextKey = Symbol.for("v-scx"); 6853const useSSRContext = () => { 6854 { 6855 const ctx = inject(ssrContextKey); 6856 return ctx; 6857 } 6858}; 6859function watchEffect(effect2, options2) { 6860 return doWatch(effect2, null, options2); 6861} 6862function watchPostEffect(effect2, options2) { 6863 return doWatch( 6864 effect2, 6865 null, 6866 { flush: "post" } 6867 ); 6868} 6869function watchSyncEffect(effect2, options2) { 6870 return doWatch( 6871 effect2, 6872 null, 6873 { flush: "sync" } 6874 ); 6875} 6876function watch(source, cb, options2) { 6877 return doWatch(source, cb, options2); 6878} 6879function doWatch(source, cb, options2 = EMPTY_OBJ) { 6880 const { immediate, deep, flush, once } = options2; 6881 const baseWatchOptions = extend$5({}, options2); 6882 const runsImmediately = cb && immediate || !cb && flush !== "post"; 6883 let ssrCleanup; 6884 if (isInSSRComponentSetup) { 6885 if (flush === "sync") { 6886 const ctx = useSSRContext(); 6887 ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); 6888 } else if (!runsImmediately) { 6889 const watchStopHandle = () => { 6890 }; 6891 watchStopHandle.stop = NOOP; 6892 watchStopHandle.resume = NOOP; 6893 watchStopHandle.pause = NOOP; 6894 return watchStopHandle; 6895 } 6896 } 6897 const instance = currentInstance; 6898 baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); 6899 let isPre = false; 6900 if (flush === "post") { 6901 baseWatchOptions.scheduler = (job) => { 6902 queuePostRenderEffect(job, instance && instance.suspense); 6903 }; 6904 } else if (flush !== "sync") { 6905 isPre = true; 6906 baseWatchOptions.scheduler = (job, isFirstRun) => { 6907 if (isFirstRun) { 6908 job(); 6909 } else { 6910 queueJob(job); 6911 } 6912 }; 6913 } 6914 baseWatchOptions.augmentJob = (job) => { 6915 if (cb) { 6916 job.flags |= 4; 6917 } 6918 if (isPre) { 6919 job.flags |= 2; 6920 if (instance) { 6921 job.id = instance.uid; 6922 job.i = instance; 6923 } 6924 } 6925 }; 6926 const watchHandle = watch$1(source, cb, baseWatchOptions); 6927 if (isInSSRComponentSetup) { 6928 if (ssrCleanup) { 6929 ssrCleanup.push(watchHandle); 6930 } else if (runsImmediately) { 6931 watchHandle(); 6932 } 6933 } 6934 return watchHandle; 6935} 6936function instanceWatch(source, value, options2) { 6937 const publicThis = this.proxy; 6938 const getter = isString$3(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); 6939 let cb; 6940 if (isFunction$3(value)) { 6941 cb = value; 6942 } else { 6943 cb = value.handler; 6944 options2 = value; 6945 } 6946 const reset2 = setCurrentInstance(this); 6947 const res = doWatch(getter, cb.bind(publicThis), options2); 6948 reset2(); 6949 return res; 6950} 6951function createPathGetter(ctx, path) { 6952 const segments = path.split("."); 6953 return () => { 6954 let cur = ctx; 6955 for (let i = 0; i < segments.length && cur; i++) { 6956 cur = cur[segments[i]]; 6957 } 6958 return cur; 6959 }; 6960} 6961function useModel(props2, name, options2 = EMPTY_OBJ) { 6962 const i = getCurrentInstance(); 6963 const camelizedName = camelize(name); 6964 const hyphenatedName = hyphenate(name); 6965 const modifiers = getModelModifiers(props2, camelizedName); 6966 const res = customRef((track2, trigger2) => { 6967 let localValue; 6968 let prevSetValue = EMPTY_OBJ; 6969 let prevEmittedValue; 6970 watchSyncEffect(() => { 6971 const propValue = props2[camelizedName]; 6972 if (hasChanged(localValue, propValue)) { 6973 localValue = propValue; 6974 trigger2(); 6975 } 6976 }); 6977 return { 6978 get() { 6979 track2(); 6980 return options2.get ? options2.get(localValue) : localValue; 6981 }, 6982 set(value) { 6983 const emittedValue = options2.set ? options2.set(value) : value; 6984 if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) { 6985 return; 6986 } 6987 const rawProps = i.vnode.props; 6988 if (!(rawProps && // check if parent has passed v-model 6989 (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { 6990 localValue = value; 6991 trigger2(); 6992 } 6993 i.emit(`update:${name}`, emittedValue); 6994 if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) { 6995 trigger2(); 6996 } 6997 prevSetValue = value; 6998 prevEmittedValue = emittedValue; 6999 } 7000 }; 7001 }); 7002 res[Symbol.iterator] = () => { 7003 let i2 = 0; 7004 return { 7005 next() { 7006 if (i2 < 2) { 7007 return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false }; 7008 } else { 7009 return { done: true }; 7010 } 7011 } 7012 }; 7013 }; 7014 return res; 7015} 7016const getModelModifiers = (props2, modelName) => { 7017 return modelName === "modelValue" || modelName === "model-value" ? props2.modelModifiers : props2[`${modelName}Modifiers`] || props2[`${camelize(modelName)}Modifiers`] || props2[`${hyphenate(modelName)}Modifiers`]; 7018}; 7019function emit(instance, event, ...rawArgs) { 7020 if (instance.isUnmounted) return; 7021 const props2 = instance.vnode.props || EMPTY_OBJ; 7022 let args = rawArgs; 7023 const isModelListener2 = event.startsWith("update:"); 7024 const modifiers = isModelListener2 && getModelModifiers(props2, event.slice(7)); 7025 if (modifiers) { 7026 if (modifiers.trim) { 7027 args = rawArgs.map((a) => isString$3(a) ? a.trim() : a); 7028 } 7029 if (modifiers.number) { 7030 args = rawArgs.map(looseToNumber); 7031 } 7032 } 7033 let handlerName; 7034 let handler = props2[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) 7035 props2[handlerName = toHandlerKey(camelize(event))]; 7036 if (!handler && isModelListener2) { 7037 handler = props2[handlerName = toHandlerKey(hyphenate(event))]; 7038 } 7039 if (handler) { 7040 callWithAsyncErrorHandling( 7041 handler, 7042 instance, 7043 6, 7044 args 7045 ); 7046 } 7047 const onceHandler = props2[handlerName + `Once`]; 7048 if (onceHandler) { 7049 if (!instance.emitted) { 7050 instance.emitted = {}; 7051 } else if (instance.emitted[handlerName]) { 7052 return; 7053 } 7054 instance.emitted[handlerName] = true; 7055 callWithAsyncErrorHandling( 7056 onceHandler, 7057 instance, 7058 6, 7059 args 7060 ); 7061 } 7062} 7063function normalizeEmitsOptions(comp, appContext, asMixin = false) { 7064 const cache2 = appContext.emitsCache; 7065 const cached = cache2.get(comp); 7066 if (cached !== void 0) { 7067 return cached; 7068 } 7069 const raw = comp.emits; 7070 let normalized = {}; 7071 let hasExtends = false; 7072 if (!isFunction$3(comp)) { 7073 const extendEmits = (raw2) => { 7074 const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); 7075 if (normalizedFromExtend) { 7076 hasExtends = true; 7077 extend$5(normalized, normalizedFromExtend); 7078 } 7079 }; 7080 if (!asMixin && appContext.mixins.length) { 7081 appContext.mixins.forEach(extendEmits); 7082 } 7083 if (comp.extends) { 7084 extendEmits(comp.extends); 7085 } 7086 if (comp.mixins) { 7087 comp.mixins.forEach(extendEmits); 7088 } 7089 } 7090 if (!raw && !hasExtends) { 7091 if (isObject$9(comp)) { 7092 cache2.set(comp, null); 7093 } 7094 return null; 7095 } 7096 if (isArray$3(raw)) { 7097 raw.forEach((key) => normalized[key] = null); 7098 } else { 7099 extend$5(normalized, raw); 7100 } 7101 if (isObject$9(comp)) { 7102 cache2.set(comp, normalized); 7103 } 7104 return normalized; 7105} 7106function isEmitListener(options2, key) { 7107 if (!options2 || !isOn(key)) { 7108 return false; 7109 } 7110 key = key.slice(2).replace(/Once$/, ""); 7111 return hasOwn$2(options2, key[0].toLowerCase() + key.slice(1)) || hasOwn$2(options2, hyphenate(key)) || hasOwn$2(options2, key); 7112} 7113function markAttrsAccessed() { 7114} 7115function renderComponentRoot(instance) { 7116 const { 7117 type: Component, 7118 vnode, 7119 proxy, 7120 withProxy, 7121 propsOptions: [propsOptions], 7122 slots, 7123 attrs, 7124 emit: emit2, 7125 render: render2, 7126 renderCache, 7127 props: props2, 7128 data, 7129 setupState, 7130 ctx, 7131 inheritAttrs 7132 } = instance; 7133 const prev = setCurrentRenderingInstance(instance); 7134 let result; 7135 let fallthroughAttrs; 7136 try { 7137 if (vnode.shapeFlag & 4) { 7138 const proxyToUse = withProxy || proxy; 7139 const thisProxy = false ? new Proxy(proxyToUse, { 7140 get(target, key, receiver) { 7141 warn$1( 7142 `Property '${String( 7143 key 7144 )}' was accessed via 'this'. Avoid using 'this' in templates.` 7145 ); 7146 return Reflect.get(target, key, receiver); 7147 } 7148 }) : proxyToUse; 7149 result = normalizeVNode( 7150 render2.call( 7151 thisProxy, 7152 proxyToUse, 7153 renderCache, 7154 false ? shallowReadonly(props2) : props2, 7155 setupState, 7156 data, 7157 ctx 7158 ) 7159 ); 7160 fallthroughAttrs = attrs; 7161 } else { 7162 const render22 = Component; 7163 if (false) ; 7164 result = normalizeVNode( 7165 render22.length > 1 ? render22( 7166 false ? shallowReadonly(props2) : props2, 7167 false ? { 7168 get attrs() { 7169 markAttrsAccessed(); 7170 return shallowReadonly(attrs); 7171 }, 7172 slots, 7173 emit: emit2 7174 } : { attrs, slots, emit: emit2 } 7175 ) : render22( 7176 false ? shallowReadonly(props2) : props2, 7177 null 7178 ) 7179 ); 7180 fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); 7181 } 7182 } catch (err) { 7183 blockStack.length = 0; 7184 handleError(err, instance, 1); 7185 result = createVNode(Comment); 7186 } 7187 let root2 = result; 7188 if (fallthroughAttrs && inheritAttrs !== false) { 7189 const keys = Object.keys(fallthroughAttrs); 7190 const { shapeFlag } = root2; 7191 if (keys.length) { 7192 if (shapeFlag & (1 | 6)) { 7193 if (propsOptions && keys.some(isModelListener)) { 7194 fallthroughAttrs = filterModelListeners( 7195 fallthroughAttrs, 7196 propsOptions 7197 ); 7198 } 7199 root2 = cloneVNode(root2, fallthroughAttrs, false, true); 7200 } 7201 } 7202 } 7203 if (vnode.dirs) { 7204 root2 = cloneVNode(root2, null, false, true); 7205 root2.dirs = root2.dirs ? root2.dirs.concat(vnode.dirs) : vnode.dirs; 7206 } 7207 if (vnode.transition) { 7208 setTransitionHooks(root2, vnode.transition); 7209 } 7210 { 7211 result = root2; 7212 } 7213 setCurrentRenderingInstance(prev); 7214 return result; 7215} 7216function filterSingleRoot(children, recurse = true) { 7217 let singleRoot; 7218 for (let i = 0; i < children.length; i++) { 7219 const child = children[i]; 7220 if (isVNode$1(child)) { 7221 if (child.type !== Comment || child.children === "v-if") { 7222 if (singleRoot) { 7223 return; 7224 } else { 7225 singleRoot = child; 7226 } 7227 } 7228 } else { 7229 return; 7230 } 7231 } 7232 return singleRoot; 7233} 7234const getFunctionalFallthrough = (attrs) => { 7235 let res; 7236 for (const key in attrs) { 7237 if (key === "class" || key === "style" || isOn(key)) { 7238 (res || (res = {}))[key] = attrs[key]; 7239 } 7240 } 7241 return res; 7242}; 7243const filterModelListeners = (attrs, props2) => { 7244 const res = {}; 7245 for (const key in attrs) { 7246 if (!isModelListener(key) || !(key.slice(9) in props2)) { 7247 res[key] = attrs[key]; 7248 } 7249 } 7250 return res; 7251}; 7252function shouldUpdateComponent(prevVNode, nextVNode, optimized) { 7253 const { props: prevProps, children: prevChildren, component } = prevVNode; 7254 const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; 7255 const emits = component.emitsOptions; 7256 if (nextVNode.dirs || nextVNode.transition) { 7257 return true; 7258 } 7259 if (optimized && patchFlag >= 0) { 7260 if (patchFlag & 1024) { 7261 return true; 7262 } 7263 if (patchFlag & 16) { 7264 if (!prevProps) { 7265 return !!nextProps; 7266 } 7267 return hasPropsChanged(prevProps, nextProps, emits); 7268 } else if (patchFlag & 8) { 7269 const dynamicProps = nextVNode.dynamicProps; 7270 for (let i = 0; i < dynamicProps.length; i++) {
7271 const key = dynamicProps[i]; 7272 if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { 7273 return true; 7274 } 7275 } 7276 } 7277 } else { 7278 if (prevChildren || nextChildren) { 7279 if (!nextChildren || !nextChildren.$stable) { 7280 return true; 7281 } 7282 } 7283 if (prevProps === nextProps) { 7284 return false; 7285 } 7286 if (!prevProps) { 7287 return !!nextProps; 7288 } 7289 if (!nextProps) { 7290 return true; 7291 } 7292 return hasPropsChanged(prevProps, nextProps, emits); 7293 } 7294 return false; 7295} 7296function hasPropsChanged(prevProps, nextProps, emitsOptions) { 7297 const nextKeys = Object.keys(nextProps); 7298 if (nextKeys.length !== Object.keys(prevProps).length) { 7299 return true; 7300 } 7301 for (let i = 0; i < nextKeys.length; i++) { 7302 const key = nextKeys[i]; 7303 if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { 7304 return true; 7305 } 7306 } 7307 return false; 7308} 7309function updateHOCHostEl({ vnode, parent }, el) { 7310 while (parent) { 7311 const root2 = parent.subTree; 7312 if (root2.suspense && root2.suspense.activeBranch === vnode) { 7313 root2.el = vnode.el; 7314 } 7315 if (root2 === vnode) { 7316 (vnode = parent.vnode).el = el; 7317 parent = parent.parent; 7318 } else { 7319 break; 7320 } 7321 } 7322} 7323const isSuspense = (type) => type.__isSuspense; 7324let suspenseId = 0; 7325const SuspenseImpl = { 7326 name: "Suspense", 7327 // In order to make Suspense tree-shakable, we need to avoid importing it 7328 // directly in the renderer. The renderer checks for the __isSuspense flag 7329 // on a vnode's type and calls the `process` method, passing in renderer 7330 // internals. 7331 __isSuspense: true, 7332 process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { 7333 if (n1 == null) { 7334 mountSuspense( 7335 n2, 7336 container, 7337 anchor, 7338 parentComponent, 7339 parentSuspense, 7340 namespace, 7341 slotScopeIds, 7342 optimized, 7343 rendererInternals 7344 ); 7345 } else { 7346 if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { 7347 n2.suspense = n1.suspense; 7348 n2.suspense.vnode = n2; 7349 n2.el = n1.el; 7350 return; 7351 } 7352 patchSuspense( 7353 n1, 7354 n2, 7355 container, 7356 anchor, 7357 parentComponent, 7358 namespace, 7359 slotScopeIds, 7360 optimized, 7361 rendererInternals 7362 ); 7363 } 7364 }, 7365 hydrate: hydrateSuspense, 7366 normalize: normalizeSuspenseChildren 7367}; 7368const Suspense = SuspenseImpl; 7369function triggerEvent(vnode, name) { 7370 const eventListener = vnode.props && vnode.props[name]; 7371 if (isFunction$3(eventListener)) { 7372 eventListener(); 7373 } 7374} 7375function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { 7376 const { 7377 p: patch, 7378 o: { createElement: createElement2 } 7379 } = rendererInternals; 7380 const hiddenContainer = createElement2("div"); 7381 const suspense = vnode.suspense = createSuspenseBoundary( 7382 vnode, 7383 parentSuspense, 7384 parentComponent, 7385 container, 7386 hiddenContainer, 7387 anchor, 7388 namespace, 7389 slotScopeIds, 7390 optimized, 7391 rendererInternals 7392 ); 7393 patch( 7394 null, 7395 suspense.pendingBranch = vnode.ssContent, 7396 hiddenContainer, 7397 null, 7398 parentComponent, 7399 suspense, 7400 namespace, 7401 slotScopeIds 7402 ); 7403 if (suspense.deps > 0) { 7404 triggerEvent(vnode, "onPending"); 7405 triggerEvent(vnode, "onFallback"); 7406 patch( 7407 null, 7408 vnode.ssFallback, 7409 container, 7410 anchor, 7411 parentComponent, 7412 null, 7413 // fallback tree will not have suspense context 7414 namespace, 7415 slotScopeIds 7416 ); 7417 setActiveBranch(suspense, vnode.ssFallback); 7418 } else { 7419 suspense.resolve(false, true); 7420 } 7421} 7422function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement: createElement2 } }) { 7423 const suspense = n2.suspense = n1.suspense; 7424 suspense.vnode = n2; 7425 n2.el = n1.el; 7426 const newBranch = n2.ssContent; 7427 const newFallback = n2.ssFallback; 7428 const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; 7429 if (pendingBranch) { 7430 suspense.pendingBranch = newBranch; 7431 if (isSameVNodeType(newBranch, pendingBranch)) { 7432 patch( 7433 pendingBranch, 7434 newBranch, 7435 suspense.hiddenContainer, 7436 null, 7437 parentComponent, 7438 suspense, 7439 namespace, 7440 slotScopeIds, 7441 optimized 7442 ); 7443 if (suspense.deps <= 0) { 7444 suspense.resolve(); 7445 } else if (isInFallback) { 7446 if (!isHydrating) { 7447 patch( 7448 activeBranch, 7449 newFallback, 7450 container, 7451 anchor, 7452 parentComponent, 7453 null, 7454 // fallback tree will not have suspense context 7455 namespace, 7456 slotScopeIds, 7457 optimized 7458 );
vendor: 1,066 bytes, lines 7459-7499
7459 setActiveBranch(suspense, newFallback); 7460 } 7461 } 7462 } else { 7463 suspense.pendingId = suspenseId++; 7464 if (isHydrating) { 7465 suspense.isHydrating = false; 7466 suspense.activeBranch = pendingBranch; 7467 } else { 7468 unmount(pendingBranch, parentComponent, suspense); 7469 } 7470 suspense.deps = 0; 7471 suspense.effects.length = 0; 7472 suspense.hiddenContainer = createElement2("div"); 7473 if (isInFallback) { 7474 patch( 7475 null, 7476 newBranch, 7477 suspense.hiddenContainer, 7478 null, 7479 parentComponent, 7480 suspense, 7481 namespace, 7482 slotScopeIds, 7483 optimized 7484 ); 7485 if (suspense.deps <= 0) { 7486 suspense.resolve(); 7487 } else { 7488 patch( 7489 activeBranch, 7490 newFallback, 7491 container, 7492 anchor, 7493 parentComponent, 7494 null, 7495 // fallback tree will not have suspense context 7496 namespace, 7497 slotScopeIds, 7498 optimized 7499 );
7500 setActiveBranch(suspense, newFallback); 7501 } 7502 } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { 7503 patch( 7504 activeBranch, 7505 newBranch, 7506 container, 7507 anchor, 7508 parentComponent, 7509 suspense, 7510 namespace, 7511 slotScopeIds, 7512 optimized 7513 ); 7514 suspense.resolve(true); 7515 } else { 7516 patch( 7517 null, 7518 newBranch, 7519 suspense.hiddenContainer, 7520 null, 7521 parentComponent, 7522 suspense, 7523 namespace, 7524 slotScopeIds, 7525 optimized 7526 ); 7527 if (suspense.deps <= 0) { 7528 suspense.resolve(); 7529 } 7530 } 7531 } 7532 } else { 7533 if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { 7534 patch( 7535 activeBranch, 7536 newBranch, 7537 container, 7538 anchor, 7539 parentComponent, 7540 suspense, 7541 namespace, 7542 slotScopeIds, 7543 optimized 7544 ); 7545 setActiveBranch(suspense, newBranch); 7546 } else { 7547 triggerEvent(n2, "onPending"); 7548 suspense.pendingBranch = newBranch; 7549 if (newBranch.shapeFlag & 512) { 7550 suspense.pendingId = newBranch.component.suspenseId; 7551 } else { 7552 suspense.pendingId = suspenseId++; 7553 } 7554 patch( 7555 null, 7556 newBranch, 7557 suspense.hiddenContainer, 7558 null, 7559 parentComponent, 7560 suspense, 7561 namespace, 7562 slotScopeIds, 7563 optimized 7564 ); 7565 if (suspense.deps <= 0) { 7566 suspense.resolve(); 7567 } else { 7568 const { timeout, pendingId } = suspense; 7569 if (timeout > 0) { 7570 setTimeout(() => { 7571 if (suspense.pendingId === pendingId) { 7572 suspense.fallback(newFallback); 7573 } 7574 }, timeout); 7575 } else if (timeout === 0) { 7576 suspense.fallback(newFallback); 7577 } 7578 } 7579 } 7580 } 7581} 7582function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { 7583 const { 7584 p: patch, 7585 m: move, 7586 um: unmount, 7587 n: next, 7588 o: { parentNode, remove: remove2 } 7589 } = rendererInternals; 7590 let parentSuspenseId; 7591 const isSuspensible = isVNodeSuspensible(vnode); 7592 if (isSuspensible) { 7593 if (parentSuspense && parentSuspense.pendingBranch) { 7594 parentSuspenseId = parentSuspense.pendingId; 7595 parentSuspense.deps++; 7596 } 7597 } 7598 const timeout = vnode.props ? toNumber$2(vnode.props.timeout) : void 0; 7599 const initialAnchor = anchor; 7600 const suspense = { 7601 vnode, 7602 parent: parentSuspense, 7603 parentComponent, 7604 namespace, 7605 container, 7606 hiddenContainer, 7607 deps: 0, 7608 pendingId: suspenseId++, 7609 timeout: typeof timeout === "number" ? timeout : -1, 7610 activeBranch: null, 7611 pendingBranch: null, 7612 isInFallback: !isHydrating, 7613 isHydrating, 7614 isUnmounted: false, 7615 effects: [], 7616 resolve(resume = false, sync = false) { 7617 const { 7618 vnode: vnode2, 7619 activeBranch, 7620 pendingBranch, 7621 pendingId, 7622 effects, 7623 parentComponent: parentComponent2, 7624 container: container2 7625 } = suspense; 7626 let delayEnter = false; 7627 if (suspense.isHydrating) { 7628 suspense.isHydrating = false; 7629 } else if (!resume) { 7630 delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; 7631 if (delayEnter) { 7632 activeBranch.transition.afterLeave = () => { 7633 if (pendingId === suspense.pendingId) { 7634 move( 7635 pendingBranch, 7636 container2, 7637 anchor === initialAnchor ? next(activeBranch) : anchor, 7638 0 7639 ); 7640 queuePostFlushCb(effects); 7641 } 7642 }; 7643 } 7644 if (activeBranch) { 7645 if (parentNode(activeBranch.el) === container2) { 7646 anchor = next(activeBranch); 7647 } 7648 unmount(activeBranch, parentComponent2, suspense, true); 7649 } 7650 if (!delayEnter) { 7651 move(pendingBranch, container2, anchor, 0); 7652 } 7653 }
7654 setActiveBranch(suspense, pendingBranch); 7655 suspense.pendingBranch = null; 7656 suspense.isInFallback = false; 7657 let parent = suspense.parent; 7658 let hasUnresolvedAncestor = false; 7659 while (parent) { 7660 if (parent.pendingBranch) { 7661 parent.effects.push(...effects); 7662 hasUnresolvedAncestor = true; 7663 break; 7664 } 7665 parent = parent.parent; 7666 } 7667 if (!hasUnresolvedAncestor && !delayEnter) { 7668 queuePostFlushCb(effects); 7669 } 7670 suspense.effects = []; 7671 if (isSuspensible) { 7672 if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { 7673 parentSuspense.deps--; 7674 if (parentSuspense.deps === 0 && !sync) { 7675 parentSuspense.resolve(); 7676 } 7677 } 7678 } 7679 triggerEvent(vnode2, "onResolve"); 7680 }, 7681 fallback(fallbackVNode) { 7682 if (!suspense.pendingBranch) { 7683 return; 7684 } 7685 const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; 7686 triggerEvent(vnode2, "onFallback"); 7687 const anchor2 = next(activeBranch); 7688 const mountFallback = () => { 7689 if (!suspense.isInFallback) { 7690 return; 7691 } 7692 patch( 7693 null, 7694 fallbackVNode, 7695 container2, 7696 anchor2, 7697 parentComponent2, 7698 null, 7699 // fallback tree will not have suspense context 7700 namespace2, 7701 slotScopeIds, 7702 optimized 7703 ); 7704 setActiveBranch(suspense, fallbackVNode); 7705 }; 7706 const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; 7707 if (delayEnter) { 7708 activeBranch.transition.afterLeave = mountFallback; 7709 } 7710 suspense.isInFallback = true; 7711 unmount( 7712 activeBranch, 7713 parentComponent2, 7714 null, 7715 // no suspense so unmount hooks fire now 7716 true 7717 // shouldRemove 7718 ); 7719 if (!delayEnter) { 7720 mountFallback(); 7721 } 7722 },
vendor: 11,200 bytes, lines 7723-8091
7723 move(container2, anchor2, type) { 7724 suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); 7725 suspense.container = container2; 7726 }, 7727 next() { 7728 return suspense.activeBranch && next(suspense.activeBranch); 7729 }, 7730 registerDep(instance, setupRenderEffect, optimized2) { 7731 const isInPendingSuspense = !!suspense.pendingBranch; 7732 if (isInPendingSuspense) { 7733 suspense.deps++; 7734 } 7735 const hydratedEl = instance.vnode.el; 7736 instance.asyncDep.catch((err) => { 7737 handleError(err, instance, 0); 7738 }).then((asyncSetupResult) => { 7739 if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { 7740 return; 7741 } 7742 instance.asyncResolved = true; 7743 const { vnode: vnode2 } = instance; 7744 handleSetupResult(instance, asyncSetupResult, false); 7745 if (hydratedEl) { 7746 vnode2.el = hydratedEl; 7747 } 7748 const placeholder = !hydratedEl && instance.subTree.el; 7749 setupRenderEffect( 7750 instance, 7751 vnode2, 7752 // component may have been moved before resolve. 7753 // if this is not a hydration, instance.subTree will be the comment 7754 // placeholder. 7755 parentNode(hydratedEl || instance.subTree.el), 7756 // anchor will not be used if this is hydration, so only need to 7757 // consider the comment placeholder case. 7758 hydratedEl ? null : next(instance.subTree), 7759 suspense, 7760 namespace, 7761 optimized2 7762 ); 7763 if (placeholder) { 7764 remove2(placeholder); 7765 } 7766 updateHOCHostEl(instance, vnode2.el); 7767 if (isInPendingSuspense && --suspense.deps === 0) { 7768 suspense.resolve(); 7769 } 7770 }); 7771 }, 7772 unmount(parentSuspense2, doRemove) { 7773 suspense.isUnmounted = true; 7774 if (suspense.activeBranch) { 7775 unmount( 7776 suspense.activeBranch, 7777 parentComponent, 7778 parentSuspense2, 7779 doRemove 7780 ); 7781 } 7782 if (suspense.pendingBranch) { 7783 unmount( 7784 suspense.pendingBranch, 7785 parentComponent, 7786 parentSuspense2, 7787 doRemove 7788 ); 7789 } 7790 } 7791 }; 7792 return suspense; 7793} 7794function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { 7795 const suspense = vnode.suspense = createSuspenseBoundary( 7796 vnode, 7797 parentSuspense, 7798 parentComponent, 7799 node.parentNode, 7800 // eslint-disable-next-line no-restricted-globals 7801 document.createElement("div"), 7802 null, 7803 namespace, 7804 slotScopeIds, 7805 optimized, 7806 rendererInternals, 7807 true 7808 ); 7809 const result = hydrateNode( 7810 node, 7811 suspense.pendingBranch = vnode.ssContent, 7812 parentComponent, 7813 suspense, 7814 slotScopeIds, 7815 optimized 7816 ); 7817 if (suspense.deps === 0) { 7818 suspense.resolve(false, true); 7819 } 7820 return result; 7821} 7822function normalizeSuspenseChildren(vnode) { 7823 const { shapeFlag, children } = vnode; 7824 const isSlotChildren = shapeFlag & 32; 7825 vnode.ssContent = normalizeSuspenseSlot( 7826 isSlotChildren ? children.default : children 7827 ); 7828 vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); 7829} 7830function normalizeSuspenseSlot(s) { 7831 let block; 7832 if (isFunction$3(s)) { 7833 const trackBlock = isBlockTreeEnabled && s._c; 7834 if (trackBlock) { 7835 s._d = false; 7836 openBlock(); 7837 } 7838 s = s(); 7839 if (trackBlock) { 7840 s._d = true; 7841 block = currentBlock; 7842 closeBlock(); 7843 } 7844 } 7845 if (isArray$3(s)) { 7846 const singleChild = filterSingleRoot(s); 7847 s = singleChild; 7848 } 7849 s = normalizeVNode(s); 7850 if (block && !s.dynamicChildren) { 7851 s.dynamicChildren = block.filter((c) => c !== s); 7852 } 7853 return s; 7854} 7855function queueEffectWithSuspense(fn, suspense) { 7856 if (suspense && suspense.pendingBranch) { 7857 if (isArray$3(fn)) { 7858 suspense.effects.push(...fn); 7859 } else { 7860 suspense.effects.push(fn); 7861 } 7862 } else { 7863 queuePostFlushCb(fn); 7864 } 7865} 7866function setActiveBranch(suspense, branch) { 7867 suspense.activeBranch = branch; 7868 const { vnode, parentComponent } = suspense; 7869 let el = branch.el; 7870 while (!el && branch.component) { 7871 branch = branch.component.subTree; 7872 el = branch.el; 7873 } 7874 vnode.el = el; 7875 if (parentComponent && parentComponent.subTree === vnode) { 7876 parentComponent.vnode.el = el; 7877 updateHOCHostEl(parentComponent, el); 7878 } 7879} 7880function isVNodeSuspensible(vnode) { 7881 const suspensible = vnode.props && vnode.props.suspensible; 7882 return suspensible != null && suspensible !== false; 7883} 7884const Fragment = Symbol.for("v-fgt"); 7885const Text = Symbol.for("v-txt"); 7886const Comment = Symbol.for("v-cmt"); 7887const Static = Symbol.for("v-stc"); 7888const blockStack = []; 7889let currentBlock = null; 7890function openBlock(disableTracking = false) { 7891 blockStack.push(currentBlock = disableTracking ? null : []); 7892} 7893function closeBlock() { 7894 blockStack.pop(); 7895 currentBlock = blockStack[blockStack.length - 1] || null; 7896} 7897let isBlockTreeEnabled = 1; 7898function setBlockTracking(value, inVOnce = false) { 7899 isBlockTreeEnabled += value; 7900 if (value < 0 && currentBlock && inVOnce) { 7901 currentBlock.hasOnce = true; 7902 } 7903} 7904function setupBlock(vnode) { 7905 vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null; 7906 closeBlock(); 7907 if (isBlockTreeEnabled > 0 && currentBlock) { 7908 currentBlock.push(vnode); 7909 } 7910 return vnode; 7911} 7912function createElementBlock(type, props2, children, patchFlag, dynamicProps, shapeFlag) { 7913 return setupBlock( 7914 createBaseVNode( 7915 type, 7916 props2, 7917 children, 7918 patchFlag, 7919 dynamicProps, 7920 shapeFlag, 7921 true 7922 ) 7923 ); 7924} 7925function createBlock(type, props2, children, patchFlag, dynamicProps) { 7926 return setupBlock( 7927 createVNode( 7928 type, 7929 props2, 7930 children, 7931 patchFlag, 7932 dynamicProps, 7933 true 7934 ) 7935 ); 7936} 7937function isVNode$1(value) { 7938 return value ? value.__v_isVNode === true : false; 7939} 7940function isSameVNodeType(n1, n2) { 7941 return n1.type === n2.type && n1.key === n2.key; 7942} 7943function transformVNodeArgs(transformer) { 7944} 7945const normalizeKey = ({ key }) => key != null ? key : null; 7946const normalizeRef = ({ 7947 ref: ref3, 7948 ref_key, 7949 ref_for 7950}) => { 7951 if (typeof ref3 === "number") { 7952 ref3 = "" + ref3; 7953 } 7954 return ref3 != null ? isString$3(ref3) || isRef(ref3) || isFunction$3(ref3) ? { i: currentRenderingInstance, r: ref3, k: ref_key, f: !!ref_for } : ref3 : null; 7955}; 7956function createBaseVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { 7957 const vnode = { 7958 __v_isVNode: true, 7959 __v_skip: true, 7960 type, 7961 props: props2, 7962 key: props2 && normalizeKey(props2), 7963 ref: props2 && normalizeRef(props2), 7964 scopeId: currentScopeId, 7965 slotScopeIds: null, 7966 children, 7967 component: null, 7968 suspense: null, 7969 ssContent: null, 7970 ssFallback: null, 7971 dirs: null, 7972 transition: null, 7973 el: null, 7974 anchor: null, 7975 target: null, 7976 targetStart: null, 7977 targetAnchor: null, 7978 staticCount: 0, 7979 shapeFlag, 7980 patchFlag, 7981 dynamicProps, 7982 dynamicChildren: null, 7983 appContext: null, 7984 ctx: currentRenderingInstance 7985 }; 7986 if (needFullChildrenNormalization) { 7987 normalizeChildren(vnode, children); 7988 if (shapeFlag & 128) { 7989 type.normalize(vnode); 7990 } 7991 } else if (children) { 7992 vnode.shapeFlag |= isString$3(children) ? 8 : 16; 7993 } 7994 if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself 7995 !isBlockNode && // has current parent block 7996 currentBlock && // presence of a patch flag indicates this node needs patching on updates. 7997 // component nodes also should always be patched, because even if the 7998 // component doesn't need to update, it needs to persist the instance on to 7999 // the next vnode so that it can be properly unmounted later. 8000 (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the 8001 // vnode should not be considered dynamic due to handler caching. 8002 vnode.patchFlag !== 32) { 8003 currentBlock.push(vnode); 8004 } 8005 return vnode; 8006} 8007const createVNode = _createVNode; 8008function _createVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { 8009 if (!type || type === NULL_DYNAMIC_COMPONENT) { 8010 type = Comment; 8011 } 8012 if (isVNode$1(type)) { 8013 const cloned = cloneVNode( 8014 type, 8015 props2, 8016 true 8017 /* mergeRef: true */ 8018 ); 8019 if (children) { 8020 normalizeChildren(cloned, children); 8021 } 8022 if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { 8023 if (cloned.shapeFlag & 6) { 8024 currentBlock[currentBlock.indexOf(type)] = cloned; 8025 } else { 8026 currentBlock.push(cloned); 8027 } 8028 } 8029 cloned.patchFlag = -2; 8030 return cloned; 8031 } 8032 if (isClassComponent(type)) { 8033 type = type.__vccOpts; 8034 } 8035 if (props2) { 8036 props2 = guardReactiveProps(props2); 8037 let { class: klass, style } = props2; 8038 if (klass && !isString$3(klass)) { 8039 props2.class = normalizeClass(klass); 8040 } 8041 if (isObject$9(style)) { 8042 if (isProxy(style) && !isArray$3(style)) { 8043 style = extend$5({}, style); 8044 } 8045 props2.style = normalizeStyle(style); 8046 } 8047 } 8048 const shapeFlag = isString$3(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$9(type) ? 4 : isFunction$3(type) ? 2 : 0; 8049 return createBaseVNode( 8050 type, 8051 props2, 8052 children, 8053 patchFlag, 8054 dynamicProps, 8055 shapeFlag, 8056 isBlockNode, 8057 true 8058 ); 8059} 8060function guardReactiveProps(props2) { 8061 if (!props2) return null; 8062 return isProxy(props2) || isInternalObject(props2) ? extend$5({}, props2) : props2; 8063} 8064function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { 8065 const { props: props2, ref: ref3, patchFlag, children, transition: transition2 } = vnode; 8066 const mergedProps = extraProps ? mergeProps(props2 || {}, extraProps) : props2; 8067 const cloned = { 8068 __v_isVNode: true, 8069 __v_skip: true, 8070 type: vnode.type, 8071 props: mergedProps, 8072 key: mergedProps && normalizeKey(mergedProps), 8073 ref: extraProps && extraProps.ref ? ( 8074 // #2078 in the case of <component :is="vnode" ref="extra"/> 8075 // if the vnode itself already has a ref, cloneVNode will need to merge 8076 // the refs so the single vnode can be set on multiple refs 8077 mergeRef && ref3 ? isArray$3(ref3) ? ref3.concat(normalizeRef(extraProps)) : [ref3, normalizeRef(extraProps)] : normalizeRef(extraProps) 8078 ) : ref3, 8079 scopeId: vnode.scopeId, 8080 slotScopeIds: vnode.slotScopeIds, 8081 children, 8082 target: vnode.target, 8083 targetStart: vnode.targetStart, 8084 targetAnchor: vnode.targetAnchor, 8085 staticCount: vnode.staticCount, 8086 shapeFlag: vnode.shapeFlag, 8087 // if the vnode is cloned with extra props, we can no longer assume its 8088 // existing patch flag to be reliable and need to add the FULL_PROPS flag. 8089 // note: preserve flag for fragments since they use the flag for children 8090 // fast paths only. 8091 patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16
vendor: 4,098 bytes, lines 8091-8224
8091: patchFlag | 16 : patchFlag, 8092 dynamicProps: vnode.dynamicProps, 8093 dynamicChildren: vnode.dynamicChildren, 8094 appContext: vnode.appContext, 8095 dirs: vnode.dirs, 8096 transition: transition2, 8097 // These should technically only be non-null on mounted VNodes. However, 8098 // they *should* be copied for kept-alive vnodes. So we just always copy 8099 // them since them being non-null during a mount doesn't affect the logic as 8100 // they will simply be overwritten. 8101 component: vnode.component, 8102 suspense: vnode.suspense, 8103 ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), 8104 ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), 8105 el: vnode.el, 8106 anchor: vnode.anchor, 8107 ctx: vnode.ctx, 8108 ce: vnode.ce 8109 }; 8110 if (transition2 && cloneTransition) { 8111 setTransitionHooks( 8112 cloned, 8113 transition2.clone(cloned) 8114 ); 8115 } 8116 return cloned; 8117} 8118function createTextVNode(text = " ", flag = 0) { 8119 return createVNode(Text, null, text, flag); 8120} 8121function createStaticVNode(content, numberOfNodes) { 8122 const vnode = createVNode(Static, null, content); 8123 vnode.staticCount = numberOfNodes; 8124 return vnode; 8125} 8126function createCommentVNode(text = "", asBlock = false) { 8127 return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); 8128} 8129function normalizeVNode(child) { 8130 if (child == null || typeof child === "boolean") { 8131 return createVNode(Comment); 8132 } else if (isArray$3(child)) { 8133 return createVNode( 8134 Fragment, 8135 null, 8136 // #3666, avoid reference pollution when reusing vnode 8137 child.slice() 8138 ); 8139 } else if (isVNode$1(child)) { 8140 return cloneIfMounted(child); 8141 } else { 8142 return createVNode(Text, null, String(child)); 8143 } 8144} 8145function cloneIfMounted(child) { 8146 return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); 8147} 8148function normalizeChildren(vnode, children) { 8149 let type = 0; 8150 const { shapeFlag } = vnode; 8151 if (children == null) { 8152 children = null; 8153 } else if (isArray$3(children)) { 8154 type = 16; 8155 } else if (typeof children === "object") { 8156 if (shapeFlag & (1 | 64)) { 8157 const slot = children.default; 8158 if (slot) { 8159 slot._c && (slot._d = false); 8160 normalizeChildren(vnode, slot()); 8161 slot._c && (slot._d = true); 8162 } 8163 return; 8164 } else { 8165 type = 32; 8166 const slotFlag = children._; 8167 if (!slotFlag && !isInternalObject(children)) { 8168 children._ctx = currentRenderingInstance; 8169 } else if (slotFlag === 3 && currentRenderingInstance) { 8170 if (currentRenderingInstance.slots._ === 1) { 8171 children._ = 1; 8172 } else { 8173 children._ = 2; 8174 vnode.patchFlag |= 1024; 8175 } 8176 } 8177 } 8178 } else if (isFunction$3(children)) { 8179 children = { default: children, _ctx: currentRenderingInstance }; 8180 type = 32; 8181 } else { 8182 children = String(children); 8183 if (shapeFlag & 64) { 8184 type = 16; 8185 children = [createTextVNode(children)]; 8186 } else { 8187 type = 8; 8188 } 8189 } 8190 vnode.children = children; 8191 vnode.shapeFlag |= type; 8192} 8193function mergeProps(...args) { 8194 const ret = {}; 8195 for (let i = 0; i < args.length; i++) { 8196 const toMerge = args[i]; 8197 for (const key in toMerge) { 8198 if (key === "class") { 8199 if (ret.class !== toMerge.class) { 8200 ret.class = normalizeClass([ret.class, toMerge.class]); 8201 } 8202 } else if (key === "style") { 8203 ret.style = normalizeStyle([ret.style, toMerge.style]); 8204 } else if (isOn(key)) { 8205 const existing = ret[key]; 8206 const incoming = toMerge[key]; 8207 if (incoming && existing !== incoming && !(isArray$3(existing) && existing.includes(incoming))) { 8208 ret[key] = existing ? [].concat(existing, incoming) : incoming; 8209 } 8210 } else if (key !== "") { 8211 ret[key] = toMerge[key]; 8212 } 8213 } 8214 } 8215 return ret; 8216} 8217function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { 8218 callWithAsyncErrorHandling(hook, instance, 7, [ 8219 vnode, 8220 prevVNode 8221 ]); 8222} 8223const emptyAppContext = createAppContext(); 8224let uid = 0;
vendor: 5,170 bytes, lines 8225-8408
8225function createComponentInstance(vnode, parent, suspense) { 8226 const type = vnode.type; 8227 const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; 8228 const instance = { 8229 uid: uid++, 8230 vnode, 8231 type, 8232 parent, 8233 appContext, 8234 root: null, 8235 // to be immediately set 8236 next: null, 8237 subTree: null, 8238 // will be set synchronously right after creation 8239 effect: null, 8240 update: null, 8241 // will be set synchronously right after creation 8242 job: null, 8243 scope: new EffectScope( 8244 true 8245 /* detached */ 8246 ), 8247 render: null, 8248 proxy: null, 8249 exposed: null, 8250 exposeProxy: null, 8251 withProxy: null, 8252 provides: parent ? parent.provides : Object.create(appContext.provides), 8253 ids: parent ? parent.ids : ["", 0, 0], 8254 accessCache: null, 8255 renderCache: [], 8256 // local resolved assets 8257 components: null, 8258 directives: null, 8259 // resolved props and emits options 8260 propsOptions: normalizePropsOptions(type, appContext), 8261 emitsOptions: normalizeEmitsOptions(type, appContext), 8262 // emit 8263 emit: null, 8264 // to be set immediately 8265 emitted: null, 8266 // props default value 8267 propsDefaults: EMPTY_OBJ, 8268 // inheritAttrs 8269 inheritAttrs: type.inheritAttrs, 8270 // state 8271 ctx: EMPTY_OBJ, 8272 data: EMPTY_OBJ, 8273 props: EMPTY_OBJ, 8274 attrs: EMPTY_OBJ, 8275 slots: EMPTY_OBJ, 8276 refs: EMPTY_OBJ, 8277 setupState: EMPTY_OBJ, 8278 setupContext: null, 8279 // suspense related 8280 suspense, 8281 suspenseId: suspense ? suspense.pendingId : 0, 8282 asyncDep: null, 8283 asyncResolved: false, 8284 // lifecycle hooks 8285 // not using enums here because it results in computed properties 8286 isMounted: false, 8287 isUnmounted: false, 8288 isDeactivated: false, 8289 bc: null, 8290 c: null, 8291 bm: null, 8292 m: null, 8293 bu: null, 8294 u: null, 8295 um: null, 8296 bum: null, 8297 da: null, 8298 a: null, 8299 rtg: null, 8300 rtc: null, 8301 ec: null, 8302 sp: null 8303 }; 8304 { 8305 instance.ctx = { _: instance }; 8306 } 8307 instance.root = parent ? parent.root : instance; 8308 instance.emit = emit.bind(null, instance); 8309 if (vnode.ce) { 8310 vnode.ce(instance); 8311 } 8312 return instance; 8313} 8314let currentInstance = null; 8315const getCurrentInstance = () => currentInstance || currentRenderingInstance; 8316let internalSetCurrentInstance; 8317let setInSSRSetupState; 8318{ 8319 const g = getGlobalThis$2(); 8320 const registerGlobalSetter = (key, setter) => { 8321 let setters; 8322 if (!(setters = g[key])) setters = g[key] = []; 8323 setters.push(setter); 8324 return (v) => { 8325 if (setters.length > 1) setters.forEach((set) => set(v)); 8326 else setters[0](v); 8327 }; 8328 }; 8329 internalSetCurrentInstance = registerGlobalSetter( 8330 `__VUE_INSTANCE_SETTERS__`, 8331 (v) => currentInstance = v 8332 ); 8333 setInSSRSetupState = registerGlobalSetter( 8334 `__VUE_SSR_SETTERS__`, 8335 (v) => isInSSRComponentSetup = v 8336 ); 8337} 8338const setCurrentInstance = (instance) => { 8339 const prev = currentInstance; 8340 internalSetCurrentInstance(instance); 8341 instance.scope.on(); 8342 return () => { 8343 instance.scope.off(); 8344 internalSetCurrentInstance(prev); 8345 }; 8346}; 8347const unsetCurrentInstance = () => { 8348 currentInstance && currentInstance.scope.off(); 8349 internalSetCurrentInstance(null); 8350}; 8351function isStatefulComponent(instance) { 8352 return instance.vnode.shapeFlag & 4; 8353} 8354let isInSSRComponentSetup = false; 8355function setupComponent(instance, isSSR = false, optimized = false) { 8356 isSSR && setInSSRSetupState(isSSR); 8357 const { props: props2, children } = instance.vnode; 8358 const isStateful = isStatefulComponent(instance); 8359 initProps(instance, props2, isStateful, isSSR); 8360 initSlots(instance, children, optimized || isSSR); 8361 const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; 8362 isSSR && setInSSRSetupState(false); 8363 return setupResult; 8364} 8365function setupStatefulComponent(instance, isSSR) { 8366 const Component = instance.type; 8367 instance.accessCache = /* @__PURE__ */ Object.create(null); 8368 instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); 8369 const { setup } = Component; 8370 if (setup) { 8371 pauseTracking(); 8372 const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; 8373 const reset2 = setCurrentInstance(instance); 8374 const setupResult = callWithErrorHandling( 8375 setup, 8376 instance, 8377 0, 8378 [ 8379 instance.props, 8380 setupContext 8381 ] 8382 ); 8383 const isAsyncSetup = isPromise$2(setupResult); 8384 resetTracking(); 8385 reset2(); 8386 if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { 8387 markAsyncBoundary(instance); 8388 } 8389 if (isAsyncSetup) { 8390 setupResult.then(unsetCurrentInstance, unsetCurrentInstance); 8391 if (isSSR) { 8392 return setupResult.then((resolvedResult) => { 8393 handleSetupResult(instance, resolvedResult, isSSR); 8394 }).catch((e) => { 8395 handleError(e, instance, 0); 8396 }); 8397 } else { 8398 instance.asyncDep = setupResult; 8399 } 8400 } else { 8401 handleSetupResult(instance, setupResult, isSSR); 8402 } 8403 } else { 8404 finishComponentSetup(instance, isSSR); 8405 } 8406} 8407function handleSetupResult(instance, setupResult, isSSR) { 8408 if (isFunction$3(setupResult)) {
8409 if (instance.type.__ssrInlineRender) { 8410 instance.ssrRender = setupResult; 8411 } else { 8412 instance.render = setupResult; 8413 } 8414 } else if (isObject$9(setupResult)) { 8415 instance.setupState = proxyRefs(setupResult); 8416 } else ; 8417 finishComponentSetup(instance, isSSR); 8418} 8419let compile$2; 8420let installWithProxy; 8421function registerRuntimeCompiler(_compile) { 8422 compile$2 = _compile; 8423 installWithProxy = (i) => { 8424 if (i.render._rc) { 8425 i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); 8426 } 8427 }; 8428} 8429const isRuntimeOnly = () => !compile$2; 8430function finishComponentSetup(instance, isSSR, skipOptions) { 8431 const Component = instance.type; 8432 if (!instance.render) { 8433 if (!isSSR && compile$2 && !Component.render) { 8434 const template = Component.template || resolveMergedOptions(instance).template; 8435 if (template) { 8436 const { isCustomElement, compilerOptions } = instance.appContext.config; 8437 const { delimiters, compilerOptions: componentCompilerOptions } = Component; 8438 const finalCompilerOptions = extend$5( 8439 extend$5( 8440 { 8441 isCustomElement, 8442 delimiters 8443 }, 8444 compilerOptions 8445 ), 8446 componentCompilerOptions 8447 ); 8448 Component.render = compile$2(template, finalCompilerOptions); 8449 } 8450 } 8451 instance.render = Component.render || NOOP; 8452 if (installWithProxy) { 8453 installWithProxy(instance); 8454 } 8455 } 8456 { 8457 const reset2 = setCurrentInstance(instance); 8458 pauseTracking(); 8459 try { 8460 applyOptions(instance); 8461 } finally { 8462 resetTracking(); 8463 reset2(); 8464 } 8465 } 8466} 8467const attrsProxyHandlers = { 8468 get(target, key) { 8469 track(target, "get", ""); 8470 return target[key]; 8471 } 8472}; 8473function createSetupContext(instance) { 8474 const expose = (exposed) => { 8475 instance.exposed = exposed || {}; 8476 }; 8477 { 8478 return { 8479 attrs: new Proxy(instance.attrs, attrsProxyHandlers), 8480 slots: instance.slots, 8481 emit: instance.emit, 8482 expose 8483 }; 8484 } 8485} 8486function getComponentPublicInstance(instance) { 8487 if (instance.exposed) { 8488 return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { 8489 get(target, key) { 8490 if (key in target) { 8491 return target[key]; 8492 } else if (key in publicPropertiesMap) { 8493 return publicPropertiesMap[key](instance); 8494 } 8495 }, 8496 has(target, key) { 8497 return key in target || key in publicPropertiesMap; 8498 } 8499 })); 8500 } else { 8501 return instance.proxy; 8502 } 8503} 8504const classifyRE = /(?:^|[-_])(\w)/g; 8505const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); 8506function getComponentName(Component, includeInferred = true) { 8507 return isFunction$3(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; 8508} 8509function formatComponentName(instance, Component, isRoot = false) { 8510 let name = getComponentName(Component); 8511 if (!name && Component.__file) { 8512 const match = Component.__file.match(/([^/\\]+)\.\w+$/); 8513 if (match) { 8514 name = match[1]; 8515 } 8516 } 8517 if (!name && instance && instance.parent) { 8518 const inferFromRegistry = (registry) => { 8519 for (const key in registry) { 8520 if (registry[key] === Component) { 8521 return key; 8522 } 8523 } 8524 }; 8525 name = inferFromRegistry( 8526 instance.components || instance.parent.type.components 8527 ) || inferFromRegistry(instance.appContext.components); 8528 } 8529 return name ? classify(name) : isRoot ? `App` : `Anonymous`; 8530} 8531function isClassComponent(value) { 8532 return isFunction$3(value) && "__vccOpts" in value; 8533} 8534const computed = (getterOrOptions, debugOptions) => { 8535 const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); 8536 return c; 8537}; 8538function h(type, propsOrChildren, children) { 8539 const l = arguments.length; 8540 if (l === 2) { 8541 if (isObject$9(propsOrChildren) && !isArray$3(propsOrChildren)) { 8542 if (isVNode$1(propsOrChildren)) { 8543 return createVNode(type, null, [propsOrChildren]); 8544 } 8545 return createVNode(type, propsOrChildren); 8546 } else { 8547 return createVNode(type, null, propsOrChildren); 8548 } 8549 } else { 8550 if (l > 3) { 8551 children = Array.prototype.slice.call(arguments, 2); 8552 } else if (l === 3 && isVNode$1(children)) { 8553 children = [children]; 8554 } 8555 return createVNode(type, propsOrChildren, children); 8556 } 8557} 8558function initCustomFormatter() { 8559 { 8560 return; 8561 } 8562} 8563function withMemo(memo, render2, cache2, index2) {
vendor: 1,181 bytes, lines 8564-8612
8564 const cached = cache2[index2]; 8565 if (cached && isMemoSame(cached, memo)) { 8566 return cached; 8567 } 8568 const ret = render2(); 8569 ret.memo = memo.slice(); 8570 ret.cacheIndex = index2; 8571 return cache2[index2] = ret; 8572} 8573function isMemoSame(cached, memo) { 8574 const prev = cached.memo; 8575 if (prev.length != memo.length) { 8576 return false; 8577 } 8578 for (let i = 0; i < prev.length; i++) { 8579 if (hasChanged(prev[i], memo[i])) { 8580 return false; 8581 } 8582 } 8583 if (isBlockTreeEnabled > 0 && currentBlock) { 8584 currentBlock.push(cached); 8585 } 8586 return true; 8587} 8588const version = "3.5.16"; 8589const warn$2 = NOOP; 8590const ErrorTypeStrings = ErrorTypeStrings$1; 8591const devtools$2 = devtools$1; 8592const setDevtoolsHook = setDevtoolsHook$1; 8593const _ssrUtils = { 8594 createComponentInstance, 8595 setupComponent, 8596 renderComponentRoot, 8597 setCurrentRenderingInstance, 8598 isVNode: isVNode$1, 8599 normalizeVNode, 8600 getComponentPublicInstance, 8601 ensureValidVNode, 8602 pushWarningContext, 8603 popWarningContext 8604}; 8605const ssrUtils = _ssrUtils; 8606const resolveFilter = null; 8607const compatUtils = null; 8608const DeprecationTypes = null; 8609/** 8610* @vue/runtime-dom v3.5.16 8611* (c) 2018-present Yuxi (Evan) You and Vue contributors 8612* @license MIT
vendor: 5,408 bytes, lines 8613-8781
8613**/ 8614let policy = void 0; 8615const tt = typeof window !== "undefined" && window.trustedTypes; 8616if (tt) { 8617 try { 8618 policy = /* @__PURE__ */ tt.createPolicy("vue", { 8619 createHTML: (val) => val 8620 }); 8621 } catch (e) { 8622 } 8623} 8624const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; 8625const svgNS = "http://www.w3.org/2000/svg"; 8626const mathmlNS = "http://www.w3.org/1998/Math/MathML"; 8627const doc = typeof document !== "undefined" ? document : null; 8628const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); 8629const nodeOps = { 8630 insert: (child, parent, anchor) => { 8631 parent.insertBefore(child, anchor || null); 8632 }, 8633 remove: (child) => { 8634 const parent = child.parentNode; 8635 if (parent) { 8636 parent.removeChild(child); 8637 } 8638 }, 8639 createElement: (tag, namespace, is, props2) => { 8640 const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); 8641 if (tag === "select" && props2 && props2.multiple != null) { 8642 el.setAttribute("multiple", props2.multiple); 8643 } 8644 return el; 8645 }, 8646 createText: (text) => doc.createTextNode(text), 8647 createComment: (text) => doc.createComment(text), 8648 setText: (node, text) => { 8649 node.nodeValue = text; 8650 }, 8651 setElementText: (el, text) => { 8652 el.textContent = text; 8653 }, 8654 parentNode: (node) => node.parentNode, 8655 nextSibling: (node) => node.nextSibling, 8656 querySelector: (selector) => doc.querySelector(selector), 8657 setScopeId(el, id) { 8658 el.setAttribute(id, ""); 8659 }, 8660 // __UNSAFE__ 8661 // Reason: innerHTML. 8662 // Static content here can only come from compiled templates. 8663 // As long as the user only uses trusted templates, this is safe. 8664 insertStaticContent(content, parent, anchor, namespace, start, end) { 8665 const before = anchor ? anchor.previousSibling : parent.lastChild; 8666 if (start && (start === end || start.nextSibling)) { 8667 while (true) { 8668 parent.insertBefore(start.cloneNode(true), anchor); 8669 if (start === end || !(start = start.nextSibling)) break; 8670 } 8671 } else { 8672 templateContainer.innerHTML = unsafeToTrustedHTML( 8673 namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content 8674 ); 8675 const template = templateContainer.content; 8676 if (namespace === "svg" || namespace === "mathml") { 8677 const wrapper = template.firstChild; 8678 while (wrapper.firstChild) { 8679 template.appendChild(wrapper.firstChild); 8680 } 8681 template.removeChild(wrapper); 8682 } 8683 parent.insertBefore(template, anchor); 8684 } 8685 return [ 8686 // first 8687 before ? before.nextSibling : parent.firstChild, 8688 // last 8689 anchor ? anchor.previousSibling : parent.lastChild 8690 ]; 8691 } 8692}; 8693const TRANSITION$1 = "transition"; 8694const ANIMATION = "animation"; 8695const vtcKey = Symbol("_vtc"); 8696const DOMTransitionPropsValidators = { 8697 name: String, 8698 type: String, 8699 css: { 8700 type: Boolean, 8701 default: true 8702 }, 8703 duration: [String, Number, Object], 8704 enterFromClass: String, 8705 enterActiveClass: String, 8706 enterToClass: String, 8707 appearFromClass: String, 8708 appearActiveClass: String, 8709 appearToClass: String, 8710 leaveFromClass: String, 8711 leaveActiveClass: String, 8712 leaveToClass: String 8713}; 8714const TransitionPropsValidators = /* @__PURE__ */ extend$5( 8715 {}, 8716 BaseTransitionPropsValidators, 8717 DOMTransitionPropsValidators 8718); 8719const decorate$1 = (t) => { 8720 t.displayName = "Transition"; 8721 t.props = TransitionPropsValidators; 8722 return t; 8723}; 8724const Transition = /* @__PURE__ */ decorate$1( 8725 (props2, { slots }) => h(BaseTransition, resolveTransitionProps(props2), slots) 8726); 8727const callHook = (hook, args = []) => { 8728 if (isArray$3(hook)) { 8729 hook.forEach((h2) => h2(...args)); 8730 } else if (hook) { 8731 hook(...args); 8732 } 8733}; 8734const hasExplicitCallback = (hook) => { 8735 return hook ? isArray$3(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; 8736}; 8737function resolveTransitionProps(rawProps) { 8738 const baseProps = {}; 8739 for (const key in rawProps) { 8740 if (!(key in DOMTransitionPropsValidators)) { 8741 baseProps[key] = rawProps[key]; 8742 } 8743 } 8744 if (rawProps.css === false) { 8745 return baseProps; 8746 } 8747 const { 8748 name = "v", 8749 type, 8750 duration, 8751 enterFromClass = `${name}-enter-from`, 8752 enterActiveClass = `${name}-enter-active`, 8753 enterToClass = `${name}-enter-to`, 8754 appearFromClass = enterFromClass, 8755 appearActiveClass = enterActiveClass, 8756 appearToClass = enterToClass, 8757 leaveFromClass = `${name}-leave-from`, 8758 leaveActiveClass = `${name}-leave-active`, 8759 leaveToClass = `${name}-leave-to` 8760 } = rawProps; 8761 const durations = normalizeDuration(duration); 8762 const enterDuration = durations && durations[0]; 8763 const leaveDuration = durations && durations[1]; 8764 const { 8765 onBeforeEnter, 8766 onEnter, 8767 onEnterCancelled, 8768 onLeave, 8769 onLeaveCancelled, 8770 onBeforeAppear = onBeforeEnter, 8771 onAppear = onEnter, 8772 onAppearCancelled = onEnterCancelled 8773 } = baseProps; 8774 const finishEnter = (el, isAppear, done, isCancelled) => { 8775 el._enterCancelled = isCancelled; 8776 removeTransitionClass(el, isAppear ? appearToClass : enterToClass); 8777 removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); 8778 done && done(); 8779 }; 8780 const finishLeave = (el, done) => { 8781 el._isLeaving = false;
vendor: 8,673 bytes, lines 8782-9074
8782 removeTransitionClass(el, leaveFromClass); 8783 removeTransitionClass(el, leaveToClass); 8784 removeTransitionClass(el, leaveActiveClass); 8785 done && done(); 8786 }; 8787 const makeEnterHook = (isAppear) => { 8788 return (el, done) => { 8789 const hook = isAppear ? onAppear : onEnter; 8790 const resolve2 = () => finishEnter(el, isAppear, done); 8791 callHook(hook, [el, resolve2]); 8792 nextFrame(() => { 8793 removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); 8794 addTransitionClass(el, isAppear ? appearToClass : enterToClass); 8795 if (!hasExplicitCallback(hook)) { 8796 whenTransitionEnds(el, type, enterDuration, resolve2); 8797 } 8798 }); 8799 }; 8800 }; 8801 return extend$5(baseProps, { 8802 onBeforeEnter(el) { 8803 callHook(onBeforeEnter, [el]); 8804 addTransitionClass(el, enterFromClass); 8805 addTransitionClass(el, enterActiveClass); 8806 }, 8807 onBeforeAppear(el) { 8808 callHook(onBeforeAppear, [el]); 8809 addTransitionClass(el, appearFromClass); 8810 addTransitionClass(el, appearActiveClass); 8811 }, 8812 onEnter: makeEnterHook(false), 8813 onAppear: makeEnterHook(true), 8814 onLeave(el, done) { 8815 el._isLeaving = true; 8816 const resolve2 = () => finishLeave(el, done); 8817 addTransitionClass(el, leaveFromClass); 8818 if (!el._enterCancelled) { 8819 forceReflow(); 8820 addTransitionClass(el, leaveActiveClass); 8821 } else { 8822 addTransitionClass(el, leaveActiveClass); 8823 forceReflow(); 8824 } 8825 nextFrame(() => { 8826 if (!el._isLeaving) { 8827 return; 8828 } 8829 removeTransitionClass(el, leaveFromClass); 8830 addTransitionClass(el, leaveToClass); 8831 if (!hasExplicitCallback(onLeave)) { 8832 whenTransitionEnds(el, type, leaveDuration, resolve2); 8833 } 8834 }); 8835 callHook(onLeave, [el, resolve2]); 8836 }, 8837 onEnterCancelled(el) { 8838 finishEnter(el, false, void 0, true); 8839 callHook(onEnterCancelled, [el]); 8840 }, 8841 onAppearCancelled(el) { 8842 finishEnter(el, true, void 0, true); 8843 callHook(onAppearCancelled, [el]); 8844 }, 8845 onLeaveCancelled(el) { 8846 finishLeave(el); 8847 callHook(onLeaveCancelled, [el]); 8848 } 8849 }); 8850} 8851function normalizeDuration(duration) { 8852 if (duration == null) { 8853 return null; 8854 } else if (isObject$9(duration)) { 8855 return [NumberOf(duration.enter), NumberOf(duration.leave)]; 8856 } else { 8857 const n = NumberOf(duration); 8858 return [n, n]; 8859 } 8860} 8861function NumberOf(val) { 8862 const res = toNumber$2(val); 8863 return res; 8864} 8865function addTransitionClass(el, cls) { 8866 cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); 8867 (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); 8868} 8869function removeTransitionClass(el, cls) { 8870 cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); 8871 const _vtc = el[vtcKey]; 8872 if (_vtc) { 8873 _vtc.delete(cls); 8874 if (!_vtc.size) { 8875 el[vtcKey] = void 0; 8876 } 8877 } 8878} 8879function nextFrame(cb) { 8880 requestAnimationFrame(() => { 8881 requestAnimationFrame(cb); 8882 }); 8883} 8884let endId = 0; 8885function whenTransitionEnds(el, expectedType, explicitTimeout, resolve2) { 8886 const id = el._endId = ++endId; 8887 const resolveIfNotStale = () => { 8888 if (id === el._endId) { 8889 resolve2(); 8890 } 8891 }; 8892 if (explicitTimeout != null) { 8893 return setTimeout(resolveIfNotStale, explicitTimeout); 8894 } 8895 const { type, timeout, propCount } = getTransitionInfo(el, expectedType); 8896 if (!type) { 8897 return resolve2(); 8898 } 8899 const endEvent = type + "end"; 8900 let ended = 0; 8901 const end = () => { 8902 el.removeEventListener(endEvent, onEnd); 8903 resolveIfNotStale(); 8904 }; 8905 const onEnd = (e) => { 8906 if (e.target === el && ++ended >= propCount) { 8907 end(); 8908 } 8909 }; 8910 setTimeout(() => { 8911 if (ended < propCount) { 8912 end(); 8913 } 8914 }, timeout + 1); 8915 el.addEventListener(endEvent, onEnd); 8916} 8917function getTransitionInfo(el, expectedType) { 8918 const styles = window.getComputedStyle(el); 8919 const getStyleProperties = (key) => (styles[key] || "").split(", "); 8920 const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`); 8921 const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`); 8922 const transitionTimeout = getTimeout(transitionDelays, transitionDurations); 8923 const animationDelays = getStyleProperties(`${ANIMATION}Delay`); 8924 const animationDurations = getStyleProperties(`${ANIMATION}Duration`); 8925 const animationTimeout = getTimeout(animationDelays, animationDurations); 8926 let type = null; 8927 let timeout = 0; 8928 let propCount = 0; 8929 if (expectedType === TRANSITION$1) { 8930 if (transitionTimeout > 0) { 8931 type = TRANSITION$1; 8932 timeout = transitionTimeout; 8933 propCount = transitionDurations.length; 8934 } 8935 } else if (expectedType === ANIMATION) { 8936 if (animationTimeout > 0) { 8937 type = ANIMATION; 8938 timeout = animationTimeout; 8939 propCount = animationDurations.length; 8940 } 8941 } else { 8942 timeout = Math.max(transitionTimeout, animationTimeout); 8943 type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null; 8944 propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0; 8945 } 8946 const hasTransform = type === TRANSITION$1 && /\b(transform|all)(,|$)/.test( 8947 getStyleProperties(`${TRANSITION$1}Property`).toString() 8948 ); 8949 return { 8950 type, 8951 timeout, 8952 propCount, 8953 hasTransform 8954 }; 8955} 8956function getTimeout(delays, durations) { 8957 while (delays.length < durations.length) { 8958 delays = delays.concat(delays); 8959 } 8960 return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); 8961} 8962function toMs(s) { 8963 if (s === "auto") return 0; 8964 return Number(s.slice(0, -1).replace(",", ".")) * 1e3; 8965} 8966function forceReflow() { 8967 return document.body.offsetHeight; 8968} 8969function patchClass(el, value, isSVG) { 8970 const transitionClasses = el[vtcKey]; 8971 if (transitionClasses) { 8972 value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); 8973 } 8974 if (value == null) { 8975 el.removeAttribute("class"); 8976 } else if (isSVG) { 8977 el.setAttribute("class", value); 8978 } else { 8979 el.className = value; 8980 } 8981} 8982const vShowOriginalDisplay = Symbol("_vod"); 8983const vShowHidden = Symbol("_vsh"); 8984const vShow = { 8985 beforeMount(el, { value }, { transition: transition2 }) { 8986 el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; 8987 if (transition2 && value) { 8988 transition2.beforeEnter(el); 8989 } else { 8990 setDisplay(el, value); 8991 } 8992 }, 8993 mounted(el, { value }, { transition: transition2 }) { 8994 if (transition2 && value) { 8995 transition2.enter(el); 8996 } 8997 }, 8998 updated(el, { value, oldValue }, { transition: transition2 }) { 8999 if (!value === !oldValue) return; 9000 if (transition2) { 9001 if (value) { 9002 transition2.beforeEnter(el); 9003 setDisplay(el, true); 9004 transition2.enter(el); 9005 } else { 9006 transition2.leave(el, () => { 9007 setDisplay(el, false); 9008 }); 9009 } 9010 } else { 9011 setDisplay(el, value); 9012 } 9013 }, 9014 beforeUnmount(el, { value }) { 9015 setDisplay(el, value); 9016 } 9017}; 9018function setDisplay(el, value) { 9019 el.style.display = value ? el[vShowOriginalDisplay] : "none"; 9020 el[vShowHidden] = !value; 9021} 9022function initVShowForSSR() { 9023 vShow.getSSRProps = ({ value }) => { 9024 if (!value) { 9025 return { style: { display: "none" } }; 9026 } 9027 }; 9028} 9029const CSS_VAR_TEXT = Symbol(""); 9030function useCssVars(getter) { 9031 const instance = getCurrentInstance(); 9032 if (!instance) { 9033 return; 9034 } 9035 const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => { 9036 Array.from( 9037 document.querySelectorAll(`[data-v-owner="${instance.uid}"]`) 9038 ).forEach((node) => setVarsOnNode(node, vars)); 9039 }; 9040 const setVars = () => { 9041 const vars = getter(instance.proxy); 9042 if (instance.ce) { 9043 setVarsOnNode(instance.ce, vars); 9044 } else { 9045 setVarsOnVNode(instance.subTree, vars); 9046 } 9047 updateTeleports(vars); 9048 }; 9049 onBeforeUpdate(() => { 9050 queuePostFlushCb(setVars); 9051 }); 9052 onMounted(() => { 9053 watch(setVars, NOOP, { flush: "post" }); 9054 const ob = new MutationObserver(setVars); 9055 ob.observe(instance.subTree.el.parentNode, { childList: true }); 9056 onUnmounted(() => ob.disconnect()); 9057 }); 9058} 9059function setVarsOnVNode(vnode, vars) { 9060 if (vnode.shapeFlag & 128) { 9061 const suspense = vnode.suspense; 9062 vnode = suspense.activeBranch; 9063 if (suspense.pendingBranch && !suspense.isHydrating) { 9064 suspense.effects.push(() => { 9065 setVarsOnVNode(suspense.activeBranch, vars); 9066 }); 9067 } 9068 } 9069 while (vnode.component) { 9070 vnode = vnode.component.subTree; 9071 } 9072 if (vnode.shapeFlag & 1 && vnode.el) { 9073 setVarsOnNode(vnode.el, vars); 9074 } else if (vnode.type === Fragment) {
9075 vnode.children.forEach((c) => setVarsOnVNode(c, vars)); 9076 } else if (vnode.type === Static) { 9077 let { el, anchor } = vnode; 9078 while (el) { 9079 setVarsOnNode(el, vars); 9080 if (el === anchor) break; 9081 el = el.nextSibling; 9082 } 9083 } 9084} 9085function setVarsOnNode(el, vars) { 9086 if (el.nodeType === 1) { 9087 const style = el.style; 9088 let cssText = ""; 9089 for (const key in vars) { 9090 style.setProperty(`--${key}`, vars[key]); 9091 cssText += `--${key}: ${vars[key]};`; 9092 } 9093 style[CSS_VAR_TEXT] = cssText; 9094 } 9095} 9096const displayRE = /(^|;)\s*display\s*:/; 9097function patchStyle(el, prev, next) { 9098 const style = el.style; 9099 const isCssString = isString$3(next); 9100 let hasControlledDisplay = false; 9101 if (next && !isCssString) { 9102 if (prev) { 9103 if (!isString$3(prev)) { 9104 for (const key in prev) { 9105 if (next[key] == null) { 9106 setStyle(style, key, ""); 9107 } 9108 } 9109 } else { 9110 for (const prevStyle of prev.split(";")) { 9111 const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); 9112 if (next[key] == null) { 9113 setStyle(style, key, ""); 9114 } 9115 } 9116 } 9117 } 9118 for (const key in next) { 9119 if (key === "display") { 9120 hasControlledDisplay = true; 9121 } 9122 setStyle(style, key, next[key]); 9123 } 9124 } else { 9125 if (isCssString) { 9126 if (prev !== next) { 9127 const cssVarText = style[CSS_VAR_TEXT]; 9128 if (cssVarText) { 9129 next += ";" + cssVarText; 9130 } 9131 style.cssText = next; 9132 hasControlledDisplay = displayRE.test(next); 9133 } 9134 } else if (prev) { 9135 el.removeAttribute("style"); 9136 } 9137 } 9138 if (vShowOriginalDisplay in el) { 9139 el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; 9140 if (el[vShowHidden]) { 9141 style.display = "none"; 9142 } 9143 } 9144} 9145const importantRE = /\s*!important$/; 9146function setStyle(style, name, val) { 9147 if (isArray$3(val)) { 9148 val.forEach((v) => setStyle(style, name, v)); 9149 } else { 9150 if (val == null) val = ""; 9151 if (name.startsWith("--")) { 9152 style.setProperty(name, val); 9153 } else { 9154 const prefixed = autoPrefix(style, name); 9155 if (importantRE.test(val)) { 9156 style.setProperty( 9157 hyphenate(prefixed), 9158 val.replace(importantRE, ""), 9159 "important" 9160 ); 9161 } else { 9162 style[prefixed] = val; 9163 } 9164 } 9165 } 9166} 9167const prefixes = ["Webkit", "Moz", "ms"]; 9168const prefixCache = {}; 9169function autoPrefix(style, rawName) { 9170 const cached = prefixCache[rawName]; 9171 if (cached) { 9172 return cached; 9173 } 9174 let name = camelize(rawName); 9175 if (name !== "filter" && name in style) { 9176 return prefixCache[rawName] = name; 9177 } 9178 name = capitalize$1(name); 9179 for (let i = 0; i < prefixes.length; i++) { 9180 const prefixed = prefixes[i] + name; 9181 if (prefixed in style) { 9182 return prefixCache[rawName] = prefixed; 9183 } 9184 } 9185 return rawName; 9186} 9187const xlinkNS = "http://www.w3.org/1999/xlink"; 9188function patchAttr(el, key, value, isSVG, instance, isBoolean2 = isSpecialBooleanAttr(key)) { 9189 if (isSVG && key.startsWith("xlink:")) { 9190 if (value == null) { 9191 el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); 9192 } else { 9193 el.setAttributeNS(xlinkNS, key, value); 9194 } 9195 } else { 9196 if (value == null || isBoolean2 && !includeBooleanAttr(value)) { 9197 el.removeAttribute(key); 9198 } else { 9199 el.setAttribute( 9200 key, 9201 isBoolean2 ? "" : isSymbol$2(value) ? String(value) : value 9202 ); 9203 } 9204 } 9205} 9206function patchDOMProp(el, key, value, parentComponent, attrName) { 9207 if (key === "innerHTML" || key === "textContent") { 9208 if (value != null) { 9209 el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; 9210 } 9211 return; 9212 } 9213 const tag = el.tagName; 9214 if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally 9215 !tag.includes("-")) { 9216 const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; 9217 const newValue = value == null ? ( 9218 // #11647: value should be set as empty string for null and undefined, 9219 // but <input type="checkbox"> should be set as 'on'. 9220 el.type === "checkbox" ? "on" : "" 9221 ) : String(value); 9222 if (oldValue !== newValue || !("_value" in el)) { 9223 el.value = newValue; 9224 } 9225 if (value == null) { 9226 el.removeAttribute(key); 9227 } 9228 el._value = value; 9229 return; 9230 } 9231 let needRemove = false;
vendor: 2,672 bytes, lines 9232-9325
9232 if (value === "" || value == null) { 9233 const type = typeof el[key]; 9234 if (type === "boolean") { 9235 value = includeBooleanAttr(value); 9236 } else if (value == null && type === "string") { 9237 value = ""; 9238 needRemove = true; 9239 } else if (type === "number") { 9240 value = 0; 9241 needRemove = true; 9242 } 9243 } 9244 try { 9245 el[key] = value; 9246 } catch (e) { 9247 } 9248 needRemove && el.removeAttribute(attrName || key); 9249} 9250function addEventListener(el, event, handler, options2) { 9251 el.addEventListener(event, handler, options2); 9252} 9253function removeEventListener(el, event, handler, options2) { 9254 el.removeEventListener(event, handler, options2); 9255} 9256const veiKey = Symbol("_vei"); 9257function patchEvent(el, rawName, prevValue, nextValue, instance = null) { 9258 const invokers = el[veiKey] || (el[veiKey] = {}); 9259 const existingInvoker = invokers[rawName]; 9260 if (nextValue && existingInvoker) { 9261 existingInvoker.value = nextValue; 9262 } else { 9263 const [name, options2] = parseName(rawName); 9264 if (nextValue) { 9265 const invoker = invokers[rawName] = createInvoker( 9266 nextValue, 9267 instance 9268 ); 9269 addEventListener(el, name, invoker, options2); 9270 } else if (existingInvoker) { 9271 removeEventListener(el, name, existingInvoker, options2); 9272 invokers[rawName] = void 0; 9273 } 9274 } 9275} 9276const optionsModifierRE = /(?:Once|Passive|Capture)$/; 9277function parseName(name) { 9278 let options2; 9279 if (optionsModifierRE.test(name)) { 9280 options2 = {}; 9281 let m; 9282 while (m = name.match(optionsModifierRE)) { 9283 name = name.slice(0, name.length - m[0].length); 9284 options2[m[0].toLowerCase()] = true; 9285 } 9286 } 9287 const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2)); 9288 return [event, options2]; 9289} 9290let cachedNow = 0; 9291const p = /* @__PURE__ */ Promise.resolve(); 9292const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); 9293function createInvoker(initialValue, instance) { 9294 const invoker = (e) => { 9295 if (!e._vts) { 9296 e._vts = Date.now(); 9297 } else if (e._vts <= invoker.attached) { 9298 return; 9299 } 9300 callWithAsyncErrorHandling( 9301 patchStopImmediatePropagation(e, invoker.value), 9302 instance, 9303 5, 9304 [e] 9305 ); 9306 }; 9307 invoker.value = initialValue; 9308 invoker.attached = getNow(); 9309 return invoker; 9310} 9311function patchStopImmediatePropagation(e, value) { 9312 if (isArray$3(value)) { 9313 const originalStop = e.stopImmediatePropagation; 9314 e.stopImmediatePropagation = () => { 9315 originalStop.call(e); 9316 e._stopped = true; 9317 }; 9318 return value.map( 9319 (fn) => (e2) => !e2._stopped && fn && fn(e2) 9320 ); 9321 } else { 9322 return value; 9323 } 9324} 9325const isNativeOn = (key) =>
9325 key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter 9326key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; 9327const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { 9328 const isSVG = namespace === "svg"; 9329 if (key === "class") { 9330 patchClass(el, nextValue, isSVG); 9331 } else if (key === "style") { 9332 patchStyle(el, prevValue, nextValue); 9333 } else if (isOn(key)) { 9334 if (!isModelListener(key)) { 9335 patchEvent(el, key, prevValue, nextValue, parentComponent); 9336 } 9337 } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { 9338 patchDOMProp(el, key, nextValue); 9339 if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { 9340 patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); 9341 } 9342 } else if ( 9343 // #11081 force set props for possible async custom element 9344 el._isVueCE && (/[A-Z]/.test(key) || !isString$3(nextValue)) 9345 ) { 9346 patchDOMProp(el, camelize(key), nextValue, parentComponent, key); 9347 } else { 9348 if (key === "true-value") { 9349 el._trueValue = nextValue; 9350 } else if (key === "false-value") { 9351 el._falseValue = nextValue; 9352 } 9353 patchAttr(el, key, nextValue, isSVG); 9354 } 9355}; 9356function shouldSetAsProp(el, key, value, isSVG) { 9357 if (isSVG) { 9358 if (key === "innerHTML" || key === "textContent") { 9359 return true; 9360 } 9361 if (key in el && isNativeOn(key) && isFunction$3(value)) { 9362 return true; 9363 } 9364 return false; 9365 } 9366 if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { 9367 return false; 9368 } 9369 if (key === "form") { 9370 return false; 9371 } 9372 if (key === "list" && el.tagName === "INPUT") { 9373 return false; 9374 } 9375 if (key === "type" && el.tagName === "TEXTAREA") { 9376 return false; 9377 } 9378 if (key === "width" || key === "height") { 9379 const tag = el.tagName; 9380 if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { 9381 return false; 9382 } 9383 } 9384 if (isNativeOn(key) && isString$3(value)) { 9385 return false; 9386 } 9387 return key in el; 9388} 9389const REMOVAL = {}; 9390/*! #__NO_SIDE_EFFECTS__ */ 9391// @__NO_SIDE_EFFECTS__ 9392function defineCustomElement(options2, extraOptions, _createApp) { 9393 const Comp = /* @__PURE__ */ defineComponent(options2, extraOptions); 9394 if (isPlainObject$3(Comp)) extend$5(Comp, extraOptions); 9395 class VueCustomElement extends VueElement { 9396 constructor(initialProps) { 9397 super(Comp, initialProps, _createApp); 9398 } 9399 } 9400 VueCustomElement.def = Comp; 9401 return VueCustomElement; 9402} 9403/*! #__NO_SIDE_EFFECTS__ */ 9404const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options2, extraOptions) => { 9405 return /* @__PURE__ */ defineCustomElement(options2, extraOptions, createSSRApp); 9406}; 9407const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { 9408}; 9409class VueElement extends BaseClass { 9410 constructor(_def, _props = {}, _createApp = createApp) { 9411 super(); 9412 this._def = _def; 9413 this._props = _props; 9414 this._createApp = _createApp; 9415 this._isVueCE = true; 9416 this._instance = null; 9417 this._app = null; 9418 this._nonce = this._def.nonce; 9419 this._connected = false; 9420 this._resolved = false; 9421 this._numberProps = null; 9422 this._styleChildren = /* @__PURE__ */ new WeakSet(); 9423 this._ob = null; 9424 if (this.shadowRoot && _createApp !== createApp) { 9425 this._root = this.shadowRoot; 9426 } else { 9427 if (_def.shadowRoot !== false) { 9428 this.attachShadow({ mode: "open" }); 9429 this._root = this.shadowRoot; 9430 } else { 9431 this._root = this; 9432 } 9433 } 9434 } 9435 connectedCallback() { 9436 if (!this.isConnected) return; 9437 if (!this.shadowRoot && !this._resolved) { 9438 this._parseSlots(); 9439 } 9440 this._connected = true; 9441 let parent = this; 9442 while (parent = parent && (parent.parentNode || parent.host)) { 9443 if (parent instanceof VueElement) { 9444 this._parent = parent; 9445 break; 9446 } 9447 } 9448 if (!this._instance) { 9449 if (this._resolved) { 9450 this._mount(this._def); 9451 } else { 9452 if (parent && parent._pendingResolve) { 9453 this._pendingResolve = parent._pendingResolve.then(() => { 9454 this._pendingResolve = void 0; 9455 this._resolveDef(); 9456 }); 9457 } else { 9458 this._resolveDef(); 9459 } 9460 } 9461 } 9462 } 9463 _setParent(parent = this._parent) { 9464 if (parent) { 9465 this._instance.parent = parent._instance; 9466 this._inheritParentContext(parent); 9467 } 9468 } 9469 _inheritParentContext(parent = this._parent) { 9470 if (parent && this._app) { 9471 Object.setPrototypeOf( 9472 this._app._context.provides, 9473 parent._instance.provides 9474 ); 9475 } 9476 } 9477 disconnectedCallback() { 9478 this._connected = false;
9479 nextTick$1(() => { 9480 if (!this._connected) { 9481 if (this._ob) { 9482 this._ob.disconnect(); 9483 this._ob = null; 9484 } 9485 this._app && this._app.unmount(); 9486 if (this._instance) this._instance.ce = void 0; 9487 this._app = this._instance = null; 9488 } 9489 }); 9490 } 9491 /** 9492 * resolve inner component definition (handle possible async component) 9493 */ 9494 _resolveDef() { 9495 if (this._pendingResolve) { 9496 return; 9497 } 9498 for (let i = 0; i < this.attributes.length; i++) { 9499 this._setAttr(this.attributes[i].name); 9500 } 9501 this._ob = new MutationObserver((mutations2) => { 9502 for (const m of mutations2) { 9503 this._setAttr(m.attributeName); 9504 } 9505 }); 9506 this._ob.observe(this, { attributes: true }); 9507 const resolve2 = (def2, isAsync = false) => { 9508 this._resolved = true; 9509 this._pendingResolve = void 0; 9510 const { props: props2, styles } = def2; 9511 let numberProps; 9512 if (props2 && !isArray$3(props2)) { 9513 for (const key in props2) { 9514 const opt = props2[key]; 9515 if (opt === Number || opt && opt.type === Number) { 9516 if (key in this._props) { 9517 this._props[key] = toNumber$2(this._props[key]); 9518 } 9519 (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true; 9520 } 9521 } 9522 } 9523 this._numberProps = numberProps; 9524 this._resolveProps(def2); 9525 if (this.shadowRoot) { 9526 this._applyStyles(styles); 9527 } 9528 this._mount(def2); 9529 }; 9530 const asyncDef = this._def.__asyncLoader; 9531 if (asyncDef) { 9532 this._pendingResolve = asyncDef().then( 9533 (def2) => resolve2(this._def = def2, true) 9534 ); 9535 } else { 9536 resolve2(this._def); 9537 } 9538 } 9539 _mount(def2) { 9540 this._app = this._createApp(def2); 9541 this._inheritParentContext(); 9542 if (def2.configureApp) { 9543 def2.configureApp(this._app); 9544 } 9545 this._app._ceVNode = this._createVNode(); 9546 this._app.mount(this._root); 9547 const exposed = this._instance && this._instance.exposed; 9548 if (!exposed) return; 9549 for (const key in exposed) { 9550 if (!hasOwn$2(this, key)) { 9551 Object.defineProperty(this, key, { 9552 // unwrap ref to be consistent with public instance behavior 9553 get: () => unref(exposed[key]) 9554 }); 9555 } 9556 } 9557 } 9558 _resolveProps(def2) { 9559 const { props: props2 } = def2; 9560 const declaredPropKeys = isArray$3(props2) ? props2 : Object.keys(props2 || {}); 9561 for (const key of Object.keys(this)) { 9562 if (key[0] !== "_" && declaredPropKeys.includes(key)) { 9563 this._setProp(key, this[key]); 9564 } 9565 } 9566 for (const key of declaredPropKeys.map(camelize)) { 9567 Object.defineProperty(this, key, { 9568 get() { 9569 return this._getProp(key); 9570 }, 9571 set(val) { 9572 this._setProp(key, val, true, true); 9573 } 9574 }); 9575 } 9576 } 9577 _setAttr(key) { 9578 if (key.startsWith("data-v-")) return; 9579 const has = this.hasAttribute(key); 9580 let value = has ? this.getAttribute(key) : REMOVAL; 9581 const camelKey = camelize(key); 9582 if (has && this._numberProps && this._numberProps[camelKey]) { 9583 value = toNumber$2(value); 9584 } 9585 this._setProp(camelKey, value, false, true); 9586 } 9587 /** 9588 * @internal 9589 */ 9590 _getProp(key) { 9591 return this._props[key]; 9592 } 9593 /** 9594 * @internal 9595 */ 9596 _setProp(key, val, shouldReflect = true, shouldUpdate = false) { 9597 if (val !== this._props[key]) { 9598 if (val === REMOVAL) { 9599 delete this._props[key]; 9600 } else { 9601 this._props[key] = val; 9602 if (key === "key" && this._app) { 9603 this._app._ceVNode.key = val; 9604 } 9605 } 9606 if (shouldUpdate && this._instance) { 9607 this._update(); 9608 } 9609 if (shouldReflect) { 9610 const ob = this._ob; 9611 ob && ob.disconnect(); 9612 if (val === true) { 9613 this.setAttribute(hyphenate(key), ""); 9614 } else if (typeof val === "string" || typeof val === "number") { 9615 this.setAttribute(hyphenate(key), val + ""); 9616 } else if (!val) { 9617 this.removeAttribute(hyphenate(key)); 9618 } 9619 ob && ob.observe(this, { attributes: true }); 9620 } 9621 } 9622 } 9623 _update() { 9624 const vnode = this._createVNode(); 9625 if (this._app) vnode.appContext = this._app._context; 9626 render(vnode, this._root); 9627 } 9628 _createVNode() { 9629 const baseProps = {}; 9630 if (!this.shadowRoot) { 9631 baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); 9632 } 9633 const vnode = createVNode(this._def, extend$5(baseProps, this._props)); 9634 if (!this._instance) { 9635 vnode.ce = (instance) => { 9636 this._instance = instance; 9637 instance.ce = this; 9638 instance.isCE = true; 9639 const dispatch2 = (event, args) => { 9640 this.dispatchEvent( 9641 new CustomEvent( 9642 event, 9643 isPlainObject$3(args[0]) ? extend$5({ detail: args }, args[0]) : { detail: args } 9644 ) 9645 ); 9646 }; 9647 instance.emit = (event, ...args) => { 9648 dispatch2(event, args); 9649 if (hyphenate(event) !== event) { 9650 dispatch2(hyphenate(event), args); 9651 } 9652 }; 9653 this._setParent(); 9654 }; 9655 } 9656 return vnode; 9657 } 9658 _applyStyles(styles, owner) { 9659 if (!styles) return; 9660 if (owner) { 9661 if (owner === this._def || this._styleChildren.has(owner)) { 9662 return; 9663 } 9664 this._styleChildren.add(owner); 9665 } 9666 const nonce = this._nonce; 9667 for (let i = styles.length - 1; i >= 0; i--) { 9668 const s = document.createElement("style"); 9669 if (nonce) s.setAttribute("nonce", nonce); 9670 s.textContent = styles[i];
9671 this.shadowRoot.prepend(s); 9672 } 9673 } 9674 /** 9675 * Only called when shadowRoot is false 9676 */ 9677 _parseSlots() { 9678 const slots = this._slots = {}; 9679 let n; 9680 while (n = this.firstChild) { 9681 const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; 9682 (slots[slotName] || (slots[slotName] = [])).push(n); 9683 this.removeChild(n); 9684 } 9685 } 9686 /** 9687 * Only called when shadowRoot is false 9688 */ 9689 _renderSlots() { 9690 const outlets = (this._teleportTarget || this).querySelectorAll("slot"); 9691 const scopeId = this._instance.type.__scopeId; 9692 for (let i = 0; i < outlets.length; i++) { 9693 const o = outlets[i]; 9694 const slotName = o.getAttribute("name") || "default"; 9695 const content = this._slots[slotName]; 9696 const parent = o.parentNode; 9697 if (content) { 9698 for (const n of content) { 9699 if (scopeId && n.nodeType === 1) { 9700 const id = scopeId + "-s"; 9701 const walker = document.createTreeWalker(n, 1); 9702 n.setAttribute(id, ""); 9703 let child; 9704 while (child = walker.nextNode()) { 9705 child.setAttribute(id, ""); 9706 } 9707 } 9708 parent.insertBefore(n, o); 9709 } 9710 } else { 9711 while (o.firstChild) parent.insertBefore(o.firstChild, o); 9712 } 9713 parent.removeChild(o); 9714 } 9715 } 9716 /** 9717 * @internal 9718 */ 9719 _injectChildStyle(comp) { 9720 this._applyStyles(comp.styles, comp); 9721 } 9722 /** 9723 * @internal 9724 */ 9725 _removeChildStyle(comp) { 9726 } 9727} 9728function useHost(caller) { 9729 const instance = getCurrentInstance(); 9730 const el = instance && instance.ce; 9731 if (el) { 9732 return el; 9733 } 9734 return null; 9735} 9736function useShadowRoot() { 9737 const el = useHost(); 9738 return el && el.shadowRoot; 9739} 9740function useCssModule(name = "$style") { 9741 { 9742 const instance = getCurrentInstance(); 9743 if (!instance) { 9744 return EMPTY_OBJ; 9745 } 9746 const modules = instance.type.__cssModules; 9747 if (!modules) { 9748 return EMPTY_OBJ; 9749 } 9750 const mod = modules[name]; 9751 if (!mod) { 9752 return EMPTY_OBJ; 9753 } 9754 return mod; 9755 } 9756} 9757const positionMap = /* @__PURE__ */ new WeakMap(); 9758const newPositionMap = /* @__PURE__ */ new WeakMap(); 9759const moveCbKey = Symbol("_moveCb"); 9760const enterCbKey = Symbol("_enterCb"); 9761const decorate = (t) => { 9762 delete t.props.mode; 9763 return t; 9764}; 9765const TransitionGroupImpl = /* @__PURE__ */ decorate({ 9766 name: "TransitionGroup", 9767 props: /* @__PURE__ */ extend$5({}, TransitionPropsValidators, { 9768 tag: String, 9769 moveClass: String 9770 }), 9771 setup(props2, { slots }) { 9772 const instance = getCurrentInstance(); 9773 const state2 = useTransitionState(); 9774 let prevChildren; 9775 let children; 9776 onUpdated(() => { 9777 if (!prevChildren.length) { 9778 return; 9779 } 9780 const moveClass = props2.moveClass || `${props2.name || "v"}-move`; 9781 if (!hasCSSTransform( 9782 prevChildren[0].el, 9783 instance.vnode.el, 9784 moveClass 9785 )) { 9786 prevChildren = []; 9787 return; 9788 } 9789 prevChildren.forEach(callPendingCbs); 9790 prevChildren.forEach(recordPosition); 9791 const movedChildren = prevChildren.filter(applyTranslation); 9792 forceReflow(); 9793 movedChildren.forEach((c) => { 9794 const el = c.el; 9795 const style = el.style; 9796 addTransitionClass(el, moveClass); 9797 style.transform = style.webkitTransform = style.transitionDuration = ""; 9798 const cb = el[moveCbKey] = (e) => { 9799 if (e && e.target !== el) { 9800 return; 9801 } 9802 if (!e || /transform$/.test(e.propertyName)) { 9803 el.removeEventListener("transitionend", cb); 9804 el[moveCbKey] = null; 9805 removeTransitionClass(el, moveClass); 9806 } 9807 }; 9808 el.addEventListener("transitionend", cb); 9809 }); 9810 prevChildren = []; 9811 }); 9812 return () => { 9813 const rawProps = toRaw(props2); 9814 const cssTransitionProps = resolveTransitionProps(rawProps); 9815 let tag = rawProps.tag || Fragment; 9816 prevChildren = []; 9817 if (children) { 9818 for (let i = 0; i < children.length; i++) { 9819 const child = children[i]; 9820 if (child.el && child.el instanceof Element) { 9821 prevChildren.push(child); 9822 setTransitionHooks( 9823 child, 9824 resolveTransitionHooks( 9825 child, 9826 cssTransitionProps, 9827 state2, 9828 instance 9829 ) 9830 ); 9831 positionMap.set( 9832 child, 9833 child.el.getBoundingClientRect() 9834 ); 9835 } 9836 } 9837 } 9838 children = slots.default ? getTransitionRawChildren(slots.default()) : []; 9839 for (let i = 0; i < children.length; i++) { 9840 const child = children[i]; 9841 if (child.key != null) { 9842 setTransitionHooks( 9843 child, 9844 resolveTransitionHooks(child, cssTransitionProps, state2, instance) 9845 ); 9846 } 9847 } 9848 return createVNode(tag, null, children); 9849 }; 9850 } 9851}); 9852const TransitionGroup = TransitionGroupImpl; 9853function callPendingCbs(c) { 9854 const el = c.el; 9855 if (el[moveCbKey]) { 9856 el[moveCbKey](); 9857 } 9858 if (el[enterCbKey]) { 9859 el[enterCbKey](); 9860 } 9861} 9862function recordPosition(c) { 9863 newPositionMap.set(c, c.el.getBoundingClientRect()); 9864} 9865function applyTranslation(c) { 9866 const oldPos = positionMap.get(c); 9867 const newPos = newPositionMap.get(c); 9868 const dx = oldPos.left - newPos.left; 9869 const dy = oldPos.top - newPos.top; 9870 if (dx || dy) { 9871 const s = c.el.style; 9872 s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; 9873 s.transitionDuration = "0s"; 9874 return c; 9875 } 9876} 9877function hasCSSTransform(el, root2, moveClass) { 9878 const clone = el.cloneNode(); 9879 const _vtc = el[vtcKey]; 9880 if (_vtc) {
9881 _vtc.forEach((cls) => { 9882 cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); 9883 }); 9884 } 9885 moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); 9886 clone.style.display = "none"; 9887 const container = root2.nodeType === 1 ? root2 : root2.parentNode; 9888 container.appendChild(clone); 9889 const { hasTransform } = getTransitionInfo(clone); 9890 container.removeChild(clone); 9891 return hasTransform; 9892} 9893const getModelAssigner = (vnode) => { 9894 const fn = vnode.props["onUpdate:modelValue"] || false; 9895 return isArray$3(fn) ? (value) => invokeArrayFns(fn, value) : fn; 9896}; 9897function onCompositionStart(e) { 9898 e.target.composing = true; 9899} 9900function onCompositionEnd(e) { 9901 const target = e.target; 9902 if (target.composing) { 9903 target.composing = false; 9904 target.dispatchEvent(new Event("input")); 9905 } 9906} 9907const assignKey = Symbol("_assign"); 9908const vModelText = { 9909 created(el, { modifiers: { lazy: lazy2, trim: trim2, number: number2 } }, vnode) { 9910 el[assignKey] = getModelAssigner(vnode); 9911 const castToNumber = number2 || vnode.props && vnode.props.type === "number"; 9912 addEventListener(el, lazy2 ? "change" : "input", (e) => { 9913 if (e.target.composing) return; 9914 let domValue = el.value; 9915 if (trim2) { 9916 domValue = domValue.trim(); 9917 } 9918 if (castToNumber) { 9919 domValue = looseToNumber(domValue); 9920 } 9921 el[assignKey](domValue); 9922 }); 9923 if (trim2) { 9924 addEventListener(el, "change", () => { 9925 el.value = el.value.trim(); 9926 }); 9927 } 9928 if (!lazy2) { 9929 addEventListener(el, "compositionstart", onCompositionStart); 9930 addEventListener(el, "compositionend", onCompositionEnd); 9931 addEventListener(el, "change", onCompositionEnd); 9932 } 9933 }, 9934 // set value on mounted so it's after min/max for type="range" 9935 mounted(el, { value }) { 9936 el.value = value == null ? "" : value; 9937 }, 9938 beforeUpdate(el, { value, oldValue, modifiers: { lazy: lazy2, trim: trim2, number: number2 } }, vnode) { 9939 el[assignKey] = getModelAssigner(vnode); 9940 if (el.composing) return; 9941 const elValue = (number2 || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber(el.value) : el.value; 9942 const newValue = value == null ? "" : value; 9943 if (elValue === newValue) { 9944 return; 9945 } 9946 if (document.activeElement === el && el.type !== "range") { 9947 if (lazy2 && value === oldValue) { 9948 return; 9949 } 9950 if (trim2 && el.value.trim() === newValue) { 9951 return; 9952 } 9953 } 9954 el.value = newValue; 9955 } 9956}; 9957const vModelCheckbox = { 9958 // #4096 array checkboxes need to be deep traversed 9959 deep: true, 9960 created(el, _, vnode) { 9961 el[assignKey] = getModelAssigner(vnode); 9962 addEventListener(el, "change", () => { 9963 const modelValue = el._modelValue; 9964 const elementValue = getValue(el); 9965 const checked = el.checked; 9966 const assign2 = el[assignKey]; 9967 if (isArray$3(modelValue)) { 9968 const index2 = looseIndexOf(modelValue, elementValue); 9969 const found = index2 !== -1; 9970 if (checked && !found) { 9971 assign2(modelValue.concat(elementValue)); 9972 } else if (!checked && found) { 9973 const filtered = [...modelValue]; 9974 filtered.splice(index2, 1); 9975 assign2(filtered); 9976 } 9977 } else if (isSet(modelValue)) { 9978 const cloned = new Set(modelValue); 9979 if (checked) { 9980 cloned.add(elementValue); 9981 } else { 9982 cloned.delete(elementValue); 9983 } 9984 assign2(cloned); 9985 } else { 9986 assign2(getCheckboxValue(el, checked)); 9987 } 9988 }); 9989 }, 9990 // set initial checked on mount to wait for true-value/false-value 9991 mounted: setChecked, 9992 beforeUpdate(el, binding, vnode) { 9993 el[assignKey] = getModelAssigner(vnode); 9994 setChecked(el, binding, vnode); 9995 } 9996}; 9997function setChecked(el, { value, oldValue }, vnode) { 9998 el._modelValue = value; 9999 let checked; 10000 if (isArray$3(value)) { 10001 checked = looseIndexOf(value, vnode.props.value) > -1; 10002 } else if (isSet(value)) { 10003 checked = value.has(vnode.props.value); 10004 } else { 10005 if (value === oldValue) return; 10006 checked = looseEqual(value, getCheckboxValue(el, true)); 10007 } 10008 if (el.checked !== checked) { 10009 el.checked = checked; 10010 } 10011} 10012const vModelRadio = { 10013 created(el, { value }, vnode) { 10014 el.checked = looseEqual(value, vnode.props.value); 10015 el[assignKey] = getModelAssigner(vnode); 10016 addEventListener(el, "change", () => { 10017 el[assignKey](getValue(el)); 10018 }); 10019 }, 10020 beforeUpdate(el, { value, oldValue }, vnode) { 10021 el[assignKey] = getModelAssigner(vnode); 10022 if (value !== oldValue) { 10023 el.checked = looseEqual(value, vnode.props.value); 10024 } 10025 } 10026}; 10027const vModelSelect = { 10028 // <select multiple> value need to be deep traversed 10029 deep: true, 10030 created(el, { value, modifiers: { number: number2 } }, vnode) { 10031 const isSetModel = isSet(value); 10032 addEventListener(el, "change", () => { 10033 const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( 10034 (o) => number2 ? looseToNumber(getValue(o)) : getValue(o) 10035 ); 10036 el[assignKey]( 10037 el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] 10038 ); 10039 el._assigning = true; 10040 nextTick$1(() => { 10041 el._assigning = false;
vendor: 5,094 bytes, lines 10042-10212
10042 }); 10043 }); 10044 el[assignKey] = getModelAssigner(vnode); 10045 }, 10046 // set value in mounted & updated because <select> relies on its children 10047 // <option>s. 10048 mounted(el, { value }) { 10049 setSelected(el, value); 10050 }, 10051 beforeUpdate(el, _binding, vnode) { 10052 el[assignKey] = getModelAssigner(vnode); 10053 }, 10054 updated(el, { value }) { 10055 if (!el._assigning) { 10056 setSelected(el, value); 10057 } 10058 } 10059}; 10060function setSelected(el, value) { 10061 const isMultiple = el.multiple; 10062 const isArrayValue = isArray$3(value); 10063 if (isMultiple && !isArrayValue && !isSet(value)) { 10064 return; 10065 } 10066 for (let i = 0, l = el.options.length; i < l; i++) { 10067 const option = el.options[i]; 10068 const optionValue = getValue(option); 10069 if (isMultiple) { 10070 if (isArrayValue) { 10071 const optionType = typeof optionValue; 10072 if (optionType === "string" || optionType === "number") { 10073 option.selected = value.some((v) => String(v) === String(optionValue)); 10074 } else { 10075 option.selected = looseIndexOf(value, optionValue) > -1; 10076 } 10077 } else { 10078 option.selected = value.has(optionValue); 10079 } 10080 } else if (looseEqual(getValue(option), value)) { 10081 if (el.selectedIndex !== i) el.selectedIndex = i; 10082 return; 10083 } 10084 } 10085 if (!isMultiple && el.selectedIndex !== -1) { 10086 el.selectedIndex = -1; 10087 } 10088} 10089function getValue(el) { 10090 return "_value" in el ? el._value : el.value; 10091} 10092function getCheckboxValue(el, checked) { 10093 const key = checked ? "_trueValue" : "_falseValue"; 10094 return key in el ? el[key] : checked; 10095} 10096const vModelDynamic = { 10097 created(el, binding, vnode) { 10098 callModelHook(el, binding, vnode, null, "created"); 10099 }, 10100 mounted(el, binding, vnode) { 10101 callModelHook(el, binding, vnode, null, "mounted"); 10102 }, 10103 beforeUpdate(el, binding, vnode, prevVNode) { 10104 callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); 10105 }, 10106 updated(el, binding, vnode, prevVNode) { 10107 callModelHook(el, binding, vnode, prevVNode, "updated"); 10108 } 10109}; 10110function resolveDynamicModel(tagName, type) { 10111 switch (tagName) { 10112 case "SELECT": 10113 return vModelSelect; 10114 case "TEXTAREA": 10115 return vModelText; 10116 default: 10117 switch (type) { 10118 case "checkbox": 10119 return vModelCheckbox; 10120 case "radio": 10121 return vModelRadio; 10122 default: 10123 return vModelText; 10124 } 10125 } 10126} 10127function callModelHook(el, binding, vnode, prevVNode, hook) { 10128 const modelToUse = resolveDynamicModel( 10129 el.tagName, 10130 vnode.props && vnode.props.type 10131 ); 10132 const fn = modelToUse[hook]; 10133 fn && fn(el, binding, vnode, prevVNode); 10134} 10135function initVModelForSSR() { 10136 vModelText.getSSRProps = ({ value }) => ({ value }); 10137 vModelRadio.getSSRProps = ({ value }, vnode) => { 10138 if (vnode.props && looseEqual(vnode.props.value, value)) { 10139 return { checked: true }; 10140 } 10141 }; 10142 vModelCheckbox.getSSRProps = ({ value }, vnode) => { 10143 if (isArray$3(value)) { 10144 if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) { 10145 return { checked: true }; 10146 } 10147 } else if (isSet(value)) { 10148 if (vnode.props && value.has(vnode.props.value)) { 10149 return { checked: true }; 10150 } 10151 } else if (value) { 10152 return { checked: true }; 10153 } 10154 }; 10155 vModelDynamic.getSSRProps = (binding, vnode) => { 10156 if (typeof vnode.type !== "string") { 10157 return; 10158 } 10159 const modelToUse = resolveDynamicModel( 10160 // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase 10161 vnode.type.toUpperCase(), 10162 vnode.props && vnode.props.type 10163 ); 10164 if (modelToUse.getSSRProps) { 10165 return modelToUse.getSSRProps(binding, vnode); 10166 } 10167 }; 10168} 10169const systemModifiers = ["ctrl", "shift", "alt", "meta"]; 10170const modifierGuards = { 10171 stop: (e) => e.stopPropagation(), 10172 prevent: (e) => e.preventDefault(), 10173 self: (e) => e.target !== e.currentTarget, 10174 ctrl: (e) => !e.ctrlKey, 10175 shift: (e) => !e.shiftKey, 10176 alt: (e) => !e.altKey, 10177 meta: (e) => !e.metaKey, 10178 left: (e) => "button" in e && e.button !== 0, 10179 middle: (e) => "button" in e && e.button !== 1, 10180 right: (e) => "button" in e && e.button !== 2, 10181 exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) 10182}; 10183const withModifiers = (fn, modifiers) => { 10184 const cache2 = fn._withMods || (fn._withMods = {}); 10185 const cacheKey = modifiers.join("."); 10186 return cache2[cacheKey] || (cache2[cacheKey] = (event, ...args) => { 10187 for (let i = 0; i < modifiers.length; i++) { 10188 const guard = modifierGuards[modifiers[i]]; 10189 if (guard && guard(event, modifiers)) return; 10190 } 10191 return fn(event, ...args); 10192 }); 10193}; 10194const keyNames = { 10195 esc: "escape", 10196 space: " ", 10197 up: "arrow-up", 10198 left: "arrow-left", 10199 right: "arrow-right", 10200 down: "arrow-down", 10201 delete: "backspace" 10202}; 10203const withKeys = (fn, modifiers) => { 10204 const cache2 = fn._withKeys || (fn._withKeys = {}); 10205 const cacheKey = modifiers.join("."); 10206 return cache2[cacheKey] || (cache2[cacheKey] = (event) => { 10207 if (!("key" in event)) { 10208 return; 10209 } 10210 const eventKey = hyphenate(event.key); 10211 if (modifiers.some( 10212 (k) =>
10212 k === eventKey || keyNames[k] === eventKey 10213 )) { 10214 return fn(event); 10215 } 10216 }); 10217}; 10218const rendererOptions = /* @__PURE__ */ extend$5({ patchProp }, nodeOps); 10219let renderer; 10220let enabledHydration = false; 10221function ensureRenderer() { 10222 return renderer || (renderer = createRenderer(rendererOptions)); 10223} 10224function ensureHydrationRenderer() { 10225 renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions); 10226 enabledHydration = true; 10227 return renderer; 10228} 10229const render = (...args) => { 10230 ensureRenderer().render(...args); 10231}; 10232const hydrate = (...args) => { 10233 ensureHydrationRenderer().hydrate(...args); 10234}; 10235const createApp = (...args) => { 10236 const app2 = ensureRenderer().createApp(...args); 10237 const { mount } = app2; 10238 app2.mount = (containerOrSelector) => { 10239 const container = normalizeContainer(containerOrSelector); 10240 if (!container) return; 10241 const component = app2._component; 10242 if (!isFunction$3(component) && !component.render && !component.template) { 10243 component.template = container.innerHTML; 10244 } 10245 if (container.nodeType === 1) { 10246 container.textContent = ""; 10247 } 10248 const proxy = mount(container, false, resolveRootNamespace(container)); 10249 if (container instanceof Element) { 10250 container.removeAttribute("v-cloak"); 10251 container.setAttribute("data-v-app", ""); 10252 } 10253 return proxy; 10254 }; 10255 return app2; 10256}; 10257const createSSRApp = (...args) => { 10258 const app2 = ensureHydrationRenderer().createApp(...args); 10259 const { mount } = app2; 10260 app2.mount = (containerOrSelector) => { 10261 const container = normalizeContainer(containerOrSelector); 10262 if (container) { 10263 return mount(container, true, resolveRootNamespace(container)); 10264 } 10265 }; 10266 return app2; 10267}; 10268function resolveRootNamespace(container) { 10269 if (container instanceof SVGElement) { 10270 return "svg"; 10271 } 10272 if (typeof MathMLElement === "function" && container instanceof MathMLElement) { 10273 return "mathml"; 10274 } 10275} 10276function normalizeContainer(container) { 10277 if (isString$3(container)) { 10278 const res = document.querySelector(container); 10279 return res; 10280 } 10281 return container; 10282} 10283let ssrDirectiveInitialized = false; 10284const initDirectivesForSSR = () => { 10285 if (!ssrDirectiveInitialized) { 10286 ssrDirectiveInitialized = true; 10287 initVModelForSSR(); 10288 initVShowForSSR(); 10289 } 10290}; 10291const runtimeDom = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ 10292 __proto__: null, 10293 BaseTransition, 10294 BaseTransitionPropsValidators, 10295 Comment, 10296 DeprecationTypes, 10297 EffectScope, 10298 ErrorCodes, 10299 ErrorTypeStrings, 10300 Fragment, 10301 KeepAlive, 10302 ReactiveEffect, 10303 Static, 10304 Suspense, 10305 Teleport, 10306 Text, 10307 TrackOpTypes, 10308 Transition, 10309 TransitionGroup, 10310 TriggerOpTypes, 10311 VueElement, 10312 assertNumber, 10313 callWithAsyncErrorHandling, 10314 callWithErrorHandling, 10315 camelize, 10316 capitalize: capitalize$1, 10317 cloneVNode, 10318 compatUtils, 10319 computed, 10320 createApp, 10321 createBlock, 10322 createCommentVNode, 10323 createElementBlock, 10324 createElementVNode: createBaseVNode, 10325 createHydrationRenderer, 10326 createPropsRestProxy, 10327 createRenderer, 10328 createSSRApp, 10329 createSlots, 10330 createStaticVNode, 10331 createTextVNode, 10332 createVNode, 10333 customRef, 10334 defineAsyncComponent, 10335 defineComponent, 10336 defineCustomElement, 10337 defineEmits, 10338 defineExpose, 10339 defineModel, 10340 defineOptions, 10341 defineProps, 10342 defineSSRCustomElement, 10343 defineSlots, 10344 devtools: devtools$2, 10345 effect, 10346 effectScope, 10347 getCurrentInstance, 10348 getCurrentScope, 10349 getCurrentWatcher, 10350 getTransitionRawChildren, 10351 guardReactiveProps, 10352 h, 10353 handleError, 10354 hasInjectionContext, 10355 hydrate, 10356 hydrateOnIdle, 10357 hydrateOnInteraction, 10358 hydrateOnMediaQuery, 10359 hydrateOnVisible, 10360 initCustomFormatter, 10361 initDirectivesForSSR, 10362 inject, 10363 isMemoSame, 10364 isProxy, 10365 isReactive, 10366 isReadonly, 10367 isRef, 10368 isRuntimeOnly, 10369 isShallow, 10370 isVNode: isVNode$1, 10371 markRaw, 10372 mergeDefaults, 10373 mergeModels, 10374 mergeProps, 10375 nextTick: nextTick$1, 10376 normalizeClass, 10377 normalizeProps, 10378 normalizeStyle, 10379 onActivated, 10380 onBeforeMount, 10381 onBeforeUnmount, 10382 onBeforeUpdate, 10383 onDeactivated, 10384 onErrorCaptured, 10385 onMounted, 10386 onRenderTracked, 10387 onRenderTriggered, 10388 onScopeDispose, 10389 onServerPrefetch, 10390 onUnmounted, 10391 onUpdated, 10392 onWatcherCleanup, 10393 openBlock, 10394 popScopeId, 10395 provide, 10396 proxyRefs, 10397 pushScopeId, 10398 queuePostFlushCb, 10399 reactive, 10400 readonly, 10401 ref, 10402 registerRuntimeCompiler, 10403 render, 10404 renderList, 10405 renderSlot, 10406 resolveComponent, 10407 resolveDirective, 10408 resolveDynamicComponent, 10409 resolveFilter, 10410 resolveTransitionHooks, 10411 setBlockTracking, 10412 setDevtoolsHook, 10413 setTransitionHooks, 10414 shallowReactive, 10415 shallowReadonly, 10416 shallowRef, 10417 ssrContextKey, 10418 ssrUtils, 10419 stop, 10420 toDisplayString: toDisplayString$1, 10421 toHandlerKey, 10422 toHandlers, 10423 toRaw, 10424 toRef, 10425 toRefs, 10426 toValue, 10427 transformVNodeArgs, 10428 triggerRef, 10429 unref, 10430 useAttrs, 10431 useCssModule, 10432 useCssVars, 10433 useHost, 10434 useId, 10435 useModel, 10436 useSSRContext, 10437 useShadowRoot, 10438 useSlots, 10439 useTemplateRef, 10440 useTransitionState, 10441 vModelCheckbox, 10442 vModelDynamic, 10443 vModelRadio, 10444 vModelSelect, 10445 vModelText, 10446 vShow, 10447 version, 10448 warn: warn$2, 10449 watch, 10450 watchEffect, 10451 watchPostEffect, 10452 watchSyncEffect, 10453 withAsyncContext, 10454 withCtx, 10455 withDefaults, 10456 withDirectives, 10457 withKeys, 10458 withMemo, 10459 withModifiers, 10460 withScopeId 10461}, Symbol.toStringTag, { value: "Module" })); 10462/** 10463* @vue/compiler-core v3.5.16 10464* (c) 2018-present Yuxi (Evan) You and Vue contributors 10465* @license MIT
vendor: 27,127 bytes, lines 10466-11501
10466**/ 10467const FRAGMENT = Symbol(``); 10468const TELEPORT = Symbol(``); 10469const SUSPENSE = Symbol(``); 10470const KEEP_ALIVE = Symbol(``); 10471const BASE_TRANSITION = Symbol( 10472 `` 10473); 10474const OPEN_BLOCK = Symbol(``); 10475const CREATE_BLOCK = Symbol(``); 10476const CREATE_ELEMENT_BLOCK = Symbol( 10477 `` 10478); 10479const CREATE_VNODE = Symbol(``); 10480const CREATE_ELEMENT_VNODE = Symbol( 10481 `` 10482); 10483const CREATE_COMMENT = Symbol( 10484 `` 10485); 10486const CREATE_TEXT = Symbol( 10487 `` 10488); 10489const CREATE_STATIC = Symbol( 10490 `` 10491); 10492const RESOLVE_COMPONENT = Symbol( 10493 `` 10494); 10495const RESOLVE_DYNAMIC_COMPONENT = Symbol( 10496 `` 10497); 10498const RESOLVE_DIRECTIVE = Symbol( 10499 `` 10500); 10501const RESOLVE_FILTER = Symbol( 10502 `` 10503); 10504const WITH_DIRECTIVES = Symbol( 10505 `` 10506); 10507const RENDER_LIST = Symbol(``); 10508const RENDER_SLOT = Symbol(``); 10509const CREATE_SLOTS = Symbol(``); 10510const TO_DISPLAY_STRING = Symbol( 10511 `` 10512); 10513const MERGE_PROPS = Symbol(``); 10514const NORMALIZE_CLASS = Symbol( 10515 `` 10516); 10517const NORMALIZE_STYLE = Symbol( 10518 `` 10519); 10520const NORMALIZE_PROPS = Symbol( 10521 `` 10522); 10523const GUARD_REACTIVE_PROPS = Symbol( 10524 `` 10525); 10526const TO_HANDLERS = Symbol(``); 10527const CAMELIZE = Symbol(``); 10528const CAPITALIZE = Symbol(``); 10529const TO_HANDLER_KEY = Symbol( 10530 `` 10531); 10532const SET_BLOCK_TRACKING = Symbol( 10533 `` 10534); 10535const PUSH_SCOPE_ID = Symbol(``); 10536const POP_SCOPE_ID = Symbol(``); 10537const WITH_CTX = Symbol(``); 10538const UNREF = Symbol(``); 10539const IS_REF = Symbol(``); 10540const WITH_MEMO = Symbol(``); 10541const IS_MEMO_SAME = Symbol(``); 10542const helperNameMap = { 10543 [FRAGMENT]: `Fragment`, 10544 [TELEPORT]: `Teleport`, 10545 [SUSPENSE]: `Suspense`, 10546 [KEEP_ALIVE]: `KeepAlive`, 10547 [BASE_TRANSITION]: `BaseTransition`, 10548 [OPEN_BLOCK]: `openBlock`, 10549 [CREATE_BLOCK]: `createBlock`, 10550 [CREATE_ELEMENT_BLOCK]: `createElementBlock`, 10551 [CREATE_VNODE]: `createVNode`, 10552 [CREATE_ELEMENT_VNODE]: `createElementVNode`, 10553 [CREATE_COMMENT]: `createCommentVNode`, 10554 [CREATE_TEXT]: `createTextVNode`, 10555 [CREATE_STATIC]: `createStaticVNode`, 10556 [RESOLVE_COMPONENT]: `resolveComponent`, 10557 [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, 10558 [RESOLVE_DIRECTIVE]: `resolveDirective`, 10559 [RESOLVE_FILTER]: `resolveFilter`, 10560 [WITH_DIRECTIVES]: `withDirectives`, 10561 [RENDER_LIST]: `renderList`, 10562 [RENDER_SLOT]: `renderSlot`, 10563 [CREATE_SLOTS]: `createSlots`, 10564 [TO_DISPLAY_STRING]: `toDisplayString`, 10565 [MERGE_PROPS]: `mergeProps`, 10566 [NORMALIZE_CLASS]: `normalizeClass`, 10567 [NORMALIZE_STYLE]: `normalizeStyle`, 10568 [NORMALIZE_PROPS]: `normalizeProps`, 10569 [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, 10570 [TO_HANDLERS]: `toHandlers`, 10571 [CAMELIZE]: `camelize`, 10572 [CAPITALIZE]: `capitalize`, 10573 [TO_HANDLER_KEY]: `toHandlerKey`, 10574 [SET_BLOCK_TRACKING]: `setBlockTracking`, 10575 [PUSH_SCOPE_ID]: `pushScopeId`, 10576 [POP_SCOPE_ID]: `popScopeId`, 10577 [WITH_CTX]: `withCtx`, 10578 [UNREF]: `unref`, 10579 [IS_REF]: `isRef`, 10580 [WITH_MEMO]: `withMemo`, 10581 [IS_MEMO_SAME]: `isMemoSame` 10582}; 10583function registerRuntimeHelpers(helpers) { 10584 Object.getOwnPropertySymbols(helpers).forEach((s) => { 10585 helperNameMap[s] = helpers[s]; 10586 }); 10587} 10588const locStub = { 10589 start: { line: 1, column: 1, offset: 0 }, 10590 end: { line: 1, column: 1, offset: 0 }, 10591 source: "" 10592}; 10593function createRoot(children, source = "") { 10594 return { 10595 type: 0, 10596 source, 10597 children, 10598 helpers: /* @__PURE__ */ new Set(), 10599 components: [], 10600 directives: [], 10601 hoists: [], 10602 imports: [], 10603 cached: [], 10604 temps: 0, 10605 codegenNode: void 0, 10606 loc: locStub 10607 }; 10608} 10609function createVNodeCall(context, tag, props2, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent2 = false, loc = locStub) { 10610 if (context) { 10611 if (isBlock) { 10612 context.helper(OPEN_BLOCK); 10613 context.helper(getVNodeBlockHelper(context.inSSR, isComponent2)); 10614 } else { 10615 context.helper(getVNodeHelper(context.inSSR, isComponent2)); 10616 } 10617 if (directives) { 10618 context.helper(WITH_DIRECTIVES); 10619 } 10620 } 10621 return { 10622 type: 13, 10623 tag, 10624 props: props2, 10625 children, 10626 patchFlag, 10627 dynamicProps, 10628 directives, 10629 isBlock, 10630 disableTracking, 10631 isComponent: isComponent2, 10632 loc 10633 }; 10634} 10635function createArrayExpression(elements, loc = locStub) { 10636 return { 10637 type: 17, 10638 loc, 10639 elements 10640 }; 10641} 10642function createObjectExpression(properties, loc = locStub) { 10643 return { 10644 type: 15, 10645 loc, 10646 properties 10647 }; 10648} 10649function createObjectProperty(key, value) { 10650 return { 10651 type: 16, 10652 loc: locStub, 10653 key: isString$3(key) ? createSimpleExpression(key, true) : key, 10654 value 10655 }; 10656} 10657function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { 10658 return { 10659 type: 4, 10660 loc, 10661 content, 10662 isStatic, 10663 constType: isStatic ? 3 : constType 10664 }; 10665} 10666function createCompoundExpression(children, loc = locStub) { 10667 return { 10668 type: 8, 10669 loc, 10670 children 10671 }; 10672} 10673function createCallExpression(callee, args = [], loc = locStub) { 10674 return { 10675 type: 14, 10676 loc, 10677 callee, 10678 arguments: args 10679 }; 10680} 10681function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { 10682 return { 10683 type: 18, 10684 params, 10685 returns, 10686 newline, 10687 isSlot, 10688 loc 10689 }; 10690} 10691function createConditionalExpression(test2, consequent, alternate, newline = true) { 10692 return { 10693 type: 19, 10694 test: test2, 10695 consequent, 10696 alternate, 10697 newline, 10698 loc: locStub 10699 }; 10700} 10701function createCacheExpression(index2, value, needPauseTracking = false, inVOnce = false) { 10702 return { 10703 type: 20, 10704 index: index2, 10705 value, 10706 needPauseTracking, 10707 inVOnce, 10708 needArraySpread: false, 10709 loc: locStub 10710 }; 10711} 10712function createBlockStatement(body) { 10713 return { 10714 type: 21, 10715 body, 10716 loc: locStub 10717 }; 10718} 10719function getVNodeHelper(ssr, isComponent2) { 10720 return ssr || isComponent2 ? CREATE_VNODE : CREATE_ELEMENT_VNODE; 10721} 10722function getVNodeBlockHelper(ssr, isComponent2) { 10723 return ssr || isComponent2 ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; 10724} 10725function convertToBlock(node, { helper, removeHelper, inSSR }) { 10726 if (!node.isBlock) { 10727 node.isBlock = true; 10728 removeHelper(getVNodeHelper(inSSR, node.isComponent)); 10729 helper(OPEN_BLOCK); 10730 helper(getVNodeBlockHelper(inSSR, node.isComponent)); 10731 } 10732} 10733const defaultDelimitersOpen = new Uint8Array([123, 123]); 10734const defaultDelimitersClose = new Uint8Array([125, 125]); 10735function isTagStartChar(c) { 10736 return c >= 97 && c <= 122 || c >= 65 && c <= 90; 10737} 10738function isWhitespace(c) { 10739 return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; 10740} 10741function isEndOfTagSection(c) { 10742 return c === 47 || c === 62 || isWhitespace(c); 10743} 10744function toCharCodes(str) { 10745 const ret = new Uint8Array(str.length); 10746 for (let i = 0; i < str.length; i++) { 10747 ret[i] = str.charCodeAt(i); 10748 } 10749 return ret; 10750} 10751const Sequences = { 10752 Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), 10753 // CDATA[ 10754 CdataEnd: new Uint8Array([93, 93, 62]), 10755 // ]]> 10756 CommentEnd: new Uint8Array([45, 45, 62]), 10757 // `-->` 10758 ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), 10759 // `<\/script` 10760 StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), 10761 // `</style` 10762 TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), 10763 // `</title` 10764 TextareaEnd: new Uint8Array([ 10765 60, 10766 47, 10767 116, 10768 101, 10769 120, 10770 116, 10771 97, 10772 114, 10773 101, 10774 97 10775 ]) 10776 // `</textarea 10777}; 10778class Tokenizer { 10779 constructor(stack2, cbs) { 10780 this.stack = stack2; 10781 this.cbs = cbs; 10782 this.state = 1; 10783 this.buffer = ""; 10784 this.sectionStart = 0; 10785 this.index = 0; 10786 this.entityStart = 0; 10787 this.baseState = 1; 10788 this.inRCDATA = false; 10789 this.inXML = false; 10790 this.inVPre = false; 10791 this.newlines = []; 10792 this.mode = 0; 10793 this.delimiterOpen = defaultDelimitersOpen; 10794 this.delimiterClose = defaultDelimitersClose; 10795 this.delimiterIndex = -1; 10796 this.currentSequence = void 0; 10797 this.sequenceIndex = 0; 10798 } 10799 get inSFCRoot() { 10800 return this.mode === 2 && this.stack.length === 0; 10801 } 10802 reset() { 10803 this.state = 1; 10804 this.mode = 0; 10805 this.buffer = ""; 10806 this.sectionStart = 0; 10807 this.index = 0; 10808 this.baseState = 1; 10809 this.inRCDATA = false; 10810 this.currentSequence = void 0; 10811 this.newlines.length = 0; 10812 this.delimiterOpen = defaultDelimitersOpen; 10813 this.delimiterClose = defaultDelimitersClose; 10814 } 10815 /** 10816 * Generate Position object with line / column information using recorded 10817 * newline positions. We know the index is always going to be an already 10818 * processed index, so all the newlines up to this index should have been 10819 * recorded. 10820 */ 10821 getPos(index2) { 10822 let line = 1; 10823 let column = index2 + 1; 10824 for (let i = this.newlines.length - 1; i >= 0; i--) { 10825 const newlineIndex = this.newlines[i]; 10826 if (index2 > newlineIndex) { 10827 line = i + 2; 10828 column = index2 - newlineIndex; 10829 break; 10830 } 10831 } 10832 return { 10833 column, 10834 line, 10835 offset: index2 10836 }; 10837 } 10838 peek() { 10839 return this.buffer.charCodeAt(this.index + 1); 10840 } 10841 stateText(c) { 10842 if (c === 60) { 10843 if (this.index > this.sectionStart) { 10844 this.cbs.ontext(this.sectionStart, this.index); 10845 } 10846 this.state = 5; 10847 this.sectionStart = this.index; 10848 } else if (!this.inVPre && c === this.delimiterOpen[0]) { 10849 this.state = 2; 10850 this.delimiterIndex = 0; 10851 this.stateInterpolationOpen(c); 10852 } 10853 } 10854 stateInterpolationOpen(c) { 10855 if (c === this.delimiterOpen[this.delimiterIndex]) { 10856 if (this.delimiterIndex === this.delimiterOpen.length - 1) { 10857 const start = this.index + 1 - this.delimiterOpen.length; 10858 if (start > this.sectionStart) { 10859 this.cbs.ontext(this.sectionStart, start); 10860 } 10861 this.state = 3; 10862 this.sectionStart = start; 10863 } else { 10864 this.delimiterIndex++; 10865 } 10866 } else if (this.inRCDATA) { 10867 this.state = 32; 10868 this.stateInRCDATA(c); 10869 } else { 10870 this.state = 1; 10871 this.stateText(c); 10872 } 10873 } 10874 stateInterpolation(c) { 10875 if (c === this.delimiterClose[0]) { 10876 this.state = 4; 10877 this.delimiterIndex = 0; 10878 this.stateInterpolationClose(c); 10879 } 10880 } 10881 stateInterpolationClose(c) { 10882 if (c === this.delimiterClose[this.delimiterIndex]) { 10883 if (this.delimiterIndex === this.delimiterClose.length - 1) { 10884 this.cbs.oninterpolation(this.sectionStart, this.index + 1); 10885 if (this.inRCDATA) { 10886 this.state = 32; 10887 } else { 10888 this.state = 1; 10889 } 10890 this.sectionStart = this.index + 1; 10891 } else { 10892 this.delimiterIndex++; 10893 } 10894 } else { 10895 this.state = 3; 10896 this.stateInterpolation(c); 10897 } 10898 } 10899 stateSpecialStartSequence(c) { 10900 const isEnd = this.sequenceIndex === this.currentSequence.length; 10901 const isMatch = isEnd ? ( 10902 // If we are at the end of the sequence, make sure the tag name has ended 10903 isEndOfTagSection(c) 10904 ) : ( 10905 // Otherwise, do a case-insensitive comparison 10906 (c | 32) === this.currentSequence[this.sequenceIndex] 10907 ); 10908 if (!isMatch) { 10909 this.inRCDATA = false; 10910 } else if (!isEnd) { 10911 this.sequenceIndex++; 10912 return; 10913 } 10914 this.sequenceIndex = 0; 10915 this.state = 6; 10916 this.stateInTagName(c); 10917 } 10918 /** Look for an end tag. For <title> and <textarea>, also decode entities. */ 10919 stateInRCDATA(c) { 10920 if (this.sequenceIndex === this.currentSequence.length) { 10921 if (c === 62 || isWhitespace(c)) { 10922 const endOfText = this.index - this.currentSequence.length; 10923 if (this.sectionStart < endOfText) { 10924 const actualIndex = this.index; 10925 this.index = endOfText; 10926 this.cbs.ontext(this.sectionStart, endOfText); 10927 this.index = actualIndex; 10928 } 10929 this.sectionStart = endOfText + 2; 10930 this.stateInClosingTagName(c); 10931 this.inRCDATA = false; 10932 return; 10933 } 10934 this.sequenceIndex = 0; 10935 } 10936 if ((c | 32) === this.currentSequence[this.sequenceIndex]) { 10937 this.sequenceIndex += 1; 10938 } else if (this.sequenceIndex === 0) { 10939 if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { 10940 if (!this.inVPre && c === this.delimiterOpen[0]) { 10941 this.state = 2; 10942 this.delimiterIndex = 0; 10943 this.stateInterpolationOpen(c); 10944 } 10945 } else if (this.fastForwardTo(60)) { 10946 this.sequenceIndex = 1; 10947 } 10948 } else { 10949 this.sequenceIndex = Number(c === 60); 10950 } 10951 } 10952 stateCDATASequence(c) { 10953 if (c === Sequences.Cdata[this.sequenceIndex]) { 10954 if (++this.sequenceIndex === Sequences.Cdata.length) { 10955 this.state = 28; 10956 this.currentSequence = Sequences.CdataEnd; 10957 this.sequenceIndex = 0; 10958 this.sectionStart = this.index + 1; 10959 } 10960 } else { 10961 this.sequenceIndex = 0; 10962 this.state = 23; 10963 this.stateInDeclaration(c); 10964 } 10965 } 10966 /** 10967 * When we wait for one specific character, we can speed things up 10968 * by skipping through the buffer until we find it. 10969 * 10970 * @returns Whether the character was found. 10971 */ 10972 fastForwardTo(c) { 10973 while (++this.index < this.buffer.length) { 10974 const cc = this.buffer.charCodeAt(this.index); 10975 if (cc === 10) { 10976 this.newlines.push(this.index); 10977 } 10978 if (cc === c) { 10979 return true; 10980 } 10981 } 10982 this.index = this.buffer.length - 1; 10983 return false; 10984 } 10985 /** 10986 * Comments and CDATA end with `-->` and `]]>`. 10987 * 10988 * Their common qualities are: 10989 * - Their end sequences have a distinct character they start with. 10990 * - That character is then repeated, so we have to check multiple repeats. 10991 * - All characters but the start character of the sequence can be skipped. 10992 */ 10993 stateInCommentLike(c) { 10994 if (c === this.currentSequence[this.sequenceIndex]) { 10995 if (++this.sequenceIndex === this.currentSequence.length) { 10996 if (this.currentSequence === Sequences.CdataEnd) { 10997 this.cbs.oncdata(this.sectionStart, this.index - 2); 10998 } else { 10999 this.cbs.oncomment(this.sectionStart, this.index - 2); 11000 } 11001 this.sequenceIndex = 0; 11002 this.sectionStart = this.index + 1; 11003 this.state = 1; 11004 } 11005 } else if (this.sequenceIndex === 0) { 11006 if (this.fastForwardTo(this.currentSequence[0])) { 11007 this.sequenceIndex = 1; 11008 } 11009 } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { 11010 this.sequenceIndex = 0; 11011 } 11012 } 11013 startSpecial(sequence, offset) { 11014 this.enterRCDATA(sequence, offset); 11015 this.state = 31; 11016 } 11017 enterRCDATA(sequence, offset) { 11018 this.inRCDATA = true; 11019 this.currentSequence = sequence; 11020 this.sequenceIndex = offset; 11021 } 11022 stateBeforeTagName(c) { 11023 if (c === 33) { 11024 this.state = 22; 11025 this.sectionStart = this.index + 1; 11026 } else if (c === 63) { 11027 this.state = 24; 11028 this.sectionStart = this.index + 1; 11029 } else if (isTagStartChar(c)) { 11030 this.sectionStart = this.index; 11031 if (this.mode === 0) { 11032 this.state = 6; 11033 } else if (this.inSFCRoot) { 11034 this.state = 34; 11035 } else if (!this.inXML) { 11036 if (c === 116) { 11037 this.state = 30; 11038 } else { 11039 this.state = c === 115 ? 29 : 6; 11040 } 11041 } else { 11042 this.state = 6; 11043 } 11044 } else if (c === 47) { 11045 this.state = 8; 11046 } else { 11047 this.state = 1; 11048 this.stateText(c); 11049 } 11050 } 11051 stateInTagName(c) { 11052 if (isEndOfTagSection(c)) { 11053 this.handleTagName(c); 11054 } 11055 } 11056 stateInSFCRootTagName(c) { 11057 if (isEndOfTagSection(c)) { 11058 const tag = this.buffer.slice(this.sectionStart, this.index); 11059 if (tag !== "template") { 11060 this.enterRCDATA(toCharCodes(`</` + tag), 0); 11061 } 11062 this.handleTagName(c); 11063 } 11064 } 11065 handleTagName(c) { 11066 this.cbs.onopentagname(this.sectionStart, this.index); 11067 this.sectionStart = -1; 11068 this.state = 11; 11069 this.stateBeforeAttrName(c); 11070 } 11071 stateBeforeClosingTagName(c) { 11072 if (isWhitespace(c)) ; 11073 else if (c === 62) { 11074 this.state = 1; 11075 this.sectionStart = this.index + 1; 11076 } else { 11077 this.state = isTagStartChar(c) ? 9 : 27; 11078 this.sectionStart = this.index; 11079 } 11080 } 11081 stateInClosingTagName(c) { 11082 if (c === 62 || isWhitespace(c)) { 11083 this.cbs.onclosetag(this.sectionStart, this.index); 11084 this.sectionStart = -1; 11085 this.state = 10; 11086 this.stateAfterClosingTagName(c); 11087 } 11088 } 11089 stateAfterClosingTagName(c) { 11090 if (c === 62) { 11091 this.state = 1; 11092 this.sectionStart = this.index + 1; 11093 } 11094 } 11095 stateBeforeAttrName(c) { 11096 if (c === 62) { 11097 this.cbs.onopentagend(this.index); 11098 if (this.inRCDATA) { 11099 this.state = 32; 11100 } else { 11101 this.state = 1; 11102 } 11103 this.sectionStart = this.index + 1; 11104 } else if (c === 47) { 11105 this.state = 7; 11106 } else if (c === 60 && this.peek() === 47) { 11107 this.cbs.onopentagend(this.index); 11108 this.state = 5; 11109 this.sectionStart = this.index; 11110 } else if (!isWhitespace(c)) { 11111 this.handleAttrStart(c); 11112 } 11113 } 11114 handleAttrStart(c) { 11115 if (c === 118 && this.peek() === 45) { 11116 this.state = 13; 11117 this.sectionStart = this.index; 11118 } else if (c === 46 || c === 58 || c === 64 || c === 35) { 11119 this.cbs.ondirname(this.index, this.index + 1); 11120 this.state = 14; 11121 this.sectionStart = this.index + 1; 11122 } else { 11123 this.state = 12; 11124 this.sectionStart = this.index; 11125 } 11126 } 11127 stateInSelfClosingTag(c) { 11128 if (c === 62) { 11129 this.cbs.onselfclosingtag(this.index); 11130 this.state = 1; 11131 this.sectionStart = this.index + 1; 11132 this.inRCDATA = false; 11133 } else if (!isWhitespace(c)) { 11134 this.state = 11; 11135 this.stateBeforeAttrName(c); 11136 } 11137 } 11138 stateInAttrName(c) { 11139 if (c === 61 || isEndOfTagSection(c)) { 11140 this.cbs.onattribname(this.sectionStart, this.index); 11141 this.handleAttrNameEnd(c); 11142 } 11143 } 11144 stateInDirName(c) { 11145 if (c === 61 || isEndOfTagSection(c)) { 11146 this.cbs.ondirname(this.sectionStart, this.index); 11147 this.handleAttrNameEnd(c); 11148 } else if (c === 58) { 11149 this.cbs.ondirname(this.sectionStart, this.index); 11150 this.state = 14; 11151 this.sectionStart = this.index + 1; 11152 } else if (c === 46) { 11153 this.cbs.ondirname(this.sectionStart, this.index); 11154 this.state = 16; 11155 this.sectionStart = this.index + 1; 11156 } 11157 } 11158 stateInDirArg(c) { 11159 if (c === 61 || isEndOfTagSection(c)) { 11160 this.cbs.ondirarg(this.sectionStart, this.index); 11161 this.handleAttrNameEnd(c); 11162 } else if (c === 91) { 11163 this.state = 15; 11164 } else if (c === 46) { 11165 this.cbs.ondirarg(this.sectionStart, this.index); 11166 this.state = 16; 11167 this.sectionStart = this.index + 1; 11168 } 11169 } 11170 stateInDynamicDirArg(c) { 11171 if (c === 93) { 11172 this.state = 14; 11173 } else if (c === 61 || isEndOfTagSection(c)) { 11174 this.cbs.ondirarg(this.sectionStart, this.index + 1); 11175 this.handleAttrNameEnd(c); 11176 } 11177 } 11178 stateInDirModifier(c) { 11179 if (c === 61 || isEndOfTagSection(c)) { 11180 this.cbs.ondirmodifier(this.sectionStart, this.index); 11181 this.handleAttrNameEnd(c); 11182 } else if (c === 46) { 11183 this.cbs.ondirmodifier(this.sectionStart, this.index); 11184 this.sectionStart = this.index + 1; 11185 } 11186 } 11187 handleAttrNameEnd(c) { 11188 this.sectionStart = this.index; 11189 this.state = 17; 11190 this.cbs.onattribnameend(this.index); 11191 this.stateAfterAttrName(c); 11192 } 11193 stateAfterAttrName(c) { 11194 if (c === 61) { 11195 this.state = 18; 11196 } else if (c === 47 || c === 62) { 11197 this.cbs.onattribend(0, this.sectionStart); 11198 this.sectionStart = -1; 11199 this.state = 11; 11200 this.stateBeforeAttrName(c); 11201 } else if (!isWhitespace(c)) { 11202 this.cbs.onattribend(0, this.sectionStart); 11203 this.handleAttrStart(c); 11204 } 11205 } 11206 stateBeforeAttrValue(c) { 11207 if (c === 34) { 11208 this.state = 19; 11209 this.sectionStart = this.index + 1; 11210 } else if (c === 39) { 11211 this.state = 20; 11212 this.sectionStart = this.index + 1; 11213 } else if (!isWhitespace(c)) { 11214 this.sectionStart = this.index; 11215 this.state = 21; 11216 this.stateInAttrValueNoQuotes(c); 11217 } 11218 } 11219 handleInAttrValue(c, quote) { 11220 if (c === quote || this.fastForwardTo(quote)) { 11221 this.cbs.onattribdata(this.sectionStart, this.index); 11222 this.sectionStart = -1; 11223 this.cbs.onattribend( 11224 quote === 34 ? 3 : 2, 11225 this.index + 1 11226 ); 11227 this.state = 11; 11228 } 11229 } 11230 stateInAttrValueDoubleQuotes(c) { 11231 this.handleInAttrValue(c, 34); 11232 } 11233 stateInAttrValueSingleQuotes(c) { 11234 this.handleInAttrValue(c, 39); 11235 } 11236 stateInAttrValueNoQuotes(c) { 11237 if (isWhitespace(c) || c === 62) { 11238 this.cbs.onattribdata(this.sectionStart, this.index); 11239 this.sectionStart = -1; 11240 this.cbs.onattribend(1, this.index); 11241 this.state = 11; 11242 this.stateBeforeAttrName(c); 11243 } else if (c === 39 || c === 60 || c === 61 || c === 96) { 11244 this.cbs.onerr( 11245 18, 11246 this.index 11247 ); 11248 } else ; 11249 } 11250 stateBeforeDeclaration(c) { 11251 if (c === 91) { 11252 this.state = 26; 11253 this.sequenceIndex = 0; 11254 } else { 11255 this.state = c === 45 ? 25 : 23; 11256 } 11257 } 11258 stateInDeclaration(c) { 11259 if (c === 62 || this.fastForwardTo(62)) { 11260 this.state = 1; 11261 this.sectionStart = this.index + 1; 11262 } 11263 } 11264 stateInProcessingInstruction(c) { 11265 if (c === 62 || this.fastForwardTo(62)) { 11266 this.cbs.onprocessinginstruction(this.sectionStart, this.index); 11267 this.state = 1; 11268 this.sectionStart = this.index + 1; 11269 } 11270 } 11271 stateBeforeComment(c) { 11272 if (c === 45) { 11273 this.state = 28; 11274 this.currentSequence = Sequences.CommentEnd; 11275 this.sequenceIndex = 2; 11276 this.sectionStart = this.index + 1; 11277 } else { 11278 this.state = 23; 11279 } 11280 } 11281 stateInSpecialComment(c) { 11282 if (c === 62 || this.fastForwardTo(62)) { 11283 this.cbs.oncomment(this.sectionStart, this.index); 11284 this.state = 1; 11285 this.sectionStart = this.index + 1; 11286 } 11287 } 11288 stateBeforeSpecialS(c) { 11289 if (c === Sequences.ScriptEnd[3]) { 11290 this.startSpecial(Sequences.ScriptEnd, 4); 11291 } else if (c === Sequences.StyleEnd[3]) { 11292 this.startSpecial(Sequences.StyleEnd, 4); 11293 } else { 11294 this.state = 6; 11295 this.stateInTagName(c); 11296 } 11297 } 11298 stateBeforeSpecialT(c) { 11299 if (c === Sequences.TitleEnd[3]) { 11300 this.startSpecial(Sequences.TitleEnd, 4); 11301 } else if (c === Sequences.TextareaEnd[3]) { 11302 this.startSpecial(Sequences.TextareaEnd, 4); 11303 } else { 11304 this.state = 6; 11305 this.stateInTagName(c); 11306 } 11307 } 11308 startEntity() { 11309 } 11310 stateInEntity() { 11311 } 11312 /** 11313 * Iterates through the buffer, calling the function corresponding to the current state. 11314 * 11315 * States that are more likely to be hit are higher up, as a performance improvement. 11316 */ 11317 parse(input) { 11318 this.buffer = input; 11319 while (this.index < this.buffer.length) { 11320 const c = this.buffer.charCodeAt(this.index); 11321 if (c === 10) { 11322 this.newlines.push(this.index); 11323 } 11324 switch (this.state) { 11325 case 1: { 11326 this.stateText(c); 11327 break; 11328 } 11329 case 2: { 11330 this.stateInterpolationOpen(c); 11331 break; 11332 } 11333 case 3: { 11334 this.stateInterpolation(c); 11335 break; 11336 } 11337 case 4: { 11338 this.stateInterpolationClose(c); 11339 break; 11340 } 11341 case 31: { 11342 this.stateSpecialStartSequence(c); 11343 break; 11344 } 11345 case 32: { 11346 this.stateInRCDATA(c); 11347 break; 11348 } 11349 case 26: { 11350 this.stateCDATASequence(c); 11351 break; 11352 } 11353 case 19: { 11354 this.stateInAttrValueDoubleQuotes(c); 11355 break; 11356 } 11357 case 12: { 11358 this.stateInAttrName(c); 11359 break; 11360 } 11361 case 13: { 11362 this.stateInDirName(c); 11363 break; 11364 } 11365 case 14: { 11366 this.stateInDirArg(c); 11367 break; 11368 } 11369 case 15: { 11370 this.stateInDynamicDirArg(c); 11371 break; 11372 } 11373 case 16: { 11374 this.stateInDirModifier(c); 11375 break; 11376 } 11377 case 28: { 11378 this.stateInCommentLike(c); 11379 break; 11380 } 11381 case 27: { 11382 this.stateInSpecialComment(c); 11383 break; 11384 } 11385 case 11: { 11386 this.stateBeforeAttrName(c); 11387 break; 11388 } 11389 case 6: { 11390 this.stateInTagName(c); 11391 break; 11392 } 11393 case 34: { 11394 this.stateInSFCRootTagName(c); 11395 break; 11396 } 11397 case 9: { 11398 this.stateInClosingTagName(c); 11399 break; 11400 } 11401 case 5: { 11402 this.stateBeforeTagName(c); 11403 break; 11404 } 11405 case 17: { 11406 this.stateAfterAttrName(c); 11407 break; 11408 } 11409 case 20: { 11410 this.stateInAttrValueSingleQuotes(c); 11411 break; 11412 } 11413 case 18: { 11414 this.stateBeforeAttrValue(c); 11415 break; 11416 } 11417 case 8: { 11418 this.stateBeforeClosingTagName(c); 11419 break; 11420 } 11421 case 10: { 11422 this.stateAfterClosingTagName(c); 11423 break; 11424 } 11425 case 29: { 11426 this.stateBeforeSpecialS(c); 11427 break; 11428 } 11429 case 30: { 11430 this.stateBeforeSpecialT(c); 11431 break; 11432 } 11433 case 21: { 11434 this.stateInAttrValueNoQuotes(c); 11435 break; 11436 } 11437 case 7: { 11438 this.stateInSelfClosingTag(c); 11439 break; 11440 } 11441 case 23: { 11442 this.stateInDeclaration(c); 11443 break; 11444 } 11445 case 22: { 11446 this.stateBeforeDeclaration(c); 11447 break; 11448 } 11449 case 25: { 11450 this.stateBeforeComment(c); 11451 break; 11452 } 11453 case 24: { 11454 this.stateInProcessingInstruction(c); 11455 break; 11456 } 11457 case 33: { 11458 this.stateInEntity(); 11459 break; 11460 } 11461 } 11462 this.index++; 11463 } 11464 this.cleanup(); 11465 this.finish(); 11466 } 11467 /** 11468 * Remove data that has already been consumed from the buffer. 11469 */ 11470 cleanup() { 11471 if (this.sectionStart !== this.index) { 11472 if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { 11473 this.cbs.ontext(this.sectionStart, this.index); 11474 this.sectionStart = this.index; 11475 } else if (this.state === 19 || this.state === 20 || this.state === 21) { 11476 this.cbs.onattribdata(this.sectionStart, this.index); 11477 this.sectionStart = this.index; 11478 } 11479 } 11480 } 11481 finish() { 11482 this.handleTrailingData(); 11483 this.cbs.onend(); 11484 } 11485 /** Handle any trailing data. */ 11486 handleTrailingData() { 11487 const endIndex = this.buffer.length; 11488 if (this.sectionStart >= endIndex) { 11489 return; 11490 } 11491 if (this.state === 28) { 11492 if (this.currentSequence === Sequences.CdataEnd) { 11493 this.cbs.oncdata(this.sectionStart, endIndex); 11494 } else { 11495 this.cbs.oncomment(this.sectionStart, endIndex); 11496 } 11497 } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; 11498 else { 11499 this.cbs.ontext(this.sectionStart, endIndex); 11500 } 11501 }
vendor: 5,164 bytes, lines 11502-11667
11502 emitCodePoint(cp, consumed) { 11503 } 11504} 11505function getCompatValue(key, { compatConfig }) { 11506 const value = compatConfig && compatConfig[key]; 11507 if (key === "MODE") { 11508 return value || 3; 11509 } else { 11510 return value; 11511 } 11512} 11513function isCompatEnabled(key, context) { 11514 const mode = getCompatValue("MODE", context); 11515 const value = getCompatValue(key, context); 11516 return mode === 3 ? value === true : value !== false; 11517} 11518function checkCompatEnabled(key, context, loc, ...args) { 11519 const enabled = isCompatEnabled(key, context); 11520 return enabled; 11521} 11522function defaultOnError$1(error) { 11523 throw error; 11524} 11525function defaultOnWarn(msg) { 11526} 11527function createCompilerError(code, loc, messages, additionalMessage) { 11528 const msg = `https://vuejs.org/error-reference/#compiler-${code}`; 11529 const error = new SyntaxError(String(msg)); 11530 error.code = code; 11531 error.loc = loc; 11532 return error; 11533} 11534const isStaticExp = (p2) => p2.type === 4 && p2.isStatic; 11535function isCoreComponent(tag) { 11536 switch (tag) { 11537 case "Teleport": 11538 case "teleport": 11539 return TELEPORT; 11540 case "Suspense": 11541 case "suspense": 11542 return SUSPENSE; 11543 case "KeepAlive": 11544 case "keep-alive": 11545 return KEEP_ALIVE; 11546 case "BaseTransition": 11547 case "base-transition": 11548 return BASE_TRANSITION; 11549 } 11550} 11551const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/; 11552const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); 11553const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; 11554const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; 11555const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; 11556const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; 11557const isMemberExpressionBrowser = (exp) => { 11558 const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); 11559 let state2 = 0; 11560 let stateStack = []; 11561 let currentOpenBracketCount = 0; 11562 let currentOpenParensCount = 0; 11563 let currentStringType = null; 11564 for (let i = 0; i < path.length; i++) { 11565 const char = path.charAt(i); 11566 switch (state2) { 11567 case 0: 11568 if (char === "[") { 11569 stateStack.push(state2); 11570 state2 = 1; 11571 currentOpenBracketCount++; 11572 } else if (char === "(") { 11573 stateStack.push(state2); 11574 state2 = 2; 11575 currentOpenParensCount++; 11576 } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { 11577 return false; 11578 } 11579 break; 11580 case 1: 11581 if (char === `'` || char === `"` || char === "`") { 11582 stateStack.push(state2); 11583 state2 = 3; 11584 currentStringType = char; 11585 } else if (char === `[`) { 11586 currentOpenBracketCount++; 11587 } else if (char === `]`) { 11588 if (!--currentOpenBracketCount) { 11589 state2 = stateStack.pop(); 11590 } 11591 } 11592 break; 11593 case 2: 11594 if (char === `'` || char === `"` || char === "`") { 11595 stateStack.push(state2); 11596 state2 = 3; 11597 currentStringType = char; 11598 } else if (char === `(`) { 11599 currentOpenParensCount++; 11600 } else if (char === `)`) { 11601 if (i === path.length - 1) { 11602 return false; 11603 } 11604 if (!--currentOpenParensCount) { 11605 state2 = stateStack.pop(); 11606 } 11607 } 11608 break; 11609 case 3: 11610 if (char === currentStringType) { 11611 state2 = stateStack.pop(); 11612 currentStringType = null; 11613 } 11614 break; 11615 } 11616 } 11617 return !currentOpenBracketCount && !currentOpenParensCount; 11618}; 11619const isMemberExpression = isMemberExpressionBrowser; 11620const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; 11621const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); 11622const isFnExpression = isFnExpressionBrowser; 11623function findDir(node, name, allowEmpty = false) { 11624 for (let i = 0; i < node.props.length; i++) { 11625 const p2 = node.props[i]; 11626 if (p2.type === 7 && (allowEmpty || p2.exp) && (isString$3(name) ? p2.name === name : name.test(p2.name))) { 11627 return p2; 11628 } 11629 } 11630} 11631function findProp(node, name, dynamicOnly = false, allowEmpty = false) { 11632 for (let i = 0; i < node.props.length; i++) { 11633 const p2 = node.props[i]; 11634 if (p2.type === 6) { 11635 if (dynamicOnly) continue; 11636 if (p2.name === name && (p2.value || allowEmpty)) { 11637 return p2; 11638 } 11639 } else if (p2.name === "bind" && (p2.exp || allowEmpty) && isStaticArgOf(p2.arg, name)) { 11640 return p2; 11641 } 11642 } 11643} 11644function isStaticArgOf(arg, name) { 11645 return !!(arg && isStaticExp(arg) && arg.content === name); 11646} 11647function hasDynamicKeyVBind(node) { 11648 return node.props.some( 11649 (p2) => p2.type === 7 && p2.name === "bind" && (!p2.arg || // v-bind="obj" 11650 p2.arg.type !== 4 || // v-bind:[_ctx.foo] 11651 !p2.arg.isStatic) 11652 // v-bind:[foo] 11653 ); 11654} 11655function isText$1(node) { 11656 return node.type === 5 || node.type === 2; 11657} 11658function isVSlot(p2) { 11659 return p2.type === 7 && p2.name === "slot"; 11660} 11661function isTemplateNode(node) { 11662 return node.type === 1 && node.tagType === 3; 11663} 11664function isSlotOutlet(node) { 11665 return node.type === 1 && node.tagType === 2; 11666} 11667const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROP
vendor: 2,202 bytes, lines 11667-11739
11667S]); 11668function getUnnormalizedProps(props2, callPath = []) { 11669 if (props2 && !isString$3(props2) && props2.type === 14) { 11670 const callee = props2.callee; 11671 if (!isString$3(callee) && propsHelperSet.has(callee)) { 11672 return getUnnormalizedProps( 11673 props2.arguments[0], 11674 callPath.concat(props2) 11675 ); 11676 } 11677 } 11678 return [props2, callPath]; 11679} 11680function injectProp(node, prop, context) { 11681 let propsWithInjection; 11682 let props2 = node.type === 13 ? node.props : node.arguments[2]; 11683 let callPath = []; 11684 let parentCall; 11685 if (props2 && !isString$3(props2) && props2.type === 14) { 11686 const ret = getUnnormalizedProps(props2); 11687 props2 = ret[0]; 11688 callPath = ret[1]; 11689 parentCall = callPath[callPath.length - 1]; 11690 } 11691 if (props2 == null || isString$3(props2)) { 11692 propsWithInjection = createObjectExpression([prop]); 11693 } else if (props2.type === 14) { 11694 const first = props2.arguments[0]; 11695 if (!isString$3(first) && first.type === 15) { 11696 if (!hasProp(prop, first)) { 11697 first.properties.unshift(prop); 11698 } 11699 } else { 11700 if (props2.callee === TO_HANDLERS) { 11701 propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ 11702 createObjectExpression([prop]), 11703 props2 11704 ]); 11705 } else { 11706 props2.arguments.unshift(createObjectExpression([prop])); 11707 } 11708 } 11709 !propsWithInjection && (propsWithInjection = props2); 11710 } else if (props2.type === 15) { 11711 if (!hasProp(prop, props2)) { 11712 props2.properties.unshift(prop); 11713 } 11714 propsWithInjection = props2; 11715 } else { 11716 propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ 11717 createObjectExpression([prop]), 11718 props2 11719 ]); 11720 if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { 11721 parentCall = callPath[callPath.length - 2]; 11722 } 11723 } 11724 if (node.type === 13) { 11725 if (parentCall) { 11726 parentCall.arguments[0] = propsWithInjection; 11727 } else { 11728 node.props = propsWithInjection; 11729 } 11730 } else { 11731 if (parentCall) { 11732 parentCall.arguments[0] = propsWithInjection; 11733 } else { 11734 node.arguments[2] = propsWithInjection; 11735 } 11736 } 11737} 11738function hasProp(prop, props2) { 11739 let result = false;
vendor: 5,372 bytes, lines 11740-11939
11740 if (prop.key.type === 4) { 11741 const propKeyName = prop.key.content; 11742 result = props2.properties.some( 11743 (p2) => p2.key.type === 4 && p2.key.content === propKeyName 11744 ); 11745 } 11746 return result; 11747} 11748function toValidAssetId(name, type) { 11749 return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { 11750 return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); 11751 })}`; 11752} 11753function getMemoedVNodeCall(node) { 11754 if (node.type === 14 && node.callee === WITH_MEMO) { 11755 return node.arguments[1].returns; 11756 } else { 11757 return node; 11758 } 11759} 11760const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; 11761const defaultParserOptions = { 11762 parseMode: "base", 11763 ns: 0, 11764 delimiters: [`{{`, `}}`], 11765 getNamespace: () => 0, 11766 isVoidTag: NO, 11767 isPreTag: NO, 11768 isIgnoreNewlineTag: NO, 11769 isCustomElement: NO, 11770 onError: defaultOnError$1, 11771 onWarn: defaultOnWarn, 11772 comments: false, 11773 prefixIdentifiers: false 11774}; 11775let currentOptions = defaultParserOptions; 11776let currentRoot = null; 11777let currentInput = ""; 11778let currentOpenTag = null; 11779let currentProp = null; 11780let currentAttrValue = ""; 11781let currentAttrStartIndex = -1; 11782let currentAttrEndIndex = -1; 11783let inPre = 0; 11784let inVPre = false; 11785let currentVPreBoundary = null; 11786const stack = []; 11787const tokenizer = new Tokenizer(stack, { 11788 onerr: emitError, 11789 ontext(start, end) { 11790 onText(getSlice(start, end), start, end); 11791 }, 11792 ontextentity(char, start, end) { 11793 onText(char, start, end); 11794 }, 11795 oninterpolation(start, end) { 11796 if (inVPre) { 11797 return onText(getSlice(start, end), start, end); 11798 } 11799 let innerStart = start + tokenizer.delimiterOpen.length; 11800 let innerEnd = end - tokenizer.delimiterClose.length; 11801 while (isWhitespace(currentInput.charCodeAt(innerStart))) { 11802 innerStart++; 11803 } 11804 while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { 11805 innerEnd--; 11806 } 11807 let exp = getSlice(innerStart, innerEnd); 11808 if (exp.includes("&")) { 11809 { 11810 exp = currentOptions.decodeEntities(exp, false); 11811 } 11812 } 11813 addNode({ 11814 type: 5, 11815 content: createExp(exp, false, getLoc(innerStart, innerEnd)), 11816 loc: getLoc(start, end) 11817 }); 11818 }, 11819 onopentagname(start, end) { 11820 const name = getSlice(start, end); 11821 currentOpenTag = { 11822 type: 1, 11823 tag: name, 11824 ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), 11825 tagType: 0, 11826 // will be refined on tag close 11827 props: [], 11828 children: [], 11829 loc: getLoc(start - 1, end), 11830 codegenNode: void 0 11831 }; 11832 }, 11833 onopentagend(end) { 11834 endOpenTag(end); 11835 }, 11836 onclosetag(start, end) { 11837 const name = getSlice(start, end); 11838 if (!currentOptions.isVoidTag(name)) { 11839 let found = false; 11840 for (let i = 0; i < stack.length; i++) { 11841 const e = stack[i]; 11842 if (e.tag.toLowerCase() === name.toLowerCase()) { 11843 found = true; 11844 if (i > 0) { 11845 emitError(24, stack[0].loc.start.offset); 11846 } 11847 for (let j = 0; j <= i; j++) { 11848 const el = stack.shift(); 11849 onCloseTag(el, end, j < i); 11850 } 11851 break; 11852 } 11853 } 11854 if (!found) { 11855 emitError(23, backTrack(start, 60)); 11856 } 11857 } 11858 }, 11859 onselfclosingtag(end) { 11860 const name = currentOpenTag.tag; 11861 currentOpenTag.isSelfClosing = true; 11862 endOpenTag(end); 11863 if (stack[0] && stack[0].tag === name) { 11864 onCloseTag(stack.shift(), end); 11865 } 11866 }, 11867 onattribname(start, end) { 11868 currentProp = { 11869 type: 6, 11870 name: getSlice(start, end), 11871 nameLoc: getLoc(start, end), 11872 value: void 0, 11873 loc: getLoc(start) 11874 }; 11875 }, 11876 ondirname(start, end) { 11877 const raw = getSlice(start, end); 11878 const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); 11879 if (!inVPre && name === "") { 11880 emitError(26, start); 11881 } 11882 if (inVPre || name === "") { 11883 currentProp = { 11884 type: 6, 11885 name: raw, 11886 nameLoc: getLoc(start, end), 11887 value: void 0, 11888 loc: getLoc(start) 11889 }; 11890 } else { 11891 currentProp = { 11892 type: 7, 11893 name, 11894 rawName: raw, 11895 exp: void 0, 11896 arg: void 0, 11897 modifiers: raw === "." ? [createSimpleExpression("prop")] : [], 11898 loc: getLoc(start) 11899 }; 11900 if (name === "pre") { 11901 inVPre = tokenizer.inVPre = true; 11902 currentVPreBoundary = currentOpenTag; 11903 const props2 = currentOpenTag.props; 11904 for (let i = 0; i < props2.length; i++) { 11905 if (props2[i].type === 7) { 11906 props2[i] = dirToAttr(props2[i]); 11907 } 11908 } 11909 } 11910 } 11911 }, 11912 ondirarg(start, end) { 11913 if (start === end) return; 11914 const arg = getSlice(start, end); 11915 if (inVPre) { 11916 currentProp.name += arg; 11917 setLocEnd(currentProp.nameLoc, end); 11918 } else { 11919 const isStatic = arg[0] !== `[`; 11920 currentProp.arg = createExp( 11921 isStatic ? arg : arg.slice(1, -1), 11922 isStatic, 11923 getLoc(start, end), 11924 isStatic ? 3 : 0 11925 ); 11926 } 11927 }, 11928 ondirmodifier(start, end) { 11929 const mod = getSlice(start, end); 11930 if (inVPre) { 11931 currentProp.name += "." + mod; 11932 setLocEnd(currentProp.nameLoc, end); 11933 } else if (currentProp.name === "slot") { 11934 const arg = currentProp.arg; 11935 if (arg) { 11936 arg.content += "." + mod; 11937 setLocEnd(arg.loc, end); 11938 } 11939 } else {
vendor: 9,319 bytes, lines 11940-12249
11940 const exp = createSimpleExpression(mod, true, getLoc(start, end)); 11941 currentProp.modifiers.push(exp); 11942 } 11943 }, 11944 onattribdata(start, end) { 11945 currentAttrValue += getSlice(start, end); 11946 if (currentAttrStartIndex < 0) currentAttrStartIndex = start; 11947 currentAttrEndIndex = end; 11948 }, 11949 onattribentity(char, start, end) { 11950 currentAttrValue += char; 11951 if (currentAttrStartIndex < 0) currentAttrStartIndex = start; 11952 currentAttrEndIndex = end; 11953 }, 11954 onattribnameend(end) { 11955 const start = currentProp.loc.start.offset; 11956 const name = getSlice(start, end); 11957 if (currentProp.type === 7) { 11958 currentProp.rawName = name; 11959 } 11960 if (currentOpenTag.props.some( 11961 (p2) => (p2.type === 7 ? p2.rawName : p2.name) === name 11962 )) { 11963 emitError(2, start); 11964 } 11965 }, 11966 onattribend(quote, end) { 11967 if (currentOpenTag && currentProp) { 11968 setLocEnd(currentProp.loc, end); 11969 if (quote !== 0) { 11970 if (currentAttrValue.includes("&")) { 11971 currentAttrValue = currentOptions.decodeEntities( 11972 currentAttrValue, 11973 true 11974 ); 11975 } 11976 if (currentProp.type === 6) { 11977 if (currentProp.name === "class") { 11978 currentAttrValue = condense(currentAttrValue).trim(); 11979 } 11980 if (quote === 1 && !currentAttrValue) { 11981 emitError(13, end); 11982 } 11983 currentProp.value = { 11984 type: 2, 11985 content: currentAttrValue, 11986 loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) 11987 }; 11988 if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { 11989 tokenizer.enterRCDATA(toCharCodes(`</template`), 0); 11990 } 11991 } else { 11992 let expParseMode = 0; 11993 currentProp.exp = createExp( 11994 currentAttrValue, 11995 false, 11996 getLoc(currentAttrStartIndex, currentAttrEndIndex), 11997 0, 11998 expParseMode 11999 ); 12000 if (currentProp.name === "for") { 12001 currentProp.forParseResult = parseForExpression(currentProp.exp); 12002 } 12003 let syncIndex = -1; 12004 if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( 12005 (mod) => mod.content === "sync" 12006 )) > -1 && checkCompatEnabled( 12007 "COMPILER_V_BIND_SYNC", 12008 currentOptions, 12009 currentProp.loc, 12010 currentProp.arg.loc.source 12011 )) { 12012 currentProp.name = "model"; 12013 currentProp.modifiers.splice(syncIndex, 1); 12014 } 12015 } 12016 } 12017 if (currentProp.type !== 7 || currentProp.name !== "pre") { 12018 currentOpenTag.props.push(currentProp); 12019 } 12020 } 12021 currentAttrValue = ""; 12022 currentAttrStartIndex = currentAttrEndIndex = -1; 12023 }, 12024 oncomment(start, end) { 12025 if (currentOptions.comments) { 12026 addNode({ 12027 type: 3, 12028 content: getSlice(start, end), 12029 loc: getLoc(start - 4, end + 3) 12030 }); 12031 } 12032 }, 12033 onend() { 12034 const end = currentInput.length; 12035 for (let index2 = 0; index2 < stack.length; index2++) { 12036 onCloseTag(stack[index2], end - 1); 12037 emitError(24, stack[index2].loc.start.offset); 12038 } 12039 }, 12040 oncdata(start, end) { 12041 if (stack[0].ns !== 0) { 12042 onText(getSlice(start, end), start, end); 12043 } else { 12044 emitError(1, start - 9); 12045 } 12046 }, 12047 onprocessinginstruction(start) { 12048 if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { 12049 emitError( 12050 21, 12051 start - 1 12052 ); 12053 } 12054 } 12055}); 12056const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; 12057const stripParensRE = /^\(|\)$/g; 12058function parseForExpression(input) { 12059 const loc = input.loc; 12060 const exp = input.content; 12061 const inMatch = exp.match(forAliasRE); 12062 if (!inMatch) return; 12063 const [, LHS, RHS] = inMatch; 12064 const createAliasExpression = (content, offset, asParam = false) => { 12065 const start = loc.start.offset + offset; 12066 const end = start + content.length; 12067 return createExp( 12068 content, 12069 false, 12070 getLoc(start, end), 12071 0, 12072 asParam ? 1 : 0 12073 /* Normal */ 12074 ); 12075 }; 12076 const result = { 12077 source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), 12078 value: void 0, 12079 key: void 0, 12080 index: void 0, 12081 finalized: false 12082 }; 12083 let valueContent = LHS.trim().replace(stripParensRE, "").trim(); 12084 const trimmedOffset = LHS.indexOf(valueContent); 12085 const iteratorMatch = valueContent.match(forIteratorRE); 12086 if (iteratorMatch) { 12087 valueContent = valueContent.replace(forIteratorRE, "").trim(); 12088 const keyContent = iteratorMatch[1].trim(); 12089 let keyOffset; 12090 if (keyContent) { 12091 keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); 12092 result.key = createAliasExpression(keyContent, keyOffset, true); 12093 } 12094 if (iteratorMatch[2]) { 12095 const indexContent = iteratorMatch[2].trim(); 12096 if (indexContent) { 12097 result.index = createAliasExpression( 12098 indexContent, 12099 exp.indexOf( 12100 indexContent, 12101 result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length 12102 ), 12103 true 12104 ); 12105 } 12106 } 12107 } 12108 if (valueContent) { 12109 result.value = createAliasExpression(valueContent, trimmedOffset, true); 12110 } 12111 return result; 12112} 12113function getSlice(start, end) { 12114 return currentInput.slice(start, end); 12115} 12116function endOpenTag(end) { 12117 if (tokenizer.inSFCRoot) { 12118 currentOpenTag.innerLoc = getLoc(end + 1, end + 1); 12119 } 12120 addNode(currentOpenTag); 12121 const { tag, ns } = currentOpenTag; 12122 if (ns === 0 && currentOptions.isPreTag(tag)) { 12123 inPre++; 12124 } 12125 if (currentOptions.isVoidTag(tag)) { 12126 onCloseTag(currentOpenTag, end); 12127 } else { 12128 stack.unshift(currentOpenTag); 12129 if (ns === 1 || ns === 2) { 12130 tokenizer.inXML = true; 12131 } 12132 } 12133 currentOpenTag = null; 12134} 12135function onText(content, start, end) { 12136 { 12137 const tag = stack[0] && stack[0].tag; 12138 if (tag !== "script" && tag !== "style" && content.includes("&")) { 12139 content = currentOptions.decodeEntities(content, false); 12140 } 12141 } 12142 const parent = stack[0] || currentRoot; 12143 const lastNode = parent.children[parent.children.length - 1]; 12144 if (lastNode && lastNode.type === 2) { 12145 lastNode.content += content; 12146 setLocEnd(lastNode.loc, end); 12147 } else { 12148 parent.children.push({ 12149 type: 2, 12150 content, 12151 loc: getLoc(start, end) 12152 }); 12153 } 12154} 12155function onCloseTag(el, end, isImplied = false) { 12156 if (isImplied) { 12157 setLocEnd(el.loc, backTrack(end, 60)); 12158 } else { 12159 setLocEnd(el.loc, lookAhead(end, 62) + 1); 12160 } 12161 if (tokenizer.inSFCRoot) { 12162 if (el.children.length) { 12163 el.innerLoc.end = extend$5({}, el.children[el.children.length - 1].loc.end); 12164 } else { 12165 el.innerLoc.end = extend$5({}, el.innerLoc.start); 12166 } 12167 el.innerLoc.source = getSlice( 12168 el.innerLoc.start.offset, 12169 el.innerLoc.end.offset 12170 ); 12171 } 12172 const { tag, ns, children } = el; 12173 if (!inVPre) { 12174 if (tag === "slot") { 12175 el.tagType = 2; 12176 } else if (isFragmentTemplate(el)) { 12177 el.tagType = 3; 12178 } else if (isComponent(el)) { 12179 el.tagType = 1; 12180 } 12181 } 12182 if (!tokenizer.inRCDATA) { 12183 el.children = condenseWhitespace(children); 12184 } 12185 if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { 12186 const first = children[0]; 12187 if (first && first.type === 2) { 12188 first.content = first.content.replace(/^\r?\n/, ""); 12189 } 12190 } 12191 if (ns === 0 && currentOptions.isPreTag(tag)) { 12192 inPre--; 12193 } 12194 if (currentVPreBoundary === el) { 12195 inVPre = tokenizer.inVPre = false; 12196 currentVPreBoundary = null; 12197 } 12198 if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { 12199 tokenizer.inXML = false; 12200 } 12201 { 12202 const props2 = el.props; 12203 if (!tokenizer.inSFCRoot && isCompatEnabled( 12204 "COMPILER_NATIVE_TEMPLATE", 12205 currentOptions 12206 ) && el.tag === "template" && !isFragmentTemplate(el)) { 12207 const parent = stack[0] || currentRoot; 12208 const index2 = parent.children.indexOf(el); 12209 parent.children.splice(index2, 1, ...el.children); 12210 } 12211 const inlineTemplateProp = props2.find( 12212 (p2) => p2.type === 6 && p2.name === "inline-template" 12213 ); 12214 if (inlineTemplateProp && checkCompatEnabled( 12215 "COMPILER_INLINE_TEMPLATE", 12216 currentOptions, 12217 inlineTemplateProp.loc 12218 ) && el.children.length) { 12219 inlineTemplateProp.value = { 12220 type: 2, 12221 content: getSlice( 12222 el.children[0].loc.start.offset, 12223 el.children[el.children.length - 1].loc.end.offset 12224 ), 12225 loc: inlineTemplateProp.loc 12226 }; 12227 } 12228 } 12229} 12230function lookAhead(index2, c) { 12231 let i = index2; 12232 while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; 12233 return i; 12234} 12235function backTrack(index2, c) { 12236 let i = index2; 12237 while (currentInput.charCodeAt(i) !== c && i >= 0) i--; 12238 return i; 12239} 12240const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); 12241function isFragmentTemplate({ tag, props: props2 }) { 12242 if (tag === "template") { 12243 for (let i = 0; i < props2.length; i++) { 12244 if (props2[i].type === 7 && specialTemplateDir.has(props2[i].name)) { 12245 return true; 12246 } 12247 } 12248 } 12249 return false;
vendor: 4,323 bytes, lines 12250-12407
12250} 12251function isComponent({ tag, props: props2 }) { 12252 if (currentOptions.isCustomElement(tag)) { 12253 return false; 12254 } 12255 if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { 12256 return true; 12257 } 12258 for (let i = 0; i < props2.length; i++) { 12259 const p2 = props2[i]; 12260 if (p2.type === 6) { 12261 if (p2.name === "is" && p2.value) { 12262 if (p2.value.content.startsWith("vue:")) { 12263 return true; 12264 } else if (checkCompatEnabled( 12265 "COMPILER_IS_ON_ELEMENT", 12266 currentOptions, 12267 p2.loc 12268 )) { 12269 return true; 12270 } 12271 } 12272 } else if ( 12273 // :is on plain element - only treat as component in compat mode 12274 p2.name === "bind" && isStaticArgOf(p2.arg, "is") && checkCompatEnabled( 12275 "COMPILER_IS_ON_ELEMENT", 12276 currentOptions, 12277 p2.loc 12278 ) 12279 ) { 12280 return true; 12281 } 12282 } 12283 return false; 12284} 12285function isUpperCase(c) { 12286 return c > 64 && c < 91; 12287} 12288const windowsNewlineRE = /\r\n/g; 12289function condenseWhitespace(nodes, tag) { 12290 const shouldCondense = currentOptions.whitespace !== "preserve"; 12291 let removedWhitespace = false; 12292 for (let i = 0; i < nodes.length; i++) { 12293 const node = nodes[i]; 12294 if (node.type === 2) { 12295 if (!inPre) { 12296 if (isAllWhitespace(node.content)) { 12297 const prev = nodes[i - 1] && nodes[i - 1].type; 12298 const next = nodes[i + 1] && nodes[i + 1].type; 12299 if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { 12300 removedWhitespace = true; 12301 nodes[i] = null; 12302 } else { 12303 node.content = " "; 12304 } 12305 } else if (shouldCondense) { 12306 node.content = condense(node.content); 12307 } 12308 } else { 12309 node.content = node.content.replace(windowsNewlineRE, "\n"); 12310 } 12311 } 12312 } 12313 return removedWhitespace ? nodes.filter(Boolean) : nodes; 12314} 12315function isAllWhitespace(str) { 12316 for (let i = 0; i < str.length; i++) { 12317 if (!isWhitespace(str.charCodeAt(i))) { 12318 return false; 12319 } 12320 } 12321 return true; 12322} 12323function hasNewlineChar(str) { 12324 for (let i = 0; i < str.length; i++) { 12325 const c = str.charCodeAt(i); 12326 if (c === 10 || c === 13) { 12327 return true; 12328 } 12329 } 12330 return false; 12331} 12332function condense(str) { 12333 let ret = ""; 12334 let prevCharIsWhitespace = false; 12335 for (let i = 0; i < str.length; i++) { 12336 if (isWhitespace(str.charCodeAt(i))) { 12337 if (!prevCharIsWhitespace) { 12338 ret += " "; 12339 prevCharIsWhitespace = true; 12340 } 12341 } else { 12342 ret += str[i]; 12343 prevCharIsWhitespace = false; 12344 } 12345 } 12346 return ret; 12347} 12348function addNode(node) { 12349 (stack[0] || currentRoot).children.push(node); 12350} 12351function getLoc(start, end) { 12352 return { 12353 start: tokenizer.getPos(start), 12354 // @ts-expect-error allow late attachment 12355 end: end == null ? end : tokenizer.getPos(end), 12356 // @ts-expect-error allow late attachment 12357 source: end == null ? end : getSlice(start, end) 12358 }; 12359} 12360function cloneLoc(loc) { 12361 return getLoc(loc.start.offset, loc.end.offset); 12362} 12363function setLocEnd(loc, end) { 12364 loc.end = tokenizer.getPos(end); 12365 loc.source = getSlice(loc.start.offset, end); 12366} 12367function dirToAttr(dir) { 12368 const attr = { 12369 type: 6, 12370 name: dir.rawName, 12371 nameLoc: getLoc( 12372 dir.loc.start.offset, 12373 dir.loc.start.offset + dir.rawName.length 12374 ), 12375 value: void 0, 12376 loc: dir.loc 12377 }; 12378 if (dir.exp) { 12379 const loc = dir.exp.loc; 12380 if (loc.end.offset < dir.loc.end.offset) { 12381 loc.start.offset--; 12382 loc.start.column--; 12383 loc.end.offset++; 12384 loc.end.column++; 12385 } 12386 attr.value = { 12387 type: 2, 12388 content: dir.exp.content, 12389 loc 12390 }; 12391 } 12392 return attr; 12393} 12394function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0) { 12395 const exp = createSimpleExpression(content, isStatic, loc, constType); 12396 return exp; 12397} 12398function emitError(code, index2, message) { 12399 currentOptions.onError( 12400 createCompilerError(code, getLoc(index2, index2)) 12401 ); 12402} 12403function reset() { 12404 tokenizer.reset(); 12405 currentOpenTag = null; 12406 currentProp = null; 12407 currentAttrValue = "";
vendor: 4,561 bytes, lines 12408-12530
12408 currentAttrStartIndex = -1; 12409 currentAttrEndIndex = -1; 12410 stack.length = 0; 12411} 12412function baseParse(input, options2) { 12413 reset(); 12414 currentInput = input; 12415 currentOptions = extend$5({}, defaultParserOptions); 12416 if (options2) { 12417 let key; 12418 for (key in options2) { 12419 if (options2[key] != null) { 12420 currentOptions[key] = options2[key]; 12421 } 12422 } 12423 } 12424 tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; 12425 tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; 12426 const delimiters = options2 && options2.delimiters; 12427 if (delimiters) { 12428 tokenizer.delimiterOpen = toCharCodes(delimiters[0]); 12429 tokenizer.delimiterClose = toCharCodes(delimiters[1]); 12430 } 12431 const root2 = currentRoot = createRoot([], input); 12432 tokenizer.parse(currentInput); 12433 root2.loc = getLoc(0, input.length); 12434 root2.children = condenseWhitespace(root2.children); 12435 currentRoot = null; 12436 return root2; 12437} 12438function cacheStatic(root2, context) { 12439 walk( 12440 root2, 12441 void 0, 12442 context, 12443 // Root node is unfortunately non-hoistable due to potential parent 12444 // fallthrough attributes. 12445 isSingleElementRoot(root2, root2.children[0]) 12446 ); 12447} 12448function isSingleElementRoot(root2, child) { 12449 const { children } = root2; 12450 return children.length === 1 && child.type === 1 && !isSlotOutlet(child); 12451} 12452function walk(node, parent, context, doNotHoistNode = false, inFor = false) { 12453 const { children } = node; 12454 const toCache = []; 12455 for (let i = 0; i < children.length; i++) { 12456 const child = children[i]; 12457 if (child.type === 1 && child.tagType === 0) { 12458 const constantType = doNotHoistNode ? 0 : getConstantType(child, context); 12459 if (constantType > 0) { 12460 if (constantType >= 2) { 12461 child.codegenNode.patchFlag = -1; 12462 toCache.push(child); 12463 continue; 12464 } 12465 } else { 12466 const codegenNode = child.codegenNode; 12467 if (codegenNode.type === 13) { 12468 const flag = codegenNode.patchFlag; 12469 if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { 12470 const props2 = getNodeProps(child); 12471 if (props2) { 12472 codegenNode.props = context.hoist(props2); 12473 } 12474 } 12475 if (codegenNode.dynamicProps) { 12476 codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); 12477 } 12478 } 12479 } 12480 } else if (child.type === 12) { 12481 const constantType = doNotHoistNode ? 0 : getConstantType(child, context); 12482 if (constantType >= 2) { 12483 toCache.push(child); 12484 continue; 12485 } 12486 } 12487 if (child.type === 1) { 12488 const isComponent2 = child.tagType === 1; 12489 if (isComponent2) { 12490 context.scopes.vSlot++; 12491 } 12492 walk(child, node, context, false, inFor); 12493 if (isComponent2) { 12494 context.scopes.vSlot--; 12495 } 12496 } else if (child.type === 11) { 12497 walk(child, node, context, child.children.length === 1, true); 12498 } else if (child.type === 9) { 12499 for (let i2 = 0; i2 < child.branches.length; i2++) { 12500 walk( 12501 child.branches[i2], 12502 node, 12503 context, 12504 child.branches[i2].children.length === 1, 12505 inFor 12506 ); 12507 } 12508 } 12509 } 12510 let cachedAsArray = false; 12511 const slotCacheKeys = []; 12512 if (toCache.length === children.length && node.type === 1) { 12513 if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray$3(node.codegenNode.children)) { 12514 node.codegenNode.children = getCacheExpression( 12515 createArrayExpression(node.codegenNode.children) 12516 ); 12517 cachedAsArray = true; 12518 } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray$3(node.codegenNode.children) && node.codegenNode.children.type === 15) { 12519 const slot = getSlotNode(node.codegenNode, "default"); 12520 if (slot) { 12521 slotCacheKeys.push(context.cached.length); 12522 slot.returns = getCacheExpression( 12523 createArrayExpression(slot.returns) 12524 ); 12525 cachedAsArray = true; 12526 } 12527 } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray$3(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { 12528 const slotName = findDir(node, "slot", true); 12529 const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); 12530 if (slot) {
12531 slotCacheKeys.push(context.cached.length); 12532 slot.returns = getCacheExpression( 12533 createArrayExpression(slot.returns) 12534 ); 12535 cachedAsArray = true; 12536 } 12537 } 12538 } 12539 if (!cachedAsArray) { 12540 for (const child of toCache) { 12541 slotCacheKeys.push(context.cached.length); 12542 child.codegenNode = context.cache(child.codegenNode); 12543 } 12544 } 12545 if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray$3(node.codegenNode.children) && node.codegenNode.children.type === 15) { 12546 node.codegenNode.children.properties.push( 12547 createObjectProperty( 12548 `__`, 12549 createSimpleExpression(JSON.stringify(slotCacheKeys), false) 12550 ) 12551 ); 12552 } 12553 function getCacheExpression(value) { 12554 const exp = context.cache(value); 12555 if (inFor && context.hmr) { 12556 exp.needArraySpread = true; 12557 } 12558 return exp; 12559 } 12560 function getSlotNode(node2, name) { 12561 if (node2.children && !isArray$3(node2.children) && node2.children.type === 15) { 12562 const slot = node2.children.properties.find( 12563 (p2) => p2.key === name || p2.key.content === name 12564 ); 12565 return slot && slot.value; 12566 } 12567 } 12568 if (toCache.length && context.transformHoist) { 12569 context.transformHoist(children, context, node); 12570 } 12571} 12572function getConstantType(node, context) { 12573 const { constantCache } = context; 12574 switch (node.type) { 12575 case 1: 12576 if (node.tagType !== 0) { 12577 return 0; 12578 } 12579 const cached = constantCache.get(node); 12580 if (cached !== void 0) { 12581 return cached; 12582 } 12583 const codegenNode = node.codegenNode; 12584 if (codegenNode.type !== 13) { 12585 return 0; 12586 } 12587 if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { 12588 return 0; 12589 } 12590 if (codegenNode.patchFlag === void 0) { 12591 let returnType2 = 3; 12592 const generatedPropsType = getGeneratedPropsConstantType(node, context); 12593 if (generatedPropsType === 0) { 12594 constantCache.set(node, 0); 12595 return 0; 12596 } 12597 if (generatedPropsType < returnType2) { 12598 returnType2 = generatedPropsType; 12599 } 12600 for (let i = 0; i < node.children.length; i++) { 12601 const childType = getConstantType(node.children[i], context); 12602 if (childType === 0) { 12603 constantCache.set(node, 0); 12604 return 0; 12605 } 12606 if (childType < returnType2) { 12607 returnType2 = childType; 12608 } 12609 } 12610 if (returnType2 > 1) { 12611 for (let i = 0; i < node.props.length; i++) { 12612 const p2 = node.props[i]; 12613 if (p2.type === 7 && p2.name === "bind" && p2.exp) { 12614 const expType = getConstantType(p2.exp, context); 12615 if (expType === 0) { 12616 constantCache.set(node, 0); 12617 return 0; 12618 } 12619 if (expType < returnType2) { 12620 returnType2 = expType; 12621 } 12622 } 12623 } 12624 } 12625 if (codegenNode.isBlock) { 12626 for (let i = 0; i < node.props.length; i++) { 12627 const p2 = node.props[i]; 12628 if (p2.type === 7) { 12629 constantCache.set(node, 0); 12630 return 0; 12631 } 12632 } 12633 context.removeHelper(OPEN_BLOCK); 12634 context.removeHelper( 12635 getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) 12636 ); 12637 codegenNode.isBlock = false; 12638 context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); 12639 } 12640 constantCache.set(node, returnType2); 12641 return returnType2; 12642 } else { 12643 constantCache.set(node, 0); 12644 return 0; 12645 } 12646 case 2: 12647 case 3: 12648 return 3; 12649 case 9: 12650 case 11: 12651 case 10: 12652 return 0; 12653 case 5: 12654 case 12: 12655 return getConstantType(node.content, context); 12656 case 4: 12657 return node.constType; 12658 case 8: 12659 let returnType = 3; 12660 for (let i = 0; i < node.children.length; i++) { 12661 const child = node.children[i]; 12662 if (isString$3(child) || isSymbol$2(child)) { 12663 continue; 12664 }
vendor: 5,417 bytes, lines 12665-12877
12665 const childType = getConstantType(child, context); 12666 if (childType === 0) { 12667 return 0; 12668 } else if (childType < returnType) { 12669 returnType = childType; 12670 } 12671 } 12672 return returnType; 12673 case 20: 12674 return 2; 12675 default: 12676 return 0; 12677 } 12678} 12679const allowHoistedHelperSet = /* @__PURE__ */ new Set([ 12680 NORMALIZE_CLASS, 12681 NORMALIZE_STYLE, 12682 NORMALIZE_PROPS, 12683 GUARD_REACTIVE_PROPS 12684]); 12685function getConstantTypeOfHelperCall(value, context) { 12686 if (value.type === 14 && !isString$3(value.callee) && allowHoistedHelperSet.has(value.callee)) { 12687 const arg = value.arguments[0]; 12688 if (arg.type === 4) { 12689 return getConstantType(arg, context); 12690 } else if (arg.type === 14) { 12691 return getConstantTypeOfHelperCall(arg, context); 12692 } 12693 } 12694 return 0; 12695} 12696function getGeneratedPropsConstantType(node, context) { 12697 let returnType = 3; 12698 const props2 = getNodeProps(node); 12699 if (props2 && props2.type === 15) { 12700 const { properties } = props2; 12701 for (let i = 0; i < properties.length; i++) { 12702 const { key, value } = properties[i]; 12703 const keyType = getConstantType(key, context); 12704 if (keyType === 0) { 12705 return keyType; 12706 } 12707 if (keyType < returnType) { 12708 returnType = keyType; 12709 } 12710 let valueType; 12711 if (value.type === 4) { 12712 valueType = getConstantType(value, context); 12713 } else if (value.type === 14) { 12714 valueType = getConstantTypeOfHelperCall(value, context); 12715 } else { 12716 valueType = 0; 12717 } 12718 if (valueType === 0) { 12719 return valueType; 12720 } 12721 if (valueType < returnType) { 12722 returnType = valueType; 12723 } 12724 } 12725 } 12726 return returnType; 12727} 12728function getNodeProps(node) { 12729 const codegenNode = node.codegenNode; 12730 if (codegenNode.type === 13) { 12731 return codegenNode.props; 12732 } 12733} 12734function createTransformContext(root2, { 12735 filename = "", 12736 prefixIdentifiers = false, 12737 hoistStatic = false, 12738 hmr = false, 12739 cacheHandlers = false, 12740 nodeTransforms = [], 12741 directiveTransforms = {}, 12742 transformHoist = null, 12743 isBuiltInComponent = NOOP, 12744 isCustomElement = NOOP, 12745 expressionPlugins = [], 12746 scopeId = null, 12747 slotted = true, 12748 ssr = false, 12749 inSSR = false, 12750 ssrCssVars = ``, 12751 bindingMetadata = EMPTY_OBJ, 12752 inline = false, 12753 isTS = false, 12754 onError = defaultOnError$1, 12755 onWarn = defaultOnWarn, 12756 compatConfig 12757}) { 12758 const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); 12759 const context = { 12760 // options 12761 filename, 12762 selfName: nameMatch && capitalize$1(camelize(nameMatch[1])), 12763 prefixIdentifiers, 12764 hoistStatic, 12765 hmr, 12766 cacheHandlers, 12767 nodeTransforms, 12768 directiveTransforms, 12769 transformHoist, 12770 isBuiltInComponent, 12771 isCustomElement, 12772 expressionPlugins, 12773 scopeId, 12774 slotted, 12775 ssr, 12776 inSSR, 12777 ssrCssVars, 12778 bindingMetadata, 12779 inline, 12780 isTS, 12781 onError, 12782 onWarn, 12783 compatConfig, 12784 // state 12785 root: root2, 12786 helpers: /* @__PURE__ */ new Map(), 12787 components: /* @__PURE__ */ new Set(), 12788 directives: /* @__PURE__ */ new Set(), 12789 hoists: [], 12790 imports: [], 12791 cached: [], 12792 constantCache: /* @__PURE__ */ new WeakMap(), 12793 temps: 0, 12794 identifiers: /* @__PURE__ */ Object.create(null), 12795 scopes: { 12796 vFor: 0, 12797 vSlot: 0, 12798 vPre: 0, 12799 vOnce: 0 12800 }, 12801 parent: null, 12802 grandParent: null, 12803 currentNode: root2, 12804 childIndex: 0, 12805 inVOnce: false, 12806 // methods 12807 helper(name) { 12808 const count = context.helpers.get(name) || 0; 12809 context.helpers.set(name, count + 1); 12810 return name; 12811 }, 12812 removeHelper(name) { 12813 const count = context.helpers.get(name); 12814 if (count) { 12815 const currentCount = count - 1; 12816 if (!currentCount) { 12817 context.helpers.delete(name); 12818 } else { 12819 context.helpers.set(name, currentCount); 12820 } 12821 } 12822 }, 12823 helperString(name) { 12824 return `_${helperNameMap[context.helper(name)]}`; 12825 }, 12826 replaceNode(node) { 12827 context.parent.children[context.childIndex] = context.currentNode = node; 12828 }, 12829 removeNode(node) { 12830 const list = context.parent.children; 12831 const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; 12832 if (!node || node === context.currentNode) { 12833 context.currentNode = null; 12834 context.onNodeRemoved(); 12835 } else { 12836 if (context.childIndex > removalIndex) { 12837 context.childIndex--; 12838 context.onNodeRemoved(); 12839 } 12840 } 12841 context.parent.children.splice(removalIndex, 1); 12842 }, 12843 onNodeRemoved: NOOP, 12844 addIdentifiers(exp) { 12845 }, 12846 removeIdentifiers(exp) { 12847 }, 12848 hoist(exp) { 12849 if (isString$3(exp)) exp = createSimpleExpression(exp); 12850 context.hoists.push(exp); 12851 const identifier = createSimpleExpression( 12852 `_hoisted_${context.hoists.length}`, 12853 false, 12854 exp.loc, 12855 2 12856 ); 12857 identifier.hoisted = exp; 12858 return identifier; 12859 }, 12860 cache(exp, isVNode2 = false, inVOnce = false) { 12861 const cacheExp = createCacheExpression( 12862 context.cached.length, 12863 exp, 12864 isVNode2, 12865 inVOnce 12866 ); 12867 context.cached.push(cacheExp); 12868 return cacheExp; 12869 } 12870 }; 12871 { 12872 context.filters = /* @__PURE__ */ new Set(); 12873 } 12874 return context; 12875} 12876function transform$1(root2, options2) { 12877 const context = createTransformContext(root2, options2);
vendor: 5,118 bytes, lines 12878-13090
12878 traverseNode$1(root2, context); 12879 if (options2.hoistStatic) { 12880 cacheStatic(root2, context); 12881 } 12882 if (!options2.ssr) { 12883 createRootCodegen(root2, context); 12884 } 12885 root2.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); 12886 root2.components = [...context.components]; 12887 root2.directives = [...context.directives]; 12888 root2.imports = context.imports; 12889 root2.hoists = context.hoists; 12890 root2.temps = context.temps; 12891 root2.cached = context.cached; 12892 root2.transformed = true; 12893 { 12894 root2.filters = [...context.filters]; 12895 } 12896} 12897function createRootCodegen(root2, context) { 12898 const { helper } = context; 12899 const { children } = root2; 12900 if (children.length === 1) { 12901 const child = children[0]; 12902 if (isSingleElementRoot(root2, child) && child.codegenNode) { 12903 const codegenNode = child.codegenNode; 12904 if (codegenNode.type === 13) { 12905 convertToBlock(codegenNode, context); 12906 } 12907 root2.codegenNode = codegenNode; 12908 } else { 12909 root2.codegenNode = child; 12910 } 12911 } else if (children.length > 1) { 12912 let patchFlag = 64; 12913 root2.codegenNode = createVNodeCall( 12914 context, 12915 helper(FRAGMENT), 12916 void 0, 12917 root2.children, 12918 patchFlag, 12919 void 0, 12920 void 0, 12921 true, 12922 void 0, 12923 false 12924 ); 12925 } else ; 12926} 12927function traverseChildren(parent, context) { 12928 let i = 0; 12929 const nodeRemoved = () => { 12930 i--; 12931 }; 12932 for (; i < parent.children.length; i++) { 12933 const child = parent.children[i]; 12934 if (isString$3(child)) continue; 12935 context.grandParent = context.parent; 12936 context.parent = parent; 12937 context.childIndex = i; 12938 context.onNodeRemoved = nodeRemoved; 12939 traverseNode$1(child, context); 12940 } 12941} 12942function traverseNode$1(node, context) { 12943 context.currentNode = node; 12944 const { nodeTransforms } = context; 12945 const exitFns = []; 12946 for (let i2 = 0; i2 < nodeTransforms.length; i2++) { 12947 const onExit = nodeTransforms[i2](node, context); 12948 if (onExit) { 12949 if (isArray$3(onExit)) { 12950 exitFns.push(...onExit); 12951 } else { 12952 exitFns.push(onExit); 12953 } 12954 } 12955 if (!context.currentNode) { 12956 return; 12957 } else { 12958 node = context.currentNode; 12959 } 12960 } 12961 switch (node.type) { 12962 case 3: 12963 if (!context.ssr) { 12964 context.helper(CREATE_COMMENT); 12965 } 12966 break; 12967 case 5: 12968 if (!context.ssr) { 12969 context.helper(TO_DISPLAY_STRING); 12970 } 12971 break; 12972 // for container types, further traverse downwards 12973 case 9: 12974 for (let i2 = 0; i2 < node.branches.length; i2++) { 12975 traverseNode$1(node.branches[i2], context); 12976 } 12977 break; 12978 case 10: 12979 case 11: 12980 case 1: 12981 case 0: 12982 traverseChildren(node, context); 12983 break; 12984 } 12985 context.currentNode = node; 12986 let i = exitFns.length; 12987 while (i--) { 12988 exitFns[i](); 12989 } 12990} 12991function createStructuralDirectiveTransform(name, fn) { 12992 const matches2 = isString$3(name) ? (n) => n === name : (n) => name.test(n); 12993 return (node, context) => { 12994 if (node.type === 1) { 12995 const { props: props2 } = node; 12996 if (node.tagType === 3 && props2.some(isVSlot)) { 12997 return; 12998 } 12999 const exitFns = []; 13000 for (let i = 0; i < props2.length; i++) { 13001 const prop = props2[i]; 13002 if (prop.type === 7 && matches2(prop.name)) { 13003 props2.splice(i, 1); 13004 i--; 13005 const onExit = fn(node, prop, context); 13006 if (onExit) exitFns.push(onExit); 13007 } 13008 } 13009 return exitFns; 13010 } 13011 }; 13012} 13013const PURE_ANNOTATION = `/*@__PURE__*/`; 13014const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; 13015function createCodegenContext(ast, { 13016 mode = "function", 13017 prefixIdentifiers = mode === "module", 13018 sourceMap = false, 13019 filename = `template.vue.html`, 13020 scopeId = null, 13021 optimizeImports = false, 13022 runtimeGlobalName = `Vue`, 13023 runtimeModuleName = `vue`, 13024 ssrRuntimeModuleName = "vue/server-renderer", 13025 ssr = false, 13026 isTS = false, 13027 inSSR = false 13028}) { 13029 const context = { 13030 mode, 13031 prefixIdentifiers, 13032 sourceMap, 13033 filename, 13034 scopeId, 13035 optimizeImports, 13036 runtimeGlobalName, 13037 runtimeModuleName, 13038 ssrRuntimeModuleName, 13039 ssr, 13040 isTS, 13041 inSSR, 13042 source: ast.source, 13043 code: ``, 13044 column: 1, 13045 line: 1, 13046 offset: 0, 13047 indentLevel: 0, 13048 pure: false, 13049 map: void 0, 13050 helper(key) { 13051 return `_${helperNameMap[key]}`; 13052 }, 13053 push(code, newlineIndex = -2, node) { 13054 context.code += code; 13055 }, 13056 indent() { 13057 newline(++context.indentLevel); 13058 }, 13059 deindent(withoutNewLine = false) { 13060 if (withoutNewLine) { 13061 --context.indentLevel; 13062 } else { 13063 newline(--context.indentLevel); 13064 } 13065 }, 13066 newline() { 13067 newline(context.indentLevel); 13068 } 13069 }; 13070 function newline(n) { 13071 context.push( 13072 "\n" + ` `.repeat(n), 13073 0 13074 /* Start */ 13075 ); 13076 } 13077 return context; 13078} 13079function generate$1(ast, options2 = {}) { 13080 const context = createCodegenContext(ast, options2); 13081 if (options2.onContextCreated) options2.onContextCreated(context); 13082 const { 13083 mode, 13084 push, 13085 prefixIdentifiers, 13086 indent, 13087 deindent, 13088 newline, 13089 scopeId, 13090 ssr
vendor: 6,416 bytes, lines 13091-13371
13091 } = context; 13092 const helpers = Array.from(ast.helpers); 13093 const hasHelpers = helpers.length > 0; 13094 const useWithBlock = !prefixIdentifiers && mode !== "module"; 13095 const preambleContext = context; 13096 { 13097 genFunctionPreamble(ast, preambleContext); 13098 } 13099 const functionName = ssr ? `ssrRender` : `render`; 13100 const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; 13101 const signature = args.join(", "); 13102 { 13103 push(`function ${functionName}(${signature}) {`); 13104 } 13105 indent(); 13106 if (useWithBlock) { 13107 push(`with (_ctx) {`); 13108 indent(); 13109 if (hasHelpers) { 13110 push( 13111 `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue 13112`, 13113 -1 13114 /* End */ 13115 ); 13116 newline(); 13117 } 13118 } 13119 if (ast.components.length) { 13120 genAssets(ast.components, "component", context); 13121 if (ast.directives.length || ast.temps > 0) { 13122 newline(); 13123 } 13124 } 13125 if (ast.directives.length) { 13126 genAssets(ast.directives, "directive", context); 13127 if (ast.temps > 0) { 13128 newline(); 13129 } 13130 } 13131 if (ast.filters && ast.filters.length) { 13132 newline(); 13133 genAssets(ast.filters, "filter", context); 13134 newline(); 13135 } 13136 if (ast.temps > 0) { 13137 push(`let `); 13138 for (let i = 0; i < ast.temps; i++) { 13139 push(`${i > 0 ? `, ` : ``}_temp${i}`); 13140 } 13141 } 13142 if (ast.components.length || ast.directives.length || ast.temps) { 13143 push( 13144 ` 13145`, 13146 0 13147 /* Start */ 13148 ); 13149 newline(); 13150 } 13151 if (!ssr) { 13152 push(`return `); 13153 } 13154 if (ast.codegenNode) { 13155 genNode(ast.codegenNode, context); 13156 } else { 13157 push(`null`); 13158 } 13159 if (useWithBlock) { 13160 deindent(); 13161 push(`}`); 13162 } 13163 deindent(); 13164 push(`}`); 13165 return { 13166 ast, 13167 code: context.code, 13168 preamble: ``, 13169 map: context.map ? context.map.toJSON() : void 0 13170 }; 13171} 13172function genFunctionPreamble(ast, context) { 13173 const { 13174 ssr, 13175 prefixIdentifiers, 13176 push, 13177 newline, 13178 runtimeModuleName, 13179 runtimeGlobalName, 13180 ssrRuntimeModuleName 13181 } = context; 13182 const VueBinding = runtimeGlobalName; 13183 const helpers = Array.from(ast.helpers); 13184 if (helpers.length > 0) { 13185 { 13186 push( 13187 `const _Vue = ${VueBinding} 13188`, 13189 -1 13190 /* End */ 13191 ); 13192 if (ast.hoists.length) { 13193 const staticHelpers = [ 13194 CREATE_VNODE, 13195 CREATE_ELEMENT_VNODE, 13196 CREATE_COMMENT, 13197 CREATE_TEXT, 13198 CREATE_STATIC 13199 ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); 13200 push( 13201 `const { ${staticHelpers} } = _Vue 13202`, 13203 -1 13204 /* End */ 13205 ); 13206 } 13207 } 13208 } 13209 genHoists(ast.hoists, context); 13210 newline(); 13211 push(`return `); 13212} 13213function genAssets(assets, type, { helper, push, newline, isTS }) { 13214 const resolver = helper( 13215 type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE 13216 ); 13217 for (let i = 0; i < assets.length; i++) { 13218 let id = assets[i]; 13219 const maybeSelfReference = id.endsWith("__self"); 13220 if (maybeSelfReference) { 13221 id = id.slice(0, -6); 13222 } 13223 push( 13224 `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` 13225 ); 13226 if (i < assets.length - 1) { 13227 newline(); 13228 } 13229 } 13230} 13231function genHoists(hoists, context) { 13232 if (!hoists.length) { 13233 return; 13234 } 13235 context.pure = true; 13236 const { push, newline } = context; 13237 newline(); 13238 for (let i = 0; i < hoists.length; i++) { 13239 const exp = hoists[i]; 13240 if (exp) { 13241 push(`const _hoisted_${i + 1} = `); 13242 genNode(exp, context); 13243 newline(); 13244 } 13245 } 13246 context.pure = false; 13247} 13248function genNodeListAsArray(nodes, context) { 13249 const multilines = nodes.length > 3 || false; 13250 context.push(`[`); 13251 multilines && context.indent(); 13252 genNodeList(nodes, context, multilines); 13253 multilines && context.deindent(); 13254 context.push(`]`); 13255} 13256function genNodeList(nodes, context, multilines = false, comma = true) { 13257 const { push, newline } = context; 13258 for (let i = 0; i < nodes.length; i++) { 13259 const node = nodes[i]; 13260 if (isString$3(node)) { 13261 push( 13262 node, 13263 -3 13264 /* Unknown */ 13265 ); 13266 } else if (isArray$3(node)) { 13267 genNodeListAsArray(node, context); 13268 } else { 13269 genNode(node, context); 13270 } 13271 if (i < nodes.length - 1) { 13272 if (multilines) { 13273 comma && push(","); 13274 newline(); 13275 } else { 13276 comma && push(", "); 13277 } 13278 } 13279 } 13280} 13281function genNode(node, context) { 13282 if (isString$3(node)) { 13283 context.push( 13284 node, 13285 -3 13286 /* Unknown */ 13287 ); 13288 return; 13289 } 13290 if (isSymbol$2(node)) { 13291 context.push(context.helper(node)); 13292 return; 13293 } 13294 switch (node.type) { 13295 case 1: 13296 case 9: 13297 case 11: 13298 genNode(node.codegenNode, context); 13299 break; 13300 case 2: 13301 genText(node, context); 13302 break; 13303 case 4: 13304 genExpression(node, context); 13305 break; 13306 case 5: 13307 genInterpolation(node, context); 13308 break; 13309 case 12: 13310 genNode(node.codegenNode, context); 13311 break; 13312 case 8: 13313 genCompoundExpression(node, context); 13314 break; 13315 case 3: 13316 genComment(node, context); 13317 break; 13318 case 13: 13319 genVNodeCall(node, context); 13320 break; 13321 case 14: 13322 genCallExpression(node, context); 13323 break; 13324 case 15: 13325 genObjectExpression(node, context); 13326 break; 13327 case 17: 13328 genArrayExpression(node, context); 13329 break; 13330 case 18: 13331 genFunctionExpression(node, context); 13332 break; 13333 case 19: 13334 genConditionalExpression(node, context); 13335 break; 13336 case 20: 13337 genCacheExpression(node, context); 13338 break; 13339 case 21: 13340 genNodeList(node.body, context, true, false); 13341 break; 13342 } 13343} 13344function genText(node, context) { 13345 context.push(JSON.stringify(node.content), -3, node); 13346} 13347function genExpression(node, context) { 13348 const { content, isStatic } = node; 13349 context.push( 13350 isStatic ? JSON.stringify(content) : content, 13351 -3, 13352 node 13353 ); 13354} 13355function genInterpolation(node, context) { 13356 const { push, helper, pure } = context; 13357 if (pure) push(PURE_ANNOTATION); 13358 push(`${helper(TO_DISPLAY_STRING)}(`); 13359 genNode(node.content, context); 13360 push(`)`); 13361} 13362function genCompoundExpression(node, context) { 13363 for (let i = 0; i < node.children.length; i++) { 13364 const child = node.children[i]; 13365 if (isString$3(child)) { 13366 context.push( 13367 child, 13368 -3 13369 /* Unknown */ 13370 ); 13371 } else {
vendor: 4,141 bytes, lines 13372-13540
13372 genNode(child, context); 13373 } 13374 } 13375} 13376function genExpressionAsPropertyKey(node, context) { 13377 const { push } = context; 13378 if (node.type === 8) { 13379 push(`[`); 13380 genCompoundExpression(node, context); 13381 push(`]`); 13382 } else if (node.isStatic) { 13383 const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); 13384 push(text, -2, node); 13385 } else { 13386 push(`[${node.content}]`, -3, node); 13387 } 13388} 13389function genComment(node, context) { 13390 const { push, helper, pure } = context; 13391 if (pure) { 13392 push(PURE_ANNOTATION); 13393 } 13394 push( 13395 `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, 13396 -3, 13397 node 13398 ); 13399} 13400function genVNodeCall(node, context) { 13401 const { push, helper, pure } = context; 13402 const { 13403 tag, 13404 props: props2, 13405 children, 13406 patchFlag, 13407 dynamicProps, 13408 directives, 13409 isBlock, 13410 disableTracking, 13411 isComponent: isComponent2 13412 } = node; 13413 let patchFlagString; 13414 if (patchFlag) { 13415 { 13416 patchFlagString = String(patchFlag); 13417 } 13418 } 13419 if (directives) { 13420 push(helper(WITH_DIRECTIVES) + `(`); 13421 } 13422 if (isBlock) { 13423 push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); 13424 } 13425 if (pure) { 13426 push(PURE_ANNOTATION); 13427 } 13428 const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent2) : getVNodeHelper(context.inSSR, isComponent2); 13429 push(helper(callHelper) + `(`, -2, node); 13430 genNodeList( 13431 genNullableArgs([tag, props2, children, patchFlagString, dynamicProps]), 13432 context 13433 ); 13434 push(`)`); 13435 if (isBlock) { 13436 push(`)`); 13437 } 13438 if (directives) { 13439 push(`, `); 13440 genNode(directives, context); 13441 push(`)`); 13442 } 13443} 13444function genNullableArgs(args) { 13445 let i = args.length; 13446 while (i--) { 13447 if (args[i] != null) break; 13448 } 13449 return args.slice(0, i + 1).map((arg) => arg || `null`); 13450} 13451function genCallExpression(node, context) { 13452 const { push, helper, pure } = context; 13453 const callee = isString$3(node.callee) ? node.callee : helper(node.callee); 13454 if (pure) { 13455 push(PURE_ANNOTATION); 13456 } 13457 push(callee + `(`, -2, node); 13458 genNodeList(node.arguments, context); 13459 push(`)`); 13460} 13461function genObjectExpression(node, context) { 13462 const { push, indent, deindent, newline } = context; 13463 const { properties } = node; 13464 if (!properties.length) { 13465 push(`{}`, -2, node); 13466 return; 13467 } 13468 const multilines = properties.length > 1 || false; 13469 push(multilines ? `{` : `{ `); 13470 multilines && indent(); 13471 for (let i = 0; i < properties.length; i++) { 13472 const { key, value } = properties[i]; 13473 genExpressionAsPropertyKey(key, context); 13474 push(`: `); 13475 genNode(value, context); 13476 if (i < properties.length - 1) { 13477 push(`,`); 13478 newline(); 13479 } 13480 } 13481 multilines && deindent(); 13482 push(multilines ? `}` : ` }`); 13483} 13484function genArrayExpression(node, context) { 13485 genNodeListAsArray(node.elements, context); 13486} 13487function genFunctionExpression(node, context) { 13488 const { push, indent, deindent } = context; 13489 const { params, returns, body, newline, isSlot } = node; 13490 if (isSlot) { 13491 push(`_${helperNameMap[WITH_CTX]}(`); 13492 } 13493 push(`(`, -2, node); 13494 if (isArray$3(params)) { 13495 genNodeList(params, context); 13496 } else if (params) { 13497 genNode(params, context); 13498 } 13499 push(`) => `); 13500 if (newline || body) { 13501 push(`{`); 13502 indent(); 13503 } 13504 if (returns) { 13505 if (newline) { 13506 push(`return `); 13507 } 13508 if (isArray$3(returns)) { 13509 genNodeListAsArray(returns, context); 13510 } else { 13511 genNode(returns, context); 13512 } 13513 } else if (body) { 13514 genNode(body, context); 13515 } 13516 if (newline || body) { 13517 deindent(); 13518 push(`}`); 13519 } 13520 if (isSlot) { 13521 if (node.isNonScopedSlot) { 13522 push(`, undefined, true`); 13523 } 13524 push(`)`); 13525 } 13526} 13527function genConditionalExpression(node, context) { 13528 const { test: test2, consequent, alternate, newline: needNewline } = node; 13529 const { push, indent, deindent, newline } = context; 13530 if (test2.type === 4) { 13531 const needsParens = !isSimpleIdentifier(test2.content); 13532 needsParens && push(`(`); 13533 genExpression(test2, context); 13534 needsParens && push(`)`); 13535 } else { 13536 push(`(`); 13537 genNode(test2, context); 13538 push(`)`); 13539 } 13540 needNewline && indent();
vendor: 4,143 bytes, lines 13541-13684
13541 context.indentLevel++; 13542 needNewline || push(` `); 13543 push(`? `); 13544 genNode(consequent, context); 13545 context.indentLevel--; 13546 needNewline && newline(); 13547 needNewline || push(` `); 13548 push(`: `); 13549 const isNested = alternate.type === 19; 13550 if (!isNested) { 13551 context.indentLevel++; 13552 } 13553 genNode(alternate, context); 13554 if (!isNested) { 13555 context.indentLevel--; 13556 } 13557 needNewline && deindent( 13558 true 13559 /* without newline */ 13560 ); 13561} 13562function genCacheExpression(node, context) { 13563 const { push, helper, indent, deindent, newline } = context; 13564 const { needPauseTracking, needArraySpread } = node; 13565 if (needArraySpread) { 13566 push(`[...(`); 13567 } 13568 push(`_cache[${node.index}] || (`); 13569 if (needPauseTracking) { 13570 indent(); 13571 push(`${helper(SET_BLOCK_TRACKING)}(-1`); 13572 if (node.inVOnce) push(`, true`); 13573 push(`),`); 13574 newline(); 13575 push(`(`); 13576 } 13577 push(`_cache[${node.index}] = `); 13578 genNode(node.value, context); 13579 if (needPauseTracking) { 13580 push(`).cacheIndex = ${node.index},`); 13581 newline(); 13582 push(`${helper(SET_BLOCK_TRACKING)}(1),`); 13583 newline(); 13584 push(`_cache[${node.index}]`); 13585 deindent(); 13586 } 13587 push(`)`); 13588 if (needArraySpread) { 13589 push(`)]`); 13590 } 13591} 13592new RegExp( 13593 "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b" 13594); 13595const transformIf = createStructuralDirectiveTransform( 13596 /^(if|else|else-if)$/, 13597 (node, dir, context) => { 13598 return processIf(node, dir, context, (ifNode, branch, isRoot) => { 13599 const siblings = context.parent.children; 13600 let i = siblings.indexOf(ifNode); 13601 let key = 0; 13602 while (i-- >= 0) { 13603 const sibling = siblings[i]; 13604 if (sibling && sibling.type === 9) { 13605 key += sibling.branches.length; 13606 } 13607 } 13608 return () => { 13609 if (isRoot) { 13610 ifNode.codegenNode = createCodegenNodeForBranch( 13611 branch, 13612 key, 13613 context 13614 ); 13615 } else { 13616 const parentCondition = getParentCondition(ifNode.codegenNode); 13617 parentCondition.alternate = createCodegenNodeForBranch( 13618 branch, 13619 key + ifNode.branches.length - 1, 13620 context 13621 ); 13622 } 13623 }; 13624 }); 13625 } 13626); 13627function processIf(node, dir, context, processCodegen) { 13628 if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { 13629 const loc = dir.exp ? dir.exp.loc : node.loc; 13630 context.onError( 13631 createCompilerError(28, dir.loc) 13632 ); 13633 dir.exp = createSimpleExpression(`true`, false, loc); 13634 } 13635 if (dir.name === "if") { 13636 const branch = createIfBranch(node, dir); 13637 const ifNode = { 13638 type: 9, 13639 loc: cloneLoc(node.loc), 13640 branches: [branch] 13641 }; 13642 context.replaceNode(ifNode); 13643 if (processCodegen) { 13644 return processCodegen(ifNode, branch, true); 13645 } 13646 } else { 13647 const siblings = context.parent.children; 13648 let i = siblings.indexOf(node); 13649 while (i-- >= -1) { 13650 const sibling = siblings[i]; 13651 if (sibling && sibling.type === 3) { 13652 context.removeNode(sibling); 13653 continue; 13654 } 13655 if (sibling && sibling.type === 2 && !sibling.content.trim().length) { 13656 context.removeNode(sibling); 13657 continue; 13658 } 13659 if (sibling && sibling.type === 9) { 13660 if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { 13661 context.onError( 13662 createCompilerError(30, node.loc) 13663 ); 13664 } 13665 context.removeNode(); 13666 const branch = createIfBranch(node, dir); 13667 sibling.branches.push(branch); 13668 const onExit = processCodegen && processCodegen(sibling, branch, false); 13669 traverseNode$1(branch, context); 13670 if (onExit) onExit(); 13671 context.currentNode = null; 13672 } else { 13673 context.onError( 13674 createCompilerError(30, node.loc) 13675 ); 13676 } 13677 break; 13678 } 13679 } 13680} 13681function createIfBranch(node, dir) { 13682 const isTemplateIf = node.tagType === 3; 13683 return { 13684 type: 10,
13685 loc: node.loc, 13686 condition: dir.name === "else" ? void 0 : dir.exp, 13687 children: isTemplateIf && !findDir(node, "for") ? node.children : [node], 13688 userKey: findProp(node, `key`), 13689 isTemplateIf 13690 }; 13691} 13692function createCodegenNodeForBranch(branch, keyIndex, context) { 13693 if (branch.condition) { 13694 return createConditionalExpression( 13695 branch.condition, 13696 createChildrenCodegenNode(branch, keyIndex, context), 13697 // make sure to pass in asBlock: true so that the comment node call 13698 // closes the current block. 13699 createCallExpression(context.helper(CREATE_COMMENT), [ 13700 '""', 13701 "true" 13702 ]) 13703 ); 13704 } else { 13705 return createChildrenCodegenNode(branch, keyIndex, context); 13706 } 13707} 13708function createChildrenCodegenNode(branch, keyIndex, context) { 13709 const { helper } = context; 13710 const keyProperty = createObjectProperty( 13711 `key`, 13712 createSimpleExpression( 13713 `${keyIndex}`, 13714 false, 13715 locStub, 13716 2 13717 ) 13718 ); 13719 const { children } = branch; 13720 const firstChild = children[0]; 13721 const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; 13722 if (needFragmentWrapper) { 13723 if (children.length === 1 && firstChild.type === 11) { 13724 const vnodeCall = firstChild.codegenNode; 13725 injectProp(vnodeCall, keyProperty, context); 13726 return vnodeCall; 13727 } else { 13728 let patchFlag = 64; 13729 return createVNodeCall( 13730 context, 13731 helper(FRAGMENT), 13732 createObjectExpression([keyProperty]), 13733 children, 13734 patchFlag, 13735 void 0, 13736 void 0, 13737 true, 13738 false, 13739 false, 13740 branch.loc 13741 ); 13742 } 13743 } else { 13744 const ret = firstChild.codegenNode; 13745 const vnodeCall = getMemoedVNodeCall(ret); 13746 if (vnodeCall.type === 13) { 13747 convertToBlock(vnodeCall, context); 13748 } 13749 injectProp(vnodeCall, keyProperty, context); 13750 return ret; 13751 } 13752} 13753function getParentCondition(node) { 13754 while (true) { 13755 if (node.type === 19) { 13756 if (node.alternate.type === 19) { 13757 node = node.alternate; 13758 } else { 13759 return node; 13760 } 13761 } else if (node.type === 20) { 13762 node = node.value; 13763 } 13764 } 13765} 13766const transformBind = (dir, _node, context) => { 13767 const { modifiers, loc } = dir; 13768 const arg = dir.arg; 13769 let { exp } = dir; 13770 if (exp && exp.type === 4 && !exp.content.trim()) { 13771 { 13772 exp = void 0; 13773 } 13774 } 13775 if (!exp) { 13776 if (arg.type !== 4 || !arg.isStatic) { 13777 context.onError( 13778 createCompilerError( 13779 52, 13780 arg.loc 13781 ) 13782 ); 13783 return { 13784 props: [ 13785 createObjectProperty(arg, createSimpleExpression("", true, loc)) 13786 ] 13787 }; 13788 } 13789 transformBindShorthand(dir); 13790 exp = dir.exp; 13791 } 13792 if (arg.type !== 4) { 13793 arg.children.unshift(`(`); 13794 arg.children.push(`) || ""`); 13795 } else if (!arg.isStatic) { 13796 arg.content = `${arg.content} || ""`; 13797 } 13798 if (modifiers.some((mod) => mod.content === "camel")) { 13799 if (arg.type === 4) { 13800 if (arg.isStatic) { 13801 arg.content = camelize(arg.content); 13802 } else { 13803 arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; 13804 } 13805 } else { 13806 arg.children.unshift(`${context.helperString(CAMELIZE)}(`); 13807 arg.children.push(`)`); 13808 } 13809 } 13810 if (!context.inSSR) { 13811 if (modifiers.some((mod) => mod.content === "prop")) { 13812 injectPrefix(arg, "."); 13813 } 13814 if (modifiers.some((mod) => mod.content === "attr")) { 13815 injectPrefix(arg, "^"); 13816 } 13817 } 13818 return { 13819 props: [createObjectProperty(arg, exp)] 13820 }; 13821}; 13822const transformBindShorthand = (dir, context) => { 13823 const arg = dir.arg; 13824 const propName = camelize(arg.content); 13825 dir.exp = createSimpleExpression(propName, false, arg.loc); 13826}; 13827const injectPrefix = (arg, prefix) => { 13828 if (arg.type === 4) { 13829 if (arg.isStatic) { 13830 arg.content = prefix + arg.content; 13831 } else { 13832 arg.content = `\`${prefix}\${${arg.content}}\``; 13833 } 13834 } else { 13835 arg.children.unshift(`'${prefix}' + (`); 13836 arg.children.push(`)`); 13837 } 13838}; 13839const transformFor = createStructuralDirectiveTransform( 13840 "for", 13841 (node, dir, context) => { 13842 const { helper, removeHelper } = context;
13843 return processFor(node, dir, context, (forNode) => { 13844 const renderExp = createCallExpression(helper(RENDER_LIST), [ 13845 forNode.source 13846 ]); 13847 const isTemplate = isTemplateNode(node); 13848 const memo = findDir(node, "memo"); 13849 const keyProp = findProp(node, `key`, false, true); 13850 const isDirKey = keyProp && keyProp.type === 7; 13851 if (isDirKey && !keyProp.exp) { 13852 transformBindShorthand(keyProp); 13853 } 13854 let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); 13855 const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; 13856 const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; 13857 const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; 13858 forNode.codegenNode = createVNodeCall( 13859 context, 13860 helper(FRAGMENT), 13861 void 0, 13862 renderExp, 13863 fragmentFlag, 13864 void 0, 13865 void 0, 13866 true, 13867 !isStableFragment, 13868 false, 13869 node.loc 13870 ); 13871 return () => { 13872 let childBlock; 13873 const { children } = forNode; 13874 const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; 13875 const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; 13876 if (slotOutlet) { 13877 childBlock = slotOutlet.codegenNode; 13878 if (isTemplate && keyProperty) { 13879 injectProp(childBlock, keyProperty, context); 13880 } 13881 } else if (needFragmentWrapper) { 13882 childBlock = createVNodeCall( 13883 context, 13884 helper(FRAGMENT), 13885 keyProperty ? createObjectExpression([keyProperty]) : void 0, 13886 node.children, 13887 64, 13888 void 0, 13889 void 0, 13890 true, 13891 void 0, 13892 false 13893 ); 13894 } else { 13895 childBlock = children[0].codegenNode; 13896 if (isTemplate && keyProperty) { 13897 injectProp(childBlock, keyProperty, context); 13898 } 13899 if (childBlock.isBlock !== !isStableFragment) { 13900 if (childBlock.isBlock) { 13901 removeHelper(OPEN_BLOCK); 13902 removeHelper( 13903 getVNodeBlockHelper(context.inSSR, childBlock.isComponent) 13904 ); 13905 } else { 13906 removeHelper( 13907 getVNodeHelper(context.inSSR, childBlock.isComponent) 13908 ); 13909 } 13910 } 13911 childBlock.isBlock = !isStableFragment; 13912 if (childBlock.isBlock) { 13913 helper(OPEN_BLOCK); 13914 helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); 13915 } else { 13916 helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); 13917 } 13918 } 13919 if (memo) { 13920 const loop2 = createFunctionExpression( 13921 createForLoopParams(forNode.parseResult, [ 13922 createSimpleExpression(`_cached`) 13923 ]) 13924 ); 13925 loop2.body = createBlockStatement([ 13926 createCompoundExpression([`const _memo = (`, memo.exp, `)`]), 13927 createCompoundExpression([ 13928 `if (_cached`, 13929 ...keyExp ? [` && _cached.key === `, keyExp] : [], 13930 ` && ${context.helperString( 13931 IS_MEMO_SAME 13932 )}(_cached, _memo)) return _cached` 13933 ]), 13934 createCompoundExpression([`const _item = `, childBlock]), 13935 createSimpleExpression(`_item.memo = _memo`), 13936 createSimpleExpression(`return _item`) 13937 ]); 13938 renderExp.arguments.push( 13939 loop2, 13940 createSimpleExpression(`_cache`), 13941 createSimpleExpression(String(context.cached.length)) 13942 ); 13943 context.cached.push(null); 13944 } else { 13945 renderExp.arguments.push( 13946 createFunctionExpression( 13947 createForLoopParams(forNode.parseResult), 13948 childBlock, 13949 true 13950 ) 13951 ); 13952 } 13953 }; 13954 }); 13955 } 13956);
vendor: 5,911 bytes, lines 13957-14162
13957function processFor(node, dir, context, processCodegen) { 13958 if (!dir.exp) { 13959 context.onError( 13960 createCompilerError(31, dir.loc) 13961 ); 13962 return; 13963 } 13964 const parseResult = dir.forParseResult; 13965 if (!parseResult) { 13966 context.onError( 13967 createCompilerError(32, dir.loc) 13968 ); 13969 return; 13970 } 13971 finalizeForParseResult(parseResult); 13972 const { addIdentifiers, removeIdentifiers, scopes } = context; 13973 const { source, value, key, index: index2 } = parseResult; 13974 const forNode = { 13975 type: 11, 13976 loc: dir.loc, 13977 source, 13978 valueAlias: value, 13979 keyAlias: key, 13980 objectIndexAlias: index2, 13981 parseResult, 13982 children: isTemplateNode(node) ? node.children : [node] 13983 }; 13984 context.replaceNode(forNode); 13985 scopes.vFor++; 13986 const onExit = processCodegen && processCodegen(forNode); 13987 return () => { 13988 scopes.vFor--; 13989 if (onExit) onExit(); 13990 }; 13991} 13992function finalizeForParseResult(result, context) { 13993 if (result.finalized) return; 13994 result.finalized = true; 13995} 13996function createForLoopParams({ value, key, index: index2 }, memoArgs = []) { 13997 return createParamsList([value, key, index2, ...memoArgs]); 13998} 13999function createParamsList(args) { 14000 let i = args.length; 14001 while (i--) { 14002 if (args[i]) break; 14003 } 14004 return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); 14005} 14006const defaultFallback = createSimpleExpression(`undefined`, false); 14007const trackSlotScopes = (node, context) => { 14008 if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { 14009 const vSlot = findDir(node, "slot"); 14010 if (vSlot) { 14011 vSlot.exp; 14012 context.scopes.vSlot++; 14013 return () => { 14014 context.scopes.vSlot--; 14015 }; 14016 } 14017 } 14018}; 14019const buildClientSlotFn = (props2, _vForExp, children, loc) => createFunctionExpression( 14020 props2, 14021 children, 14022 false, 14023 true, 14024 children.length ? children[0].loc : loc 14025); 14026function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { 14027 context.helper(WITH_CTX); 14028 const { children, loc } = node; 14029 const slotsProperties = []; 14030 const dynamicSlots = []; 14031 let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; 14032 const onComponentSlot = findDir(node, "slot", true); 14033 if (onComponentSlot) { 14034 const { arg, exp } = onComponentSlot; 14035 if (arg && !isStaticExp(arg)) { 14036 hasDynamicSlots = true; 14037 } 14038 slotsProperties.push( 14039 createObjectProperty( 14040 arg || createSimpleExpression("default", true), 14041 buildSlotFn(exp, void 0, children, loc) 14042 ) 14043 ); 14044 } 14045 let hasTemplateSlots = false; 14046 let hasNamedDefaultSlot = false; 14047 const implicitDefaultChildren = []; 14048 const seenSlotNames = /* @__PURE__ */ new Set(); 14049 let conditionalBranchIndex = 0; 14050 for (let i = 0; i < children.length; i++) { 14051 const slotElement = children[i]; 14052 let slotDir; 14053 if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { 14054 if (slotElement.type !== 3) { 14055 implicitDefaultChildren.push(slotElement); 14056 } 14057 continue; 14058 } 14059 if (onComponentSlot) { 14060 context.onError( 14061 createCompilerError(37, slotDir.loc) 14062 ); 14063 break; 14064 } 14065 hasTemplateSlots = true; 14066 const { children: slotChildren, loc: slotLoc } = slotElement; 14067 const { 14068 arg: slotName = createSimpleExpression(`default`, true), 14069 exp: slotProps, 14070 loc: dirLoc 14071 } = slotDir; 14072 let staticSlotName; 14073 if (isStaticExp(slotName)) { 14074 staticSlotName = slotName ? slotName.content : `default`; 14075 } else { 14076 hasDynamicSlots = true; 14077 } 14078 const vFor = findDir(slotElement, "for"); 14079 const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); 14080 let vIf; 14081 let vElse; 14082 if (vIf = findDir(slotElement, "if")) { 14083 hasDynamicSlots = true; 14084 dynamicSlots.push( 14085 createConditionalExpression( 14086 vIf.exp, 14087 buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), 14088 defaultFallback 14089 ) 14090 ); 14091 } else if (vElse = findDir( 14092 slotElement, 14093 /^else(-if)?$/, 14094 true 14095 /* allowEmpty */ 14096 )) { 14097 let j = i; 14098 let prev; 14099 while (j--) { 14100 prev = children[j]; 14101 if (prev.type !== 3) { 14102 break; 14103 } 14104 } 14105 if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { 14106 let conditional = dynamicSlots[dynamicSlots.length - 1]; 14107 while (conditional.alternate.type === 19) { 14108 conditional = conditional.alternate; 14109 } 14110 conditional.alternate = vElse.exp ? createConditionalExpression( 14111 vElse.exp, 14112 buildDynamicSlot( 14113 slotName, 14114 slotFunction, 14115 conditionalBranchIndex++ 14116 ), 14117 defaultFallback 14118 ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); 14119 } else { 14120 context.onError( 14121 createCompilerError(30, vElse.loc) 14122 ); 14123 } 14124 } else if (vFor) { 14125 hasDynamicSlots = true; 14126 const parseResult = vFor.forParseResult; 14127 if (parseResult) { 14128 finalizeForParseResult(parseResult); 14129 dynamicSlots.push( 14130 createCallExpression(context.helper(RENDER_LIST), [ 14131 parseResult.source, 14132 createFunctionExpression( 14133 createForLoopParams(parseResult), 14134 buildDynamicSlot(slotName, slotFunction), 14135 true 14136 ) 14137 ]) 14138 ); 14139 } else { 14140 context.onError( 14141 createCompilerError( 14142 32, 14143 vFor.loc 14144 ) 14145 ); 14146 } 14147 } else { 14148 if (staticSlotName) { 14149 if (seenSlotNames.has(staticSlotName)) { 14150 context.onError( 14151 createCompilerError( 14152 38, 14153 dirLoc 14154 ) 14155 ); 14156 continue; 14157 } 14158 seenSlotNames.add(staticSlotName); 14159 if (staticSlotName === "default") { 14160 hasNamedDefaultSlot = true; 14161 } 14162 }
14163 slotsProperties.push(createObjectProperty(slotName, slotFunction)); 14164 } 14165 } 14166 if (!onComponentSlot) { 14167 const buildDefaultSlotProperty = (props2, children2) => { 14168 const fn = buildSlotFn(props2, void 0, children2, loc); 14169 if (context.compatConfig) { 14170 fn.isNonScopedSlot = true; 14171 } 14172 return createObjectProperty(`default`, fn); 14173 }; 14174 if (!hasTemplateSlots) { 14175 slotsProperties.push(buildDefaultSlotProperty(void 0, children)); 14176 } else if (implicitDefaultChildren.length && // #3766 14177 // with whitespace: 'preserve', whitespaces between slots will end up in 14178 // implicitDefaultChildren. Ignore if all implicit children are whitespaces. 14179 implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { 14180 if (hasNamedDefaultSlot) { 14181 context.onError( 14182 createCompilerError( 14183 39, 14184 implicitDefaultChildren[0].loc 14185 ) 14186 ); 14187 } else { 14188 slotsProperties.push( 14189 buildDefaultSlotProperty(void 0, implicitDefaultChildren) 14190 ); 14191 } 14192 } 14193 } 14194 const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; 14195 let slots = createObjectExpression( 14196 slotsProperties.concat( 14197 createObjectProperty( 14198 `_`, 14199 // 2 = compiled but dynamic = can skip normalization, but must run diff 14200 // 1 = compiled and static = can skip normalization AND diff as optimized 14201 createSimpleExpression( 14202 slotFlag + ``, 14203 false 14204 ) 14205 ) 14206 ), 14207 loc 14208 ); 14209 if (dynamicSlots.length) { 14210 slots = createCallExpression(context.helper(CREATE_SLOTS), [ 14211 slots, 14212 createArrayExpression(dynamicSlots) 14213 ]); 14214 } 14215 return { 14216 slots, 14217 hasDynamicSlots 14218 }; 14219} 14220function buildDynamicSlot(name, fn, index2) { 14221 const props2 = [ 14222 createObjectProperty(`name`, name), 14223 createObjectProperty(`fn`, fn) 14224 ]; 14225 if (index2 != null) { 14226 props2.push( 14227 createObjectProperty(`key`, createSimpleExpression(String(index2), true)) 14228 ); 14229 } 14230 return createObjectExpression(props2); 14231} 14232function hasForwardedSlots(children) { 14233 for (let i = 0; i < children.length; i++) { 14234 const child = children[i]; 14235 switch (child.type) { 14236 case 1: 14237 if (child.tagType === 2 || hasForwardedSlots(child.children)) { 14238 return true; 14239 } 14240 break; 14241 case 9: 14242 if (hasForwardedSlots(child.branches)) return true; 14243 break; 14244 case 10: 14245 case 11: 14246 if (hasForwardedSlots(child.children)) return true; 14247 break; 14248 } 14249 } 14250 return false; 14251} 14252function isNonWhitespaceContent(node) { 14253 if (node.type !== 2 && node.type !== 12) 14254 return true; 14255 return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); 14256} 14257const directiveImportMap = /* @__PURE__ */ new WeakMap(); 14258const transformElement = (node, context) => { 14259 return function postTransformElement() { 14260 node = context.currentNode; 14261 if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { 14262 return; 14263 } 14264 const { tag, props: props2 } = node; 14265 const isComponent2 = node.tagType === 1; 14266 let vnodeTag = isComponent2 ? resolveComponentType(node, context) : `"${tag}"`; 14267 const isDynamicComponent = isObject$9(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; 14268 let vnodeProps; 14269 let vnodeChildren; 14270 let patchFlag = 0; 14271 let vnodeDynamicProps; 14272 let dynamicPropNames; 14273 let vnodeDirectives; 14274 let shouldUseBlock = ( 14275 // dynamic component may resolve to plain elements 14276 isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent2 && // <svg> and <foreignObject> must be forced into blocks so that block 14277 // updates inside get proper isSVG flag at runtime. (#639, #643) 14278 // This is technically web-specific, but splitting the logic out of core 14279 // leads to too much unnecessary complexity. 14280 (tag === "svg" || tag === "foreignObject" || tag === "math") 14281 ); 14282 if (props2.length > 0) { 14283 const propsBuildResult = buildProps( 14284 node, 14285 context, 14286 void 0, 14287 isComponent2, 14288 isDynamicComponent 14289 ); 14290 vnodeProps = propsBuildResult.props; 14291 patchFlag = propsBuildResult.patchFlag; 14292 dynamicPropNames = propsBuildResult.dynamicPropNames; 14293 const directives = propsBuildResult.directives; 14294 vnodeDirectives = directives && directives.length ? createArrayExpression( 14295 directives.map((dir) => buildDirectiveArgs(dir, context)) 14296 ) : void 0; 14297 if (propsBuildResult.shouldUseBlock) { 14298 shouldUseBlock = true; 14299 } 14300 } 14301 if (node.children.length > 0) { 14302 if (vnodeTag === KEEP_ALIVE) { 14303 shouldUseBlock = true; 14304 patchFlag |= 1024; 14305 } 14306 const shouldBuildAsSlots = isComponent2 && // Teleport is not a real component and has dedicated runtime handling 14307 vnodeTag !== TELEPORT && // explained above. 14308 vnodeTag !== KEEP_ALIVE; 14309 if (shouldBuildAsSlots) { 14310 const { slots, hasDynamicSlots } = buildSlots(node, context); 14311 vnodeChildren = slots; 14312 if (hasDynamicSlots) { 14313 patchFlag |= 1024; 14314 } 14315 } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { 14316 const child = node.children[0]; 14317 const type = child.type; 14318 const hasDynamicTextChild = type === 5 || type === 8;
vendor: 6,704 bytes, lines 14319-14542
14319 if (hasDynamicTextChild && getConstantType(child, context) === 0) { 14320 patchFlag |= 1; 14321 } 14322 if (hasDynamicTextChild || type === 2) { 14323 vnodeChildren = child; 14324 } else { 14325 vnodeChildren = node.children; 14326 } 14327 } else { 14328 vnodeChildren = node.children; 14329 } 14330 } 14331 if (dynamicPropNames && dynamicPropNames.length) { 14332 vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); 14333 } 14334 node.codegenNode = createVNodeCall( 14335 context, 14336 vnodeTag, 14337 vnodeProps, 14338 vnodeChildren, 14339 patchFlag === 0 ? void 0 : patchFlag, 14340 vnodeDynamicProps, 14341 vnodeDirectives, 14342 !!shouldUseBlock, 14343 false, 14344 isComponent2, 14345 node.loc 14346 ); 14347 }; 14348}; 14349function resolveComponentType(node, context, ssr = false) { 14350 let { tag } = node; 14351 const isExplicitDynamic = isComponentTag(tag); 14352 const isProp = findProp( 14353 node, 14354 "is", 14355 false, 14356 true 14357 /* allow empty */ 14358 ); 14359 if (isProp) { 14360 if (isExplicitDynamic || isCompatEnabled( 14361 "COMPILER_IS_ON_ELEMENT", 14362 context 14363 )) { 14364 let exp; 14365 if (isProp.type === 6) { 14366 exp = isProp.value && createSimpleExpression(isProp.value.content, true); 14367 } else { 14368 exp = isProp.exp; 14369 if (!exp) { 14370 exp = createSimpleExpression(`is`, false, isProp.arg.loc); 14371 } 14372 } 14373 if (exp) { 14374 return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ 14375 exp 14376 ]); 14377 } 14378 } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { 14379 tag = isProp.value.content.slice(4); 14380 } 14381 } 14382 const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); 14383 if (builtIn) { 14384 if (!ssr) context.helper(builtIn); 14385 return builtIn; 14386 } 14387 context.helper(RESOLVE_COMPONENT); 14388 context.components.add(tag); 14389 return toValidAssetId(tag, `component`); 14390} 14391function buildProps(node, context, props2 = node.props, isComponent2, isDynamicComponent, ssr = false) { 14392 const { tag, loc: elementLoc, children } = node; 14393 let properties = []; 14394 const mergeArgs = []; 14395 const runtimeDirectives = []; 14396 const hasChildren = children.length > 0; 14397 let shouldUseBlock = false; 14398 let patchFlag = 0; 14399 let hasRef = false; 14400 let hasClassBinding = false; 14401 let hasStyleBinding = false; 14402 let hasHydrationEventBinding = false; 14403 let hasDynamicKeys = false; 14404 let hasVnodeHook = false; 14405 const dynamicPropNames = []; 14406 const pushMergeArg = (arg) => { 14407 if (properties.length) { 14408 mergeArgs.push( 14409 createObjectExpression(dedupeProperties(properties), elementLoc) 14410 ); 14411 properties = []; 14412 } 14413 if (arg) mergeArgs.push(arg); 14414 }; 14415 const pushRefVForMarker = () => { 14416 if (context.scopes.vFor > 0) { 14417 properties.push( 14418 createObjectProperty( 14419 createSimpleExpression("ref_for", true), 14420 createSimpleExpression("true") 14421 ) 14422 ); 14423 } 14424 }; 14425 const analyzePatchFlag = ({ key, value }) => { 14426 if (isStaticExp(key)) { 14427 const name = key.content; 14428 const isEventHandler = isOn(name); 14429 if (isEventHandler && (!isComponent2 || isDynamicComponent) && // omit the flag for click handlers because hydration gives click 14430 // dedicated fast path. 14431 name.toLowerCase() !== "onclick" && // omit v-model handlers 14432 name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks 14433 !isReservedProp(name)) { 14434 hasHydrationEventBinding = true; 14435 } 14436 if (isEventHandler && isReservedProp(name)) { 14437 hasVnodeHook = true; 14438 } 14439 if (isEventHandler && value.type === 14) { 14440 value = value.arguments[0]; 14441 } 14442 if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { 14443 return; 14444 } 14445 if (name === "ref") { 14446 hasRef = true; 14447 } else if (name === "class") { 14448 hasClassBinding = true; 14449 } else if (name === "style") { 14450 hasStyleBinding = true; 14451 } else if (name !== "key" && !dynamicPropNames.includes(name)) { 14452 dynamicPropNames.push(name); 14453 } 14454 if (isComponent2 && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { 14455 dynamicPropNames.push(name); 14456 } 14457 } else { 14458 hasDynamicKeys = true; 14459 } 14460 }; 14461 for (let i = 0; i < props2.length; i++) { 14462 const prop = props2[i]; 14463 if (prop.type === 6) { 14464 const { loc, name, nameLoc, value } = prop; 14465 let isStatic = true; 14466 if (name === "ref") { 14467 hasRef = true; 14468 pushRefVForMarker(); 14469 } 14470 if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( 14471 "COMPILER_IS_ON_ELEMENT", 14472 context 14473 ))) { 14474 continue; 14475 } 14476 properties.push( 14477 createObjectProperty( 14478 createSimpleExpression(name, true, nameLoc), 14479 createSimpleExpression( 14480 value ? value.content : "", 14481 isStatic, 14482 value ? value.loc : loc 14483 ) 14484 ) 14485 ); 14486 } else { 14487 const { name, arg, exp, loc, modifiers } = prop; 14488 const isVBind = name === "bind"; 14489 const isVOn = name === "on"; 14490 if (name === "slot") { 14491 if (!isComponent2) { 14492 context.onError( 14493 createCompilerError(40, loc) 14494 ); 14495 } 14496 continue; 14497 } 14498 if (name === "once" || name === "memo") { 14499 continue; 14500 } 14501 if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( 14502 "COMPILER_IS_ON_ELEMENT", 14503 context 14504 ))) { 14505 continue; 14506 } 14507 if (isVOn && ssr) { 14508 continue; 14509 } 14510 if ( 14511 // #938: elements with dynamic keys should be forced into blocks 14512 isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked 14513 // before children 14514 isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") 14515 ) { 14516 shouldUseBlock = true; 14517 } 14518 if (isVBind && isStaticArgOf(arg, "ref")) { 14519 pushRefVForMarker(); 14520 } 14521 if (!arg && (isVBind || isVOn)) { 14522 hasDynamicKeys = true; 14523 if (exp) { 14524 if (isVBind) { 14525 { 14526 pushMergeArg(); 14527 if (isCompatEnabled( 14528 "COMPILER_V_BIND_OBJECT_ORDER", 14529 context 14530 )) { 14531 mergeArgs.unshift(exp); 14532 continue; 14533 } 14534 } 14535 pushRefVForMarker(); 14536 pushMergeArg(); 14537 mergeArgs.push(exp); 14538 } else { 14539 pushMergeArg({ 14540 type: 14, 14541 loc, 14542 callee: context.helper(TO_HANDLERS),
vendor: 8,628 bytes, lines 14543-14851
14543 arguments: isComponent2 ? [exp] : [exp, `true`] 14544 }); 14545 } 14546 } else { 14547 context.onError( 14548 createCompilerError( 14549 isVBind ? 34 : 35, 14550 loc 14551 ) 14552 ); 14553 } 14554 continue; 14555 } 14556 if (isVBind && modifiers.some((mod) => mod.content === "prop")) { 14557 patchFlag |= 32; 14558 } 14559 const directiveTransform = context.directiveTransforms[name]; 14560 if (directiveTransform) { 14561 const { props: props22, needRuntime } = directiveTransform(prop, node, context); 14562 !ssr && props22.forEach(analyzePatchFlag); 14563 if (isVOn && arg && !isStaticExp(arg)) { 14564 pushMergeArg(createObjectExpression(props22, elementLoc)); 14565 } else { 14566 properties.push(...props22); 14567 } 14568 if (needRuntime) { 14569 runtimeDirectives.push(prop); 14570 if (isSymbol$2(needRuntime)) { 14571 directiveImportMap.set(prop, needRuntime); 14572 } 14573 } 14574 } else if (!isBuiltInDirective(name)) { 14575 runtimeDirectives.push(prop); 14576 if (hasChildren) { 14577 shouldUseBlock = true; 14578 } 14579 } 14580 } 14581 } 14582 let propsExpression = void 0; 14583 if (mergeArgs.length) { 14584 pushMergeArg(); 14585 if (mergeArgs.length > 1) { 14586 propsExpression = createCallExpression( 14587 context.helper(MERGE_PROPS), 14588 mergeArgs, 14589 elementLoc 14590 ); 14591 } else { 14592 propsExpression = mergeArgs[0]; 14593 } 14594 } else if (properties.length) { 14595 propsExpression = createObjectExpression( 14596 dedupeProperties(properties), 14597 elementLoc 14598 ); 14599 } 14600 if (hasDynamicKeys) { 14601 patchFlag |= 16; 14602 } else { 14603 if (hasClassBinding && !isComponent2) { 14604 patchFlag |= 2; 14605 } 14606 if (hasStyleBinding && !isComponent2) { 14607 patchFlag |= 4; 14608 } 14609 if (dynamicPropNames.length) { 14610 patchFlag |= 8; 14611 } 14612 if (hasHydrationEventBinding) { 14613 patchFlag |= 32; 14614 } 14615 } 14616 if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { 14617 patchFlag |= 512; 14618 } 14619 if (!context.inSSR && propsExpression) { 14620 switch (propsExpression.type) { 14621 case 15: 14622 let classKeyIndex = -1; 14623 let styleKeyIndex = -1; 14624 let hasDynamicKey = false; 14625 for (let i = 0; i < propsExpression.properties.length; i++) { 14626 const key = propsExpression.properties[i].key; 14627 if (isStaticExp(key)) { 14628 if (key.content === "class") { 14629 classKeyIndex = i; 14630 } else if (key.content === "style") { 14631 styleKeyIndex = i; 14632 } 14633 } else if (!key.isHandlerKey) { 14634 hasDynamicKey = true; 14635 } 14636 } 14637 const classProp = propsExpression.properties[classKeyIndex]; 14638 const styleProp = propsExpression.properties[styleKeyIndex]; 14639 if (!hasDynamicKey) { 14640 if (classProp && !isStaticExp(classProp.value)) { 14641 classProp.value = createCallExpression( 14642 context.helper(NORMALIZE_CLASS), 14643 [classProp.value] 14644 ); 14645 } 14646 if (styleProp && // the static style is compiled into an object, 14647 // so use `hasStyleBinding` to ensure that it is a dynamic style binding 14648 (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, 14649 // v-bind:style with static literal object 14650 styleProp.value.type === 17)) { 14651 styleProp.value = createCallExpression( 14652 context.helper(NORMALIZE_STYLE), 14653 [styleProp.value] 14654 ); 14655 } 14656 } else { 14657 propsExpression = createCallExpression( 14658 context.helper(NORMALIZE_PROPS), 14659 [propsExpression] 14660 ); 14661 } 14662 break; 14663 case 14: 14664 break; 14665 default: 14666 propsExpression = createCallExpression( 14667 context.helper(NORMALIZE_PROPS), 14668 [ 14669 createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ 14670 propsExpression 14671 ]) 14672 ] 14673 ); 14674 break; 14675 } 14676 } 14677 return { 14678 props: propsExpression, 14679 directives: runtimeDirectives, 14680 patchFlag, 14681 dynamicPropNames, 14682 shouldUseBlock 14683 }; 14684} 14685function dedupeProperties(properties) { 14686 const knownProps = /* @__PURE__ */ new Map(); 14687 const deduped = []; 14688 for (let i = 0; i < properties.length; i++) { 14689 const prop = properties[i]; 14690 if (prop.key.type === 8 || !prop.key.isStatic) { 14691 deduped.push(prop); 14692 continue; 14693 } 14694 const name = prop.key.content; 14695 const existing = knownProps.get(name); 14696 if (existing) { 14697 if (name === "style" || name === "class" || isOn(name)) { 14698 mergeAsArray(existing, prop); 14699 } 14700 } else { 14701 knownProps.set(name, prop); 14702 deduped.push(prop); 14703 } 14704 } 14705 return deduped; 14706} 14707function mergeAsArray(existing, incoming) { 14708 if (existing.value.type === 17) { 14709 existing.value.elements.push(incoming.value); 14710 } else { 14711 existing.value = createArrayExpression( 14712 [existing.value, incoming.value], 14713 existing.loc 14714 ); 14715 } 14716} 14717function buildDirectiveArgs(dir, context) { 14718 const dirArgs = []; 14719 const runtime = directiveImportMap.get(dir); 14720 if (runtime) { 14721 dirArgs.push(context.helperString(runtime)); 14722 } else { 14723 { 14724 context.helper(RESOLVE_DIRECTIVE); 14725 context.directives.add(dir.name); 14726 dirArgs.push(toValidAssetId(dir.name, `directive`)); 14727 } 14728 } 14729 const { loc } = dir; 14730 if (dir.exp) dirArgs.push(dir.exp); 14731 if (dir.arg) { 14732 if (!dir.exp) { 14733 dirArgs.push(`void 0`); 14734 } 14735 dirArgs.push(dir.arg); 14736 } 14737 if (Object.keys(dir.modifiers).length) { 14738 if (!dir.arg) { 14739 if (!dir.exp) { 14740 dirArgs.push(`void 0`); 14741 } 14742 dirArgs.push(`void 0`); 14743 } 14744 const trueExpression = createSimpleExpression(`true`, false, loc); 14745 dirArgs.push( 14746 createObjectExpression( 14747 dir.modifiers.map( 14748 (modifier) => createObjectProperty(modifier, trueExpression) 14749 ), 14750 loc 14751 ) 14752 ); 14753 } 14754 return createArrayExpression(dirArgs, dir.loc); 14755} 14756function stringifyDynamicPropNames(props2) { 14757 let propsNamesString = `[`; 14758 for (let i = 0, l = props2.length; i < l; i++) { 14759 propsNamesString += JSON.stringify(props2[i]); 14760 if (i < l - 1) propsNamesString += ", "; 14761 } 14762 return propsNamesString + `]`; 14763} 14764function isComponentTag(tag) { 14765 return tag === "component" || tag === "Component"; 14766} 14767const transformSlotOutlet = (node, context) => { 14768 if (isSlotOutlet(node)) { 14769 const { children, loc } = node; 14770 const { slotName, slotProps } = processSlotOutlet(node, context); 14771 const slotArgs = [ 14772 context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, 14773 slotName, 14774 "{}", 14775 "undefined", 14776 "true" 14777 ]; 14778 let expectedLen = 2; 14779 if (slotProps) { 14780 slotArgs[2] = slotProps; 14781 expectedLen = 3; 14782 } 14783 if (children.length) { 14784 slotArgs[3] = createFunctionExpression([], children, false, false, loc); 14785 expectedLen = 4; 14786 } 14787 if (context.scopeId && !context.slotted) { 14788 expectedLen = 5; 14789 } 14790 slotArgs.splice(expectedLen); 14791 node.codegenNode = createCallExpression( 14792 context.helper(RENDER_SLOT), 14793 slotArgs, 14794 loc 14795 ); 14796 } 14797}; 14798function processSlotOutlet(node, context) { 14799 let slotName = `"default"`; 14800 let slotProps = void 0; 14801 const nonNameProps = []; 14802 for (let i = 0; i < node.props.length; i++) { 14803 const p2 = node.props[i]; 14804 if (p2.type === 6) { 14805 if (p2.value) { 14806 if (p2.name === "name") { 14807 slotName = JSON.stringify(p2.value.content); 14808 } else { 14809 p2.name = camelize(p2.name); 14810 nonNameProps.push(p2); 14811 } 14812 } 14813 } else { 14814 if (p2.name === "bind" && isStaticArgOf(p2.arg, "name")) { 14815 if (p2.exp) { 14816 slotName = p2.exp; 14817 } else if (p2.arg && p2.arg.type === 4) { 14818 const name = camelize(p2.arg.content); 14819 slotName = p2.exp = createSimpleExpression(name, false, p2.arg.loc); 14820 } 14821 } else { 14822 if (p2.name === "bind" && p2.arg && isStaticExp(p2.arg)) { 14823 p2.arg.content = camelize(p2.arg.content); 14824 } 14825 nonNameProps.push(p2); 14826 } 14827 } 14828 } 14829 if (nonNameProps.length > 0) { 14830 const { props: props2, directives } = buildProps( 14831 node, 14832 context, 14833 nonNameProps, 14834 false, 14835 false 14836 ); 14837 slotProps = props2; 14838 if (directives.length) { 14839 context.onError( 14840 createCompilerError( 14841 36, 14842 directives[0].loc 14843 ) 14844 ); 14845 } 14846 } 14847 return { 14848 slotName, 14849 slotProps 14850 }; 14851}
vendor: 8,606 bytes, lines 14852-15116
14852const transformOn$1 = (dir, node, context, augmentor) => { 14853 const { loc, modifiers, arg } = dir; 14854 if (!dir.exp && !modifiers.length) { 14855 context.onError(createCompilerError(35, loc)); 14856 } 14857 let eventName; 14858 if (arg.type === 4) { 14859 if (arg.isStatic) { 14860 let rawName = arg.content; 14861 if (rawName.startsWith("vue:")) { 14862 rawName = `vnode-${rawName.slice(4)}`; 14863 } 14864 const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( 14865 // for non-element and vnode lifecycle event listeners, auto convert 14866 // it to camelCase. See issue #2249 14867 toHandlerKey(camelize(rawName)) 14868 ) : ( 14869 // preserve case for plain element listeners that have uppercase 14870 // letters, as these may be custom elements' custom events 14871 `on:${rawName}` 14872 ); 14873 eventName = createSimpleExpression(eventString, true, arg.loc); 14874 } else { 14875 eventName = createCompoundExpression([ 14876 `${context.helperString(TO_HANDLER_KEY)}(`, 14877 arg, 14878 `)` 14879 ]); 14880 } 14881 } else { 14882 eventName = arg; 14883 eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); 14884 eventName.children.push(`)`); 14885 } 14886 let exp = dir.exp; 14887 if (exp && !exp.content.trim()) { 14888 exp = void 0; 14889 } 14890 let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; 14891 if (exp) { 14892 const isMemberExp = isMemberExpression(exp); 14893 const isInlineStatement = !(isMemberExp || isFnExpression(exp)); 14894 const hasMultipleStatements = exp.content.includes(`;`); 14895 if (isInlineStatement || shouldCache && isMemberExp) { 14896 exp = createCompoundExpression([ 14897 `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, 14898 exp, 14899 hasMultipleStatements ? `}` : `)` 14900 ]); 14901 } 14902 } 14903 let ret = { 14904 props: [ 14905 createObjectProperty( 14906 eventName, 14907 exp || createSimpleExpression(`() => {}`, false, loc) 14908 ) 14909 ] 14910 }; 14911 if (augmentor) { 14912 ret = augmentor(ret); 14913 } 14914 if (shouldCache) { 14915 ret.props[0].value = context.cache(ret.props[0].value); 14916 } 14917 ret.props.forEach((p2) => p2.key.isHandlerKey = true); 14918 return ret; 14919}; 14920const transformText = (node, context) => { 14921 if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { 14922 return () => { 14923 const children = node.children; 14924 let currentContainer = void 0; 14925 let hasText = false; 14926 for (let i = 0; i < children.length; i++) { 14927 const child = children[i]; 14928 if (isText$1(child)) { 14929 hasText = true; 14930 for (let j = i + 1; j < children.length; j++) { 14931 const next = children[j]; 14932 if (isText$1(next)) { 14933 if (!currentContainer) { 14934 currentContainer = children[i] = createCompoundExpression( 14935 [child], 14936 child.loc 14937 ); 14938 } 14939 currentContainer.children.push(` + `, next); 14940 children.splice(j, 1); 14941 j--; 14942 } else { 14943 currentContainer = void 0; 14944 break; 14945 } 14946 } 14947 } 14948 } 14949 if (!hasText || // if this is a plain element with a single text child, leave it 14950 // as-is since the runtime has dedicated fast path for this by directly 14951 // setting textContent of the element. 14952 // for component root it's always normalized anyway. 14953 children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 14954 // custom directives can potentially add DOM elements arbitrarily, 14955 // we need to avoid setting textContent of the element at runtime 14956 // to avoid accidentally overwriting the DOM elements added 14957 // by the user through custom directives. 14958 !node.props.find( 14959 (p2) => p2.type === 7 && !context.directiveTransforms[p2.name] 14960 ) && // in compat mode, <template> tags with no special directives 14961 // will be rendered as a fragment so its children must be 14962 // converted into vnodes. 14963 !(node.tag === "template"))) { 14964 return; 14965 } 14966 for (let i = 0; i < children.length; i++) { 14967 const child = children[i]; 14968 if (isText$1(child) || child.type === 8) { 14969 const callArgs = []; 14970 if (child.type !== 2 || child.content !== " ") { 14971 callArgs.push(child); 14972 } 14973 if (!context.ssr && getConstantType(child, context) === 0) { 14974 callArgs.push( 14975 `1` 14976 ); 14977 } 14978 children[i] = { 14979 type: 12, 14980 content: child, 14981 loc: child.loc, 14982 codegenNode: createCallExpression( 14983 context.helper(CREATE_TEXT), 14984 callArgs 14985 ) 14986 }; 14987 } 14988 } 14989 }; 14990 } 14991}; 14992const seen$1 = /* @__PURE__ */ new WeakSet(); 14993const transformOnce = (node, context) => { 14994 if (node.type === 1 && findDir(node, "once", true)) { 14995 if (seen$1.has(node) || context.inVOnce || context.inSSR) { 14996 return; 14997 } 14998 seen$1.add(node); 14999 context.inVOnce = true; 15000 context.helper(SET_BLOCK_TRACKING); 15001 return () => { 15002 context.inVOnce = false; 15003 const cur = context.currentNode; 15004 if (cur.codegenNode) { 15005 cur.codegenNode = context.cache( 15006 cur.codegenNode, 15007 true, 15008 true 15009 ); 15010 } 15011 }; 15012 } 15013}; 15014const transformModel$1 = (dir, node, context) => { 15015 const { exp, arg } = dir; 15016 if (!exp) { 15017 context.onError( 15018 createCompilerError(41, dir.loc) 15019 ); 15020 return createTransformProps(); 15021 } 15022 const rawExp = exp.loc.source.trim(); 15023 const expString = exp.type === 4 ? exp.content : rawExp; 15024 const bindingType = context.bindingMetadata[rawExp]; 15025 if (bindingType === "props" || bindingType === "props-aliased") { 15026 context.onError(createCompilerError(44, exp.loc)); 15027 return createTransformProps(); 15028 } 15029 if (!expString.trim() || !isMemberExpression(exp) && true) { 15030 context.onError( 15031 createCompilerError(42, exp.loc) 15032 ); 15033 return createTransformProps(); 15034 } 15035 const propName = arg ? arg : createSimpleExpression("modelValue", true); 15036 const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; 15037 let assignmentExp; 15038 const eventArg = context.isTS ? `($event: any)` : `$event`; 15039 { 15040 assignmentExp = createCompoundExpression([ 15041 `${eventArg} => ((`, 15042 exp, 15043 `) = $event)` 15044 ]); 15045 } 15046 const props2 = [ 15047 // modelValue: foo 15048 createObjectProperty(propName, dir.exp), 15049 // "onUpdate:modelValue": $event => (foo = $event) 15050 createObjectProperty(eventName, assignmentExp) 15051 ]; 15052 if (dir.modifiers.length && node.tagType === 1) { 15053 const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); 15054 const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; 15055 props2.push( 15056 createObjectProperty( 15057 modifiersKey, 15058 createSimpleExpression( 15059 `{ ${modifiers} }`, 15060 false, 15061 dir.loc, 15062 2 15063 ) 15064 ) 15065 ); 15066 } 15067 return createTransformProps(props2); 15068}; 15069function createTransformProps(props2 = []) { 15070 return { props: props2 }; 15071} 15072const validDivisionCharRE = /[\w).+\-_$\]]/; 15073const transformFilter = (node, context) => { 15074 if (!isCompatEnabled("COMPILER_FILTERS", context)) { 15075 return; 15076 } 15077 if (node.type === 5) { 15078 rewriteFilter(node.content, context); 15079 } else if (node.type === 1) { 15080 node.props.forEach((prop) => { 15081 if (prop.type === 7 && prop.name !== "for" && prop.exp) { 15082 rewriteFilter(prop.exp, context); 15083 } 15084 }); 15085 } 15086}; 15087function rewriteFilter(node, context) { 15088 if (node.type === 4) { 15089 parseFilter(node, context); 15090 } else { 15091 for (let i = 0; i < node.children.length; i++) { 15092 const child = node.children[i]; 15093 if (typeof child !== "object") continue; 15094 if (child.type === 4) { 15095 parseFilter(child, context); 15096 } else if (child.type === 8) { 15097 rewriteFilter(node, context); 15098 } else if (child.type === 5) { 15099 rewriteFilter(child.content, context); 15100 } 15101 } 15102 } 15103} 15104function parseFilter(node, context) { 15105 const exp = node.content; 15106 let inSingle = false; 15107 let inDouble = false; 15108 let inTemplateString = false; 15109 let inRegex = false; 15110 let curly = 0; 15111 let square = 0; 15112 let paren = 0; 15113 let lastFilterIndex = 0; 15114 let c, prev, i, expression, filters = []; 15115 for (i = 0; i < exp.length; i++) { 15116 prev = c;
vendor: 4,911 bytes, lines 15117-15305
15117 c = exp.charCodeAt(i); 15118 if (inSingle) { 15119 if (c === 39 && prev !== 92) inSingle = false; 15120 } else if (inDouble) { 15121 if (c === 34 && prev !== 92) inDouble = false; 15122 } else if (inTemplateString) { 15123 if (c === 96 && prev !== 92) inTemplateString = false; 15124 } else if (inRegex) { 15125 if (c === 47 && prev !== 92) inRegex = false; 15126 } else if (c === 124 && // pipe 15127 exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { 15128 if (expression === void 0) { 15129 lastFilterIndex = i + 1; 15130 expression = exp.slice(0, i).trim(); 15131 } else { 15132 pushFilter(); 15133 } 15134 } else { 15135 switch (c) { 15136 case 34: 15137 inDouble = true; 15138 break; 15139 // " 15140 case 39: 15141 inSingle = true; 15142 break; 15143 // ' 15144 case 96: 15145 inTemplateString = true; 15146 break; 15147 // ` 15148 case 40: 15149 paren++; 15150 break; 15151 // ( 15152 case 41: 15153 paren--; 15154 break; 15155 // ) 15156 case 91: 15157 square++; 15158 break; 15159 // [ 15160 case 93: 15161 square--; 15162 break; 15163 // ] 15164 case 123: 15165 curly++; 15166 break; 15167 // { 15168 case 125: 15169 curly--; 15170 break; 15171 } 15172 if (c === 47) { 15173 let j = i - 1; 15174 let p2; 15175 for (; j >= 0; j--) { 15176 p2 = exp.charAt(j); 15177 if (p2 !== " ") break; 15178 } 15179 if (!p2 || !validDivisionCharRE.test(p2)) { 15180 inRegex = true; 15181 } 15182 } 15183 } 15184 } 15185 if (expression === void 0) { 15186 expression = exp.slice(0, i).trim(); 15187 } else if (lastFilterIndex !== 0) { 15188 pushFilter(); 15189 } 15190 function pushFilter() { 15191 filters.push(exp.slice(lastFilterIndex, i).trim()); 15192 lastFilterIndex = i + 1; 15193 } 15194 if (filters.length) { 15195 for (i = 0; i < filters.length; i++) { 15196 expression = wrapFilter(expression, filters[i], context); 15197 } 15198 node.content = expression; 15199 node.ast = void 0; 15200 } 15201} 15202function wrapFilter(exp, filter2, context) { 15203 context.helper(RESOLVE_FILTER); 15204 const i = filter2.indexOf("("); 15205 if (i < 0) { 15206 context.filters.add(filter2); 15207 return `${toValidAssetId(filter2, "filter")}(${exp})`; 15208 } else { 15209 const name = filter2.slice(0, i); 15210 const args = filter2.slice(i + 1); 15211 context.filters.add(name); 15212 return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; 15213 } 15214} 15215const seen = /* @__PURE__ */ new WeakSet(); 15216const transformMemo = (node, context) => { 15217 if (node.type === 1) { 15218 const dir = findDir(node, "memo"); 15219 if (!dir || seen.has(node)) { 15220 return; 15221 } 15222 seen.add(node); 15223 return () => { 15224 const codegenNode = node.codegenNode || context.currentNode.codegenNode; 15225 if (codegenNode && codegenNode.type === 13) { 15226 if (node.tagType !== 1) { 15227 convertToBlock(codegenNode, context); 15228 } 15229 node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ 15230 dir.exp, 15231 createFunctionExpression(void 0, codegenNode), 15232 `_cache`, 15233 String(context.cached.length) 15234 ]); 15235 context.cached.push(null); 15236 } 15237 }; 15238 } 15239}; 15240function getBaseTransformPreset(prefixIdentifiers) { 15241 return [ 15242 [ 15243 transformOnce, 15244 transformIf, 15245 transformMemo, 15246 transformFor, 15247 ...[transformFilter], 15248 ...[], 15249 transformSlotOutlet, 15250 transformElement, 15251 trackSlotScopes, 15252 transformText 15253 ], 15254 { 15255 on: transformOn$1, 15256 bind: transformBind, 15257 model: transformModel$1 15258 } 15259 ]; 15260} 15261function baseCompile$2(source, options2 = {}) { 15262 const onError = options2.onError || defaultOnError$1; 15263 const isModuleMode = options2.mode === "module"; 15264 { 15265 if (options2.prefixIdentifiers === true) { 15266 onError(createCompilerError(47)); 15267 } else if (isModuleMode) { 15268 onError(createCompilerError(48)); 15269 } 15270 } 15271 const prefixIdentifiers = false; 15272 if (options2.cacheHandlers) { 15273 onError(createCompilerError(49)); 15274 } 15275 if (options2.scopeId && !isModuleMode) { 15276 onError(createCompilerError(50)); 15277 } 15278 const resolvedOptions = extend$5({}, options2, { 15279 prefixIdentifiers 15280 }); 15281 const ast = isString$3(source) ? baseParse(source, resolvedOptions) : source; 15282 const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(); 15283 transform$1( 15284 ast, 15285 extend$5({}, resolvedOptions, { 15286 nodeTransforms: [ 15287 ...nodeTransforms, 15288 ...options2.nodeTransforms || [] 15289 // user transforms 15290 ], 15291 directiveTransforms: extend$5( 15292 {}, 15293 directiveTransforms, 15294 options2.directiveTransforms || {} 15295 // user transforms 15296 ) 15297 }) 15298 ); 15299 return generate$1(ast, resolvedOptions); 15300} 15301const noopDirectiveTransform = () => ({ props: [] }); 15302/** 15303* @vue/compiler-dom v3.5.16 15304* (c) 2018-present Yuxi (Evan) You and Vue contributors 15305* @license MIT
15306**/ 15307const V_MODEL_RADIO = Symbol(``); 15308const V_MODEL_CHECKBOX = Symbol( 15309 `` 15310); 15311const V_MODEL_TEXT = Symbol(``); 15312const V_MODEL_SELECT = Symbol( 15313 `` 15314); 15315const V_MODEL_DYNAMIC = Symbol( 15316 `` 15317); 15318const V_ON_WITH_MODIFIERS = Symbol( 15319 `` 15320); 15321const V_ON_WITH_KEYS = Symbol( 15322 `` 15323); 15324const V_SHOW = Symbol(``); 15325const TRANSITION = Symbol(``); 15326const TRANSITION_GROUP = Symbol( 15327 `` 15328); 15329registerRuntimeHelpers({ 15330 [V_MODEL_RADIO]: `vModelRadio`, 15331 [V_MODEL_CHECKBOX]: `vModelCheckbox`, 15332 [V_MODEL_TEXT]: `vModelText`, 15333 [V_MODEL_SELECT]: `vModelSelect`, 15334 [V_MODEL_DYNAMIC]: `vModelDynamic`, 15335 [V_ON_WITH_MODIFIERS]: `withModifiers`, 15336 [V_ON_WITH_KEYS]: `withKeys`, 15337 [V_SHOW]: `vShow`, 15338 [TRANSITION]: `Transition`, 15339 [TRANSITION_GROUP]: `TransitionGroup` 15340}); 15341let decoder; 15342function decodeHtmlBrowser(raw, asAttr = false) { 15343 if (!decoder) { 15344 decoder = document.createElement("div"); 15345 } 15346 if (asAttr) { 15347 decoder.innerHTML = `<div foo="${raw.replace(/"/g, """)}">`; 15348 return decoder.children[0].getAttribute("foo"); 15349 } else { 15350 decoder.innerHTML = raw; 15351 return decoder.textContent; 15352 } 15353} 15354const parserOptions = { 15355 parseMode: "html", 15356 isVoidTag, 15357 isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), 15358 isPreTag: (tag) => tag === "pre", 15359 isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", 15360 decodeEntities: decodeHtmlBrowser, 15361 isBuiltInComponent: (tag) => { 15362 if (tag === "Transition" || tag === "transition") { 15363 return TRANSITION; 15364 } else if (tag === "TransitionGroup" || tag === "transition-group") { 15365 return TRANSITION_GROUP; 15366 } 15367 }, 15368 // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher 15369 getNamespace(tag, parent, rootNamespace) { 15370 let ns = parent ? parent.ns : rootNamespace; 15371 if (parent && ns === 2) { 15372 if (parent.tag === "annotation-xml") { 15373 if (tag === "svg") { 15374 return 1; 15375 } 15376 if (parent.props.some( 15377 (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") 15378 )) { 15379 ns = 0; 15380 } 15381 } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { 15382 ns = 0; 15383 } 15384 } else if (parent && ns === 1) { 15385 if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { 15386 ns = 0; 15387 } 15388 } 15389 if (ns === 0) { 15390 if (tag === "svg") { 15391 return 1; 15392 } 15393 if (tag === "math") { 15394 return 2; 15395 } 15396 } 15397 return ns; 15398 } 15399}; 15400const transformStyle = (node) => { 15401 if (node.type === 1) { 15402 node.props.forEach((p2, i) => { 15403 if (p2.type === 6 && p2.name === "style" && p2.value) { 15404 node.props[i] = { 15405 type: 7, 15406 name: `bind`, 15407 arg: createSimpleExpression(`style`, true, p2.loc), 15408 exp: parseInlineCSS(p2.value.content, p2.loc), 15409 modifiers: [], 15410 loc: p2.loc 15411 }; 15412 } 15413 }); 15414 } 15415}; 15416const parseInlineCSS = (cssText, loc) => { 15417 const normalized = parseStringStyle(cssText); 15418 return createSimpleExpression( 15419 JSON.stringify(normalized), 15420 false, 15421 loc, 15422 3 15423 ); 15424}; 15425function createDOMCompilerError(code, loc) { 15426 return createCompilerError( 15427 code, 15428 loc 15429 ); 15430} 15431const transformVHtml = (dir, node, context) => { 15432 const { exp, loc } = dir; 15433 if (!exp) { 15434 context.onError( 15435 createDOMCompilerError(53, loc) 15436 ); 15437 } 15438 if (node.children.length) { 15439 context.onError( 15440 createDOMCompilerError(54, loc) 15441 ); 15442 node.children.length = 0; 15443 } 15444 return { 15445 props: [ 15446 createObjectProperty( 15447 createSimpleExpression(`innerHTML`, true, loc), 15448 exp || createSimpleExpression("", true) 15449 ) 15450 ] 15451 }; 15452}; 15453const transformVText = (dir, node, context) => { 15454 const { exp, loc } = dir; 15455 if (!exp) { 15456 context.onError( 15457 createDOMCompilerError(55, loc) 15458 ); 15459 } 15460 if (node.children.length) { 15461 context.onError( 15462 createDOMCompilerError(56, loc) 15463 ); 15464 node.children.length = 0; 15465 } 15466 return { 15467 props: [ 15468 createObjectProperty( 15469 createSimpleExpression(`textContent`, true), 15470 exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression( 15471 context.helperString(TO_DISPLAY_STRING), 15472 [exp], 15473 loc 15474 ) : createSimpleExpression("", true) 15475 ) 15476 ] 15477 }; 15478}; 15479const transformModel = (dir, node, context) => { 15480 const baseResult = transformModel$1(dir, node, context); 15481 if (!baseResult.props.length || node.tagType === 1) { 15482 return baseResult; 15483 } 15484 if (dir.arg) { 15485 context.onError( 15486 createDOMCompilerError( 15487 58, 15488 dir.arg.loc 15489 ) 15490 ); 15491 } 15492 const { tag } = node;
vendor: 6,094 bytes, lines 15493-15689
15493 const isCustomElement = context.isCustomElement(tag); 15494 if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { 15495 let directiveToUse = V_MODEL_TEXT; 15496 let isInvalidType = false; 15497 if (tag === "input" || isCustomElement) { 15498 const type = findProp(node, `type`); 15499 if (type) { 15500 if (type.type === 7) { 15501 directiveToUse = V_MODEL_DYNAMIC; 15502 } else if (type.value) { 15503 switch (type.value.content) { 15504 case "radio": 15505 directiveToUse = V_MODEL_RADIO; 15506 break; 15507 case "checkbox": 15508 directiveToUse = V_MODEL_CHECKBOX; 15509 break; 15510 case "file": 15511 isInvalidType = true; 15512 context.onError( 15513 createDOMCompilerError( 15514 59, 15515 dir.loc 15516 ) 15517 ); 15518 break; 15519 } 15520 } 15521 } else if (hasDynamicKeyVBind(node)) { 15522 directiveToUse = V_MODEL_DYNAMIC; 15523 } else ; 15524 } else if (tag === "select") { 15525 directiveToUse = V_MODEL_SELECT; 15526 } else ; 15527 if (!isInvalidType) { 15528 baseResult.needRuntime = context.helper(directiveToUse); 15529 } 15530 } else { 15531 context.onError( 15532 createDOMCompilerError( 15533 57, 15534 dir.loc 15535 ) 15536 ); 15537 } 15538 baseResult.props = baseResult.props.filter( 15539 (p2) => !(p2.key.type === 4 && p2.key.content === "modelValue") 15540 ); 15541 return baseResult; 15542}; 15543const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`); 15544const isNonKeyModifier = /* @__PURE__ */ makeMap( 15545 // event propagation management 15546 `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` 15547); 15548const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right"); 15549const isKeyboardEvent = /* @__PURE__ */ makeMap(`onkeyup,onkeydown,onkeypress`); 15550const resolveModifiers = (key, modifiers, context, loc) => { 15551 const keyModifiers = []; 15552 const nonKeyModifiers = []; 15553 const eventOptionModifiers = []; 15554 for (let i = 0; i < modifiers.length; i++) { 15555 const modifier = modifiers[i].content; 15556 if (modifier === "native" && checkCompatEnabled( 15557 "COMPILER_V_ON_NATIVE", 15558 context 15559 )) { 15560 eventOptionModifiers.push(modifier); 15561 } else if (isEventOptionModifier(modifier)) { 15562 eventOptionModifiers.push(modifier); 15563 } else { 15564 if (maybeKeyModifier(modifier)) { 15565 if (isStaticExp(key)) { 15566 if (isKeyboardEvent(key.content.toLowerCase())) { 15567 keyModifiers.push(modifier); 15568 } else { 15569 nonKeyModifiers.push(modifier); 15570 } 15571 } else { 15572 keyModifiers.push(modifier); 15573 nonKeyModifiers.push(modifier); 15574 } 15575 } else { 15576 if (isNonKeyModifier(modifier)) { 15577 nonKeyModifiers.push(modifier); 15578 } else { 15579 keyModifiers.push(modifier); 15580 } 15581 } 15582 } 15583 } 15584 return { 15585 keyModifiers, 15586 nonKeyModifiers, 15587 eventOptionModifiers 15588 }; 15589}; 15590const transformClick = (key, event) => { 15591 const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick"; 15592 return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([ 15593 `(`, 15594 key, 15595 `) === "onClick" ? "${event}" : (`, 15596 key, 15597 `)` 15598 ]) : key; 15599}; 15600const transformOn = (dir, node, context) => { 15601 return transformOn$1(dir, node, context, (baseResult) => { 15602 const { modifiers } = dir; 15603 if (!modifiers.length) return baseResult; 15604 let { key, value: handlerExp } = baseResult.props[0]; 15605 const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); 15606 if (nonKeyModifiers.includes("right")) { 15607 key = transformClick(key, `onContextmenu`); 15608 } 15609 if (nonKeyModifiers.includes("middle")) { 15610 key = transformClick(key, `onMouseup`); 15611 } 15612 if (nonKeyModifiers.length) { 15613 handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ 15614 handlerExp, 15615 JSON.stringify(nonKeyModifiers) 15616 ]); 15617 } 15618 if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard 15619 (!isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { 15620 handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ 15621 handlerExp, 15622 JSON.stringify(keyModifiers) 15623 ]); 15624 } 15625 if (eventOptionModifiers.length) { 15626 const modifierPostfix = eventOptionModifiers.map(capitalize$1).join(""); 15627 key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); 15628 } 15629 return { 15630 props: [createObjectProperty(key, handlerExp)] 15631 }; 15632 }); 15633}; 15634const transformShow = (dir, node, context) => { 15635 const { exp, loc } = dir; 15636 if (!exp) { 15637 context.onError( 15638 createDOMCompilerError(61, loc) 15639 ); 15640 } 15641 return { 15642 props: [], 15643 needRuntime: context.helper(V_SHOW) 15644 }; 15645}; 15646const ignoreSideEffectTags = (node, context) => { 15647 if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { 15648 context.removeNode(); 15649 } 15650}; 15651const DOMNodeTransforms = [ 15652 transformStyle, 15653 ...[] 15654]; 15655const DOMDirectiveTransforms = { 15656 cloak: noopDirectiveTransform, 15657 html: transformVHtml, 15658 text: transformVText, 15659 model: transformModel, 15660 // override compiler-core 15661 on: transformOn, 15662 // override compiler-core 15663 show: transformShow 15664}; 15665function compile$1(src, options2 = {}) { 15666 return baseCompile$2( 15667 src, 15668 extend$5({}, parserOptions, options2, { 15669 nodeTransforms: [ 15670 // ignore <script> and <tag> 15671 // this is not put inside DOMNodeTransforms because that list is used 15672 // by compiler-ssr to generate vnode fallback branches 15673 ignoreSideEffectTags, 15674 ...DOMNodeTransforms, 15675 ...options2.nodeTransforms || [] 15676 ], 15677 directiveTransforms: extend$5( 15678 {}, 15679 DOMDirectiveTransforms, 15680 options2.directiveTransforms || {} 15681 ), 15682 transformHoist: null 15683 }) 15684 ); 15685} 15686/** 15687* vue v3.5.16 15688* (c) 2018-present Yuxi (Evan) You and Vue contributors 15689* @license MIT
15690**/ 15691const compileCache$1 = /* @__PURE__ */ Object.create(null); 15692function compileToFunction(template, options2) { 15693 if (!isString$3(template)) { 15694 if (template.nodeType) { 15695 template = template.innerHTML; 15696 } else { 15697 return NOOP; 15698 } 15699 } 15700 const key = genCacheKey(template, options2); 15701 const cached = compileCache$1[key]; 15702 if (cached) { 15703 return cached; 15704 } 15705 if (template[0] === "#") { 15706 const el = document.querySelector(template); 15707 template = el ? el.innerHTML : ``; 15708 } 15709 const opts = extend$5( 15710 { 15711 hoistStatic: true, 15712 onError: void 0, 15713 onWarn: NOOP 15714 }, 15715 options2 15716 ); 15717 if (!opts.isCustomElement && typeof customElements !== "undefined") { 15718 opts.isCustomElement = (tag) => !!customElements.get(tag); 15719 } 15720 const { code } = compile$1(template, opts); 15721 const render2 = new Function("Vue", code)(runtimeDom); 15722 render2._rc = true; 15723 return compileCache$1[key] = render2; 15724} 15725registerRuntimeCompiler(compileToFunction); 15726function getDevtoolsGlobalHook() { 15727 return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; 15728} 15729function getTarget() { 15730 return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : {}; 15731} 15732const isProxyAvailable = typeof Proxy === "function"; 15733const HOOK_SETUP = "devtools-plugin:setup"; 15734const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; 15735let supported; 15736let perf; 15737function isPerformanceSupported() { 15738 var _a; 15739 if (supported !== void 0) { 15740 return supported; 15741 } 15742 if (typeof window !== "undefined" && window.performance) { 15743 supported = true; 15744 perf = window.performance; 15745 } else if (typeof globalThis !== "undefined" && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { 15746 supported = true; 15747 perf = globalThis.perf_hooks.performance; 15748 } else { 15749 supported = false; 15750 } 15751 return supported; 15752} 15753function now$3() { 15754 return isPerformanceSupported() ? perf.now() : Date.now(); 15755} 15756class ApiProxy { 15757 constructor(plugin, hook) { 15758 this.target = null; 15759 this.targetQueue = []; 15760 this.onQueue = []; 15761 this.plugin = plugin; 15762 this.hook = hook; 15763 const defaultSettings = {}; 15764 if (plugin.settings) { 15765 for (const id in plugin.settings) { 15766 const item = plugin.settings[id]; 15767 defaultSettings[id] = item.defaultValue; 15768 } 15769 } 15770 const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; 15771 let currentSettings = Object.assign({}, defaultSettings); 15772 try { 15773 const raw = localStorage.getItem(localSettingsSaveId); 15774 const data = JSON.parse(raw); 15775 Object.assign(currentSettings, data); 15776 } catch (e) { 15777 } 15778 this.fallbacks = { 15779 getSettings() { 15780 return currentSettings; 15781 }, 15782 setSettings(value) { 15783 try { 15784 localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); 15785 } catch (e) { 15786 } 15787 currentSettings = value; 15788 }, 15789 now() { 15790 return now$3(); 15791 } 15792 }; 15793 if (hook) { 15794 hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { 15795 if (pluginId === this.plugin.id) { 15796 this.fallbacks.setSettings(value); 15797 } 15798 }); 15799 } 15800 this.proxiedOn = new Proxy({}, { 15801 get: (_target, prop) => { 15802 if (this.target) { 15803 return this.target.on[prop]; 15804 } else { 15805 return (...args) => { 15806 this.onQueue.push({ 15807 method: prop, 15808 args 15809 }); 15810 }; 15811 } 15812 } 15813 }); 15814 this.proxiedTarget = new Proxy({}, { 15815 get: (_target, prop) => { 15816 if (this.target) { 15817 return this.target[prop]; 15818 } else if (prop === "on") { 15819 return this.proxiedOn; 15820 } else if (Object.keys(this.fallbacks).includes(prop)) { 15821 return (...args) => { 15822 this.targetQueue.push({ 15823 method: prop, 15824 args, 15825 resolve: () => { 15826 } 15827 }); 15828 return this.fallbacks[prop](...args); 15829 }; 15830 } else { 15831 return (...args) => { 15832 return new Promise((resolve2) => { 15833 this.targetQueue.push({ 15834 method: prop, 15835 args, 15836 resolve: resolve2 15837 }); 15838 }); 15839 }; 15840 } 15841 } 15842 }); 15843 } 15844 async setRealTarget(target) { 15845 this.target = target; 15846 for (const item of this.onQueue) { 15847 this.target.on[item.method](...item.args); 15848 } 15849 for (const item of this.targetQueue) { 15850 item.resolve(await this.target[item.method](...item.args)); 15851 } 15852 } 15853} 15854function setupDevtoolsPlugin(pluginDescriptor, setupFn) { 15855 const descriptor = pluginDescriptor; 15856 const target = getTarget(); 15857 const hook = getDevtoolsGlobalHook(); 15858 const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; 15859 if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !en
15859ableProxy)) { 15860 hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); 15861 } else { 15862 const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; 15863 const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; 15864 list.push({ 15865 pluginDescriptor: descriptor, 15866 setupFn, 15867 proxy 15868 }); 15869 if (proxy) { 15870 setupFn(proxy.proxiedTarget); 15871 } 15872 } 15873} 15874/*! 15875 * vuex v4.1.0 15876 * (c) 2022 Evan You 15877 * @license MIT 15878 */ 15879var storeKey = "store"; 15880function useStore(key) { 15881 if (key === void 0) key = null; 15882 return inject(key !== null ? key : storeKey); 15883} 15884function find(list, f) { 15885 return list.filter(f)[0]; 15886} 15887function deepCopy$1(obj, cache2) { 15888 if (cache2 === void 0) cache2 = []; 15889 if (obj === null || typeof obj !== "object") { 15890 return obj; 15891 } 15892 var hit = find(cache2, function(c) { 15893 return c.original === obj; 15894 }); 15895 if (hit) { 15896 return hit.copy; 15897 } 15898 var copy = Array.isArray(obj) ? [] : {}; 15899 cache2.push({ 15900 original: obj, 15901 copy 15902 }); 15903 Object.keys(obj).forEach(function(key) { 15904 copy[key] = deepCopy$1(obj[key], cache2); 15905 }); 15906 return copy; 15907} 15908function forEachValue(obj, fn) { 15909 Object.keys(obj).forEach(function(key) { 15910 return fn(obj[key], key); 15911 }); 15912} 15913function isObject$8(obj) { 15914 return obj !== null && typeof obj === "object"; 15915} 15916function isPromise$1(val) { 15917 return val && typeof val.then === "function"; 15918} 15919function partial(fn, arg) { 15920 return function() { 15921 return fn(arg); 15922 }; 15923} 15924function genericSubscribe(fn, subs, options2) { 15925 if (subs.indexOf(fn) < 0) { 15926 options2 && options2.prepend ? subs.unshift(fn) : subs.push(fn); 15927 } 15928 return function() { 15929 var i = subs.indexOf(fn); 15930 if (i > -1) { 15931 subs.splice(i, 1); 15932 } 15933 }; 15934} 15935function resetStore(store2, hot) { 15936 store2._actions = /* @__PURE__ */ Object.create(null); 15937 store2._mutations = /* @__PURE__ */ Object.create(null); 15938 store2._wrappedGetters = /* @__PURE__ */ Object.create(null); 15939 store2._modulesNamespaceMap = /* @__PURE__ */ Object.create(null); 15940 var state2 = store2.state; 15941 installModule(store2, state2, [], store2._modules.root, true); 15942 resetStoreState(store2, state2, hot); 15943} 15944function resetStoreState(store2, state2, hot) { 15945 var oldState = store2._state; 15946 var oldScope = store2._scope; 15947 store2.getters = {}; 15948 store2._makeLocalGettersCache = /* @__PURE__ */ Object.create(null); 15949 var wrappedGetters = store2._wrappedGetters; 15950 var computedObj = {}; 15951 var computedCache = {}; 15952 var scope = effectScope(true); 15953 scope.run(function() { 15954 forEachValue(wrappedGetters, function(fn, key) { 15955 computedObj[key] = partial(fn, store2); 15956 computedCache[key] = computed(function() { 15957 return computedObj[key](); 15958 }); 15959 Object.defineProperty(store2.getters, key, { 15960 get: function() { 15961 return computedCache[key].value; 15962 }, 15963 enumerable: true 15964 // for local getters 15965 }); 15966 }); 15967 }); 15968 store2._state = reactive({ 15969 data: state2 15970 }); 15971 store2._scope = scope; 15972 if (store2.strict) { 15973 enableStrictMode(store2); 15974 } 15975 if (oldState) { 15976 if (hot) { 15977 store2._withCommit(function() { 15978 oldState.data = null; 15979 }); 15980 } 15981 } 15982 if (oldScope) { 15983 oldScope.stop(); 15984 } 15985} 15986function installModule(store2, rootState, path, module, hot) { 15987 var isRoot = !path.length; 15988 var namespace = store2._modules.getNamespace(path); 15989 if (module.namespaced) { 15990 if (store2._modulesNamespaceMap[namespace] && false) ; 15991 store2._modulesNamespaceMap[namespace] = module; 15992 } 15993 if (!isRoot && !hot) { 15994 var parentState = getNestedState(rootState, path.slice(0, -1)); 15995 var moduleName = path[path.length - 1]; 15996 store2._withCommit(function() { 15997 parentState[moduleName] = module.state; 15998 }); 15999 } 16000 var local = module.context = makeLocalContext(store2, namespace, path); 16001 module.forEachMutation(function(mutation, key) { 16002 var namespacedType = namespace + key; 16003 registerMutation(store2, namespacedType, mutation, local); 16004 }); 16005 module.forEachAction(function(action, key) { 16006 var type = action.root ? key : namespace + key; 16007 var handler = action.handler || action;
vendor: 1,947 bytes, lines 16008-16068
16008 registerAction(store2, type, handler, local); 16009 }); 16010 module.forEachGetter(function(getter, key) { 16011 var namespacedType = namespace + key; 16012 registerGetter(store2, namespacedType, getter, local); 16013 }); 16014 module.forEachChild(function(child, key) { 16015 installModule(store2, rootState, path.concat(key), child, hot); 16016 }); 16017} 16018function makeLocalContext(store2, namespace, path) { 16019 var noNamespace = namespace === ""; 16020 var local = { 16021 dispatch: noNamespace ? store2.dispatch : function(_type, _payload, _options) { 16022 var args = unifyObjectStyle(_type, _payload, _options); 16023 var payload = args.payload; 16024 var options2 = args.options; 16025 var type = args.type; 16026 if (!options2 || !options2.root) { 16027 type = namespace + type; 16028 } 16029 return store2.dispatch(type, payload); 16030 }, 16031 commit: noNamespace ? store2.commit : function(_type, _payload, _options) { 16032 var args = unifyObjectStyle(_type, _payload, _options); 16033 var payload = args.payload; 16034 var options2 = args.options; 16035 var type = args.type; 16036 if (!options2 || !options2.root) { 16037 type = namespace + type; 16038 } 16039 store2.commit(type, payload, options2); 16040 } 16041 }; 16042 Object.defineProperties(local, { 16043 getters: { 16044 get: noNamespace ? function() { 16045 return store2.getters; 16046 } : function() { 16047 return makeLocalGetters(store2, namespace); 16048 } 16049 }, 16050 state: { 16051 get: function() { 16052 return getNestedState(store2.state, path); 16053 } 16054 } 16055 }); 16056 return local; 16057} 16058function makeLocalGetters(store2, namespace) { 16059 if (!store2._makeLocalGettersCache[namespace]) { 16060 var gettersProxy = {}; 16061 var splitPos = namespace.length; 16062 Object.keys(store2.getters).forEach(function(type) { 16063 if (type.slice(0, splitPos) !== namespace) { 16064 return; 16065 } 16066 var localType = type.slice(splitPos); 16067 Object.defineProperty(gettersProxy, localType, { 16068 get: function() {
16069 return store2.getters[type]; 16070 }, 16071 enumerable: true 16072 }); 16073 }); 16074 store2._makeLocalGettersCache[namespace] = gettersProxy; 16075 } 16076 return store2._makeLocalGettersCache[namespace]; 16077} 16078function registerMutation(store2, type, handler, local) { 16079 var entry = store2._mutations[type] || (store2._mutations[type] = []); 16080 entry.push(function wrappedMutationHandler(payload) { 16081 handler.call(store2, local.state, payload); 16082 }); 16083} 16084function registerAction(store2, type, handler, local) { 16085 var entry = store2._actions[type] || (store2._actions[type] = []); 16086 entry.push(function wrappedActionHandler(payload) { 16087 var res = handler.call(store2, { 16088 dispatch: local.dispatch, 16089 commit: local.commit, 16090 getters: local.getters, 16091 state: local.state, 16092 rootGetters: store2.getters, 16093 rootState: store2.state 16094 }, payload); 16095 if (!isPromise$1(res)) { 16096 res = Promise.resolve(res); 16097 } 16098 if (store2._devtoolHook) { 16099 return res.catch(function(err) { 16100 store2._devtoolHook.emit("vuex:error", err); 16101 throw err; 16102 }); 16103 } else { 16104 return res; 16105 } 16106 }); 16107} 16108function registerGetter(store2, type, rawGetter, local) { 16109 if (store2._wrappedGetters[type]) { 16110 return; 16111 } 16112 store2._wrappedGetters[type] = function wrappedGetter(store22) { 16113 return rawGetter( 16114 local.state, 16115 // local state 16116 local.getters, 16117 // local getters 16118 store22.state, 16119 // root state 16120 store22.getters 16121 // root getters 16122 ); 16123 }; 16124} 16125function enableStrictMode(store2) { 16126 watch(function() { 16127 return store2._state.data; 16128 }, function() { 16129 }, { deep: true, flush: "sync" }); 16130} 16131function getNestedState(state2, path) { 16132 return path.reduce(function(state22, key) { 16133 return state22[key]; 16134 }, state2); 16135} 16136function unifyObjectStyle(type, payload, options2) { 16137 if (isObject$8(type) && type.type) { 16138 options2 = payload; 16139 payload = type; 16140 type = type.type; 16141 } 16142 return { type, payload, options: options2 }; 16143} 16144var LABEL_VUEX_BINDINGS = "vuex bindings"; 16145var MUTATIONS_LAYER_ID = "vuex:mutations"; 16146var ACTIONS_LAYER_ID = "vuex:actions"; 16147var INSPECTOR_ID = "vuex"; 16148var actionId = 0; 16149function addDevtools(app2, store2) { 16150 setupDevtoolsPlugin( 16151 { 16152 id: "org.vuejs.vuex", 16153 app: app2, 16154 label: "Vuex", 16155 homepage: "https://next.vuex.vuejs.org/", 16156 logo: "https://vuejs.org/images/icons/favicon-96x96.png", 16157 packageName: "vuex", 16158 componentStateTypes: [LABEL_VUEX_BINDINGS] 16159 }, 16160 function(api) { 16161 api.addTimelineLayer({ 16162 id: MUTATIONS_LAYER_ID, 16163 label: "Vuex Mutations", 16164 color: COLOR_LIME_500 16165 }); 16166 api.addTimelineLayer({ 16167 id: ACTIONS_LAYER_ID, 16168 label: "Vuex Actions", 16169 color: COLOR_LIME_500 16170 }); 16171 api.addInspector({ 16172 id: INSPECTOR_ID, 16173 label: "Vuex", 16174 icon: "storage", 16175 treeFilterPlaceholder: "Filter stores..." 16176 }); 16177 api.on.getInspectorTree(function(payload) { 16178 if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) { 16179 if (payload.filter) { 16180 var nodes = []; 16181 flattenStoreForInspectorTree(nodes, store2._modules.root, payload.filter, ""); 16182 payload.rootNodes = nodes; 16183 } else { 16184 payload.rootNodes = [ 16185 formatStoreForInspectorTree(store2._modules.root, "") 16186 ]; 16187 } 16188 } 16189 }); 16190 api.on.getInspectorState(function(payload) { 16191 if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
16192 var modulePath = payload.nodeId; 16193 makeLocalGetters(store2, modulePath); 16194 payload.state = formatStoreForInspectorState( 16195 getStoreModule(store2._modules, modulePath), 16196 modulePath === "root" ? store2.getters : store2._makeLocalGettersCache, 16197 modulePath 16198 ); 16199 } 16200 }); 16201 api.on.editInspectorState(function(payload) { 16202 if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) { 16203 var modulePath = payload.nodeId; 16204 var path = payload.path; 16205 if (modulePath !== "root") { 16206 path = modulePath.split("/").filter(Boolean).concat(path); 16207 } 16208 store2._withCommit(function() { 16209 payload.set(store2._state.data, path, payload.state.value); 16210 }); 16211 } 16212 }); 16213 store2.subscribe(function(mutation, state2) { 16214 var data = {}; 16215 if (mutation.payload) { 16216 data.payload = mutation.payload; 16217 } 16218 data.state = state2; 16219 api.notifyComponentUpdate(); 16220 api.sendInspectorTree(INSPECTOR_ID); 16221 api.sendInspectorState(INSPECTOR_ID); 16222 api.addTimelineEvent({ 16223 layerId: MUTATIONS_LAYER_ID, 16224 event: { 16225 time: Date.now(), 16226 title: mutation.type, 16227 data 16228 } 16229 }); 16230 }); 16231 store2.subscribeAction({ 16232 before: function(action, state2) { 16233 var data = {}; 16234 if (action.payload) { 16235 data.payload = action.payload; 16236 } 16237 action._id = actionId++; 16238 action._time = Date.now(); 16239 data.state = state2; 16240 api.addTimelineEvent({ 16241 layerId: ACTIONS_LAYER_ID, 16242 event: { 16243 time: action._time, 16244 title: action.type, 16245 groupId: action._id, 16246 subtitle: "start", 16247 data 16248 } 16249 }); 16250 }, 16251 after: function(action, state2) { 16252 var data = {}; 16253 var duration = Date.now() - action._time; 16254 data.duration = { 16255 _custom: { 16256 type: "duration", 16257 display: duration + "ms", 16258 tooltip: "Action duration", 16259 value: duration 16260 } 16261 }; 16262 if (action.payload) { 16263 data.payload = action.payload; 16264 } 16265 data.state = state2; 16266 api.addTimelineEvent({ 16267 layerId: ACTIONS_LAYER_ID, 16268 event: { 16269 time: Date.now(), 16270 title: action.type, 16271 groupId: action._id, 16272 subtitle: "end", 16273 data 16274 } 16275 }); 16276 } 16277 }); 16278 } 16279 ); 16280} 16281var COLOR_LIME_500 = 8702998; 16282var COLOR_DARK = 6710886; 16283var COLOR_WHITE = 16777215; 16284var TAG_NAMESPACED = { 16285 label: "namespaced", 16286 textColor: COLOR_WHITE, 16287 backgroundColor: COLOR_DARK 16288}; 16289function extractNameFromPath(path) { 16290 return path && path !== "root" ? path.split("/").slice(-2, -1)[0] : "Root"; 16291} 16292function formatStoreForInspectorTree(module, path) { 16293 return { 16294 id: path || "root", 16295 // all modules end with a `/`, we want the last segment only 16296 // cart/ -> cart 16297 // nested/cart/ -> cart 16298 label: extractNameFromPath(path), 16299 tags: module.namespaced ? [TAG_NAMESPACED] : [], 16300 children: Object.keys(module._children).map( 16301 function(moduleName) { 16302 return formatStoreForInspectorTree( 16303 module._children[moduleName], 16304 path + moduleName + "/" 16305 ); 16306 } 16307 ) 16308 }; 16309} 16310function flattenStoreForInspectorTree(result, module, filter2, path) { 16311 if (path.includes(filter2)) { 16312 result.push({ 16313 id: path || "root", 16314 label: path.endsWith("/") ? path.slice(0, path.length - 1) : path || "Root", 16315 tags: module.namespaced ? [TAG_NAMESPACED] : [] 16316 }); 16317 } 16318 Object.keys(module._children).forEach(function(moduleName) { 16319 flattenStoreForInspectorTree(result, module._children[moduleName], filter2, path + moduleName + "/"); 16320 }); 16321} 16322function formatStoreForInspectorState(module, getters2, path) { 16323 getters2 = path === "root" ? getters2 : getters2[path]; 16324 var gettersKeys = Object.keys(getters2); 16325 var storeState = { 16326 state: Object.keys(module.state).map(function(key) { 16327 return { 16328 key, 16329 editable: true, 16330 value: module.state[key] 16331 }; 16332 }) 16333 }; 16334 if (gettersKeys.length) { 16335 var tree = transformPathsToObjectTree(getters2); 16336 storeState.getters = Object.keys(tree).map(function(key) { 16337 return { 16338 key: key.endsWith("/") ? extractNameFromPath(key) : key, 16339 editable: false, 16340 value: canThrow(function() { 16341 return tree[key]; 16342 }) 16343 }; 16344 }); 16345 } 16346 return storeState; 16347} 16348function transformPathsToObjectTree(getters2) { 16349 var result = {}; 16350 Object.keys(getters2).forEach(function(key) { 16351 var path = key.split("/"); 16352 if (path.length > 1) { 16353 var target = result; 16354 var leafKey = path.pop(); 16355 path.forEach(function(p2) { 16356 if (!target[p2]) { 16357 target[p2] = { 16358 _custom: { 16359 value: {}, 16360 display: p2, 16361 tooltip: "Module", 16362 abstract: true 16363 } 16364 }; 16365 } 16366 target = target[p2]._custom.value; 16367 }); 16368 target[leafKey] = canThrow(function() { 16369 return getters2[key]; 16370 }); 16371 } else { 16372 result[key] = canThrow(function() { 16373 return getters2[key]; 16374 }); 16375 } 16376 }); 16377 return result; 16378} 16379function getStoreModule(moduleMap, path) { 16380 var names = path.split("/").filter(function(n) { 16381 return n; 16382 }); 16383 return names.reduce( 16384 function(module, moduleName, i) { 16385 var child = module[moduleName]; 16386 if (!child) { 16387 throw new Error('Missing module "' + moduleName + '" for path "' + path + '".'); 16388 } 16389 return i === names.length - 1 ? child : child._children; 16390 }, 16391 path === "root" ? moduleMap : moduleMap.root._children 16392 ); 16393} 16394function canThrow(cb) { 16395 try { 16396 return cb(); 16397 } catch (e) { 16398 return e; 16399 } 16400} 16401var Module = function Module2(rawModule, runtime) { 16402 this.runtime = runtime; 16403 this._children = /* @__PURE__ */ Object.create(null); 16404 this._rawModule = rawModule; 16405 var rawState = rawModule.state; 16406 this.state = (typeof rawState === "function" ? rawState() : rawState) || {}; 16407}; 16408var prototypeAccessors$1 = { namespaced: { configurable: true } }; 16409prototypeAccessors$1.namespaced.get = function() { 16410 return !!this._rawModule.namespaced; 16411}; 16412Module.prototype.addChild = function addChild(key, module) { 16413 this._children[key] = module; 16414}; 16415Module.prototype.removeChild = function removeChild(key) { 16416 delete this._children[key]; 16417}; 16418Module.prototype.getChild = function getChild(key) { 16419 return this._children[key]; 16420}; 16421Module.prototype.hasChild = function hasChild(key) { 16422 return key in this._children; 16423}; 16424Module.prototype.update = function update(rawModule) { 16425 this._rawModule.namespaced = rawModule.namespaced; 16426 if (rawModule.actions) { 16427 this._rawModule.actions = rawModule.actions; 16428 } 16429 if (rawModule.mutations) { 16430 this._rawModule.mutations = rawModule.mutations; 16431 } 16432 if (rawModule.getters) { 16433 this._rawModule.getters = rawModule.getters; 16434 } 16435}; 16436Module.prototype.forEachChild = function forEachChild(fn) { 16437 forEachValue(this._children, fn); 16438}; 16439Module.prototype.forEachGetter = function forEachGetter(fn) { 16440 if (this._rawModule.getters) {
16441 forEachValue(this._rawModule.getters, fn); 16442 } 16443}; 16444Module.prototype.forEachAction = function forEachAction(fn) { 16445 if (this._rawModule.actions) { 16446 forEachValue(this._rawModule.actions, fn); 16447 } 16448}; 16449Module.prototype.forEachMutation = function forEachMutation(fn) { 16450 if (this._rawModule.mutations) { 16451 forEachValue(this._rawModule.mutations, fn); 16452 } 16453}; 16454Object.defineProperties(Module.prototype, prototypeAccessors$1); 16455var ModuleCollection = function ModuleCollection2(rawRootModule) { 16456 this.register([], rawRootModule, false); 16457}; 16458ModuleCollection.prototype.get = function get(path) { 16459 return path.reduce(function(module, key) { 16460 return module.getChild(key); 16461 }, this.root); 16462}; 16463ModuleCollection.prototype.getNamespace = function getNamespace(path) { 16464 var module = this.root; 16465 return path.reduce(function(namespace, key) { 16466 module = module.getChild(key); 16467 return namespace + (module.namespaced ? key + "/" : ""); 16468 }, ""); 16469}; 16470ModuleCollection.prototype.update = function update$1(rawRootModule) { 16471 update2([], this.root, rawRootModule); 16472}; 16473ModuleCollection.prototype.register = function register(path, rawModule, runtime) { 16474 var this$1$1 = this; 16475 if (runtime === void 0) runtime = true; 16476 var newModule = new Module(rawModule, runtime); 16477 if (path.length === 0) { 16478 this.root = newModule; 16479 } else { 16480 var parent = this.get(path.slice(0, -1)); 16481 parent.addChild(path[path.length - 1], newModule); 16482 } 16483 if (rawModule.modules) { 16484 forEachValue(rawModule.modules, function(rawChildModule, key) { 16485 this$1$1.register(path.concat(key), rawChildModule, runtime); 16486 }); 16487 } 16488}; 16489ModuleCollection.prototype.unregister = function unregister(path) { 16490 var parent = this.get(path.slice(0, -1)); 16491 var key = path[path.length - 1]; 16492 var child = parent.getChild(key); 16493 if (!child) { 16494 return; 16495 } 16496 if (!child.runtime) { 16497 return; 16498 } 16499 parent.removeChild(key); 16500}; 16501ModuleCollection.prototype.isRegistered = function isRegistered(path) { 16502 var parent = this.get(path.slice(0, -1)); 16503 var key = path[path.length - 1]; 16504 if (parent) { 16505 return parent.hasChild(key); 16506 } 16507 return false; 16508}; 16509function update2(path, targetModule, newModule) { 16510 targetModule.update(newModule); 16511 if (newModule.modules) { 16512 for (var key in newModule.modules) { 16513 if (!targetModule.getChild(key)) { 16514 return; 16515 } 16516 update2( 16517 path.concat(key), 16518 targetModule.getChild(key), 16519 newModule.modules[key] 16520 ); 16521 } 16522 } 16523} 16524function createStore(options2) { 16525 return new Store(options2); 16526} 16527var Store = function Store2(options2) { 16528 var this$1$1 = this; 16529 if (options2 === void 0) options2 = {}; 16530 var plugins = options2.plugins; 16531 if (plugins === void 0) plugins = []; 16532 var strict = options2.strict; 16533 if (strict === void 0) strict = false; 16534 var devtools2 = options2.devtools; 16535 this._committing = false; 16536 this._actions = /* @__PURE__ */ Object.create(null); 16537 this._actionSubscribers = []; 16538 this._mutations = /* @__PURE__ */ Object.create(null); 16539 this._wrappedGetters = /* @__PURE__ */ Object.create(null); 16540 this._modules = new ModuleCollection(options2); 16541 this._modulesNamespaceMap = /* @__PURE__ */ Object.create(null); 16542 this._subscribers = []; 16543 this._makeLocalGettersCache = /* @__PURE__ */ Object.create(null); 16544 this._scope = null; 16545 this._devtools = devtools2; 16546 var store2 = this; 16547 var ref2 = this; 16548 var dispatch2 = ref2.dispatch; 16549 var commit2 = ref2.commit; 16550 this.dispatch = function boundDispatch(type, payload) { 16551 return dispatch2.call(store2, type, payload); 16552 }; 16553 this.commit = function boundCommit(type, payload, options22) { 16554 return commit2.call(store2, type, payload, options22); 16555 }; 16556 this.strict = strict; 16557 var state2 = this._modules.root.state; 16558 installModule(this, state2, [], this._modules.root); 16559 resetStoreState(this, state2); 16560 plugins.forEach(function(plugin) { 16561 return plugin(this$1$1); 16562 }); 16563}; 16564var prototypeAccessors = { state: { configurable: true } }; 16565Store.prototype.install = function install(app2, injectKey) { 16566 app2.provide(injectKey || storeKey, this); 16567 app2.config.globalProperties.$store = this; 16568 var useDevtools = this._devtools !== void 0 ? this._devtools : false;
16569 if (useDevtools) { 16570 addDevtools(app2, this); 16571 } 16572}; 16573prototypeAccessors.state.get = function() { 16574 return this._state.data; 16575}; 16576prototypeAccessors.state.set = function(v) { 16577}; 16578Store.prototype.commit = function commit(_type, _payload, _options) { 16579 var this$1$1 = this; 16580 var ref2 = unifyObjectStyle(_type, _payload, _options); 16581 var type = ref2.type; 16582 var payload = ref2.payload; 16583 var mutation = { type, payload }; 16584 var entry = this._mutations[type]; 16585 if (!entry) { 16586 return; 16587 } 16588 this._withCommit(function() { 16589 entry.forEach(function commitIterator(handler) { 16590 handler(payload); 16591 }); 16592 }); 16593 this._subscribers.slice().forEach(function(sub) { 16594 return sub(mutation, this$1$1.state); 16595 }); 16596}; 16597Store.prototype.dispatch = function dispatch(_type, _payload) { 16598 var this$1$1 = this; 16599 var ref2 = unifyObjectStyle(_type, _payload); 16600 var type = ref2.type; 16601 var payload = ref2.payload; 16602 var action = { type, payload }; 16603 var entry = this._actions[type]; 16604 if (!entry) { 16605 return; 16606 } 16607 try { 16608 this._actionSubscribers.slice().filter(function(sub) { 16609 return sub.before; 16610 }
16610).forEach(function(sub) { 16611 return sub.before(action, this$1$1.state); 16612 }); 16613 } catch (e) { 16614 } 16615 var result = entry.length > 1 ? Promise.all(entry.map(function(handler) { 16616 return handler(payload); 16617 })) : entry[0](payload); 16618 return new Promise(function(resolve2, reject) { 16619 result.then(function(res) { 16620 try { 16621 this$1$1._actionSubscribers.filter(function(sub) { 16622 return sub.after; 16623 }).forEach(function(sub) { 16624 return sub.after(action, this$1$1.state); 16625 }); 16626 } catch (e) { 16627 } 16628 resolve2(res); 16629 }, function(error) { 16630 try { 16631 this$1$1._actionSubscribers.filter(function(sub) { 16632 return sub.error; 16633 }).forEach(function(sub) { 16634 return sub.error(action, this$1$1.state, error); 16635 }); 16636 } catch (e) { 16637 } 16638 reject(error); 16639 }); 16640 }); 16641}; 16642Store.prototype.subscribe = function subscribe(fn, options2) { 16643 return genericSubscribe(fn, this._subscribers, options2); 16644}; 16645Store.prototype.subscribeAction = function subscribeAction(fn, options2) { 16646 var subs = typeof fn === "function" ? { before: fn } : fn; 16647 return genericSubscribe(subs, this._actionSubscribers, options2); 16648}; 16649Store.prototype.watch = function watch$12(getter, cb, options2) { 16650 var this$1$1 = this; 16651 return watch(function() { 16652 return getter(this$1$1.state, this$1$1.getters); 16653 }, cb, Object.assign({}, options2)); 16654}; 16655Store.prototype.replaceState = function replaceState(state2) { 16656 var this$1$1 = this; 16657 this._withCommit(function() { 16658 this$1$1._state.data = state2; 16659 }); 16660}; 16661Store.prototype.registerModule = function registerModule(path, rawModule, options2) { 16662 if (options2 === void 0) options2 = {}; 16663 if (typeof path === "string") { 16664 path = [path]; 16665 } 16666 this._modules.register(path, rawModule); 16667 installModule(this, this.state, path, this._modules.get(path), options2.preserveState); 16668 resetStoreState(this, this.state); 16669}; 16670Store.prototype.unregisterModule = function unregisterModule(path) { 16671 var this$1$1 = this; 16672 if (typeof path === "string") { 16673 path = [path]; 16674 } 16675 this._modules.unregister(path); 16676 this._withCommit(function() { 16677 var parentState = getNestedState(this$1$1.state, path.slice(0, -1)); 16678 delete parentState[path[path.length - 1]]; 16679 }); 16680 resetStore(this); 16681}; 16682Store.prototype.hasModule = function hasModule(path) { 16683 if (typeof path === "string") { 16684 path = [path]; 16685 } 16686 return this._modules.isRegistered(path); 16687}; 16688Store.prototype.hotUpdate = function hotUpdate(newOptions) { 16689 this._modules.update(newOptions); 16690 resetStore(this, true); 16691}; 16692Store.prototype._withCommit = function _withCommit(fn) { 16693 var committing = this._committing; 16694 this._committing = true; 16695 fn(); 16696 this._committing = committing; 16697}; 16698Object.defineProperties(Store.prototype, prototypeAccessors); 16699var mapState = normalizeNamespace(function(namespace, states) { 16700 var res = {}; 16701 normalizeMap(states).forEach(function(ref2) { 16702 var key = ref2.key; 16703 var val = ref2.val; 16704 res[key] = function mappedState() { 16705 var state2 = this.$store.state; 16706 var getters2 = this.$store.getters; 16707 if (namespace) { 16708 var module = getModuleByNamespace(this.$store, "mapState", namespace); 16709 if (!module) { 16710 return; 16711 } 16712 state2 = module.context.state; 16713 getters2 = module.context.getters; 16714 } 16715 return typeof val === "function" ? val.call(this, state2, getters2) : state2[val]; 16716 }; 16717 res[key].vuex = true; 16718 }); 16719 return res; 16720}); 16721var mapMutations = normalizeNamespace(function(namespace, mutations2) { 16722 var res = {}; 16723 normalizeMap(mutations2).forEach(function(ref2) { 16724 var key = ref2.key; 16725 var val = ref2.val; 16726 res[key] = function mappedMutation() { 16727 var args = [], len = arguments.length; 16728 while (len--) args[len] = arguments[len]; 16729 var commit2 = this.$store.commit; 16730 if (namespace) { 16731 var module = getModuleByNamespace(this.$store, "mapMutations", namespace); 16732 if (!module) { 16733 return; 16734 } 16735 commit2 = module.context.commit; 16736 } 16737 return typeof val === "function" ? val.apply(this, [commit2].concat(args)) : commit2.apply(this.$store, [val].concat(args)); 16738 }; 16739 }); 16740 return res; 16741}); 16742var mapGetters = normalizeNamespace(function(namespace, getters2) { 16743 var res = {}; 16744 normalizeMap(getters2).forEach(function(ref2) {
16745 var key = ref2.key; 16746 var val = ref2.val; 16747 val = namespace + val; 16748 res[key] = function mappedGetter() { 16749 if (namespace && !getModuleByNamespace(this.$store, "mapGetters", namespace)) { 16750 return; 16751 } 16752 return this.$store.getters[val]; 16753 }; 16754 res[key].vuex = true; 16755 }); 16756 return res; 16757}); 16758var mapActions = normalizeNamespace(function(namespace, actions2) { 16759 var res = {}; 16760 normalizeMap(actions2).forEach(function(ref2) { 16761 var key = ref2.key; 16762 var val = ref2.val; 16763 res[key] = function mappedAction() { 16764 var args = [], len = arguments.length; 16765 while (len--) args[len] = arguments[len]; 16766 var dispatch2 = this.$store.dispatch; 16767 if (namespace) { 16768 var module = getModuleByNamespace(this.$store, "mapActions", namespace); 16769 if (!module) { 16770 return; 16771 } 16772 dispatch2 = module.context.dispatch; 16773 } 16774 return typeof val === "function" ? val.apply(this, [dispatch2].concat(args)) : dispatch2.apply(this.$store, [val].concat(args)); 16775 }; 16776 }); 16777 return res; 16778}); 16779var createNamespacedHelpers = function(namespace) { 16780 return { 16781 mapState: mapState.bind(null, namespace), 16782 mapGetters: mapGetters.bind(null, namespace), 16783 mapMutations: mapMutations.bind(null, namespace), 16784 mapActions: mapActions.bind(null, namespace) 16785 }; 16786}; 16787function normalizeMap(map) { 16788 if (!isValidMap(map)) { 16789 return []; 16790 } 16791 return Array.isArray(map) ? map.map(function(key) { 16792 return { key, val: key }; 16793 }) : Object.keys(map).map(function(key) { 16794 return { key, val: map[key] }; 16795 }); 16796} 16797function isValidMap(map) { 16798 return Array.isArray(map) || isObject$8(map); 16799} 16800function normalizeNamespace(fn) { 16801 return function(namespace, map) { 16802 if (typeof namespace !== "string") { 16803 map = namespace; 16804 namespace = ""; 16805 } else if (namespace.charAt(namespace.length - 1) !== "/") { 16806 namespace += "/"; 16807 } 16808 return fn(namespace, map); 16809 }; 16810} 16811function getModuleByNamespace(store2, helper, namespace) { 16812 var module = store2._modulesNamespaceMap[namespace]; 16813 return module; 16814} 16815function createLogger(ref2) { 16816 if (ref2 === void 0) ref2 = {}; 16817 var collapsed = ref2.collapsed; 16818 if (collapsed === void 0) collapsed = true; 16819 var filter2 = ref2.filter; 16820 if (filter2 === void 0) filter2 = function(mutation, stateBefore, stateAfter) { 16821 return true; 16822 }; 16823 var transformer = ref2.transformer; 16824 if (transformer === void 0) transformer = function(state2) { 16825 return state2; 16826 }; 16827 var mutationTransformer = ref2.mutationTransformer; 16828 if (mutationTransformer === void 0) mutationTransformer = function(mut) { 16829 return mut; 16830 }; 16831 var actionFilter = ref2.actionFilter; 16832 if (actionFilter === void 0) actionFilter = function(action, state2) { 16833 return true; 16834 }; 16835 var actionTransformer = ref2.actionTransformer; 16836 if (actionTransformer === void 0) actionTransformer = function(act) { 16837 return act; 16838 }; 16839 var logMutations = ref2.logMutations; 16840 if (logMutations === void 0) logMutations = true; 16841 var logActions = ref2.logActions; 16842 if (logActions === void 0) logActions = true; 16843 var logger = ref2.logger; 16844 if (logger === void 0) logger = console; 16845 return function(store2) { 16846 var prevState = deepCopy$1(store2.state); 16847 if (typeof logger === "undefined") { 16848 return; 16849 } 16850 if (logMutations) { 16851 store2.subscribe(function(mutation, state2) { 16852 var nextState = deepCopy$1(state2); 16853 if (filter2(mutation, prevState, nextState)) { 16854 var formattedTime = getFormattedTime(); 16855 var formattedMutation = mutationTransformer(mutation); 16856 var message = "mutation " + mutation.type + formattedTime; 16857 startMessage(logger, message, collapsed); 16858 logger.log("%c prev state", "color: #9E9E9E; font-weight: bold", transformer(prevState)); 16859 logger.log("%c mutation", "color: #03A9F4; font-weight: bold", formattedMutation); 16860 logger.log("%c next state", "color: #4CAF50; font-weight: bold", transformer(nextState)); 16861 endMessage(logger); 16862 } 16863 prevState = nextState; 16864 }); 16865 } 16866 if (logActions) { 16867 store2.subscribeAction(function(action, state2) { 16868 if (actionFilter(action, state2)) { 16869 var formattedTime = getFormattedTime(); 16870 var formattedAction = actionTransformer(action); 16871 var message = "action " + action.type + formattedTime; 16872 startMessage(logger, message, collapsed); 16873 logger.log("%c action", "color: #03A9F4; font-weight: bold", formattedAction); 16874 endMessage(logger); 16875 } 16876 }); 16877 } 16878 }; 16879} 16880function startMessage(logger, message, collapsed) { 16881 var startMessage2 = collapsed ? logger.groupCollapsed : logger.group; 16882 try { 16883 startMessage2.call(logger, message); 16884 } catch (e) { 16885 logger.log(message); 16886 } 16887} 16888function endMessage(logger) { 16889 try { 16890 logger.groupEnd(); 16891 } catch (e) { 16892 logger.log("ââ log end ââ"); 16893 } 16894} 16895function getFormattedTime() { 16896 var time = /* @__PURE__ */ new Date(); 16897 return " @ " + pad(time.getHours(), 2) + ":" + pad(time.getMinutes(), 2) + ":" + pad(time.getSeconds(), 2) + "." + pad(time.getMilliseconds(), 3); 16898} 16899function repeat(str, times) { 16900 return new Array(times + 1).join(str); 16901} 16902function pad(num, maxLength) { 16903 return repeat("0", maxLength - num.toString().length) + num; 16904} 16905var index = { 16906 version: "4.1.0", 16907 Store, 16908 storeKey, 16909 createStore, 16910 useStore, 16911 mapState, 16912 mapMutations, 16913 mapGetters, 16914 mapActions,
16915 createNamespacedHelpers, 16916 createLogger 16917}; 16918function empty(data) { 16919 if (typeof data === "number" || typeof data === "boolean") { 16920 return false; 16921 } 16922 if (typeof data === "undefined" || data === null) { 16923 return true; 16924 } 16925 if (typeof data.length !== "undefined") { 16926 return data.length === 0; 16927 } 16928 let count = 0; 16929 const keys = Object.keys(data); 16930 keys.forEach((key) => { 16931 if (Object.hasOwnProperty.call(data, key)) { 16932 count += 1; 16933 } 16934 }); 16935 return count === 0; 16936} 16937const ENVIRONMENT_TYPES = { 16938 NAME: "environment", 16939 state: { 16940 ENVIRONMENT_BASE_URL: "baseUrl", 16941 ENVIRONMENT_ASSETS_PATH: "assetsPath", 16942 ENVIRONMENT_LANGUAGE: "language", 16943 ENVIRONMENT_SITE_NAME: "siteName", 16944 ENVIRONMENT_MOBILE_BP: "mobileBp", 16945 ENVIRONMENT_TABLET_BP: "tabletBp", 16946 ENVIRONMENT_DESKTOP_BP: "desktopBp", 16947 ENVIRONMENT_LARGE_DESKTOP_BP: "largeDesktopBp", 16948 ENVIRONMENT_WINDOW_WIDTH: "windowWidth", 16949 ENVIRONMENT_LOADING: "loading", 16950 ENVIRONMENT_LINK_LIST: "linkList", 16951 ENVIRONMENT_LINK_IDS: "linkIds", 16952 ENVIRONMENT_SIDEBAR_PORTAL: "sidebarPortal", 16953 ENVIRONMENT_BREADCRUMB_EXTENSION: "breadcrumbExtension", 16954 ENVIRONMENT_ACTIVE_LINK_TEASER: "activeLinkTeaser" 16955 }, 16956 mutations: { 16957 SET_ENVIRONMENT_BASE_URL: "setBaseUrl", 16958 SET_ENVIRONMENT_ASSETS_PATH: "setAssetsPath", 16959 SET_ENVIRONMENT_LANGUAGE: "setLanguage", 16960 SET_ENVIRONMENT_SITE_NAME: "setSiteName", 16961 SET_ENVIRONMENT_WINDOW_WIDTH: "setWindowWidth", 16962 SET_ENVIRONMENT_LOADING: "setLoading", 16963 SET_ENVIRONMENT_LINK: "setLink", 16964 SET_ENVIRONMENT_SIDEBAR_PORTAL: "setSidebarPortal", 16965 SET_ENVIRONMENT_BREADCRUMB_EXTENSION: "setBreadcrumbExtension", 16966 SET_ENVIRONMENT_ACTIVE_LINK_TEASER: "setActiveLinkTeaser" 16967 }, 16968 getters: { 16969 GET_ENVIRONMENT_IS_MOBILE: "isMobile", 16970 GET_ENVIRONMENT_IS_TABLET: "isTablet", 16971 GET_ENVIRONMENT_IS_DESKTOP: "isDesktop", 16972 GET_ENVIRONMENT_IS_LARGE_DESKTOP: "isLargeDesktop", 16973 GET_ENVIRONMENT_IS_XLARGE_DESKTOP: "isXLargeDesktop", 16974 GET_ENVIRONMENT_ASSETS_URL: "getAssetsUrl" 16975 }, 16976 actions: { 16977 ACTION_ENVIRONMENT_SWITCH_LANGUAGE: "switchLanguage", 16978 ACTION_ENVIRONMENT_START_RESIZE_LISTENER: "startResizeListener" 16979 } 16980}; 16981const CONSENT_TYPES = { 16982 NAME: "consent", 16983 state: { 16984 CONSENT_DONE: "consentDone", 16985 CONSENT_VIMEO: "consentVimeo", 16986 CONSENT_YOUTUBE: "consentGoogleMaps", 16987 CONSENT_GOOGLEMAPS: "consentYouTube", 16988 CONSENT_MATOMO: "consentMatomo", 16989 CONSENT_RECAPTCHA: "consentRecaptcha" 16990 }, 16991 mutations: { 16992 CONSENT_SET_DONE: "consentSetDone", 16993 CONSENT_SET_VIMEO: "consentSetVimeo", 16994 CONSENT_SET_YOUTUBE: "consentSetYouTube", 16995 CONSENT_SET_GOOGLEMAPS: "consentSetGoogleMaps", 16996 CONSENT_SET_MATOMO: "consentSetMatomo", 16997 CONSENT_SET_RECAPTCHA: "consentSetRecaptcha" 16998 } 16999}; 17000const _export_sfc = (sfc, props2) => { 17001 const target = sfc.__vccOpts || sfc; 17002 for (const [key, val] of props2) { 17003 target[key] = val; 17004 } 17005 return target; 17006}; 17007const _sfc_main$1F = { 17008 name: "ConsentEntry", 17009 // components: {}, 17010 props: { 17011 modelValue: { 17012 type: Boolean 17013 }, 17014 title: { 17015 type: String, 17016 default: "" 17017 }, 17018 description: { 17019 type: String, 17020 default: "" 17021 } 17022 }, 17023 emits: ["update:modelValue"], 17024 data() { 17025 return { 17026 checked: false 17027 }; 17028 }, 17029 // computed: {}, 17030 // methods: {}, 17031 watch: { 17032 checked() { 17033 this.$emit("update:modelValue", this.checked); 17034 }, 17035 modelValue() { 17036 if (this.modelValue !== this.checked) { 17037 this.checked = this.modelValue; 17038 } 17039 } 17040 }, 17041 // Livecycle hooks 17042 // created() {}, 17043 mounted() { 17044 this.checked = this.modelValue; 17045 } 17046 // updated() {}, 17047 // beforeDestroy() {}, 17048}; 17049const _hoisted_1$1w = { class: "consent-entry" }; 17050const _hoisted_2$18 = { class: "input-label" }; 17051function _sfc_render$1D(_ctx, _cache, $props, $setup, $data, $options) { 17052 return openBlock(), createElementBlock("label", _hoisted_1$1w, [ 17053 createBaseVNode("div", _hoisted_2$18, [ 17054 createTextVNode(toDisplayString$1($props.title) + " ", 1), 17055 createBaseVNode("p", null, toDisplayString$1($props.description), 1) 17056 ]), 17057 withDirectives(createBaseVNode("input", { 17058 "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.checked = $event), 17059 type: "checkbox", 17060 role: "switch" 17061 }, null, 512), [ 17062 [vModelCheckbox, $data.checked] 17063 ]), 17064 _cache[1] || (_cache[1] = createBaseVNode("span", { class: "state" }, [ 17065 createBaseVNode("span", { class: "container" }, [ 17066 createBaseVNode("span", { class: "position" }) 17067 ]) 17068 ], -1)) 17069 ]); 17070} 17071const ConsentEntry = /* @__PURE__ */ _export_sfc(_sfc_main$1F, [["render", _sfc_render$1D]]); 17072const _sfc_main$1E = { 17073 name: "CookieConsent", 17074 components: { 17075 ConsentEntry 17076 }, 17077 // props: {}, 17078 data() { 17079 return { 17080 isOpenCookieConfig: false,
17081 vimeoChecked: false, 17082 youTubeChecked: false, 17083 googleMapsChecked: false, 17084 matomoChecked: false, 17085 recaptchaChecked: false, 17086 dataPrivacyUrl: "" 17087 }; 17088 }, 17089 computed: { 17090 ...mapState(CONSENT_TYPES.NAME, { 17091 consentDone: CONSENT_TYPES.state.CONSENT_DONE, 17092 consentVimeo: CONSENT_TYPES.state.CONSENT_VIMEO, 17093 consentYouTube: CONSENT_TYPES.state.CONSENT_YOUTUBE, 17094 consentGoogleMaps: CONSENT_TYPES.state.CONSENT_GOOGLEMAPS, 17095 consentMatomo: CONSENT_TYPES.state.CONSENT_MATOMO, 17096 consentRecaptcha: CONSENT_TYPES.state.CONSENT_RECAPTCHA 17097 }), 17098 ...mapState(ENVIRONMENT_TYPES.NAME, { 17099 baseUrl: ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL, 17100 language: ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE, 17101 siteName: ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME 17102 }), 17103 done: { 17104 get() { 17105 return this.consentDone; 17106 }, 17107 set(value) { 17108 this.consentSetDone({ 17109 [CONSENT_TYPES.state.CONSENT_DONE]: value 17110 }); 17111 } 17112 }, 17113 vimeo: { 17114 get() { 17115 return this.consentVimeo; 17116 }, 17117 set(value) { 17118 this.consentSetVimeo({ 17119 [CONSENT_TYPES.state.CONSENT_VIMEO]: value 17120 }); 17121 } 17122 }, 17123 youTube: { 17124 get() { 17125 return this.consentYouTube; 17126 }, 17127 set(value) { 17128 this.consentSetYouTube({ 17129 [CONSENT_TYPES.state.CONSENT_YOUTUBE]: value 17130 }); 17131 } 17132 }, 17133 googleMaps: { 17134 get() { 17135 return this.consentGoogleMaps; 17136 }, 17137 set(value) { 17138 this.consentSetGoogleMaps({ 17139 [CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]: value 17140 }); 17141 } 17142 }, 17143 matomo: { 17144 get() { 17145 return this.consentMatomo; 17146 }, 17147 set(value) { 17148 this.consentSetMatomo({ 17149 [CONSENT_TYPES.state.CONSENT_MATOMO]: value 17150 }); 17151 } 17152 }, 17153 recaptcha: { 17154 get() { 17155 return this.consentRecaptcha; 17156 }, 17157 set(value) { 17158 this.consentSetRecaptcha({ 17159 [CONSENT_TYPES.state.CONSENT_RECAPTCHA]: value 17160 }); 17161 } 17162 } 17163 }, 17164 // watch: {}, 17165 // Livecycle hooks 17166 // created() {}, 17167 mounted() { 17168 this.vimeoChecked = this.vimeo; 17169 this.youTubeChecked = this.youTube; 17170 this.googleMapsChecked = this.googleMaps; 17171 this.matomoChecked = this.matomo; 17172 this.recaptchaChecked = this.recaptcha; 17173 this.$refs.cookieConsent.focus(); 17174 this.dataPrivacyUrl = "de" === this.language ? "https://www.stiftung-gedenkstaetten.de/datenschutz" : "https://www.stiftung-gedenkstaetten.de/en/datenschutz"; 17175 }, 17176 // updated() {}, 17177 // beforeUnmount() {}, 17178 methods: { 17179 ...mapMutations(CONSENT_TYPES.NAME, { 17180 consentSetDone: CONSENT_TYPES.mutations.CONSENT_SET_DONE, 17181 consentSetVimeo: CONSENT_TYPES.mutations.CONSENT_SET_VIMEO, 17182 consentSetYouTube: CONSENT_TYPES.mutations.CONSENT_SET_YOUTUBE, 17183 consentSetGoogleMaps: CONSENT_TYPES.mutations.CONSENT_SET_GOOGLEMAPS, 17184 consentSetMatomo: CONSENT_TYPES.mutations.CONSENT_SET_MATOMO, 17185 consentSetRecaptcha: CONSENT_TYPES.mutations.CONSENT_SET_RECAPTCHA 17186 }), 17187 confirmSelection() { 17188 this.vimeo = this.vimeoChecked; 17189 this.youTube = this.youTubeChecked; 17190 this.googleMaps = this.googleMapsChecked; 17191 this.matomo = this.matomoChecked; 17192 this.recaptcha = this.recaptchaChecked; 17193 this.confirm(); 17194 }, 17195 confirmAll() { 17196 this.vimeo = true; 17197 this.youTube = true; 17198 this.googleMaps = true; 17199 this.matomo = true; 17200 this.recaptcha = true; 17201 this.confirm(); 17202 }, 17203 confirm() { 17204 this.done = true; 17205 window.location.reload(); 17206 }, 17207 toggleCookieConfig() { 17208 this.isOpenCookieConfig = !this.isOpenCookieConfig; 17209 this.$nextTick(() => { 17210 if (this.isOpenCookieConfig) { 17211 this.$refs.closeCookieConfig.focus(); 17212 } 17213 }); 17214 }, 17215 handleEsc() { 17216 if (this.isOpenCookieConfig) { 17217 this.toggleCookieConfig(); 17218 } 17219 }, 17220 handleFirstItem(event) { 17221 event.preventDefault(); 17222 this.$refs.confirmAllButton.focus(); 17223 }, 17224 handleLastItem(event) { 17225 event.preventDefault(); 17226 this.$refs.closeCookieConfig.focus(); 17227 } 17228 } 17229}; 17230const _hoisted_1$1v = { 17231 ref: "cookieConsent", 17232 class: "cookie-consent" 17233}; 17234const _hoisted_2$17 = { class: "cookie-consent-wrapper" }; 17235const _hoisted_3$W = { class: "buttons-wrapper" }; 17236const _hoisted_4$H = ["aria-expanded"]; 17237const _hoisted_5$u = { 17238 class: "article-wrapper", 17239 role: "dialog" 17240}; 17241const _hoisted_6$o = { class: "visually-hidden" }; 17242const _hoisted_7$m = { class: "article-content" }; 17243const _hoisted_8$g = { class: "article-content-wrapper" }; 17244const _hoisted_9$d = { class: "content-block row" }; 17245const _hoisted_10$8 = { class: "columns" };
17246const _hoisted_11$7 = { class: "content-block row" }; 17247const _hoisted_12$8 = { class: "columns" }; 17248const _hoisted_13$8 = { class: "fieldset-info" }; 17249const _hoisted_14$8 = { class: "input-label" }; 17250const _hoisted_15$7 = { class: "fieldset-info" }; 17251const _hoisted_16$6 = { class: "fieldset-info" }; 17252const _hoisted_17$5 = ["href"]; 17253const _hoisted_18$5 = { class: "content-block row" }; 17254const _hoisted_19$4 = { class: "columns" }; 17255function _sfc_render$1C(_ctx, _cache, $props, $setup, $data, $options) { 17256 const _component_consent_entry = resolveComponent("consent-entry"); 17257 return openBlock(), createElementBlock(Fragment, null, [ 17258 createBaseVNode("div", _hoisted_1$1v, [ 17259 createBaseVNode("div", _hoisted_2$17, [ 17260 createBaseVNode("p", null, [ 17261 createTextVNode(toDisplayString$1(_ctx.$t("cookieConsent.info")), 1), 17262 _cache[14] || (_cache[14] = createBaseVNode("br", null, null, -1)), 17263 createTextVNode(" " + toDisplayString$1(_ctx.$t("cookieConsent.implicit")), 1) 17264 ]), 17265 createBaseVNode("div", _hoisted_3$W, [ 17266 createBaseVNode("button", { 17267 class: normalizeClass(["link-button --outlined", { 17268 "active": $data.isOpenCookieConfig 17269 }]), 17270 "aria-expanded": $data.isOpenCookieConfig, 17271 "aria-controls": "cookie_config", 17272 onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleCookieConfig && $options.toggleCookieConfig(...args)) 17273 }, toDisplayString$1(_ctx.$t("cookieConsent.configure.label")), 11, _hoisted_4$H), 17274 createBaseVNode("button", { 17275 id: "accept_button", 17276 class: "link-button --outlined accept-button", 17277 type: "button", 17278 onClick: _cache[1] || (_cache[1] = ($event) => $options.confirm()) 17279 }, toDisplayString$1(_ctx.$t("cookieConsent.partlyAccept.label")), 1), 17280 createBaseVNode("button", { 17281 id: "accept_button", 17282 class: "link-button --outlined accept-button", 17283 type: "button", 17284 onClick: _cache[2] || (_cache[2] = ($event) => $options.confirmAll()) 17285 }, toDisplayString$1(_ctx.$t("cookieConsent.accept.label")), 1) 17286 ]) 17287 ]) 17288 ], 512), 17289 $data.isOpenCookieConfig ? (openBlock(), createElementBlock("div", { 17290 key: 0, 17291 id: "cookie_config", 17292 class: "cookie-config", 17293 onKeyup: _cache[13] || (_cache[13] = withKeys((...args) => $options.handleEsc && $options.handleEsc(...args), ["esc"])) 17294 }, [ 17295 createBaseVNode("article", _hoisted_5$u, [ 17296 createBaseVNode("header", null, [ 17297 createBaseVNode("h2", null, toDisplayString$1(_ctx.$t("cookieConsent.config.headline")), 1), 17298 createBaseVNode("button", { 17299 ref: "closeCookieConfig", 17300 class: "link-button --outlined icon-close-menu-mobile cookie-config-close", 17301 onClick: _cache[3] || (_cache[3] = (...args) => $options.toggleCookieConfig && $options.toggleCookieConfig(...args)), 17302 onKeydown: _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => $options.handleFirstItem($event), ["shift"]), ["tab"])) 17303 }, [ 17304 createBaseVNode("span", _hoisted_6$o, toDisplayString$1(_ctx.$t("overlay.close.label")), 1) 17305 ], 544) 17306 ]), 17307 createBaseVNode("div", _hoisted_7$m, [ 17308 createBaseVNode("div", _hoisted_8$g, [ 17309 createBaseVNode("div", _hoisted_9$d, [ 17310 createBaseVNode("div", _hoisted_10$8, [ 17311 createBaseVNode("p", null, toDisplayString$1(_ctx.$t("cookieConsent.config.intro")), 1) 17312 ]) 17313 ]), 17314 _cache[17] || (_cache[17] = createBaseVNode("hr", { class: "divider" }, null, -1)), 17315 createBaseVNode("div", _hoisted_11$7, [ 17316 createBaseVNode("div", _hoisted_12$8, [ 17317 createBaseVNode("fieldset", null, [ 17318 createBaseVNode("legend", null, [ 17319 createTextVNode(toDisplayString$1(_ctx.$t("cookieConsent.config.presentation")) + " ", 1), 17320 createBaseVNode("span", null, toDisplayString$1(_ctx.$t("cookieConsent.config.mandatory")), 1) 17321 ]), 17322 createBaseVNode("p", _hoisted_13$8, toDisplayString$1(_ctx.$t("cookieConsent.config.presentationInfo")), 1), 17323 createBaseVNode("label", null, [ 17324 createBaseVNode("div", _hoisted_14$8, [ 17325 createTextVNode(toDisplayString$1(_ctx.$t("cookieConsent.config.adobeWebfonts")) + " ", 1), 17326 createBaseVNode("span", null, toDisplayString$1(_ctx.$t("cookieConsent.config.mandatory")), 1), 17327 createBaseVNode("p", null, toDisplayString$1(_ctx.$t("cookieConsent.config.adobeWebfontsInfo")), 1) 17328 ]), 17329 _cache[15] || (_cache[15] = createBaseVNode("input", { 17330 id: "adobe_webfonts", 17331 type: "checkbox", 17332 role: "switch", 17333 disabled: "", 17334 checked: "" 17335 }, null, -1)), 17336 _cache[16] || (_cache[16] = createBaseVNode("span", { class: "state" }, [ 17337 createBaseVNode("span", { class: "container" }, [ 17338 createBaseVNode("span", { class: "position" }) 17339 ]) 17340 ], -1)) 17341 ]) 17342 ]), 17343 createBaseVNode("fieldset", null, [ 17344 createBaseVNode("legend", null, toDisplayString$1(_ctx.$t("cookieConsent.config.externalMedia")), 1), 17345 createBaseVNode("p", _hoisted_15$7, toDisplayString$1(_ctx.$t("cookieConsent.config.externalMediaInfo")), 1), 17346 createVNode(_component_consent_entry, { 17347 modelValue: $data.vimeoChecked, 17348 "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => $data.vimeoChecked = $event), 17349 title: _ctx.$t("cookieConsent.config.vimeo"), 17350 description: _ctx.$t("cookieConsent.config.vimeoInfo") 17351 }, null, 8, ["modelValue", "title", "description"]), 17352 createVNode(_component_consent_entry, { 17353 modelValue: $data.youTubeChecked, 17354 "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => $data.youTubeChecked = $event), 17355 title: _ctx.$t("cookieConsent.config.youTube"), 17356 description: _ctx.$t("cookieConsent.config.youTubeInfo") 17357 }, null, 8, ["modelValue", "title", "description"]), 17358 createVNode(_component_consent_entry, { 17359 modelValue: $data.googleMapsChecked, 17360 "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => $data.googleMapsChecked = $event), 17361 title: _ctx.$t("cookieConsent.config.googleMaps"), 17362 description: _ctx.$t("cookieConsent.config.googleMapsInfo") 17363 }, null, 8, ["modelValue", "title", "description"]), 17364 createVNode(_component_consent_entry, { 17365 modelValue: $data.recaptchaChecked, 17366 "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => $data.recaptchaChecked = $event), 17367 title: _ctx.$t("cookieConsent.config.recaptcha"), 17368 description: _ctx.$t("cookieConsent.config.recaptchaInfo") 17369 }, null, 8, ["modelValue", "title", "description"]) 17370 ]), 17371 createBaseVNode("fieldset", null, [ 17372 createBaseVNode("legend", null, toDisplayString$1(_ctx.$t("cookieConsent.config.webStatistics")), 1), 17373 createBaseVNode("p", _hoisted_16$6, toDisplayString$1(_ctx.$t("cookieConsent.config.webStatisticsInfo")), 1), 17374 createVNode(_component_consent_entry, { 17375 modelValue: $data.matomoChecked, 17376 "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => $data.matomoChecked = $event), 17377 title: _ctx.$t("cookieConsent.config.matomo"), 17378 description: _ctx.$t("cookieConsent.config.matomoInfo") 17379 }, null, 8, ["modelValue", "title", "description"]) 17380 ]), 17381 createBaseVNode("fieldset", null, [ 17382 createBaseVNode("p", null, [ 17383 createBaseVNode("a", { href: $data.dataPrivacyUrl }, toDisplayString$1(_ctx.$t("cookieConsent.config.dataPrivacy")), 9, _hoisted_17$5) 17384 ]) 17385 ]) 17386 ]) 17387 ]), 17388 _cache[18] || (_cache[18] = createBaseVNode("hr", { class: "divider" }, null, -1)), 17389 createBaseVNode("div", _hoisted_18$5, [ 17390 createBaseVNode("div", _hoisted_19$4, [ 17391 createBaseVNode("button", { 17392 id: "confirm_selection_button", 17393 class: "link-button --outlined", 17394 type: "button", 17395 onClick: _cache[10] || (_cache[10] = ($event) => $options.confirmSelection()) 17396 }, toDisplayString$1(_ctx.$t("cookieConsent.config.confirmSelection.label")), 1
17396), 17397 createBaseVNode("button", { 17398 id: "confirm_all_button", 17399 ref: "confirmAllButton", 17400 class: "link-button --outlined confirm-all-button", 17401 type: "button", 17402 onClick: _cache[11] || (_cache[11] = ($event) => $options.confirmAll()), 17403 onKeydown: _cache[12] || (_cache[12] = withKeys(withModifiers(($event) => $options.handleLastItem($event), ["exact"]), ["tab"])) 17404 }, toDisplayString$1(_ctx.$t("cookieConsent.config.confirmAll.label")), 545) 17405 ]) 17406 ]) 17407 ]) 17408 ]) 17409 ]) 17410 ], 32)) : createCommentVNode("", true) 17411 ], 64); 17412} 17413const CookieConsent = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [["render", _sfc_render$1C]]); 17414/*! 17415 * shared v11.1.5 17416 * (c) 2025 kazuya kawaguchi 17417 * Released under the MIT License. 17418 */ 17419const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source }); 17420const friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027"); 17421const isNumber$2 = (val) => typeof val === "number" && isFinite(val); 17422const isDate$1 = (val) => toTypeString$1(val) === "[object Date]"; 17423const isRegExp$2 = (val) => toTypeString$1(val) === "[object RegExp]"; 17424const isEmptyObject$1 = (val) => isPlainObject$2(val) && Object.keys(val).length === 0; 17425const assign$1 = Object.assign; 17426const _create$1 = Object.create; 17427const create$1 = (obj = null) => _create$1(obj); 17428let _globalThis$1; 17429const getGlobalThis$1 = () => { 17430 return _globalThis$1 || (_globalThis$1 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : create$1()); 17431}; 17432function escapeHtml(rawText) { 17433 return rawText.replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'"); 17434} 17435const hasOwnProperty$2 = Object.prototype.hasOwnProperty; 17436function hasOwn$1(obj, key) { 17437 return hasOwnProperty$2.call(obj, key); 17438} 17439const isArray$2 = Array.isArray; 17440const isFunction$2 = (val) => typeof val === "function"; 17441const isString$2 = (val) => typeof val === "string"; 17442const isBoolean$2 = (val) => typeof val === "boolean"; 17443const isObject$7 = (val) => val !== null && typeof val === "object"; 17444const isPromise = (val) => { 17445 return isObject$7(val) && isFunction$2(val.then) && isFunction$2(val.catch); 17446}; 17447const objectToString$3 = Object.prototype.toString; 17448const toTypeString$1 = (value) => objectToString$3.call(value); 17449const isPlainObject$2 = (val) => toTypeString$1(val) === "[object Object]"; 17450const toDisplayString = (val) => { 17451 return val == null ? "" : isArray$2(val) || isPlainObject$2(val) && val.toString === objectToString$3 ? JSON.stringify(val, null, 2) : String(val); 17452}; 17453function join(items, separator = "") { 17454 return items.reduce((str, item, index2) => index2 === 0 ? str + item : str + separator + item, ""); 17455} 17456function warn(msg, err) { 17457 if (typeof console !== "undefined") { 17458 console.warn(`[intlify] ` + msg); 17459 if (err) { 17460 console.warn(err.stack); 17461 } 17462 } 17463} 17464/*! 17465 * message-compiler v11.1.5 17466 * (c) 2025 kazuya kawaguchi 17467 * Released under the MIT License. 17468 */ 17469function createPosition(line, column, offset) { 17470 return { line, column, offset }; 17471} 17472function createLocation(start, end, source) { 17473 const loc = { start, end }; 17474 return loc; 17475} 17476const CompileErrorCodes = { 17477 // tokenizer error codes 17478 EXPECTED_TOKEN: 1, 17479 INVALID_TOKEN_IN_PLACEHOLDER: 2, 17480 UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3, 17481 UNKNOWN_ESCAPE_SEQUENCE: 4, 17482 INVALID_UNICODE_ESCAPE_SEQUENCE: 5, 17483 UNBALANCED_CLOSING_BRACE: 6, 17484 UNTERMINATED_CLOSING_BRACE: 7, 17485 EMPTY_PLACEHOLDER: 8, 17486 NOT_ALLOW_NEST_PLACEHOLDER: 9, 17487 INVALID_LINKED_FORMAT: 10, 17488 // parser error codes 17489 MUST_HAVE_MESSAGES_IN_PLURAL: 11, 17490 UNEXPECTED_EMPTY_LINKED_MODIFIER: 12, 17491 UNEXPECTED_EMPTY_LINKED_KEY: 13, 17492 UNEXPECTED_LEXICAL_ANALYSIS: 14 17493}; 17494const COMPILE_ERROR_CODES_EXTEND_POINT = 17; 17495function createCompileError(code, loc, options2 = {}) { 17496 const { domain, messages, args } = options2; 17497 const msg = code; 17498 const error = new SyntaxError(String(msg)); 17499 error.code = code; 17500 if (loc) { 17501 error.location = loc; 17502 } 17503 error.domain = domain; 17504 return error; 17505} 17506function defaultOnError(error) { 17507 throw error; 17508} 17509const CHAR_SP = " "; 17510const CHAR_CR = "\r"; 17511const CHAR_LF = "\n"; 17512const CHAR_LS = String.fromCharCode(8232); 17513const CHAR_PS = String.fromCharCode(8233); 17514function createScanner(str) { 17515 const _buf = str; 17516 let _index = 0; 17517 let _line = 1; 17518 let _column = 1; 17519 let _peekOffset = 0; 17520 const isCRLF = (index22) => _buf[index22] === CHAR_CR && _buf[index22 + 1] === CHAR_LF; 17521 const isLF = (index22) => _buf[index22] === CHAR_LF; 17522 const isPS = (index22) => _buf[index22] === CHAR_PS; 17523 const isLS = (index22) => _buf[index22] === CHAR_LS; 17524 const isLineEnd = (index22) => isCRLF(index22) || isLF(index22) || isPS(index22) || isLS(index22); 17525 const index2 = () => _index; 17526 const line = () => _line; 17527 const column = () => _column; 17528 const peekOffset = () => _peekOffset;
vendor: 4,243 bytes, lines 17529-17701
17529 const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset]; 17530 const currentChar = () => charAt(_index); 17531 const currentPeek = () => charAt(_index + _peekOffset); 17532 function next() { 17533 _peekOffset = 0; 17534 if (isLineEnd(_index)) { 17535 _line++; 17536 _column = 0; 17537 } 17538 if (isCRLF(_index)) { 17539 _index++; 17540 } 17541 _index++; 17542 _column++; 17543 return _buf[_index]; 17544 } 17545 function peek() { 17546 if (isCRLF(_index + _peekOffset)) { 17547 _peekOffset++; 17548 } 17549 _peekOffset++; 17550 return _buf[_index + _peekOffset]; 17551 } 17552 function reset2() { 17553 _index = 0; 17554 _line = 1; 17555 _column = 1; 17556 _peekOffset = 0; 17557 } 17558 function resetPeek(offset = 0) { 17559 _peekOffset = offset; 17560 } 17561 function skipToPeek() { 17562 const target = _index + _peekOffset; 17563 while (target !== _index) { 17564 next(); 17565 } 17566 _peekOffset = 0; 17567 } 17568 return { 17569 index: index2, 17570 line, 17571 column, 17572 peekOffset, 17573 charAt, 17574 currentChar, 17575 currentPeek, 17576 next, 17577 peek, 17578 reset: reset2, 17579 resetPeek, 17580 skipToPeek 17581 }; 17582} 17583const EOF = void 0; 17584const DOT = "."; 17585const LITERAL_DELIMITER = "'"; 17586const ERROR_DOMAIN$3 = "tokenizer"; 17587function createTokenizer(source, options2 = {}) { 17588 const location2 = options2.location !== false; 17589 const _scnr = createScanner(source); 17590 const currentOffset = () => _scnr.index(); 17591 const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index()); 17592 const _initLoc = currentPosition(); 17593 const _initOffset = currentOffset(); 17594 const _context = { 17595 currentType: 13, 17596 offset: _initOffset, 17597 startLoc: _initLoc, 17598 endLoc: _initLoc, 17599 lastType: 13, 17600 lastOffset: _initOffset, 17601 lastStartLoc: _initLoc, 17602 lastEndLoc: _initLoc, 17603 braceNest: 0, 17604 inLinked: false, 17605 text: "" 17606 }; 17607 const context = () => _context; 17608 const { onError } = options2; 17609 function emitError2(code, pos, offset, ...args) { 17610 const ctx = context(); 17611 pos.column += offset; 17612 pos.offset += offset; 17613 if (onError) { 17614 const loc = location2 ? createLocation(ctx.startLoc, pos) : null; 17615 const err = createCompileError(code, loc, { 17616 domain: ERROR_DOMAIN$3, 17617 args 17618 }); 17619 onError(err); 17620 } 17621 } 17622 function getToken(context2, type, value) { 17623 context2.endLoc = currentPosition(); 17624 context2.currentType = type; 17625 const token = { type }; 17626 if (location2) { 17627 token.loc = createLocation(context2.startLoc, context2.endLoc); 17628 } 17629 if (value != null) { 17630 token.value = value; 17631 } 17632 return token; 17633 } 17634 const getEndToken = (context2) => getToken( 17635 context2, 17636 13 17637 /* TokenTypes.EOF */ 17638 ); 17639 function eat(scnr, ch) { 17640 if (scnr.currentChar() === ch) { 17641 scnr.next(); 17642 return ch; 17643 } else { 17644 emitError2(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch); 17645 return ""; 17646 } 17647 } 17648 function peekSpaces(scnr) { 17649 let buf = ""; 17650 while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) { 17651 buf += scnr.currentPeek(); 17652 scnr.peek(); 17653 } 17654 return buf; 17655 } 17656 function skipSpaces(scnr) { 17657 const buf = peekSpaces(scnr); 17658 scnr.skipToPeek(); 17659 return buf; 17660 } 17661 function isIdentifierStart(ch) { 17662 if (ch === EOF) { 17663 return false; 17664 } 17665 const cc = ch.charCodeAt(0); 17666 return cc >= 97 && cc <= 122 || // a-z 17667 cc >= 65 && cc <= 90 || // A-Z 17668 cc === 95; 17669 } 17670 function isNumberStart(ch) { 17671 if (ch === EOF) { 17672 return false; 17673 } 17674 const cc = ch.charCodeAt(0); 17675 return cc >= 48 && cc <= 57; 17676 } 17677 function isNamedIdentifierStart(scnr, context2) { 17678 const { currentType } = context2; 17679 if (currentType !== 2) { 17680 return false; 17681 } 17682 peekSpaces(scnr); 17683 const ret = isIdentifierStart(scnr.currentPeek()); 17684 scnr.resetPeek(); 17685 return ret; 17686 } 17687 function isListIdentifierStart(scnr, context2) { 17688 const { currentType } = context2; 17689 if (currentType !== 2) { 17690 return false; 17691 } 17692 peekSpaces(scnr); 17693 const ch = scnr.currentPeek() === "-" ? scnr.peek() : scnr.currentPeek(); 17694 const ret = isNumberStart(ch); 17695 scnr.resetPeek(); 17696 return ret; 17697 } 17698 function isLiteralStart(scnr, context2) { 17699 const { currentType } = context2; 17700 if (currentType !== 2) { 17701 return false;
17702 } 17703 peekSpaces(scnr); 17704 const ret = scnr.currentPeek() === LITERAL_DELIMITER; 17705 scnr.resetPeek(); 17706 return ret; 17707 } 17708 function isLinkedDotStart(scnr, context2) { 17709 const { currentType } = context2; 17710 if (currentType !== 7) { 17711 return false; 17712 } 17713 peekSpaces(scnr); 17714 const ret = scnr.currentPeek() === "."; 17715 scnr.resetPeek(); 17716 return ret; 17717 } 17718 function isLinkedModifierStart(scnr, context2) { 17719 const { currentType } = context2; 17720 if (currentType !== 8) { 17721 return false; 17722 } 17723 peekSpaces(scnr); 17724 const ret = isIdentifierStart(scnr.currentPeek()); 17725 scnr.resetPeek(); 17726 return ret; 17727 } 17728 function isLinkedDelimiterStart(scnr, context2) { 17729 const { currentType } = context2; 17730 if (!(currentType === 7 || currentType === 11)) { 17731 return false; 17732 } 17733 peekSpaces(scnr); 17734 const ret = scnr.currentPeek() === ":"; 17735 scnr.resetPeek(); 17736 return ret; 17737 } 17738 function isLinkedReferStart(scnr, context2) { 17739 const { currentType } = context2; 17740 if (currentType !== 9) { 17741 return false; 17742 } 17743 const fn = () => { 17744 const ch = scnr.currentPeek(); 17745 if (ch === "{") { 17746 return isIdentifierStart(scnr.peek()); 17747 } else if (ch === "@" || ch === "|" || ch === ":" || ch === "." || ch === CHAR_SP || !ch) { 17748 return false; 17749 } else if (ch === CHAR_LF) { 17750 scnr.peek(); 17751 return fn(); 17752 } else { 17753 return isTextStart(scnr, false); 17754 } 17755 }; 17756 const ret = fn(); 17757 scnr.resetPeek(); 17758 return ret; 17759 } 17760 function isPluralStart(scnr) { 17761 peekSpaces(scnr); 17762 const ret = scnr.currentPeek() === "|"; 17763 scnr.resetPeek(); 17764 return ret; 17765 } 17766 function isTextStart(scnr, reset2 = true) { 17767 const fn = (hasSpace = false, prev = "") => { 17768 const ch = scnr.currentPeek(); 17769 if (ch === "{") { 17770 return hasSpace; 17771 } else if (ch === "@" || !ch) { 17772 return hasSpace; 17773 } else if (ch === "|") { 17774 return !(prev === CHAR_SP || prev === CHAR_LF); 17775 } else if (ch === CHAR_SP) { 17776 scnr.peek(); 17777 return fn(true, CHAR_SP); 17778 } else if (ch === CHAR_LF) { 17779 scnr.peek(); 17780 return fn(true, CHAR_LF); 17781 } else { 17782 return true; 17783 } 17784 }; 17785 const ret = fn(); 17786 reset2 && scnr.resetPeek(); 17787 return ret; 17788 } 17789 function takeChar(scnr, fn) { 17790 const ch = scnr.currentChar(); 17791 if (ch === EOF) { 17792 return EOF; 17793 } 17794 if (fn(ch)) { 17795 scnr.next(); 17796 return ch; 17797 } 17798 return null; 17799 } 17800 function isIdentifier(ch) { 17801 const cc = ch.charCodeAt(0); 17802 return cc >= 97 && cc <= 122 || // a-z 17803 cc >= 65 && cc <= 90 || // A-Z 17804 cc >= 48 && cc <= 57 || // 0-9 17805 cc === 95 || // _ 17806 cc === 36; 17807 } 17808 function takeIdentifierChar(scnr) { 17809 return takeChar(scnr, isIdentifier); 17810 } 17811 function isNamedIdentifier(ch) { 17812 const cc = ch.charCodeAt(0); 17813 return cc >= 97 && cc <= 122 || // a-z 17814 cc >= 65 && cc <= 90 || // A-Z 17815 cc >= 48 && cc <= 57 || // 0-9 17816 cc === 95 || // _ 17817 cc === 36 || // $ 17818 cc === 45; 17819 } 17820 function takeNamedIdentifierChar(scnr) { 17821 return takeChar(scnr, isNamedIdentifier); 17822 } 17823 function isDigit(ch) { 17824 const cc = ch.charCodeAt(0); 17825 return cc >= 48 && cc <= 57; 17826 } 17827 function takeDigit(scnr) { 17828 return takeChar(scnr, isDigit); 17829 } 17830 function isHexDigit(ch) { 17831 const cc = ch.charCodeAt(0); 17832 return cc >= 48 && cc <= 57 || // 0-9 17833 cc >= 65 && cc <= 70 || // A-F 17834 cc >= 97 && cc <= 102; 17835 } 17836 function takeHexDigit(scnr) { 17837 return takeChar(scnr, isHexDigit); 17838 } 17839 function getDigits(scnr) { 17840 let ch = ""; 17841 let num = ""; 17842 while (ch = takeDigit(scnr)) { 17843 num += ch; 17844 } 17845 return num; 17846 } 17847 function readText(scnr) { 17848 let buf = ""; 17849 while (true) { 17850 const ch = scnr.currentChar(); 17851 if (ch === "{" || ch === "}" || ch === "@" || ch === "|" || !ch) { 17852 break; 17853 } else if (ch === CHAR_SP || ch === CHAR_LF) { 17854 if (isTextStart(scnr)) { 17855 buf += ch; 17856 scnr.next(); 17857 } else if (isPluralStart(scnr)) { 17858 break; 17859 } else { 17860 buf += ch; 17861 scnr.next(); 17862 } 17863 } else { 17864 buf += ch; 17865 scnr.next(); 17866 } 17867 } 17868 return buf; 17869 } 17870 function readNamedIdentifier(scnr) { 17871 skipSpaces(scnr);
vendor: 4,400 bytes, lines 17872-18033
17872 let ch = ""; 17873 let name = ""; 17874 while (ch = takeNamedIdentifierChar(scnr)) { 17875 name += ch; 17876 } 17877 if (scnr.currentChar() === EOF) { 17878 emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); 17879 } 17880 return name; 17881 } 17882 function readListIdentifier(scnr) { 17883 skipSpaces(scnr); 17884 let value = ""; 17885 if (scnr.currentChar() === "-") { 17886 scnr.next(); 17887 value += `-${getDigits(scnr)}`; 17888 } else { 17889 value += getDigits(scnr); 17890 } 17891 if (scnr.currentChar() === EOF) { 17892 emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); 17893 } 17894 return value; 17895 } 17896 function isLiteral2(ch) { 17897 return ch !== LITERAL_DELIMITER && ch !== CHAR_LF; 17898 } 17899 function readLiteral(scnr) { 17900 skipSpaces(scnr); 17901 eat(scnr, `'`); 17902 let ch = ""; 17903 let literal = ""; 17904 while (ch = takeChar(scnr, isLiteral2)) { 17905 if (ch === "\\") { 17906 literal += readEscapeSequence(scnr); 17907 } else { 17908 literal += ch; 17909 } 17910 } 17911 const current = scnr.currentChar(); 17912 if (current === CHAR_LF || current === EOF) { 17913 emitError2(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0); 17914 if (current === CHAR_LF) { 17915 scnr.next(); 17916 eat(scnr, `'`); 17917 } 17918 return literal; 17919 } 17920 eat(scnr, `'`); 17921 return literal; 17922 } 17923 function readEscapeSequence(scnr) { 17924 const ch = scnr.currentChar(); 17925 switch (ch) { 17926 case "\\": 17927 case `'`: 17928 scnr.next(); 17929 return `\\${ch}`; 17930 case "u": 17931 return readUnicodeEscapeSequence(scnr, ch, 4); 17932 case "U": 17933 return readUnicodeEscapeSequence(scnr, ch, 6); 17934 default: 17935 emitError2(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch); 17936 return ""; 17937 } 17938 } 17939 function readUnicodeEscapeSequence(scnr, unicode, digits) { 17940 eat(scnr, unicode); 17941 let sequence = ""; 17942 for (let i = 0; i < digits; i++) { 17943 const ch = takeHexDigit(scnr); 17944 if (!ch) { 17945 emitError2(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`); 17946 break; 17947 } 17948 sequence += ch; 17949 } 17950 return `\\${unicode}${sequence}`; 17951 } 17952 function isInvalidIdentifier(ch) { 17953 return ch !== "{" && ch !== "}" && ch !== CHAR_SP && ch !== CHAR_LF; 17954 } 17955 function readInvalidIdentifier(scnr) { 17956 skipSpaces(scnr); 17957 let ch = ""; 17958 let identifiers = ""; 17959 while (ch = takeChar(scnr, isInvalidIdentifier)) { 17960 identifiers += ch; 17961 } 17962 return identifiers; 17963 } 17964 function readLinkedModifier(scnr) { 17965 let ch = ""; 17966 let name = ""; 17967 while (ch = takeIdentifierChar(scnr)) { 17968 name += ch; 17969 } 17970 return name; 17971 } 17972 function readLinkedRefer(scnr) { 17973 const fn = (buf) => { 17974 const ch = scnr.currentChar(); 17975 if (ch === "{" || ch === "@" || ch === "|" || ch === "(" || ch === ")" || !ch) { 17976 return buf; 17977 } else if (ch === CHAR_SP) { 17978 return buf; 17979 } else if (ch === CHAR_LF || ch === DOT) { 17980 buf += ch; 17981 scnr.next(); 17982 return fn(buf); 17983 } else { 17984 buf += ch; 17985 scnr.next(); 17986 return fn(buf); 17987 } 17988 }; 17989 return fn(""); 17990 } 17991 function readPlural(scnr) { 17992 skipSpaces(scnr); 17993 const plural = eat( 17994 scnr, 17995 "|" 17996 /* TokenChars.Pipe */ 17997 ); 17998 skipSpaces(scnr); 17999 return plural; 18000 } 18001 function readTokenInPlaceholder(scnr, context2) { 18002 let token = null; 18003 const ch = scnr.currentChar(); 18004 switch (ch) { 18005 case "{": 18006 if (context2.braceNest >= 1) { 18007 emitError2(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0); 18008 } 18009 scnr.next(); 18010 token = getToken( 18011 context2, 18012 2, 18013 "{" 18014 /* TokenChars.BraceLeft */ 18015 ); 18016 skipSpaces(scnr); 18017 context2.braceNest++; 18018 return token; 18019 case "}": 18020 if (context2.braceNest > 0 && context2.currentType === 2) { 18021 emitError2(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0); 18022 } 18023 scnr.next(); 18024 token = getToken( 18025 context2, 18026 3, 18027 "}" 18028 /* TokenChars.BraceRight */ 18029 ); 18030 context2.braceNest--; 18031 context2.braceNest > 0 && skipSpaces(scnr); 18032 if (context2.inLinked && context2.braceNest === 0) { 18033 context2.inLinked = false;
vendor: 21,221 bytes, lines 18034-18707
18034 } 18035 return token; 18036 case "@": 18037 if (context2.braceNest > 0) { 18038 emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); 18039 } 18040 token = readTokenInLinked(scnr, context2) || getEndToken(context2); 18041 context2.braceNest = 0; 18042 return token; 18043 default: { 18044 let validNamedIdentifier = true; 18045 let validListIdentifier = true; 18046 let validLiteral = true; 18047 if (isPluralStart(scnr)) { 18048 if (context2.braceNest > 0) { 18049 emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); 18050 } 18051 token = getToken(context2, 1, readPlural(scnr)); 18052 context2.braceNest = 0; 18053 context2.inLinked = false; 18054 return token; 18055 } 18056 if (context2.braceNest > 0 && (context2.currentType === 4 || context2.currentType === 5 || context2.currentType === 6)) { 18057 emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); 18058 context2.braceNest = 0; 18059 return readToken(scnr, context2); 18060 } 18061 if (validNamedIdentifier = isNamedIdentifierStart(scnr, context2)) { 18062 token = getToken(context2, 4, readNamedIdentifier(scnr)); 18063 skipSpaces(scnr); 18064 return token; 18065 } 18066 if (validListIdentifier = isListIdentifierStart(scnr, context2)) { 18067 token = getToken(context2, 5, readListIdentifier(scnr)); 18068 skipSpaces(scnr); 18069 return token; 18070 } 18071 if (validLiteral = isLiteralStart(scnr, context2)) { 18072 token = getToken(context2, 6, readLiteral(scnr)); 18073 skipSpaces(scnr); 18074 return token; 18075 } 18076 if (!validNamedIdentifier && !validListIdentifier && !validLiteral) { 18077 token = getToken(context2, 12, readInvalidIdentifier(scnr)); 18078 emitError2(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value); 18079 skipSpaces(scnr); 18080 return token; 18081 } 18082 break; 18083 } 18084 } 18085 return token; 18086 } 18087 function readTokenInLinked(scnr, context2) { 18088 const { currentType } = context2; 18089 let token = null; 18090 const ch = scnr.currentChar(); 18091 if ((currentType === 7 || currentType === 8 || currentType === 11 || currentType === 9) && (ch === CHAR_LF || ch === CHAR_SP)) { 18092 emitError2(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0); 18093 } 18094 switch (ch) { 18095 case "@": 18096 scnr.next(); 18097 token = getToken( 18098 context2, 18099 7, 18100 "@" 18101 /* TokenChars.LinkedAlias */ 18102 ); 18103 context2.inLinked = true; 18104 return token; 18105 case ".": 18106 skipSpaces(scnr); 18107 scnr.next(); 18108 return getToken( 18109 context2, 18110 8, 18111 "." 18112 /* TokenChars.LinkedDot */ 18113 ); 18114 case ":": 18115 skipSpaces(scnr); 18116 scnr.next(); 18117 return getToken( 18118 context2, 18119 9, 18120 ":" 18121 /* TokenChars.LinkedDelimiter */ 18122 ); 18123 default: 18124 if (isPluralStart(scnr)) { 18125 token = getToken(context2, 1, readPlural(scnr)); 18126 context2.braceNest = 0; 18127 context2.inLinked = false; 18128 return token; 18129 } 18130 if (isLinkedDotStart(scnr, context2) || isLinkedDelimiterStart(scnr, context2)) { 18131 skipSpaces(scnr); 18132 return readTokenInLinked(scnr, context2); 18133 } 18134 if (isLinkedModifierStart(scnr, context2)) { 18135 skipSpaces(scnr); 18136 return getToken(context2, 11, readLinkedModifier(scnr)); 18137 } 18138 if (isLinkedReferStart(scnr, context2)) { 18139 skipSpaces(scnr); 18140 if (ch === "{") { 18141 return readTokenInPlaceholder(scnr, context2) || token; 18142 } else { 18143 return getToken(context2, 10, readLinkedRefer(scnr)); 18144 } 18145 } 18146 if (currentType === 7) { 18147 emitError2(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0); 18148 } 18149 context2.braceNest = 0; 18150 context2.inLinked = false; 18151 return readToken(scnr, context2); 18152 } 18153 } 18154 function readToken(scnr, context2) { 18155 let token = { 18156 type: 13 18157 /* TokenTypes.EOF */ 18158 }; 18159 if (context2.braceNest > 0) { 18160 return readTokenInPlaceholder(scnr, context2) || getEndToken(context2); 18161 } 18162 if (context2.inLinked) { 18163 return readTokenInLinked(scnr, context2) || getEndToken(context2); 18164 } 18165 const ch = scnr.currentChar(); 18166 switch (ch) { 18167 case "{": 18168 return readTokenInPlaceholder(scnr, context2) || getEndToken(context2); 18169 case "}": 18170 emitError2(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0); 18171 scnr.next(); 18172 return getToken( 18173 context2, 18174 3, 18175 "}" 18176 /* TokenChars.BraceRight */ 18177 ); 18178 case "@": 18179 return readTokenInLinked(scnr, context2) || getEndToken(context2); 18180 default: { 18181 if (isPluralStart(scnr)) { 18182 token = getToken(context2, 1, readPlural(scnr)); 18183 context2.braceNest = 0; 18184 context2.inLinked = false; 18185 return token; 18186 } 18187 if (isTextStart(scnr)) { 18188 return getToken(context2, 0, readText(scnr)); 18189 } 18190 break; 18191 } 18192 } 18193 return token; 18194 } 18195 function nextToken() { 18196 const { currentType, offset, startLoc, endLoc } = _context; 18197 _context.lastType = currentType; 18198 _context.lastOffset = offset; 18199 _context.lastStartLoc = startLoc; 18200 _context.lastEndLoc = endLoc; 18201 _context.offset = currentOffset(); 18202 _context.startLoc = currentPosition(); 18203 if (_scnr.currentChar() === EOF) { 18204 return getToken( 18205 _context, 18206 13 18207 /* TokenTypes.EOF */ 18208 ); 18209 } 18210 return readToken(_scnr, _context); 18211 } 18212 return { 18213 nextToken, 18214 currentOffset, 18215 currentPosition, 18216 context 18217 }; 18218} 18219const ERROR_DOMAIN$2 = "parser"; 18220const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g; 18221function fromEscapeSequence(match, codePoint4, codePoint6) { 18222 switch (match) { 18223 case `\\\\`: 18224 return `\\`; 18225 // eslint-disable-next-line no-useless-escape 18226 case `\\'`: 18227 return `'`; 18228 default: { 18229 const codePoint = parseInt(codePoint4 || codePoint6, 16); 18230 if (codePoint <= 55295 || codePoint >= 57344) { 18231 return String.fromCodePoint(codePoint); 18232 } 18233 return "�"; 18234 } 18235 } 18236} 18237function createParser(options2 = {}) { 18238 const location2 = options2.location !== false; 18239 const { onError } = options2; 18240 function emitError2(tokenzer, code, start, offset, ...args) { 18241 const end = tokenzer.currentPosition(); 18242 end.offset += offset; 18243 end.column += offset; 18244 if (onError) { 18245 const loc = location2 ? createLocation(start, end) : null; 18246 const err = createCompileError(code, loc, { 18247 domain: ERROR_DOMAIN$2, 18248 args 18249 }); 18250 onError(err); 18251 } 18252 } 18253 function startNode(type, offset, loc) { 18254 const node = { type }; 18255 if (location2) { 18256 node.start = offset; 18257 node.end = offset; 18258 node.loc = { start: loc, end: loc }; 18259 } 18260 return node; 18261 } 18262 function endNode(node, offset, pos, type) { 18263 if (location2) { 18264 node.end = offset; 18265 if (node.loc) { 18266 node.loc.end = pos; 18267 } 18268 } 18269 } 18270 function parseText(tokenizer2, value) { 18271 const context = tokenizer2.context(); 18272 const node = startNode(3, context.offset, context.startLoc); 18273 node.value = value; 18274 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18275 return node; 18276 } 18277 function parseList(tokenizer2, index2) { 18278 const context = tokenizer2.context(); 18279 const { lastOffset: offset, lastStartLoc: loc } = context; 18280 const node = startNode(5, offset, loc); 18281 node.index = parseInt(index2, 10); 18282 tokenizer2.nextToken(); 18283 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18284 return node; 18285 } 18286 function parseNamed(tokenizer2, key) { 18287 const context = tokenizer2.context(); 18288 const { lastOffset: offset, lastStartLoc: loc } = context; 18289 const node = startNode(4, offset, loc); 18290 node.key = key; 18291 tokenizer2.nextToken(); 18292 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18293 return node; 18294 } 18295 function parseLiteral(tokenizer2, value) { 18296 const context = tokenizer2.context(); 18297 const { lastOffset: offset, lastStartLoc: loc } = context; 18298 const node = startNode(9, offset, loc); 18299 node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence); 18300 tokenizer2.nextToken(); 18301 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18302 return node; 18303 } 18304 function parseLinkedModifier(tokenizer2) { 18305 const token = tokenizer2.nextToken(); 18306 const context = tokenizer2.context(); 18307 const { lastOffset: offset, lastStartLoc: loc } = context; 18308 const node = startNode(8, offset, loc); 18309 if (token.type !== 11) { 18310 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0); 18311 node.value = ""; 18312 endNode(node, offset, loc); 18313 return { 18314 nextConsumeToken: token, 18315 node 18316 }; 18317 } 18318 if (token.value == null) { 18319 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18320 } 18321 node.value = token.value || ""; 18322 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18323 return { 18324 node 18325 }; 18326 } 18327 function parseLinkedKey(tokenizer2, value) { 18328 const context = tokenizer2.context(); 18329 const node = startNode(7, context.offset, context.startLoc); 18330 node.value = value; 18331 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18332 return node; 18333 } 18334 function parseLinked(tokenizer2) { 18335 const context = tokenizer2.context(); 18336 const linkedNode = startNode(6, context.offset, context.startLoc); 18337 let token = tokenizer2.nextToken(); 18338 if (token.type === 8) { 18339 const parsed = parseLinkedModifier(tokenizer2); 18340 linkedNode.modifier = parsed.node; 18341 token = parsed.nextConsumeToken || tokenizer2.nextToken(); 18342 } 18343 if (token.type !== 9) { 18344 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18345 } 18346 token = tokenizer2.nextToken(); 18347 if (token.type === 2) { 18348 token = tokenizer2.nextToken(); 18349 } 18350 switch (token.type) { 18351 case 10: 18352 if (token.value == null) { 18353 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18354 } 18355 linkedNode.key = parseLinkedKey(tokenizer2, token.value || ""); 18356 break; 18357 case 4: 18358 if (token.value == null) { 18359 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18360 } 18361 linkedNode.key = parseNamed(tokenizer2, token.value || ""); 18362 break; 18363 case 5: 18364 if (token.value == null) { 18365 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18366 } 18367 linkedNode.key = parseList(tokenizer2, token.value || ""); 18368 break; 18369 case 6: 18370 if (token.value == null) { 18371 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18372 } 18373 linkedNode.key = parseLiteral(tokenizer2, token.value || ""); 18374 break; 18375 default: { 18376 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0); 18377 const nextContext = tokenizer2.context(); 18378 const emptyLinkedKeyNode = startNode(7, nextContext.offset, nextContext.startLoc); 18379 emptyLinkedKeyNode.value = ""; 18380 endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc); 18381 linkedNode.key = emptyLinkedKeyNode; 18382 endNode(linkedNode, nextContext.offset, nextContext.startLoc); 18383 return { 18384 nextConsumeToken: token, 18385 node: linkedNode 18386 }; 18387 } 18388 } 18389 endNode(linkedNode, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18390 return { 18391 node: linkedNode 18392 }; 18393 } 18394 function parseMessage(tokenizer2) { 18395 const context = tokenizer2.context(); 18396 const startOffset = context.currentType === 1 ? tokenizer2.currentOffset() : context.offset; 18397 const startLoc = context.currentType === 1 ? context.endLoc : context.startLoc; 18398 const node = startNode(2, startOffset, startLoc); 18399 node.items = []; 18400 let nextToken = null; 18401 do { 18402 const token = nextToken || tokenizer2.nextToken(); 18403 nextToken = null; 18404 switch (token.type) { 18405 case 0: 18406 if (token.value == null) { 18407 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18408 } 18409 node.items.push(parseText(tokenizer2, token.value || "")); 18410 break; 18411 case 5: 18412 if (token.value == null) { 18413 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18414 } 18415 node.items.push(parseList(tokenizer2, token.value || "")); 18416 break; 18417 case 4: 18418 if (token.value == null) { 18419 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18420 } 18421 node.items.push(parseNamed(tokenizer2, token.value || "")); 18422 break; 18423 case 6: 18424 if (token.value == null) { 18425 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); 18426 } 18427 node.items.push(parseLiteral(tokenizer2, token.value || "")); 18428 break; 18429 case 7: { 18430 const parsed = parseLinked(tokenizer2); 18431 node.items.push(parsed.node); 18432 nextToken = parsed.nextConsumeToken || null; 18433 break; 18434 } 18435 } 18436 } while (context.currentType !== 13 && context.currentType !== 1); 18437 const endOffset = context.currentType === 1 ? context.lastOffset : tokenizer2.currentOffset(); 18438 const endLoc = context.currentType === 1 ? context.lastEndLoc : tokenizer2.currentPosition(); 18439 endNode(node, endOffset, endLoc); 18440 return node; 18441 } 18442 function parsePlural(tokenizer2, offset, loc, msgNode) { 18443 const context = tokenizer2.context(); 18444 let hasEmptyMessage = msgNode.items.length === 0; 18445 const node = startNode(1, offset, loc); 18446 node.cases = []; 18447 node.cases.push(msgNode); 18448 do { 18449 const msg = parseMessage(tokenizer2); 18450 if (!hasEmptyMessage) { 18451 hasEmptyMessage = msg.items.length === 0; 18452 } 18453 node.cases.push(msg); 18454 } while (context.currentType !== 13); 18455 if (hasEmptyMessage) { 18456 emitError2(tokenizer2, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0); 18457 } 18458 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18459 return node; 18460 } 18461 function parseResource(tokenizer2) { 18462 const context = tokenizer2.context(); 18463 const { offset, startLoc } = context; 18464 const msgNode = parseMessage(tokenizer2); 18465 if (context.currentType === 13) { 18466 return msgNode; 18467 } else { 18468 return parsePlural(tokenizer2, offset, startLoc, msgNode); 18469 } 18470 } 18471 function parse2(source) { 18472 const tokenizer2 = createTokenizer(source, assign$1({}, options2)); 18473 const context = tokenizer2.context(); 18474 const node = startNode(0, context.offset, context.startLoc); 18475 if (location2 && node.loc) { 18476 node.loc.source = source; 18477 } 18478 node.body = parseResource(tokenizer2); 18479 if (options2.onCacheKey) { 18480 node.cacheKey = options2.onCacheKey(source); 18481 } 18482 if (context.currentType !== 13) { 18483 emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || ""); 18484 } 18485 endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition()); 18486 return node; 18487 } 18488 return { parse: parse2 }; 18489} 18490function getTokenCaption(token) { 18491 if (token.type === 13) { 18492 return "EOF"; 18493 } 18494 const name = (token.value || "").replace(/\r?\n/gu, "\\n"); 18495 return name.length > 10 ? name.slice(0, 9) + "â¦" : name; 18496} 18497function createTransformer(ast, options2 = {}) { 18498 const _context = { 18499 ast, 18500 helpers: /* @__PURE__ */ new Set() 18501 }; 18502 const context = () => _context; 18503 const helper = (name) => { 18504 _context.helpers.add(name); 18505 return name; 18506 }; 18507 return { context, helper }; 18508} 18509function traverseNodes(nodes, transformer) { 18510 for (let i = 0; i < nodes.length; i++) { 18511 traverseNode(nodes[i], transformer); 18512 } 18513} 18514function traverseNode(node, transformer) { 18515 switch (node.type) { 18516 case 1: 18517 traverseNodes(node.cases, transformer); 18518 transformer.helper( 18519 "plural" 18520 /* HelperNameMap.PLURAL */ 18521 ); 18522 break; 18523 case 2: 18524 traverseNodes(node.items, transformer); 18525 break; 18526 case 6: { 18527 const linked = node; 18528 traverseNode(linked.key, transformer); 18529 transformer.helper( 18530 "linked" 18531 /* HelperNameMap.LINKED */ 18532 ); 18533 transformer.helper( 18534 "type" 18535 /* HelperNameMap.TYPE */ 18536 ); 18537 break; 18538 } 18539 case 5: 18540 transformer.helper( 18541 "interpolate" 18542 /* HelperNameMap.INTERPOLATE */ 18543 ); 18544 transformer.helper( 18545 "list" 18546 /* HelperNameMap.LIST */ 18547 ); 18548 break; 18549 case 4: 18550 transformer.helper( 18551 "interpolate" 18552 /* HelperNameMap.INTERPOLATE */ 18553 ); 18554 transformer.helper( 18555 "named" 18556 /* HelperNameMap.NAMED */ 18557 ); 18558 break; 18559 } 18560} 18561function transform(ast, options2 = {}) { 18562 const transformer = createTransformer(ast); 18563 transformer.helper( 18564 "normalize" 18565 /* HelperNameMap.NORMALIZE */ 18566 ); 18567 ast.body && traverseNode(ast.body, transformer); 18568 const context = transformer.context(); 18569 ast.helpers = Array.from(context.helpers); 18570} 18571function optimize(ast) { 18572 const body = ast.body; 18573 if (body.type === 2) { 18574 optimizeMessageNode(body); 18575 } else { 18576 body.cases.forEach((c) => optimizeMessageNode(c)); 18577 } 18578 return ast; 18579} 18580function optimizeMessageNode(message) { 18581 if (message.items.length === 1) { 18582 const item = message.items[0]; 18583 if (item.type === 3 || item.type === 9) { 18584 message.static = item.value; 18585 delete item.value; 18586 } 18587 } else { 18588 const values = []; 18589 for (let i = 0; i < message.items.length; i++) { 18590 const item = message.items[i]; 18591 if (!(item.type === 3 || item.type === 9)) { 18592 break; 18593 } 18594 if (item.value == null) { 18595 break; 18596 } 18597 values.push(item.value); 18598 } 18599 if (values.length === message.items.length) { 18600 message.static = join(values); 18601 for (let i = 0; i < message.items.length; i++) { 18602 const item = message.items[i]; 18603 if (item.type === 3 || item.type === 9) { 18604 delete item.value; 18605 } 18606 } 18607 } 18608 } 18609} 18610function minify(node) { 18611 node.t = node.type; 18612 switch (node.type) { 18613 case 0: { 18614 const resource = node; 18615 minify(resource.body); 18616 resource.b = resource.body; 18617 delete resource.body; 18618 break; 18619 } 18620 case 1: { 18621 const plural = node; 18622 const cases = plural.cases; 18623 for (let i = 0; i < cases.length; i++) { 18624 minify(cases[i]); 18625 } 18626 plural.c = cases; 18627 delete plural.cases; 18628 break; 18629 } 18630 case 2: { 18631 const message = node; 18632 const items = message.items; 18633 for (let i = 0; i < items.length; i++) { 18634 minify(items[i]); 18635 } 18636 message.i = items; 18637 delete message.items; 18638 if (message.static) { 18639 message.s = message.static; 18640 delete message.static; 18641 } 18642 break; 18643 } 18644 case 3: 18645 case 9: 18646 case 8: 18647 case 7: { 18648 const valueNode = node; 18649 if (valueNode.value) { 18650 valueNode.v = valueNode.value; 18651 delete valueNode.value; 18652 } 18653 break; 18654 } 18655 case 6: { 18656 const linked = node; 18657 minify(linked.key); 18658 linked.k = linked.key; 18659 delete linked.key; 18660 if (linked.modifier) { 18661 minify(linked.modifier); 18662 linked.m = linked.modifier; 18663 delete linked.modifier; 18664 } 18665 break; 18666 } 18667 case 5: { 18668 const list = node; 18669 list.i = list.index; 18670 delete list.index; 18671 break; 18672 } 18673 case 4: { 18674 const named = node; 18675 named.k = named.key; 18676 delete named.key; 18677 break; 18678 } 18679 } 18680 delete node.type; 18681} 18682function createCodeGenerator(ast, options2) { 18683 const { filename, breakLineCode, needIndent: _needIndent } = options2; 18684 const location2 = options2.location !== false; 18685 const _context = { 18686 filename, 18687 code: "", 18688 column: 1, 18689 line: 1, 18690 offset: 0, 18691 map: void 0, 18692 breakLineCode, 18693 needIndent: _needIndent, 18694 indentLevel: 0 18695 }; 18696 if (location2 && ast.loc) { 18697 _context.source = ast.loc.source; 18698 } 18699 const context = () => _context; 18700 function push(code, node) { 18701 _context.code += code; 18702 } 18703 function _newline(n, withBreakLine = true) { 18704 const _breakLineCode = withBreakLine ? breakLineCode : ""; 18705 push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode); 18706 } 18707 function indent(withNewLine = true) {
vendor: 9,284 bytes, lines 18708-19046
18708 const level = ++_context.indentLevel; 18709 withNewLine && _newline(level); 18710 } 18711 function deindent(withNewLine = true) { 18712 const level = --_context.indentLevel; 18713 withNewLine && _newline(level); 18714 } 18715 function newline() { 18716 _newline(_context.indentLevel); 18717 } 18718 const helper = (key) => `_${key}`; 18719 const needIndent = () => _context.needIndent; 18720 return { 18721 context, 18722 push, 18723 indent, 18724 deindent, 18725 newline, 18726 helper, 18727 needIndent 18728 }; 18729} 18730function generateLinkedNode(generator, node) { 18731 const { helper } = generator; 18732 generator.push(`${helper( 18733 "linked" 18734 /* HelperNameMap.LINKED */ 18735 )}(`); 18736 generateNode(generator, node.key); 18737 if (node.modifier) { 18738 generator.push(`, `); 18739 generateNode(generator, node.modifier); 18740 generator.push(`, _type`); 18741 } else { 18742 generator.push(`, undefined, _type`); 18743 } 18744 generator.push(`)`); 18745} 18746function generateMessageNode(generator, node) { 18747 const { helper, needIndent } = generator; 18748 generator.push(`${helper( 18749 "normalize" 18750 /* HelperNameMap.NORMALIZE */ 18751 )}([`); 18752 generator.indent(needIndent()); 18753 const length = node.items.length; 18754 for (let i = 0; i < length; i++) { 18755 generateNode(generator, node.items[i]); 18756 if (i === length - 1) { 18757 break; 18758 } 18759 generator.push(", "); 18760 } 18761 generator.deindent(needIndent()); 18762 generator.push("])"); 18763} 18764function generatePluralNode(generator, node) { 18765 const { helper, needIndent } = generator; 18766 if (node.cases.length > 1) { 18767 generator.push(`${helper( 18768 "plural" 18769 /* HelperNameMap.PLURAL */ 18770 )}([`); 18771 generator.indent(needIndent()); 18772 const length = node.cases.length; 18773 for (let i = 0; i < length; i++) { 18774 generateNode(generator, node.cases[i]); 18775 if (i === length - 1) { 18776 break; 18777 } 18778 generator.push(", "); 18779 } 18780 generator.deindent(needIndent()); 18781 generator.push(`])`); 18782 } 18783} 18784function generateResource(generator, node) { 18785 if (node.body) { 18786 generateNode(generator, node.body); 18787 } else { 18788 generator.push("null"); 18789 } 18790} 18791function generateNode(generator, node) { 18792 const { helper } = generator; 18793 switch (node.type) { 18794 case 0: 18795 generateResource(generator, node); 18796 break; 18797 case 1: 18798 generatePluralNode(generator, node); 18799 break; 18800 case 2: 18801 generateMessageNode(generator, node); 18802 break; 18803 case 6: 18804 generateLinkedNode(generator, node); 18805 break; 18806 case 8: 18807 generator.push(JSON.stringify(node.value), node); 18808 break; 18809 case 7: 18810 generator.push(JSON.stringify(node.value), node); 18811 break; 18812 case 5: 18813 generator.push(`${helper( 18814 "interpolate" 18815 /* HelperNameMap.INTERPOLATE */ 18816 )}(${helper( 18817 "list" 18818 /* HelperNameMap.LIST */ 18819 )}(${node.index}))`, node); 18820 break; 18821 case 4: 18822 generator.push(`${helper( 18823 "interpolate" 18824 /* HelperNameMap.INTERPOLATE */ 18825 )}(${helper( 18826 "named" 18827 /* HelperNameMap.NAMED */ 18828 )}(${JSON.stringify(node.key)}))`, node); 18829 break; 18830 case 9: 18831 generator.push(JSON.stringify(node.value), node); 18832 break; 18833 case 3: 18834 generator.push(JSON.stringify(node.value), node); 18835 break; 18836 } 18837} 18838const generate = (ast, options2 = {}) => { 18839 const mode = isString$2(options2.mode) ? options2.mode : "normal"; 18840 const filename = isString$2(options2.filename) ? options2.filename : "message.intl"; 18841 !!options2.sourceMap; 18842 const breakLineCode = options2.breakLineCode != null ? options2.breakLineCode : mode === "arrow" ? ";" : "\n"; 18843 const needIndent = options2.needIndent ? options2.needIndent : mode !== "arrow"; 18844 const helpers = ast.helpers || []; 18845 const generator = createCodeGenerator(ast, { 18846 filename, 18847 breakLineCode, 18848 needIndent 18849 }); 18850 generator.push(mode === "normal" ? `function __msg__ (ctx) {` : `(ctx) => {`); 18851 generator.indent(needIndent); 18852 if (helpers.length > 0) { 18853 generator.push(`const { ${join(helpers.map((s) => `${s}: _${s}`), ", ")} } = ctx`); 18854 generator.newline(); 18855 } 18856 generator.push(`return `); 18857 generateNode(generator, ast); 18858 generator.deindent(needIndent); 18859 generator.push(`}`); 18860 delete ast.helpers; 18861 const { code, map } = generator.context(); 18862 return { 18863 ast, 18864 code, 18865 map: map ? map.toJSON() : void 0 18866 // eslint-disable-line @typescript-eslint/no-explicit-any 18867 }; 18868}; 18869function baseCompile$1(source, options2 = {}) { 18870 const assignedOptions = assign$1({}, options2); 18871 const jit = !!assignedOptions.jit; 18872 const enalbeMinify = !!assignedOptions.minify; 18873 const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize; 18874 const parser = createParser(assignedOptions); 18875 const ast = parser.parse(source); 18876 if (!jit) { 18877 transform(ast, assignedOptions); 18878 return generate(ast, assignedOptions); 18879 } else { 18880 enambeOptimize && optimize(ast); 18881 enalbeMinify && minify(ast); 18882 return { ast, code: "" }; 18883 } 18884} 18885/*! 18886 * core-base v11.1.5 18887 * (c) 2025 kazuya kawaguchi 18888 * Released under the MIT License. 18889 */ 18890function initFeatureFlags$1() { 18891 if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") { 18892 getGlobalThis$1().__INTLIFY_PROD_DEVTOOLS__ = false; 18893 } 18894} 18895function isMessageAST(val) { 18896 return isObject$7(val) && resolveType(val) === 0 && (hasOwn$1(val, "b") || hasOwn$1(val, "body")); 18897} 18898const PROPS_BODY = ["b", "body"]; 18899function resolveBody(node) { 18900 return resolveProps(node, PROPS_BODY); 18901} 18902const PROPS_CASES = ["c", "cases"]; 18903function resolveCases(node) { 18904 return resolveProps(node, PROPS_CASES, []); 18905} 18906const PROPS_STATIC = ["s", "static"]; 18907function resolveStatic(node) { 18908 return resolveProps(node, PROPS_STATIC); 18909} 18910const PROPS_ITEMS = ["i", "items"]; 18911function resolveItems(node) { 18912 return resolveProps(node, PROPS_ITEMS, []); 18913} 18914const PROPS_TYPE = ["t", "type"]; 18915function resolveType(node) { 18916 return resolveProps(node, PROPS_TYPE); 18917} 18918const PROPS_VALUE = ["v", "value"]; 18919function resolveValue$1(node, type) { 18920 const resolved = resolveProps(node, PROPS_VALUE); 18921 if (resolved != null) { 18922 return resolved; 18923 } else { 18924 throw createUnhandleNodeError(type); 18925 } 18926} 18927const PROPS_MODIFIER = ["m", "modifier"]; 18928function resolveLinkedModifier(node) { 18929 return resolveProps(node, PROPS_MODIFIER); 18930} 18931const PROPS_KEY = ["k", "key"]; 18932function resolveLinkedKey(node) { 18933 const resolved = resolveProps(node, PROPS_KEY); 18934 if (resolved) { 18935 return resolved; 18936 } else { 18937 throw createUnhandleNodeError( 18938 6 18939 /* NodeTypes.Linked */ 18940 ); 18941 } 18942} 18943function resolveProps(node, props2, defaultValue) { 18944 for (let i = 0; i < props2.length; i++) { 18945 const prop = props2[i]; 18946 if (hasOwn$1(node, prop) && node[prop] != null) { 18947 return node[prop]; 18948 } 18949 } 18950 return defaultValue; 18951} 18952const AST_NODE_PROPS_KEYS = [ 18953 ...PROPS_BODY, 18954 ...PROPS_CASES, 18955 ...PROPS_STATIC, 18956 ...PROPS_ITEMS, 18957 ...PROPS_KEY, 18958 ...PROPS_MODIFIER, 18959 ...PROPS_VALUE, 18960 ...PROPS_TYPE 18961]; 18962function createUnhandleNodeError(type) { 18963 return new Error(`unhandled node type: ${type}`); 18964} 18965function format(ast) { 18966 const msg = (ctx) => formatParts(ctx, ast); 18967 return msg; 18968} 18969function formatParts(ctx, ast) { 18970 const body = resolveBody(ast); 18971 if (body == null) { 18972 throw createUnhandleNodeError( 18973 0 18974 /* NodeTypes.Resource */ 18975 ); 18976 } 18977 const type = resolveType(body); 18978 if (type === 1) { 18979 const plural = body; 18980 const cases = resolveCases(plural); 18981 return ctx.plural(cases.reduce((messages, c) => [ 18982 ...messages, 18983 formatMessageParts(ctx, c) 18984 ], [])); 18985 } else { 18986 return formatMessageParts(ctx, body); 18987 } 18988} 18989function formatMessageParts(ctx, node) { 18990 const static_ = resolveStatic(node); 18991 if (static_ != null) { 18992 return ctx.type === "text" ? static_ : ctx.normalize([static_]); 18993 } else { 18994 const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []); 18995 return ctx.normalize(messages); 18996 } 18997} 18998function formatMessagePart(ctx, node) { 18999 const type = resolveType(node); 19000 switch (type) { 19001 case 3: { 19002 return resolveValue$1(node, type); 19003 } 19004 case 9: { 19005 return resolveValue$1(node, type); 19006 } 19007 case 4: { 19008 const named = node; 19009 if (hasOwn$1(named, "k") && named.k) { 19010 return ctx.interpolate(ctx.named(named.k)); 19011 } 19012 if (hasOwn$1(named, "key") && named.key) { 19013 return ctx.interpolate(ctx.named(named.key)); 19014 } 19015 throw createUnhandleNodeError(type); 19016 } 19017 case 5: { 19018 const list = node; 19019 if (hasOwn$1(list, "i") && isNumber$2(list.i)) { 19020 return ctx.interpolate(ctx.list(list.i)); 19021 } 19022 if (hasOwn$1(list, "index") && isNumber$2(list.index)) { 19023 return ctx.interpolate(ctx.list(list.index)); 19024 } 19025 throw createUnhandleNodeError(type); 19026 } 19027 case 6: { 19028 const linked = node; 19029 const modifier = resolveLinkedModifier(linked); 19030 const key = resolveLinkedKey(linked); 19031 return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : void 0, ctx.type); 19032 } 19033 case 7: { 19034 return resolveValue$1(node, type); 19035 } 19036 case 8: { 19037 return resolveValue$1(node, type); 19038 } 19039 default: 19040 throw new Error(`unhandled node on format message part: ${type}`); 19041 } 19042} 19043const defaultOnCacheKey = (message) => message; 19044let compileCache = create$1(); 19045function baseCompile(message, options2 = {}) { 19046 let detectError = false;
vendor: 13,425 bytes, lines 19047-19696
19047 const onError = options2.onError || defaultOnError; 19048 options2.onError = (err) => { 19049 detectError = true; 19050 onError(err); 19051 }; 19052 return { ...baseCompile$1(message, options2), detectError }; 19053} 19054// @__NO_SIDE_EFFECTS__ 19055function compile(message, context) { 19056 if (isString$2(message)) { 19057 isBoolean$2(context.warnHtmlMessage) ? context.warnHtmlMessage : true; 19058 const onCacheKey = context.onCacheKey || defaultOnCacheKey; 19059 const cacheKey = onCacheKey(message); 19060 const cached = compileCache[cacheKey]; 19061 if (cached) { 19062 return cached; 19063 } 19064 const { ast, detectError } = baseCompile(message, { 19065 ...context, 19066 location: false, 19067 jit: true 19068 }); 19069 const msg = format(ast); 19070 return !detectError ? compileCache[cacheKey] = msg : msg; 19071 } else { 19072 const cacheKey = message.cacheKey; 19073 if (cacheKey) { 19074 const cached = compileCache[cacheKey]; 19075 if (cached) { 19076 return cached; 19077 } 19078 return compileCache[cacheKey] = format(message); 19079 } else { 19080 return format(message); 19081 } 19082 } 19083} 19084let devtools = null; 19085function setDevToolsHook(hook) { 19086 devtools = hook; 19087} 19088function initI18nDevTools(i18n, version2, meta) { 19089 devtools && devtools.emit("i18n:init", { 19090 timestamp: Date.now(), 19091 i18n, 19092 version: version2, 19093 meta 19094 }); 19095} 19096const translateDevTools = /* @__PURE__ */ createDevToolsHook("function:translate"); 19097function createDevToolsHook(hook) { 19098 return (payloads) => devtools && devtools.emit(hook, payloads); 19099} 19100const CoreErrorCodes = { 19101 INVALID_ARGUMENT: COMPILE_ERROR_CODES_EXTEND_POINT, 19102 // 17 19103 INVALID_DATE_ARGUMENT: 18, 19104 INVALID_ISO_DATE_ARGUMENT: 19, 19105 NOT_SUPPORT_LOCALE_PROMISE_VALUE: 21, 19106 NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: 22, 19107 NOT_SUPPORT_LOCALE_TYPE: 23 19108}; 19109const CORE_ERROR_CODES_EXTEND_POINT = 24; 19110function createCoreError(code) { 19111 return createCompileError(code, null, void 0); 19112} 19113function getLocale(context, options2) { 19114 return options2.locale != null ? resolveLocale(options2.locale) : resolveLocale(context.locale); 19115} 19116let _resolveLocale; 19117function resolveLocale(locale) { 19118 if (isString$2(locale)) { 19119 return locale; 19120 } else { 19121 if (isFunction$2(locale)) { 19122 if (locale.resolvedOnce && _resolveLocale != null) { 19123 return _resolveLocale; 19124 } else if (locale.constructor.name === "Function") { 19125 const resolve2 = locale(); 19126 if (isPromise(resolve2)) { 19127 throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE); 19128 } 19129 return _resolveLocale = resolve2; 19130 } else { 19131 throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION); 19132 } 19133 } else { 19134 throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE); 19135 } 19136 } 19137} 19138function fallbackWithSimple(ctx, fallback, start) { 19139 return [.../* @__PURE__ */ new Set([ 19140 start, 19141 ...isArray$2(fallback) ? fallback : isObject$7(fallback) ? Object.keys(fallback) : isString$2(fallback) ? [fallback] : [start] 19142 ])]; 19143} 19144function fallbackWithLocaleChain(ctx, fallback, start) { 19145 const startLocale = isString$2(start) ? start : DEFAULT_LOCALE; 19146 const context = ctx; 19147 if (!context.__localeChainCache) { 19148 context.__localeChainCache = /* @__PURE__ */ new Map(); 19149 } 19150 let chain = context.__localeChainCache.get(startLocale); 19151 if (!chain) { 19152 chain = []; 19153 let block = [start]; 19154 while (isArray$2(block)) { 19155 block = appendBlockToChain(chain, block, fallback); 19156 } 19157 const defaults2 = isArray$2(fallback) || !isPlainObject$2(fallback) ? fallback : fallback["default"] ? fallback["default"] : null; 19158 block = isString$2(defaults2) ? [defaults2] : defaults2; 19159 if (isArray$2(block)) { 19160 appendBlockToChain(chain, block, false); 19161 } 19162 context.__localeChainCache.set(startLocale, chain); 19163 } 19164 return chain; 19165} 19166function appendBlockToChain(chain, block, blocks) { 19167 let follow = true; 19168 for (let i = 0; i < block.length && isBoolean$2(follow); i++) { 19169 const locale = block[i]; 19170 if (isString$2(locale)) { 19171 follow = appendLocaleToChain(chain, block[i], blocks); 19172 } 19173 } 19174 return follow; 19175} 19176function appendLocaleToChain(chain, locale, blocks) { 19177 let follow; 19178 const tokens = locale.split("-"); 19179 do { 19180 const target = tokens.join("-"); 19181 follow = appendItemToChain(chain, target, blocks); 19182 tokens.splice(-1, 1); 19183 } while (tokens.length && follow === true); 19184 return follow; 19185} 19186function appendItemToChain(chain, target, blocks) { 19187 let follow = false; 19188 if (!chain.includes(target)) { 19189 follow = true; 19190 if (target) { 19191 follow = target[target.length - 1] !== "!"; 19192 const locale = target.replace(/!/g, ""); 19193 chain.push(locale); 19194 if ((isArray$2(blocks) || isPlainObject$2(blocks)) && blocks[locale]) { 19195 follow = blocks[locale]; 19196 } 19197 } 19198 } 19199 return follow; 19200} 19201const pathStateMachine = []; 19202pathStateMachine[ 19203 0 19204 /* States.BEFORE_PATH */ 19205] = { 19206 [ 19207 "w" 19208 /* PathCharTypes.WORKSPACE */ 19209 ]: [ 19210 0 19211 /* States.BEFORE_PATH */ 19212 ], 19213 [ 19214 "i" 19215 /* PathCharTypes.IDENT */ 19216 ]: [ 19217 3, 19218 0 19219 /* Actions.APPEND */ 19220 ], 19221 [ 19222 "[" 19223 /* PathCharTypes.LEFT_BRACKET */ 19224 ]: [ 19225 4 19226 /* States.IN_SUB_PATH */ 19227 ], 19228 [ 19229 "o" 19230 /* PathCharTypes.END_OF_FAIL */ 19231 ]: [ 19232 7 19233 /* States.AFTER_PATH */ 19234 ] 19235}; 19236pathStateMachine[ 19237 1 19238 /* States.IN_PATH */ 19239] = { 19240 [ 19241 "w" 19242 /* PathCharTypes.WORKSPACE */ 19243 ]: [ 19244 1 19245 /* States.IN_PATH */ 19246 ], 19247 [ 19248 "." 19249 /* PathCharTypes.DOT */ 19250 ]: [ 19251 2 19252 /* States.BEFORE_IDENT */ 19253 ], 19254 [ 19255 "[" 19256 /* PathCharTypes.LEFT_BRACKET */ 19257 ]: [ 19258 4 19259 /* States.IN_SUB_PATH */ 19260 ], 19261 [ 19262 "o" 19263 /* PathCharTypes.END_OF_FAIL */ 19264 ]: [ 19265 7 19266 /* States.AFTER_PATH */ 19267 ] 19268}; 19269pathStateMachine[ 19270 2 19271 /* States.BEFORE_IDENT */ 19272] = { 19273 [ 19274 "w" 19275 /* PathCharTypes.WORKSPACE */ 19276 ]: [ 19277 2 19278 /* States.BEFORE_IDENT */ 19279 ], 19280 [ 19281 "i" 19282 /* PathCharTypes.IDENT */ 19283 ]: [ 19284 3, 19285 0 19286 /* Actions.APPEND */ 19287 ], 19288 [ 19289 "0" 19290 /* PathCharTypes.ZERO */ 19291 ]: [ 19292 3, 19293 0 19294 /* Actions.APPEND */ 19295 ] 19296}; 19297pathStateMachine[ 19298 3 19299 /* States.IN_IDENT */ 19300] = { 19301 [ 19302 "i" 19303 /* PathCharTypes.IDENT */ 19304 ]: [ 19305 3, 19306 0 19307 /* Actions.APPEND */ 19308 ], 19309 [ 19310 "0" 19311 /* PathCharTypes.ZERO */ 19312 ]: [ 19313 3, 19314 0 19315 /* Actions.APPEND */ 19316 ], 19317 [ 19318 "w" 19319 /* PathCharTypes.WORKSPACE */ 19320 ]: [ 19321 1, 19322 1 19323 /* Actions.PUSH */ 19324 ], 19325 [ 19326 "." 19327 /* PathCharTypes.DOT */ 19328 ]: [ 19329 2, 19330 1 19331 /* Actions.PUSH */ 19332 ], 19333 [ 19334 "[" 19335 /* PathCharTypes.LEFT_BRACKET */ 19336 ]: [ 19337 4, 19338 1 19339 /* Actions.PUSH */ 19340 ], 19341 [ 19342 "o" 19343 /* PathCharTypes.END_OF_FAIL */ 19344 ]: [ 19345 7, 19346 1 19347 /* Actions.PUSH */ 19348 ] 19349}; 19350pathStateMachine[ 19351 4 19352 /* States.IN_SUB_PATH */ 19353] = { 19354 [ 19355 "'" 19356 /* PathCharTypes.SINGLE_QUOTE */ 19357 ]: [ 19358 5, 19359 0 19360 /* Actions.APPEND */ 19361 ], 19362 [ 19363 '"' 19364 /* PathCharTypes.DOUBLE_QUOTE */ 19365 ]: [ 19366 6, 19367 0 19368 /* Actions.APPEND */ 19369 ], 19370 [ 19371 "[" 19372 /* PathCharTypes.LEFT_BRACKET */ 19373 ]: [ 19374 4, 19375 2 19376 /* Actions.INC_SUB_PATH_DEPTH */ 19377 ], 19378 [ 19379 "]" 19380 /* PathCharTypes.RIGHT_BRACKET */ 19381 ]: [ 19382 1, 19383 3 19384 /* Actions.PUSH_SUB_PATH */ 19385 ], 19386 [ 19387 "o" 19388 /* PathCharTypes.END_OF_FAIL */ 19389 ]: 8, 19390 [ 19391 "l" 19392 /* PathCharTypes.ELSE */ 19393 ]: [ 19394 4, 19395 0 19396 /* Actions.APPEND */ 19397 ] 19398}; 19399pathStateMachine[ 19400 5 19401 /* States.IN_SINGLE_QUOTE */ 19402] = { 19403 [ 19404 "'" 19405 /* PathCharTypes.SINGLE_QUOTE */ 19406 ]: [ 19407 4, 19408 0 19409 /* Actions.APPEND */ 19410 ], 19411 [ 19412 "o" 19413 /* PathCharTypes.END_OF_FAIL */ 19414 ]: 8, 19415 [ 19416 "l" 19417 /* PathCharTypes.ELSE */ 19418 ]: [ 19419 5, 19420 0 19421 /* Actions.APPEND */ 19422 ] 19423}; 19424pathStateMachine[ 19425 6 19426 /* States.IN_DOUBLE_QUOTE */ 19427] = { 19428 [ 19429 '"' 19430 /* PathCharTypes.DOUBLE_QUOTE */ 19431 ]: [ 19432 4, 19433 0 19434 /* Actions.APPEND */ 19435 ], 19436 [ 19437 "o" 19438 /* PathCharTypes.END_OF_FAIL */ 19439 ]: 8, 19440 [ 19441 "l" 19442 /* PathCharTypes.ELSE */ 19443 ]: [ 19444 6, 19445 0 19446 /* Actions.APPEND */ 19447 ] 19448}; 19449const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/; 19450function isLiteral(exp) { 19451 return literalValueRE.test(exp); 19452} 19453function stripQuotes(str) { 19454 const a = str.charCodeAt(0); 19455 const b = str.charCodeAt(str.length - 1); 19456 return a === b && (a === 34 || a === 39) ? str.slice(1, -1) : str; 19457} 19458function getPathCharType(ch) { 19459 if (ch === void 0 || ch === null) { 19460 return "o"; 19461 } 19462 const code = ch.charCodeAt(0); 19463 switch (code) { 19464 case 91: 19465 // [ 19466 case 93: 19467 // ] 19468 case 46: 19469 // . 19470 case 34: 19471 // " 19472 case 39: 19473 return ch; 19474 case 95: 19475 // _ 19476 case 36: 19477 // $ 19478 case 45: 19479 return "i"; 19480 case 9: 19481 // Tab (HT) 19482 case 10: 19483 // Newline (LF) 19484 case 13: 19485 // Return (CR) 19486 case 160: 19487 // No-break space (NBSP) 19488 case 65279: 19489 // Byte Order Mark (BOM) 19490 case 8232: 19491 // Line Separator (LS) 19492 case 8233: 19493 return "w"; 19494 } 19495 return "i"; 19496} 19497function formatSubPath(path) { 19498 const trimmed = path.trim(); 19499 if (path.charAt(0) === "0" && isNaN(parseInt(path))) { 19500 return false; 19501 } 19502 return isLiteral(trimmed) ? stripQuotes(trimmed) : "*" + trimmed; 19503} 19504function parse(path) { 19505 const keys = []; 19506 let index2 = -1; 19507 let mode = 0; 19508 let subPathDepth = 0; 19509 let c; 19510 let key; 19511 let newChar; 19512 let type; 19513 let transition2; 19514 let action; 19515 let typeMap; 19516 const actions2 = []; 19517 actions2[ 19518 0 19519 /* Actions.APPEND */ 19520 ] = () => { 19521 if (key === void 0) { 19522 key = newChar; 19523 } else { 19524 key += newChar; 19525 } 19526 }; 19527 actions2[ 19528 1 19529 /* Actions.PUSH */ 19530 ] = () => { 19531 if (key !== void 0) { 19532 keys.push(key); 19533 key = void 0; 19534 } 19535 }; 19536 actions2[ 19537 2 19538 /* Actions.INC_SUB_PATH_DEPTH */ 19539 ] = () => { 19540 actions2[ 19541 0 19542 /* Actions.APPEND */ 19543 ](); 19544 subPathDepth++; 19545 }; 19546 actions2[ 19547 3 19548 /* Actions.PUSH_SUB_PATH */ 19549 ] = () => { 19550 if (subPathDepth > 0) { 19551 subPathDepth--; 19552 mode = 4; 19553 actions2[ 19554 0 19555 /* Actions.APPEND */ 19556 ](); 19557 } else { 19558 subPathDepth = 0; 19559 if (key === void 0) { 19560 return false; 19561 } 19562 key = formatSubPath(key); 19563 if (key === false) { 19564 return false; 19565 } else { 19566 actions2[ 19567 1 19568 /* Actions.PUSH */ 19569 ](); 19570 } 19571 } 19572 }; 19573 function maybeUnescapeQuote() { 19574 const nextChar = path[index2 + 1]; 19575 if (mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"') { 19576 index2++; 19577 newChar = "\\" + nextChar; 19578 actions2[ 19579 0 19580 /* Actions.APPEND */ 19581 ](); 19582 return true; 19583 } 19584 } 19585 while (mode !== null) { 19586 index2++; 19587 c = path[index2]; 19588 if (c === "\\" && maybeUnescapeQuote()) { 19589 continue; 19590 } 19591 type = getPathCharType(c); 19592 typeMap = pathStateMachine[mode]; 19593 transition2 = typeMap[type] || typeMap[ 19594 "l" 19595 /* PathCharTypes.ELSE */ 19596 ] || 8; 19597 if (transition2 === 8) { 19598 return; 19599 } 19600 mode = transition2[0]; 19601 if (transition2[1] !== void 0) { 19602 action = actions2[transition2[1]]; 19603 if (action) { 19604 newChar = c; 19605 if (action() === false) { 19606 return; 19607 } 19608 } 19609 } 19610 if (mode === 7) { 19611 return keys; 19612 } 19613 } 19614} 19615const cache = /* @__PURE__ */ new Map(); 19616function resolveWithKeyValue(obj, path) { 19617 return isObject$7(obj) ? obj[path] : null; 19618} 19619function resolveValue(obj, path) { 19620 if (!isObject$7(obj)) { 19621 return null; 19622 } 19623 let hit = cache.get(path); 19624 if (!hit) { 19625 hit = parse(path); 19626 if (hit) { 19627 cache.set(path, hit); 19628 } 19629 } 19630 if (!hit) { 19631 return null; 19632 } 19633 const len = hit.length; 19634 let last = obj; 19635 let i = 0; 19636 while (i < len) { 19637 const key = hit[i]; 19638 if (AST_NODE_PROPS_KEYS.includes(key) && isMessageAST(last)) { 19639 return null; 19640 } 19641 const val = last[key]; 19642 if (val === void 0) { 19643 return null; 19644 } 19645 if (isFunction$2(last)) { 19646 return null; 19647 } 19648 last = val; 19649 i++; 19650 } 19651 return last; 19652} 19653const VERSION$4 = "11.1.5"; 19654const NOT_REOSLVED = -1; 19655const DEFAULT_LOCALE = "en-US"; 19656const MISSING_RESOLVE_VALUE = ""; 19657const capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`; 19658function getDefaultLinkedModifiers() { 19659 return { 19660 upper: (val, type) => { 19661 return type === "text" && isString$2(val) ? val.toUpperCase() : type === "vnode" && isObject$7(val) && "__v_isVNode" in val ? val.children.toUpperCase() : val; 19662 }, 19663 lower: (val, type) => { 19664 return type === "text" && isString$2(val) ? val.toLowerCase() : type === "vnode" && isObject$7(val) && "__v_isVNode" in val ? val.children.toLowerCase() : val; 19665 }, 19666 capitalize: (val, type) => { 19667 return type === "text" && isString$2(val) ? capitalize(val) : type === "vnode" && isObject$7(val) && "__v_isVNode" in val ? capitalize(val.children) : val; 19668 } 19669 }; 19670} 19671let _compiler; 19672function registerMessageCompiler(compiler) { 19673 _compiler = compiler; 19674} 19675let _resolver; 19676function registerMessageResolver(resolver) { 19677 _resolver = resolver; 19678} 19679let _fallbacker; 19680function registerLocaleFallbacker(fallbacker) { 19681 _fallbacker = fallbacker; 19682} 19683let _additionalMeta = null; 19684const setAdditionalMeta = /* @__NO_SIDE_EFFECTS__ */ (meta) => { 19685 _additionalMeta = meta; 19686}; 19687const getAdditionalMeta = /* @__NO_SIDE_EFFECTS__ */ () => _additionalMeta; 19688let _fallbackContext = null; 19689const setFallbackContext = (context) => { 19690 _fallbackContext = context; 19691}; 19692const getFallbackContext = () => _fallbackContext; 19693let _cid = 0; 19694function createCoreContext(options2 = {}) { 19695 const onWarn = isFunction$2(options2.onWarn) ? options2.onWarn : warn; 19696 const version2 = isString$2(options2.version) ? options2.version : VERSION$4;
19697 const locale = isString$2(options2.locale) || isFunction$2(options2.locale) ? options2.locale : DEFAULT_LOCALE; 19698 const _locale = isFunction$2(locale) ? DEFAULT_LOCALE : locale; 19699 const fallbackLocale = isArray$2(options2.fallbackLocale) || isPlainObject$2(options2.fallbackLocale) || isString$2(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : _locale; 19700 const messages = isPlainObject$2(options2.messages) ? options2.messages : createResources(_locale); 19701 const datetimeFormats = isPlainObject$2(options2.datetimeFormats) ? options2.datetimeFormats : createResources(_locale); 19702 const numberFormats = isPlainObject$2(options2.numberFormats) ? options2.numberFormats : createResources(_locale); 19703 const modifiers = assign$1(create$1(), options2.modifiers, getDefaultLinkedModifiers()); 19704 const pluralRules = options2.pluralRules || create$1(); 19705 const missing = isFunction$2(options2.missing) ? options2.missing : null; 19706 const missingWarn = isBoolean$2(options2.missingWarn) || isRegExp$2(options2.missingWarn) ? options2.missingWarn : true; 19707 const fallbackWarn = isBoolean$2(options2.fallbackWarn) || isRegExp$2(options2.fallbackWarn) ? options2.fallbackWarn : true; 19708 const fallbackFormat = !!options2.fallbackFormat; 19709 const unresolving = !!options2.unresolving; 19710 const postTranslation = isFunction$2(options2.postTranslation) ? options2.postTranslation : null; 19711 const processor = isPlainObject$2(options2.processor) ? options2.processor : null; 19712 const warnHtmlMessage = isBoolean$2(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true; 19713 const escapeParameter = !!options2.escapeParameter; 19714 const messageCompiler = isFunction$2(options2.messageCompiler) ? options2.messageCompiler : _compiler; 19715 const messageResolver = isFunction$2(options2.messageResolver) ? options2.messageResolver : _resolver || resolveWithKeyValue; 19716 const localeFallbacker = isFunction$2(options2.localeFallbacker) ? options2.localeFallbacker : _fallbacker || fallbackWithSimple; 19717 const fallbackContext = isObject$7(options2.fallbackContext) ? options2.fallbackContext : void 0; 19718 const internalOptions = options2; 19719 const __datetimeFormatters = isObject$7(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : /* @__PURE__ */ new Map(); 19720 const __numberFormatters = isObject$7(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : /* @__PURE__ */ new Map(); 19721 const __meta = isObject$7(internalOptions.__meta) ? internalOptions.__meta : {}; 19722 _cid++; 19723 const context = { 19724 version: version2, 19725 cid: _cid, 19726 locale, 19727 fallbackLocale, 19728 messages, 19729 modifiers, 19730 pluralRules, 19731 missing, 19732 missingWarn, 19733 fallbackWarn, 19734 fallbackFormat, 19735 unresolving, 19736 postTranslation, 19737 processor, 19738 warnHtmlMessage, 19739 escapeParameter, 19740 messageCompiler, 19741 messageResolver, 19742 localeFallbacker, 19743 fallbackContext, 19744 onWarn, 19745 __meta 19746 }; 19747 { 19748 context.datetimeFormats = datetimeFormats; 19749 context.numberFormats = numberFormats; 19750 context.__datetimeFormatters = __datetimeFormatters; 19751 context.__numberFormatters = __numberFormatters; 19752 } 19753 if (__INTLIFY_PROD_DEVTOOLS__) { 19754 initI18nDevTools(context, version2, __meta); 19755 } 19756 return context; 19757} 19758const createResources = (locale) => ({ [locale]: create$1() }); 19759function handleMissing(context, key, locale, missingWarn, type) { 19760 const { missing, onWarn } = context; 19761 if (missing !== null) { 19762 const ret = missing(context, locale, key, type); 19763 return isString$2(ret) ? ret : key; 19764 } else { 19765 return key; 19766 } 19767} 19768function updateFallbackLocale(ctx, locale, fallback) { 19769 const context = ctx; 19770 context.__localeChainCache = /* @__PURE__ */ new Map(); 19771 ctx.localeFallbacker(ctx, fallback, locale); 19772} 19773function isAlmostSameLocale(locale, compareLocale) { 19774 if (locale === compareLocale) 19775 return false; 19776 return locale.split("-")[0] === compareLocale.split("-")[0]; 19777} 19778function isImplicitFallback(targetLocale, locales) { 19779 const index2 = locales.indexOf(targetLocale); 19780 if (index2 === -1) { 19781 return false; 19782 } 19783 for (let i = index2 + 1; i < locales.length; i++) { 19784 if (isAlmostSameLocale(targetLocale, locales[i])) { 19785 return true; 19786 } 19787 } 19788 return false;
vendor: 8,858 bytes, lines 19789-20055
19789} 19790function datetime(context, ...args) { 19791 const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context; 19792 const { __datetimeFormatters } = context; 19793 const [key, value, options2, overrides] = parseDateTimeArgs(...args); 19794 const missingWarn = isBoolean$2(options2.missingWarn) ? options2.missingWarn : context.missingWarn; 19795 isBoolean$2(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn; 19796 const part = !!options2.part; 19797 const locale = getLocale(context, options2); 19798 const locales = localeFallbacker( 19799 context, 19800 // eslint-disable-line @typescript-eslint/no-explicit-any 19801 fallbackLocale, 19802 locale 19803 ); 19804 if (!isString$2(key) || key === "") { 19805 return new Intl.DateTimeFormat(locale, overrides).format(value); 19806 } 19807 let datetimeFormat = {}; 19808 let targetLocale; 19809 let format2 = null; 19810 const type = "datetime format"; 19811 for (let i = 0; i < locales.length; i++) { 19812 targetLocale = locales[i]; 19813 datetimeFormat = datetimeFormats[targetLocale] || {}; 19814 format2 = datetimeFormat[key]; 19815 if (isPlainObject$2(format2)) 19816 break; 19817 handleMissing(context, key, targetLocale, missingWarn, type); 19818 } 19819 if (!isPlainObject$2(format2) || !isString$2(targetLocale)) { 19820 return unresolving ? NOT_REOSLVED : key; 19821 } 19822 let id = `${targetLocale}__${key}`; 19823 if (!isEmptyObject$1(overrides)) { 19824 id = `${id}__${JSON.stringify(overrides)}`; 19825 } 19826 let formatter = __datetimeFormatters.get(id); 19827 if (!formatter) { 19828 formatter = new Intl.DateTimeFormat(targetLocale, assign$1({}, format2, overrides)); 19829 __datetimeFormatters.set(id, formatter); 19830 } 19831 return !part ? formatter.format(value) : formatter.formatToParts(value); 19832} 19833const DATETIME_FORMAT_OPTIONS_KEYS = [ 19834 "localeMatcher", 19835 "weekday", 19836 "era", 19837 "year", 19838 "month", 19839 "day", 19840 "hour", 19841 "minute", 19842 "second", 19843 "timeZoneName", 19844 "formatMatcher", 19845 "hour12", 19846 "timeZone", 19847 "dateStyle", 19848 "timeStyle", 19849 "calendar", 19850 "dayPeriod", 19851 "numberingSystem", 19852 "hourCycle", 19853 "fractionalSecondDigits" 19854]; 19855function parseDateTimeArgs(...args) { 19856 const [arg1, arg2, arg3, arg4] = args; 19857 const options2 = create$1(); 19858 let overrides = create$1(); 19859 let value; 19860 if (isString$2(arg1)) { 19861 const matches2 = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/); 19862 if (!matches2) { 19863 throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT); 19864 } 19865 const dateTime = matches2[3] ? matches2[3].trim().startsWith("T") ? `${matches2[1].trim()}${matches2[3].trim()}` : `${matches2[1].trim()}T${matches2[3].trim()}` : matches2[1].trim(); 19866 value = new Date(dateTime); 19867 try { 19868 value.toISOString(); 19869 } catch { 19870 throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT); 19871 } 19872 } else if (isDate$1(arg1)) { 19873 if (isNaN(arg1.getTime())) { 19874 throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT); 19875 } 19876 value = arg1; 19877 } else if (isNumber$2(arg1)) { 19878 value = arg1; 19879 } else { 19880 throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); 19881 } 19882 if (isString$2(arg2)) { 19883 options2.key = arg2; 19884 } else if (isPlainObject$2(arg2)) { 19885 Object.keys(arg2).forEach((key) => { 19886 if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) { 19887 overrides[key] = arg2[key]; 19888 } else { 19889 options2[key] = arg2[key]; 19890 } 19891 }); 19892 } 19893 if (isString$2(arg3)) { 19894 options2.locale = arg3; 19895 } else if (isPlainObject$2(arg3)) { 19896 overrides = arg3; 19897 } 19898 if (isPlainObject$2(arg4)) { 19899 overrides = arg4; 19900 } 19901 return [options2.key || "", value, options2, overrides]; 19902} 19903function clearDateTimeFormat(ctx, locale, format2) { 19904 const context = ctx; 19905 for (const key in format2) { 19906 const id = `${locale}__${key}`; 19907 if (!context.__datetimeFormatters.has(id)) { 19908 continue; 19909 } 19910 context.__datetimeFormatters.delete(id); 19911 } 19912} 19913function number(context, ...args) { 19914 const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context; 19915 const { __numberFormatters } = context; 19916 const [key, value, options2, overrides] = parseNumberArgs(...args); 19917 const missingWarn = isBoolean$2(options2.missingWarn) ? options2.missingWarn : context.missingWarn; 19918 isBoolean$2(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn; 19919 const part = !!options2.part; 19920 const locale = getLocale(context, options2); 19921 const locales = localeFallbacker( 19922 context, 19923 // eslint-disable-line @typescript-eslint/no-explicit-any 19924 fallbackLocale, 19925 locale 19926 ); 19927 if (!isString$2(key) || key === "") { 19928 return new Intl.NumberFormat(locale, overrides).format(value); 19929 } 19930 let numberFormat = {}; 19931 let targetLocale; 19932 let format2 = null; 19933 const type = "number format"; 19934 for (let i = 0; i < locales.length; i++) { 19935 targetLocale = locales[i]; 19936 numberFormat = numberFormats[targetLocale] || {}; 19937 format2 = numberFormat[key]; 19938 if (isPlainObject$2(format2)) 19939 break; 19940 handleMissing(context, key, targetLocale, missingWarn, type); 19941 } 19942 if (!isPlainObject$2(format2) || !isString$2(targetLocale)) { 19943 return unresolving ? NOT_REOSLVED : key; 19944 } 19945 let id = `${targetLocale}__${key}`; 19946 if (!isEmptyObject$1(overrides)) { 19947 id = `${id}__${JSON.stringify(overrides)}`; 19948 } 19949 let formatter = __numberFormatters.get(id); 19950 if (!formatter) { 19951 formatter = new Intl.NumberFormat(targetLocale, assign$1({}, format2, overrides)); 19952 __numberFormatters.set(id, formatter); 19953 } 19954 return !part ? formatter.format(value) : formatter.formatToParts(value); 19955} 19956const NUMBER_FORMAT_OPTIONS_KEYS = [ 19957 "localeMatcher", 19958 "style", 19959 "currency", 19960 "currencyDisplay", 19961 "currencySign", 19962 "useGrouping", 19963 "minimumIntegerDigits", 19964 "minimumFractionDigits", 19965 "maximumFractionDigits", 19966 "minimumSignificantDigits", 19967 "maximumSignificantDigits", 19968 "compactDisplay", 19969 "notation", 19970 "signDisplay", 19971 "unit", 19972 "unitDisplay", 19973 "roundingMode", 19974 "roundingPriority", 19975 "roundingIncrement", 19976 "trailingZeroDisplay" 19977]; 19978function parseNumberArgs(...args) { 19979 const [arg1, arg2, arg3, arg4] = args; 19980 const options2 = create$1(); 19981 let overrides = create$1(); 19982 if (!isNumber$2(arg1)) { 19983 throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); 19984 } 19985 const value = arg1; 19986 if (isString$2(arg2)) { 19987 options2.key = arg2; 19988 } else if (isPlainObject$2(arg2)) { 19989 Object.keys(arg2).forEach((key) => { 19990 if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) { 19991 overrides[key] = arg2[key]; 19992 } else { 19993 options2[key] = arg2[key]; 19994 } 19995 }); 19996 } 19997 if (isString$2(arg3)) { 19998 options2.locale = arg3; 19999 } else if (isPlainObject$2(arg3)) { 20000 overrides = arg3; 20001 } 20002 if (isPlainObject$2(arg4)) { 20003 overrides = arg4; 20004 } 20005 return [options2.key || "", value, options2, overrides]; 20006} 20007function clearNumberFormat(ctx, locale, format2) { 20008 const context = ctx; 20009 for (const key in format2) { 20010 const id = `${locale}__${key}`; 20011 if (!context.__numberFormatters.has(id)) { 20012 continue; 20013 } 20014 context.__numberFormatters.delete(id); 20015 } 20016} 20017const DEFAULT_MODIFIER = (str) => str; 20018const DEFAULT_MESSAGE = (ctx) => ""; 20019const DEFAULT_MESSAGE_DATA_TYPE = "text"; 20020const DEFAULT_NORMALIZE = (values) => values.length === 0 ? "" : join(values); 20021const DEFAULT_INTERPOLATE = toDisplayString; 20022function pluralDefault(choice, choicesLength) { 20023 choice = Math.abs(choice); 20024 if (choicesLength === 2) { 20025 return choice ? choice > 1 ? 1 : 0 : 1; 20026 } 20027 return choice ? Math.min(choice, 2) : 0; 20028} 20029function getPluralIndex(options2) { 20030 const index2 = isNumber$2(options2.pluralIndex) ? options2.pluralIndex : -1; 20031 return options2.named && (isNumber$2(options2.named.count) || isNumber$2(options2.named.n)) ? isNumber$2(options2.named.count) ? options2.named.count : isNumber$2(options2.named.n) ? options2.named.n : index2 : index2; 20032} 20033function normalizeNamed(pluralIndex, props2) { 20034 if (!props2.count) { 20035 props2.count = pluralIndex; 20036 } 20037 if (!props2.n) { 20038 props2.n = pluralIndex; 20039 } 20040} 20041function createMessageContext(options2 = {}) { 20042 const locale = options2.locale; 20043 const pluralIndex = getPluralIndex(options2); 20044 const pluralRule = isObject$7(options2.pluralRules) && isString$2(locale) && isFunction$2(options2.pluralRules[locale]) ? options2.pluralRules[locale] : pluralDefault; 20045 const orgPluralRule = isObject$7(options2.pluralRules) && isString$2(locale) && isFunction$2(options2.pluralRules[locale]) ? pluralDefault : void 0; 20046 const plural = (messages) => { 20047 return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)]; 20048 }; 20049 const _list = options2.list || []; 20050 const list = (index2) => _list[index2]; 20051 const _named = options2.named || create$1(); 20052 isNumber$2(options2.pluralIndex) && normalizeNamed(pluralIndex, _named); 20053 const named = (key) => _named[key]; 20054 function message(key, useLinked) { 20055 const msg = isFunction$2(options2.messages) ? options2.messages(key, !!useLinked) : isObject$7(options2.messages) ? options2.messages[key] : false;
20056 return !msg ? options2.parent ? options2.parent.message(key) : DEFAULT_MESSAGE : msg; 20057 } 20058 const _modifier = (name) => options2.modifiers ? options2.modifiers[name] : DEFAULT_MODIFIER; 20059 const normalize = isPlainObject$2(options2.processor) && isFunction$2(options2.processor.normalize) ? options2.processor.normalize : DEFAULT_NORMALIZE; 20060 const interpolate = isPlainObject$2(options2.processor) && isFunction$2(options2.processor.interpolate) ? options2.processor.interpolate : DEFAULT_INTERPOLATE; 20061 const type = isPlainObject$2(options2.processor) && isString$2(options2.processor.type) ? options2.processor.type : DEFAULT_MESSAGE_DATA_TYPE; 20062 const linked = (key, ...args) => { 20063 const [arg1, arg2] = args; 20064 let type2 = "text"; 20065 let modifier = ""; 20066 if (args.length === 1) { 20067 if (isObject$7(arg1)) { 20068 modifier = arg1.modifier || modifier; 20069 type2 = arg1.type || type2; 20070 } else if (isString$2(arg1)) { 20071 modifier = arg1 || modifier; 20072 } 20073 } else if (args.length === 2) { 20074 if (isString$2(arg1)) { 20075 modifier = arg1 || modifier; 20076 } 20077 if (isString$2(arg2)) { 20078 type2 = arg2 || type2; 20079 } 20080 } 20081 const ret = message(key, true)(ctx); 20082 const msg = ( 20083 // The message in vnode resolved with linked are returned as an array by processor.nomalize 20084 type2 === "vnode" && isArray$2(ret) && modifier ? ret[0] : ret 20085 ); 20086 return modifier ? _modifier(modifier)(msg, type2) : msg; 20087 }; 20088 const ctx = { 20089 [ 20090 "list" 20091 /* HelperNameMap.LIST */ 20092 ]: list, 20093 [ 20094 "named" 20095 /* HelperNameMap.NAMED */ 20096 ]: named, 20097 [ 20098 "plural" 20099 /* HelperNameMap.PLURAL */ 20100 ]: plural, 20101 [ 20102 "linked" 20103 /* HelperNameMap.LINKED */ 20104 ]: linked, 20105 [ 20106 "message" 20107 /* HelperNameMap.MESSAGE */ 20108 ]: message, 20109 [ 20110 "type" 20111 /* HelperNameMap.TYPE */ 20112 ]: type, 20113 [ 20114 "interpolate" 20115 /* HelperNameMap.INTERPOLATE */ 20116 ]: interpolate, 20117 [ 20118 "normalize" 20119 /* HelperNameMap.NORMALIZE */ 20120 ]: normalize, 20121 [ 20122 "values" 20123 /* HelperNameMap.VALUES */ 20124 ]: assign$1(create$1(), _list, _named) 20125 }; 20126 return ctx; 20127} 20128const NOOP_MESSAGE_FUNCTION = () => ""; 20129const isMessageFunction = (val) => isFunction$2(val); 20130function translate$1(context, ...args) { 20131 const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context; 20132 const [key, options2] = parseTranslateArgs(...args); 20133 const missingWarn = isBoolean$2(options2.missingWarn) ? options2.missingWarn : context.missingWarn; 20134 const fallbackWarn = isBoolean$2(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn; 20135 const escapeParameter = isBoolean$2(options2.escapeParameter) ? options2.escapeParameter : context.escapeParameter; 20136 const resolvedMessage = !!options2.resolvedMessage; 20137 const defaultMsgOrKey = isString$2(options2.default) || isBoolean$2(options2.default) ? !isBoolean$2(options2.default) ? options2.default : !messageCompiler ? () => key : key : fallbackFormat ? !messageCompiler ? () => key : key : null; 20138 const enableDefaultMsg = fallbackFormat || defaultMsgOrKey != null && (isString$2(defaultMsgOrKey) || isFunction$2(defaultMsgOrKey)); 20139 const locale = getLocale(context, options2); 20140 escapeParameter && escapeParams(options2); 20141 let [formatScope, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [ 20142 key, 20143 locale, 20144 messages[locale] || create$1() 20145 ]; 20146 let format2 = formatScope; 20147 let cacheBaseKey = key; 20148 if (!resolvedMessage && !(isString$2(format2) || isMessageAST(format2) || isMessageFunction(format2))) { 20149 if (enableDefaultMsg) { 20150 format2 = defaultMsgOrKey; 20151 cacheBaseKey = format2; 20152 } 20153 } 20154 if (!resolvedMessage && (!(isString$2(format2) || isMessageAST(format2) || isMessageFunction(format2)) || !isString$2(targetLocale))) { 20155 return unresolving ? NOT_REOSLVED : key; 20156 } 20157 let occurred = false; 20158 const onError = () => { 20159 occurred = true; 20160 }; 20161 const msg = !isMessageFunction(format2) ? compileMessageFormat(context, key, targetL
20161ocale, format2, cacheBaseKey, onError) : format2; 20162 if (occurred) { 20163 return format2; 20164 } 20165 const ctxOptions = getMessageContextOptions(context, targetLocale, message, options2); 20166 const msgContext = createMessageContext(ctxOptions); 20167 const messaged = evaluateMessage(context, msg, msgContext); 20168 const ret = postTranslation ? postTranslation(messaged, key) : messaged; 20169 if (__INTLIFY_PROD_DEVTOOLS__) { 20170 const payloads = { 20171 timestamp: Date.now(), 20172 key: isString$2(key) ? key : isMessageFunction(format2) ? format2.key : "", 20173 locale: targetLocale || (isMessageFunction(format2) ? format2.locale : ""), 20174 format: isString$2(format2) ? format2 : isMessageFunction(format2) ? format2.source : "", 20175 message: ret 20176 }; 20177 payloads.meta = assign$1({}, context.__meta, /* @__PURE__ */ getAdditionalMeta() || {}); 20178 translateDevTools(payloads); 20179 } 20180 return ret; 20181} 20182function escapeParams(options2) { 20183 if (isArray$2(options2.list)) { 20184 options2.list = options2.list.map((item) => isString$2(item) ? escapeHtml(item) : item); 20185 } else if (isObject$7(options2.named)) { 20186 Object.keys(options2.named).forEach((key) => { 20187 if (isString$2(options2.named[key])) { 20188 options2.named[key] = escapeHtml(options2.named[key]); 20189 } 20190 }); 20191 } 20192} 20193function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) { 20194 const { messages, onWarn, messageResolver: resolveValue2, localeFallbacker } = context; 20195 const locales = localeFallbacker(context, fallbackLocale, locale); 20196 let message = create$1(); 20197 let targetLocale; 20198 let format2 = null; 20199 const type = "translate"; 20200 for (let i = 0; i < locales.length; i++) { 20201 targetLocale = locales[i]; 20202 message = messages[targetLocale] || create$1(); 20203 if ((format2 = resolveValue2(message, key)) === null) { 20204 format2 = message[key]; 20205 } 20206 if (isString$2(format2) || isMessageAST(format2) || isMessageFunction(format2)) { 20207 break; 20208 } 20209 if (!isImplicitFallback(targetLocale, locales)) { 20210 const missingRet = handleMissing( 20211 context, 20212 // eslint-disable-line @typescript-eslint/no-explicit-any 20213 key, 20214 targetLocale, 20215 missingWarn, 20216 type 20217 ); 20218 if (missingRet !== key) { 20219 format2 = missingRet; 20220 } 20221 } 20222 } 20223 return [format2, targetLocale, message]; 20224} 20225function compileMessageFormat(context, key, targetLocale, format2, cacheBaseKey, onError) { 20226 const { messageCompiler, warnHtmlMessage } = context; 20227 if (isMessageFunction(format2)) { 20228 const msg2 = format2; 20229 msg2.locale = msg2.locale || targetLocale; 20230 msg2.key = msg2.key || key; 20231 return msg2; 20232 } 20233 if (messageCompiler == null) { 20234 const msg2 = () => format2; 20235 msg2.locale = targetLocale; 20236 msg2.key = key; 20237 return msg2; 20238 } 20239 const msg = messageCompiler(format2, getCompileContext(context, targetLocale, cacheBaseKey, format2, warnHtmlMessage, onError)); 20240 msg.locale = targetLocale; 20241 msg.key = key; 20242 msg.source = format2; 20243 return msg; 20244} 20245function evaluateMessage(context, msg, msgCtx) { 20246 const messaged = msg(msgCtx); 20247 return messaged; 20248} 20249function parseTranslateArgs(...args) { 20250 const [arg1, arg2, arg3] = args; 20251 const options2 = create$1(); 20252 if (!isString$2(arg1) && !isNumber$2(arg1) && !isMessageFunction(arg1) && !isMessageAST(arg1)) { 20253 throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); 20254 } 20255 const key = isNumber$2(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1; 20256 if (isNumber$2(arg2)) { 20257 options2.plural = arg2; 20258 } else if (isString$2(arg2)) { 20259 options2.default = arg2; 20260 } else if (isPlainObject$2(arg2) && !isEmptyObject$1(arg2)) { 20261 options2.named = arg2; 20262 } else if (isArray$2(arg2)) { 20263 options2.list = arg2; 20264 } 20265 if (isNumber$2(arg3)) { 20266 options2.plural = arg3; 20267 } else if (isString$2(arg3)) { 20268 options2.default = arg3; 20269 } else if (isPlainObject$2(arg3)) { 20270 assign$1(options2, arg3); 20271 } 20272 return [key, options2]; 20273} 20274function getCompileContext(context, locale, key, source, warnHtmlMessage, onError) { 20275 return { 20276 locale, 20277 key, 20278 warnHtmlMessage, 20279 onError: (err) => { 20280 onError && onError(err); 20281 { 20282 throw err; 20283 } 20284 }, 20285 onCacheKey: (source2) => generateFormatCacheKey(locale, key, source2) 20286 }; 20287}
20288function getMessageContextOptions(context, locale, message, options2) { 20289 const { modifiers, pluralRules, messageResolver: resolveValue2, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context; 20290 const resolveMessage = (key, useLinked) => { 20291 let val = resolveValue2(message, key); 20292 if (val == null && (fallbackContext || useLinked)) { 20293 const [, , message2] = resolveMessageFormat( 20294 fallbackContext || context, 20295 // NOTE: if has fallbackContext, fallback to root, else if use linked, fallback to local context 20296 key, 20297 locale, 20298 fallbackLocale, 20299 fallbackWarn, 20300 missingWarn 20301 ); 20302 val = resolveValue2(message2, key); 20303 } 20304 if (isString$2(val) || isMessageAST(val)) { 20305 let occurred = false; 20306 const onError = () => { 20307 occurred = true; 20308 }; 20309 const msg = compileMessageFormat(context, key, locale, val, key, onError); 20310 return !occurred ? msg : NOOP_MESSAGE_FUNCTION; 20311 } else if (isMessageFunction(val)) { 20312 return val; 20313 } else { 20314 return NOOP_MESSAGE_FUNCTION; 20315 } 20316 }; 20317 const ctxOptions = { 20318 locale, 20319 modifiers, 20320 pluralRules, 20321 messages: resolveMessage 20322 }; 20323 if (context.processor) { 20324 ctxOptions.processor = context.processor; 20325 } 20326 if (options2.list) { 20327 ctxOptions.list = options2.list; 20328 } 20329 if (options2.named) { 20330 ctxOptions.named = options2.named; 20331 } 20332 if (isNumber$2(options2.plural)) { 20333 ctxOptions.pluralIndex = options2.plural; 20334 } 20335 return ctxOptions; 20336} 20337{ 20338 initFeatureFlags$1(); 20339} 20340/*! 20341 * shared v11.1.5 20342 * (c) 2025 kazuya kawaguchi 20343 * Released under the MIT License. 20344 */ 20345const inBrowser = typeof window !== "undefined"; 20346const makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name); 20347const isNumber$1 = (val) => typeof val === "number" && isFinite(val); 20348const isRegExp$1 = (val) => toTypeString(val) === "[object RegExp]"; 20349const isEmptyObject = (val) => isPlainObject$1(val) && Object.keys(val).length === 0; 20350const assign = Object.assign; 20351const _create = Object.create; 20352const create = (obj = null) => _create(obj); 20353let _globalThis; 20354const getGlobalThis = () => { 20355 return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : create()); 20356}; 20357const hasOwnProperty$1 = Object.prototype.hasOwnProperty; 20358function hasOwn(obj, key) { 20359 return hasOwnProperty$1.call(obj, key); 20360} 20361const isArray$1 = Array.isArray; 20362const isFunction$1 = (val) => typeof val === "function"; 20363const isString$1 = (val) => typeof val === "string"; 20364const isBoolean$1 = (val) => typeof val === "boolean"; 20365const isObject$6 = (val) => val !== null && typeof val === "object"; 20366const objectToString$2 = Object.prototype.toString; 20367const toTypeString = (value) => objectToString$2.call(value); 20368const isPlainObject$1 = (val) => toTypeString(val) === "[object Object]"; 20369const isNotObjectOrIsArray = (val) => !isObject$6(val) || isArray$1(val); 20370function deepCopy(src, des) { 20371 if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) { 20372 throw new Error("Invalid value"); 20373 } 20374 const stack2 = [{ src, des }]; 20375 while (stack2.length) { 20376 const { src: src2, des: des2 } = stack2.pop(); 20377 Object.keys(src2).forEach((key) => { 20378 if (key === "__proto__") { 20379 return; 20380 } 20381 if (isObject$6(src2[key]) && !isObject$6(des2[key])) { 20382 des2[key] = Array.isArray(src2[key]) ? [] : create(); 20383 } 20384 if (isNotObjectOrIsArray(des2[key]) || isNotObjectOrIsArray(src2[key])) { 20385 des2[key] = src2[key]; 20386 } else { 20387 stack2.push({ src: src2[key], des: des2[key] }); 20388 } 20389 }); 20390 } 20391} 20392/*! 20393 * vue-i18n v11.1.5 20394 * (c) 2025 kazuya kawaguchi 20395 * Released under the MIT License. 20396 */ 20397const VERSION$3 = "11.1.5"; 20398function initFeatureFlags() { 20399 if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") { 20400 getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false; 20401 } 20402} 20403const I18nErrorCodes = { 20404 // composer module errors 20405 UNEXPECTED_RETURN_TYPE: CORE_ERROR_CODES_EXTEND_POINT, 20406 // 24 20407 // legacy module errors 20408 INVALID_ARGUMENT: 25, 20409 // i18n module errors 20410 MUST_BE_CALL_SETUP_TOP: 26, 20411 NOT_INSTALLED: 27, 20412 // directive module errors 20413 REQUIRED_VALUE: 28, 20414 INVALID_VALUE: 29, 20415 NOT_INSTALLED_WITH_PROVIDE: 31, 20416 // unexpected error 20417 UNEXPECTED_ERROR: 32 20418}; 20419function createI18nError(code, ...args) { 20420 return createCompileError(code, null, void 0); 20421} 20422const TranslateVNodeSymbol = /* @__PURE__ */ makeSymbol("__translateVNode"); 20423const DatetimePartsSymbol = /* @__PURE__ */ makeSymbol("__datetimeParts"); 20424const NumberPartsSymbol = /* @__PURE__ */ makeSymbol("__numberParts"); 20425const SetPluralRulesSymbol = makeSymbol("__setPluralRules"); 20426const InejctWithOptionSymbol = /* @__PURE__ */ makeSymbol("__injectWithOption"); 20427const DisposeSymbol = /* @__PURE__ */ makeSymbol("__dispose"); 20428function handleFlatJson(obj) { 20429 if (!isObject$6(obj)) { 20430 return obj; 20431 } 20432 if (isMessageAST(obj)) { 20433 return obj; 20434 } 20435 for (const key in obj) { 20436 if (!hasOwn(obj, key)) { 20437 continue; 20438 } 20439 if (!key.includes(".")) { 20440 if (isObject$6(obj[key])) { 20441 handleFlatJson(obj[key]); 20442 } 20443 } else { 20444 const subKeys = key.split("."); 20445 const lastIndex = subKeys.length - 1; 20446 let currentObj = obj; 20447 let hasStringValue = false;
20448 for (let i = 0; i < lastIndex; i++) { 20449 if (subKeys[i] === "__proto__") { 20450 throw new Error(`unsafe key: ${subKeys[i]}`); 20451 } 20452 if (!(subKeys[i] in currentObj)) { 20453 currentObj[subKeys[i]] = create(); 20454 } 20455 if (!isObject$6(currentObj[subKeys[i]])) { 20456 hasStringValue = true; 20457 break; 20458 } 20459 currentObj = currentObj[subKeys[i]]; 20460 } 20461 if (!hasStringValue) { 20462 if (!isMessageAST(currentObj)) { 20463 currentObj[subKeys[lastIndex]] = obj[key]; 20464 delete obj[key]; 20465 } else { 20466 if (!AST_NODE_PROPS_KEYS.includes(subKeys[lastIndex])) { 20467 delete obj[key]; 20468 } 20469 } 20470 } 20471 if (!isMessageAST(currentObj)) { 20472 const target = currentObj[subKeys[lastIndex]]; 20473 if (isObject$6(target)) { 20474 handleFlatJson(target); 20475 } 20476 } 20477 } 20478 } 20479 return obj; 20480} 20481function getLocaleMessages(locale, options2) { 20482 const { messages, __i18n, messageResolver, flatJson } = options2; 20483 const ret = isPlainObject$1(messages) ? messages : isArray$1(__i18n) ? create() : { [locale]: create() }; 20484 if (isArray$1(__i18n)) { 20485 __i18n.forEach((custom) => { 20486 if ("locale" in custom && "resource" in custom) { 20487 const { locale: locale2, resource } = custom; 20488 if (locale2) { 20489 ret[locale2] = ret[locale2] || create(); 20490 deepCopy(resource, ret[locale2]); 20491 } else { 20492 deepCopy(resource, ret); 20493 } 20494 } else { 20495 isString$1(custom) && deepCopy(JSON.parse(custom), ret); 20496 } 20497 }); 20498 } 20499 if (messageResolver == null && flatJson) { 20500 for (const key in ret) { 20501 if (hasOwn(ret, key)) { 20502 handleFlatJson(ret[key]); 20503 } 20504 } 20505 } 20506 return ret; 20507} 20508function getComponentOptions(instance) { 20509 return instance.type; 20510} 20511function adjustI18nResources(gl, options2, componentOptions) { 20512 let messages = isObject$6(options2.messages) ? options2.messages : create(); 20513 if ("__i18nGlobal" in componentOptions) { 20514 messages = getLocaleMessages(gl.locale.value, { 20515 messages, 20516 __i18n: componentOptions.__i18nGlobal 20517 }); 20518 } 20519 const locales = Object.keys(messages); 20520 if (locales.length) { 20521 locales.forEach((locale) => { 20522 gl.mergeLocaleMessage(locale, messages[locale]); 20523 }); 20524 } 20525 { 20526 if (isObject$6(options2.datetimeFormats)) { 20527 const locales2 = Object.keys(options2.datetimeFormats); 20528 if (locales2.length) { 20529 locales2.forEach((locale) => { 20530 gl.mergeDateTimeFormat(locale, options2.datetimeFormats[locale]); 20531 }); 20532 } 20533 } 20534 if (isObject$6(options2.numberFormats)) { 20535 const locales2 = Object.keys(options2.numberFormats); 20536 if (locales2.length) { 20537 locales2.forEach((locale) => { 20538 gl.mergeNumberFormat(locale, options2.numberFormats[locale]); 20539 }); 20540 } 20541 } 20542 } 20543} 20544function createTextNode(key) { 20545 return createVNode(Text, null, key, 0); 20546} 20547const DEVTOOLS_META = "__INTLIFY_META__"; 20548const NOOP_RETURN_ARRAY = () => []; 20549const NOOP_RETURN_FALSE = () => false; 20550let composerID = 0; 20551function defineCoreMissingHandler(missing) { 20552 return (ctx, locale, key, type) => { 20553 return missing(locale, key, getCurrentInstance() || void 0, type); 20554 }; 20555} 20556const getMetaInfo = /* @__NO_SIDE_EFFECTS__ */ () => { 20557 const instance = getCurrentInstance(); 20558 let meta = null; 20559 return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) ? { [DEVTOOLS_META]: meta } : null; 20560}; 20561function createComposer(options2 = {}) { 20562 const { __root, __injectWithOption } = options2; 20563 const _isGlobal = __root === void 0; 20564 const flatJson = options2.flatJson; 20565 const _ref = inBrowser ? ref : shallowRef; 20566 let _inheritLocale = isBoolean$1(options2.inheritLocale) ? options2.inheritLocale : true; 20567 const _locale = _ref( 20568 // prettier-ignore 20569 __root && _inheritLocale ? __root.locale.value : isString$1(options2.locale) ? options2.locale : DEFAULT_LOCALE 20570 ); 20571 const _fallbackLocale = _ref( 20572 // prettier-ignore 20573 __root && _inheritLocale ? __root.fallbackLocale.value : isString$1(options2.fallbackLocale) || isArray$1(options2.fallbackLocale) || isPlainObject$1(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : _locale.value 20574 ); 20575 const _messages = _ref(getLocaleMessages(_locale.value, options2)); 20576 const _datetimeFormats = _ref(isPlainObject$1(options2.datetimeFormats) ? options2.datetimeFormats : { [_locale.value]: {} }); 20577 const _numberFormats = _ref(isPlainObject$1(options2.numberFormats) ? options2.numberFormats : { [_locale.value]: {} }); 20578 let _missingWarn = __root ? __root.missingWarn : isBoolean$1(options2.missingWarn) || isRegExp$1(options2.missingWarn) ? options2.missingWarn : true; 20579 let _fallbackWarn = __root ? __root.fallbackWarn : isBoolean$1(options2.fallbackWarn) || isRegExp$1(options2.fallbackWarn) ? options2.fallbackWarn : true; 20580 let _fallbackRoot = __root ? __root.fallbackRoot : isBoolean$1(options2.fallbackRoot) ? options2.fallbackRoot : true; 20581 let _fallbackFormat = !!options2.fallbackFormat; 20582 let _missing = isFunction$1(options2.missing) ? options2.missing : null; 20583 let _runtimeMissing = isFunction$1(options2.missing) ? defineCoreMissingHandler(options2.missing) : null; 20584 let _postTranslation = isFunction$1(options2.postTranslation) ? options2.postTranslation : null; 20585 let _warnHtmlMessage = __root ? __root.warnHtmlMessage : isBoolean$1(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true; 20586 let _escapeParameter = !!options2.escapeParameter; 20587 const _modifiers = __root ? __root.modifiers : isPlainObject$1(options2.modifiers) ? options2.modifiers : {}; 20588 let _pluralRules = options2.pluralRules || __root && __root.pluralRules; 20589 let _context; 20590 const getCoreContext = () => { 20591 _isGlobal && setFallbackContext(null); 20592 const ctxOptions = { 20593 version: VERSION$3, 20594 locale: _locale.value, 20595 fallbackLocale: _fallbackLocale.value, 20596 messages: _messages.value, 20597 modifiers: _modifiers, 20598 pluralRules: _pluralRules, 20599 missing: _runtimeMissing === null ? void 0 : _runtimeMissing, 20600 missingWarn: _missingWarn, 20601 fallbackWarn: _fallbackWarn, 20602 fallbackFormat: _fallbackFormat, 20603 unresolving: true, 20604 postTranslation: _postTranslation === null ? void 0 : _postTranslation, 20605 warnHtmlMessage: _warnHtmlMessage, 20606 escapeParameter: _escapeParameter, 20607 messageResolver: options2.messageResolver, 20608 messageCompiler: options2.messageCompiler, 20609 __meta: { framework: "vue" } 20610 }; 20611 { 20612 ctxOptions.datetimeFormats = _datetimeFormats.value; 20613 ctxOptions.numberFormats = _numberFormats.value; 20614 ctxOptions.__datetimeFormatters = isPlainObject$1(_context) ? _context.__datetimeFormatters : void 0; 20615 ctxOptions.__numberFormatters = isPlainObject$1(_context) ? _context.__numberFormatters : void 0; 20616 } 20617 const ctx = createCoreContext(ctxOptions); 20618 _isGlobal && setFallbackContext(ctx); 20619 return ctx; 20620 }; 20621 _context = getCoreContext(); 20622 updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); 20623 function trackReactivityValues() { 20624 return [ 20625 _locale.value, 20626 _fallbackLocale.value, 20627 _messages.value, 20628 _datetimeFormats.value, 20629 _numberFormats.value 20630 ]; 20631 } 20632 const locale = computed({ 20633 get: () => _locale.value, 20634 set: (val) => { 20635 _context.locale = val; 20636 _locale.value = val; 20637 } 20638 }); 20639 const fallbackLocale = computed({ 20640 get: () => _fallbackLocale.value, 20641 set: (val) => { 20642 _context.fallbackLocale = val; 20643 _fallbackLocale.value = val; 20644 updateFallbackLocale(_context, _locale.value, val); 20645 } 20646 }); 20647 const messages = computed(() => _messages.value); 20648 const datetimeFormats = /* @__PURE__ */ computed(() => _datetimeFormats.value); 20649 const numberFormats = /* @__PURE__ */ computed(() => _numberFormats.value); 20650 function getPostTranslationHandler() { 20651 return isFunction$1(_postTranslation) ? _postTranslation : null; 20652 } 20653 function setPostTranslationHandler(handler) { 20654 _postTranslation = handler; 20655 _context.postTranslation = handler; 20656 } 20657 function getMissingHandler() { 20658 return _missing; 20659 } 20660 function setMissingHandler(handler) { 20661 if (handler !== null) { 20662 _runtimeMissing = defineCoreMissingHandler(handler); 20663 } 20664 _missing = handler; 20665 _context.missing = _runtimeMissing; 20666 } 20667 const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => { 20668 trackReactivityValues(); 20669 let ret; 20670 try { 20671 if (__INTLIFY_PROD_DEVTOOLS__) {
vendor: 8,710 bytes, lines 20672-20915
20672 /* @__PURE__ */ setAdditionalMeta(/* @__PURE__ */ getMetaInfo()); 20673 } 20674 if (!_isGlobal) { 20675 _context.fallbackContext = __root ? getFallbackContext() : void 0; 20676 } 20677 ret = fn(_context); 20678 } finally { 20679 if (__INTLIFY_PROD_DEVTOOLS__) ; 20680 if (!_isGlobal) { 20681 _context.fallbackContext = void 0; 20682 } 20683 } 20684 if (warnType !== "translate exists" && // for not `te` (e.g `t`) 20685 isNumber$1(ret) && ret === NOT_REOSLVED || warnType === "translate exists" && !ret) { 20686 const [key, arg2] = argumentParser(); 20687 return __root && _fallbackRoot ? fallbackSuccess(__root) : fallbackFail(key); 20688 } else if (successCondition(ret)) { 20689 return ret; 20690 } else { 20691 throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE); 20692 } 20693 }; 20694 function t(...args) { 20695 return wrapWithDeps((context) => Reflect.apply(translate$1, null, [context, ...args]), () => parseTranslateArgs(...args), "translate", (root2) => Reflect.apply(root2.t, root2, [...args]), (key) => key, (val) => isString$1(val)); 20696 } 20697 function rt(...args) { 20698 const [arg1, arg2, arg3] = args; 20699 if (arg3 && !isObject$6(arg3)) { 20700 throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT); 20701 } 20702 return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]); 20703 } 20704 function d(...args) { 20705 return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root2) => Reflect.apply(root2.d, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$1(val) || isArray$1(val)); 20706 } 20707 function n(...args) { 20708 return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root2) => Reflect.apply(root2.n, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$1(val) || isArray$1(val)); 20709 } 20710 function normalize(values) { 20711 return values.map((val) => isString$1(val) || isNumber$1(val) || isBoolean$1(val) ? createTextNode(String(val)) : val); 20712 } 20713 const interpolate = (val) => val; 20714 const processor = { 20715 normalize, 20716 interpolate, 20717 type: "vnode" 20718 }; 20719 function translateVNode(...args) { 20720 return wrapWithDeps((context) => { 20721 let ret; 20722 const _context2 = context; 20723 try { 20724 _context2.processor = processor; 20725 ret = Reflect.apply(translate$1, null, [_context2, ...args]); 20726 } finally { 20727 _context2.processor = null; 20728 } 20729 return ret; 20730 }, () => parseTranslateArgs(...args), "translate", (root2) => root2[TranslateVNodeSymbol](...args), (key) => [createTextNode(key)], (val) => isArray$1(val)); 20731 } 20732 function numberParts(...args) { 20733 return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root2) => root2[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, (val) => isString$1(val) || isArray$1(val)); 20734 } 20735 function datetimeParts(...args) { 20736 return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root2) => root2[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, (val) => isString$1(val) || isArray$1(val)); 20737 } 20738 function setPluralRules(rules) { 20739 _pluralRules = rules; 20740 _context.pluralRules = _pluralRules; 20741 } 20742 function te(key, locale2) { 20743 return wrapWithDeps(() => { 20744 if (!key) { 20745 return false; 20746 } 20747 const targetLocale = isString$1(locale2) ? locale2 : _locale.value; 20748 const message = getLocaleMessage(targetLocale); 20749 const resolved = _context.messageResolver(message, key); 20750 return isMessageAST(resolved) || isMessageFunction(resolved) || isString$1(resolved); 20751 }, () => [key], "translate exists", (root2) => { 20752 return Reflect.apply(root2.te, root2, [key, locale2]); 20753 }, NOOP_RETURN_FALSE, (val) => isBoolean$1(val)); 20754 } 20755 function resolveMessages(key) { 20756 let messages2 = null; 20757 const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value); 20758 for (let i = 0; i < locales.length; i++) { 20759 const targetLocaleMessages = _messages.value[locales[i]] || {}; 20760 const messageValue = _context.messageResolver(targetLocaleMessages, key); 20761 if (messageValue != null) { 20762 messages2 = messageValue; 20763 break; 20764 } 20765 } 20766 return messages2; 20767 } 20768 function tm(key) { 20769 const messages2 = resolveMessages(key); 20770 return messages2 != null ? messages2 : __root ? __root.tm(key) || {} : {}; 20771 } 20772 function getLocaleMessage(locale2) { 20773 return _messages.value[locale2] || {}; 20774 } 20775 function setLocaleMessage(locale2, message) { 20776 if (flatJson) { 20777 const _message = { [locale2]: message }; 20778 for (const key in _message) { 20779 if (hasOwn(_message, key)) { 20780 handleFlatJson(_message[key]); 20781 } 20782 } 20783 message = _message[locale2]; 20784 } 20785 _messages.value[locale2] = message; 20786 _context.messages = _messages.value; 20787 } 20788 function mergeLocaleMessage(locale2, message) { 20789 _messages.value[locale2] = _messages.value[locale2] || {}; 20790 const _message = { [locale2]: message }; 20791 if (flatJson) { 20792 for (const key in _message) { 20793 if (hasOwn(_message, key)) { 20794 handleFlatJson(_message[key]); 20795 } 20796 } 20797 } 20798 message = _message[locale2]; 20799 deepCopy(message, _messages.value[locale2]); 20800 _context.messages = _messages.value; 20801 } 20802 function getDateTimeFormat(locale2) { 20803 return _datetimeFormats.value[locale2] || {}; 20804 } 20805 function setDateTimeFormat(locale2, format2) { 20806 _datetimeFormats.value[locale2] = format2; 20807 _context.datetimeFormats = _datetimeFormats.value; 20808 clearDateTimeFormat(_context, locale2, format2); 20809 } 20810 function mergeDateTimeFormat(locale2, format2) { 20811 _datetimeFormats.value[locale2] = assign(_datetimeFormats.value[locale2] || {}, format2); 20812 _context.datetimeFormats = _datetimeFormats.value; 20813 clearDateTimeFormat(_context, locale2, format2); 20814 } 20815 function getNumberFormat(locale2) { 20816 return _numberFormats.value[locale2] || {}; 20817 } 20818 function setNumberFormat(locale2, format2) { 20819 _numberFormats.value[locale2] = format2; 20820 _context.numberFormats = _numberFormats.value; 20821 clearNumberFormat(_context, locale2, format2); 20822 } 20823 function mergeNumberFormat(locale2, format2) { 20824 _numberFormats.value[locale2] = assign(_numberFormats.value[locale2] || {}, format2); 20825 _context.numberFormats = _numberFormats.value; 20826 clearNumberFormat(_context, locale2, format2); 20827 } 20828 composerID++; 20829 if (__root && inBrowser) { 20830 watch(__root.locale, (val) => { 20831 if (_inheritLocale) { 20832 _locale.value = val; 20833 _context.locale = val; 20834 updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); 20835 } 20836 }); 20837 watch(__root.fallbackLocale, (val) => { 20838 if (_inheritLocale) { 20839 _fallbackLocale.value = val; 20840 _context.fallbackLocale = val; 20841 updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); 20842 } 20843 }); 20844 } 20845 const composer = { 20846 id: composerID, 20847 locale, 20848 fallbackLocale, 20849 get inheritLocale() { 20850 return _inheritLocale; 20851 }, 20852 set inheritLocale(val) { 20853 _inheritLocale = val; 20854 if (val && __root) { 20855 _locale.value = __root.locale.value; 20856 _fallbackLocale.value = __root.fallbackLocale.value; 20857 updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); 20858 } 20859 }, 20860 get availableLocales() { 20861 return Object.keys(_messages.value).sort(); 20862 }, 20863 messages, 20864 get modifiers() { 20865 return _modifiers; 20866 }, 20867 get pluralRules() { 20868 return _pluralRules || {}; 20869 }, 20870 get isGlobal() { 20871 return _isGlobal; 20872 }, 20873 get missingWarn() { 20874 return _missingWarn; 20875 }, 20876 set missingWarn(val) { 20877 _missingWarn = val; 20878 _context.missingWarn = _missingWarn; 20879 }, 20880 get fallbackWarn() { 20881 return _fallbackWarn; 20882 }, 20883 set fallbackWarn(val) { 20884 _fallbackWarn = val; 20885 _context.fallbackWarn = _fallbackWarn; 20886 }, 20887 get fallbackRoot() { 20888 return _fallbackRoot; 20889 }, 20890 set fallbackRoot(val) { 20891 _fallbackRoot = val; 20892 }, 20893 get fallbackFormat() { 20894 return _fallbackFormat; 20895 }, 20896 set fallbackFormat(val) { 20897 _fallbackFormat = val; 20898 _context.fallbackFormat = _fallbackFormat; 20899 }, 20900 get warnHtmlMessage() { 20901 return _warnHtmlMessage; 20902 }, 20903 set warnHtmlMessage(val) { 20904 _warnHtmlMessage = val; 20905 _context.warnHtmlMessage = val; 20906 }, 20907 get escapeParameter() { 20908 return _escapeParameter; 20909 }, 20910 set escapeParameter(val) { 20911 _escapeParameter = val; 20912 _context.escapeParameter = val; 20913 }, 20914 t, 20915 getLocaleMessage,
vendor: 6,555 bytes, lines 20916-21119
20916 setLocaleMessage, 20917 mergeLocaleMessage, 20918 getPostTranslationHandler, 20919 setPostTranslationHandler, 20920 getMissingHandler, 20921 setMissingHandler, 20922 [SetPluralRulesSymbol]: setPluralRules 20923 }; 20924 { 20925 composer.datetimeFormats = datetimeFormats; 20926 composer.numberFormats = numberFormats; 20927 composer.rt = rt; 20928 composer.te = te; 20929 composer.tm = tm; 20930 composer.d = d; 20931 composer.n = n; 20932 composer.getDateTimeFormat = getDateTimeFormat; 20933 composer.setDateTimeFormat = setDateTimeFormat; 20934 composer.mergeDateTimeFormat = mergeDateTimeFormat; 20935 composer.getNumberFormat = getNumberFormat; 20936 composer.setNumberFormat = setNumberFormat; 20937 composer.mergeNumberFormat = mergeNumberFormat; 20938 composer[InejctWithOptionSymbol] = __injectWithOption; 20939 composer[TranslateVNodeSymbol] = translateVNode; 20940 composer[DatetimePartsSymbol] = datetimeParts; 20941 composer[NumberPartsSymbol] = numberParts; 20942 } 20943 return composer; 20944} 20945function convertComposerOptions(options2) { 20946 const locale = isString$1(options2.locale) ? options2.locale : DEFAULT_LOCALE; 20947 const fallbackLocale = isString$1(options2.fallbackLocale) || isArray$1(options2.fallbackLocale) || isPlainObject$1(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : locale; 20948 const missing = isFunction$1(options2.missing) ? options2.missing : void 0; 20949 const missingWarn = isBoolean$1(options2.silentTranslationWarn) || isRegExp$1(options2.silentTranslationWarn) ? !options2.silentTranslationWarn : true; 20950 const fallbackWarn = isBoolean$1(options2.silentFallbackWarn) || isRegExp$1(options2.silentFallbackWarn) ? !options2.silentFallbackWarn : true; 20951 const fallbackRoot = isBoolean$1(options2.fallbackRoot) ? options2.fallbackRoot : true; 20952 const fallbackFormat = !!options2.formatFallbackMessages; 20953 const modifiers = isPlainObject$1(options2.modifiers) ? options2.modifiers : {}; 20954 const pluralizationRules = options2.pluralizationRules; 20955 const postTranslation = isFunction$1(options2.postTranslation) ? options2.postTranslation : void 0; 20956 const warnHtmlMessage = isString$1(options2.warnHtmlInMessage) ? options2.warnHtmlInMessage !== "off" : true; 20957 const escapeParameter = !!options2.escapeParameterHtml; 20958 const inheritLocale = isBoolean$1(options2.sync) ? options2.sync : true; 20959 let messages = options2.messages; 20960 if (isPlainObject$1(options2.sharedMessages)) { 20961 const sharedMessages = options2.sharedMessages; 20962 const locales = Object.keys(sharedMessages); 20963 messages = locales.reduce((messages2, locale2) => { 20964 const message = messages2[locale2] || (messages2[locale2] = {}); 20965 assign(message, sharedMessages[locale2]); 20966 return messages2; 20967 }, messages || {}); 20968 } 20969 const { __i18n, __root, __injectWithOption } = options2; 20970 const datetimeFormats = options2.datetimeFormats; 20971 const numberFormats = options2.numberFormats; 20972 const flatJson = options2.flatJson; 20973 return { 20974 locale, 20975 fallbackLocale, 20976 messages, 20977 flatJson, 20978 datetimeFormats, 20979 numberFormats, 20980 missing, 20981 missingWarn, 20982 fallbackWarn, 20983 fallbackRoot, 20984 fallbackFormat, 20985 modifiers, 20986 pluralRules: pluralizationRules, 20987 postTranslation, 20988 warnHtmlMessage, 20989 escapeParameter, 20990 messageResolver: options2.messageResolver, 20991 inheritLocale, 20992 __i18n, 20993 __root, 20994 __injectWithOption 20995 }; 20996} 20997function createVueI18n(options2 = {}) { 20998 const composer = createComposer(convertComposerOptions(options2)); 20999 const { __extender } = options2; 21000 const vueI18n = { 21001 // id 21002 id: composer.id, 21003 // locale 21004 get locale() { 21005 return composer.locale.value; 21006 }, 21007 set locale(val) { 21008 composer.locale.value = val; 21009 }, 21010 // fallbackLocale 21011 get fallbackLocale() { 21012 return composer.fallbackLocale.value; 21013 }, 21014 set fallbackLocale(val) { 21015 composer.fallbackLocale.value = val; 21016 }, 21017 // messages 21018 get messages() { 21019 return composer.messages.value; 21020 }, 21021 // datetimeFormats 21022 get datetimeFormats() { 21023 return composer.datetimeFormats.value; 21024 }, 21025 // numberFormats 21026 get numberFormats() { 21027 return composer.numberFormats.value; 21028 }, 21029 // availableLocales 21030 get availableLocales() { 21031 return composer.availableLocales; 21032 }, 21033 // missing 21034 get missing() { 21035 return composer.getMissingHandler(); 21036 }, 21037 set missing(handler) { 21038 composer.setMissingHandler(handler); 21039 }, 21040 // silentTranslationWarn 21041 get silentTranslationWarn() { 21042 return isBoolean$1(composer.missingWarn) ? !composer.missingWarn : composer.missingWarn; 21043 }, 21044 set silentTranslationWarn(val) { 21045 composer.missingWarn = isBoolean$1(val) ? !val : val; 21046 }, 21047 // silentFallbackWarn 21048 get silentFallbackWarn() { 21049 return isBoolean$1(composer.fallbackWarn) ? !composer.fallbackWarn : composer.fallbackWarn; 21050 }, 21051 set silentFallbackWarn(val) { 21052 composer.fallbackWarn = isBoolean$1(val) ? !val : val; 21053 }, 21054 // modifiers 21055 get modifiers() { 21056 return composer.modifiers; 21057 }, 21058 // formatFallbackMessages 21059 get formatFallbackMessages() { 21060 return composer.fallbackFormat; 21061 }, 21062 set formatFallbackMessages(val) { 21063 composer.fallbackFormat = val; 21064 }, 21065 // postTranslation 21066 get postTranslation() { 21067 return composer.getPostTranslationHandler(); 21068 }, 21069 set postTranslation(handler) { 21070 composer.setPostTranslationHandler(handler); 21071 }, 21072 // sync 21073 get sync() { 21074 return composer.inheritLocale; 21075 }, 21076 set sync(val) { 21077 composer.inheritLocale = val; 21078 }, 21079 // warnInHtmlMessage 21080 get warnHtmlInMessage() { 21081 return composer.warnHtmlMessage ? "warn" : "off"; 21082 }, 21083 set warnHtmlInMessage(val) { 21084 composer.warnHtmlMessage = val !== "off"; 21085 }, 21086 // escapeParameterHtml 21087 get escapeParameterHtml() { 21088 return composer.escapeParameter; 21089 }, 21090 set escapeParameterHtml(val) { 21091 composer.escapeParameter = val; 21092 }, 21093 // pluralizationRules 21094 get pluralizationRules() { 21095 return composer.pluralRules || {}; 21096 }, 21097 // for internal 21098 __composer: composer, 21099 // t 21100 t(...args) { 21101 return Reflect.apply(composer.t, composer, [...args]); 21102 }, 21103 // rt 21104 rt(...args) { 21105 return Reflect.apply(composer.rt, composer, [...args]); 21106 }, 21107 // te 21108 te(key, locale) { 21109 return composer.te(key, locale); 21110 }, 21111 // tm 21112 tm(key) { 21113 return composer.tm(key); 21114 }, 21115 // getLocaleMessage 21116 getLocaleMessage(locale) { 21117 return composer.getLocaleMessage(locale); 21118 }, 21119 // setLocaleMessage
vendor: 4,601 bytes, lines 21120-21256
21120 setLocaleMessage(locale, message) { 21121 composer.setLocaleMessage(locale, message); 21122 }, 21123 // mergeLocaleMessage 21124 mergeLocaleMessage(locale, message) { 21125 composer.mergeLocaleMessage(locale, message); 21126 }, 21127 // d 21128 d(...args) { 21129 return Reflect.apply(composer.d, composer, [...args]); 21130 }, 21131 // getDateTimeFormat 21132 getDateTimeFormat(locale) { 21133 return composer.getDateTimeFormat(locale); 21134 }, 21135 // setDateTimeFormat 21136 setDateTimeFormat(locale, format2) { 21137 composer.setDateTimeFormat(locale, format2); 21138 }, 21139 // mergeDateTimeFormat 21140 mergeDateTimeFormat(locale, format2) { 21141 composer.mergeDateTimeFormat(locale, format2); 21142 }, 21143 // n 21144 n(...args) { 21145 return Reflect.apply(composer.n, composer, [...args]); 21146 }, 21147 // getNumberFormat 21148 getNumberFormat(locale) { 21149 return composer.getNumberFormat(locale); 21150 }, 21151 // setNumberFormat 21152 setNumberFormat(locale, format2) { 21153 composer.setNumberFormat(locale, format2); 21154 }, 21155 // mergeNumberFormat 21156 mergeNumberFormat(locale, format2) { 21157 composer.mergeNumberFormat(locale, format2); 21158 } 21159 }; 21160 vueI18n.__extender = __extender; 21161 return vueI18n; 21162} 21163function defineMixin(vuei18n, composer, i18n) { 21164 return { 21165 beforeCreate() { 21166 const instance = getCurrentInstance(); 21167 if (!instance) { 21168 throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); 21169 } 21170 const options2 = this.$options; 21171 if (options2.i18n) { 21172 const optionsI18n = options2.i18n; 21173 if (options2.__i18n) { 21174 optionsI18n.__i18n = options2.__i18n; 21175 } 21176 optionsI18n.__root = composer; 21177 if (this === this.$root) { 21178 this.$i18n = mergeToGlobal(vuei18n, optionsI18n); 21179 } else { 21180 optionsI18n.__injectWithOption = true; 21181 optionsI18n.__extender = i18n.__vueI18nExtend; 21182 this.$i18n = createVueI18n(optionsI18n); 21183 const _vueI18n = this.$i18n; 21184 if (_vueI18n.__extender) { 21185 _vueI18n.__disposer = _vueI18n.__extender(this.$i18n); 21186 } 21187 } 21188 } else if (options2.__i18n) { 21189 if (this === this.$root) { 21190 this.$i18n = mergeToGlobal(vuei18n, options2); 21191 } else { 21192 this.$i18n = createVueI18n({ 21193 __i18n: options2.__i18n, 21194 __injectWithOption: true, 21195 __extender: i18n.__vueI18nExtend, 21196 __root: composer 21197 }); 21198 const _vueI18n = this.$i18n; 21199 if (_vueI18n.__extender) { 21200 _vueI18n.__disposer = _vueI18n.__extender(this.$i18n); 21201 } 21202 } 21203 } else { 21204 this.$i18n = vuei18n; 21205 } 21206 if (options2.__i18nGlobal) { 21207 adjustI18nResources(composer, options2, options2); 21208 } 21209 this.$t = (...args) => this.$i18n.t(...args); 21210 this.$rt = (...args) => this.$i18n.rt(...args); 21211 this.$te = (key, locale) => this.$i18n.te(key, locale); 21212 this.$d = (...args) => this.$i18n.d(...args); 21213 this.$n = (...args) => this.$i18n.n(...args); 21214 this.$tm = (key) => this.$i18n.tm(key); 21215 i18n.__setInstance(instance, this.$i18n); 21216 }, 21217 mounted() { 21218 }, 21219 unmounted() { 21220 const instance = getCurrentInstance(); 21221 if (!instance) { 21222 throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); 21223 } 21224 const _vueI18n = this.$i18n; 21225 delete this.$t; 21226 delete this.$rt; 21227 delete this.$te; 21228 delete this.$d; 21229 delete this.$n; 21230 delete this.$tm; 21231 if (_vueI18n.__disposer) { 21232 _vueI18n.__disposer(); 21233 delete _vueI18n.__disposer; 21234 delete _vueI18n.__extender; 21235 } 21236 i18n.__deleteInstance(instance); 21237 delete this.$i18n; 21238 } 21239 }; 21240} 21241function mergeToGlobal(g, options2) { 21242 g.locale = options2.locale || g.locale; 21243 g.fallbackLocale = options2.fallbackLocale || g.fallbackLocale; 21244 g.missing = options2.missing || g.missing; 21245 g.silentTranslationWarn = options2.silentTranslationWarn || g.silentFallbackWarn; 21246 g.silentFallbackWarn = options2.silentFallbackWarn || g.silentFallbackWarn; 21247 g.formatFallbackMessages = options2.formatFallbackMessages || g.formatFallbackMessages; 21248 g.postTranslation = options2.postTranslation || g.postTranslation; 21249 g.warnHtmlInMessage = options2.warnHtmlInMessage || g.warnHtmlInMessage; 21250 g.escapeParameterHtml = options2.escapeParameterHtml || g.escapeParameterHtml; 21251 g.sync = options2.sync || g.sync; 21252 g.__composer[SetPluralRulesSymbol](options2.pluralizationRules || g.pluralizationRules); 21253 const messages = getLocaleMessages(g.locale, { 21254 messages: options2.messages, 21255 __i18n: options2.__i18n 21256 });
21257 Object.keys(messages).forEach((locale) => g.mergeLocaleMessage(locale, messages[locale])); 21258 if (options2.datetimeFormats) { 21259 Object.keys(options2.datetimeFormats).forEach((locale) => g.mergeDateTimeFormat(locale, options2.datetimeFormats[locale])); 21260 } 21261 if (options2.numberFormats) { 21262 Object.keys(options2.numberFormats).forEach((locale) => g.mergeNumberFormat(locale, options2.numberFormats[locale])); 21263 } 21264 return g; 21265} 21266const baseFormatProps = { 21267 tag: { 21268 type: [String, Object] 21269 }, 21270 locale: { 21271 type: String 21272 }, 21273 scope: { 21274 type: String, 21275 // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050 21276 validator: (val) => val === "parent" || val === "global", 21277 default: "parent" 21278 /* ComponentI18nScope */ 21279 }, 21280 i18n: { 21281 type: Object 21282 } 21283}; 21284function getInterpolateArg({ slots }, keys) { 21285 if (keys.length === 1 && keys[0] === "default") { 21286 const ret = slots.default ? slots.default() : []; 21287 return ret.reduce((slot, current) => { 21288 return [ 21289 ...slot, 21290 // prettier-ignore 21291 ...current.type === Fragment ? current.children : [current] 21292 ]; 21293 }, []); 21294 } else { 21295 return keys.reduce((arg, key) => { 21296 const slot = slots[key]; 21297 if (slot) { 21298 arg[key] = slot(); 21299 } 21300 return arg; 21301 }, create()); 21302 } 21303} 21304function getFragmentableTag() { 21305 return Fragment; 21306} 21307const TranslationImpl = /* @__PURE__ */ defineComponent({ 21308 /* eslint-disable */ 21309 name: "i18n-t", 21310 props: assign({ 21311 keypath: { 21312 type: String, 21313 required: true 21314 }, 21315 plural: { 21316 type: [Number, String], 21317 validator: (val) => isNumber$1(val) || !isNaN(val) 21318 } 21319 }, baseFormatProps), 21320 /* eslint-enable */ 21321 // eslint-disable-next-line @typescript-eslint/no-explicit-any 21322 setup(props2, context) { 21323 const { slots, attrs } = context; 21324 const i18n = props2.i18n || useI18n({ 21325 useScope: props2.scope, 21326 __useComponent: true 21327 }); 21328 return () => { 21329 const keys = Object.keys(slots).filter((key) => key[0] !== "_"); 21330 const options2 = create(); 21331 if (props2.locale) { 21332 options2.locale = props2.locale; 21333 } 21334 if (props2.plural !== void 0) { 21335 options2.plural = isString$1(props2.plural) ? +props2.plural : props2.plural; 21336 } 21337 const arg = getInterpolateArg(context, keys); 21338 const children = i18n[TranslateVNodeSymbol](props2.keypath, arg, options2); 21339 const assignedAttrs = assign(create(), attrs); 21340 const tag = isString$1(props2.tag) || isObject$6(props2.tag) ? props2.tag : getFragmentableTag(); 21341 return h(tag, assignedAttrs, children); 21342 }; 21343 } 21344}); 21345const Translation = TranslationImpl; 21346function isVNode(target) { 21347 return isArray$1(target) && !isString$1(target[0]); 21348} 21349function renderFormatter(props2, context, slotKeys, partFormatter) { 21350 const { slots, attrs } = context; 21351 return () => { 21352 const options2 = { part: true }; 21353 let overrides = create(); 21354 if (props2.locale) { 21355 options2.locale = props2.locale; 21356 } 21357 if (isString$1(props2.format)) { 21358 options2.key = props2.format; 21359 } else if (isObject$6(props2.format)) { 21360 if (isString$1(props2.format.key)) { 21361 options2.key = props2.format.key; 21362 } 21363 overrides = Object.keys(props2.format).reduce((options22, prop) => { 21364 return slotKeys.includes(prop) ? assign(create(), options22, { [prop]: props2.format[prop] }) : options22; 21365 }, create()); 21366 } 21367 const parts = partFormatter(...[props2.value, options2, overrides]); 21368 let children = [options2.key]; 21369 if (isArray$1(parts)) { 21370 children = parts.map((part, index2) => { 21371 const slot = slots[part.type]; 21372 const node = slot ? slot({ [part.type]: part.value, index: index2, parts }) : [part.value]; 21373 if (isVNode(node)) { 21374 node[0].key = `${part.type}-${index2}`; 21375 } 21376 return node; 21377 }); 21378 } else if (isString$1(parts)) { 21379 children = [parts]; 21380 } 21381 const assignedAttrs = assign(create(), attrs); 21382 const tag = isString$1(props2.tag) || isObject$6(props2.tag) ? props2.tag : getFragmentableTag(); 21383 return h(tag, assignedAttrs, children); 21384 }; 21385} 21386const NumberFormatImpl = /* @__PURE__ */ defineComponent({ 21387 /* eslint-disable */ 21388 name: "i18n-n", 21389 props: assign({ 21390 value: { 21391 type: Number, 21392 required: true 21393 }, 21394 format: { 21395 type: [String, Object] 21396 } 21397 }, baseFormatProps), 21398 /* eslint-enable */ 21399 // eslint-disable-next-line @typescript-eslint/no-explicit-any 21400 setup(props2, context) { 21401 const i18n = props2.i18n || useI18n({ 21402 useScope: props2.scope, 21403 __useComponent: true 21404 }); 21405 return renderFormatter(props2, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => ( 21406 // eslint-disable-next-line @typescript-eslint/no-explicit-any 21407 i18n[NumberPartsSymbol](...args) 21408 )); 21409 } 21410}); 21411const NumberFormat = NumberFormatImpl; 21412function getComposer$1(i18n, instance) { 21413 const i18nInternal = i18n; 21414 if (i18n.mode === "composition") { 21415 return i18nInternal.__getInstance(instance) || i18n.global; 21416 } else { 21417 const vueI18n = i18nInternal.__getInstance(instance); 21418 return vueI18n != null ? vueI18n.__composer : i18n.global.__composer; 21419 } 21420} 21421function vTDirective(i18n) { 21422 const _process = (binding) => { 21423 const { instance, value } = binding; 21424 if (!instance || !instance.$) { 21425 throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); 21426 } 21427 const composer = getComposer$1(i18n, instance.$); 21428 const parsedValue = parseValue(value); 21429 return [ 21430 Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]), 21431 composer 21432 ]; 21433 }; 21434 const register2 = (el, binding) => { 21435 const [textContent, composer] = _process(binding); 21436 if (inBrowser && i18n.global === composer) { 21437 el.__i18nWatcher = watch(composer.locale, () => { 21438 binding.instance && binding.instance.$forceUpdate(); 21439 }); 21440 } 21441 el.__composer = composer; 21442 el.textContent = textContent; 21443 }; 21444 const unregister2 = (el) => { 21445 if (inBrowser && el.__i18nWatcher) { 21446 el.__i18nWatcher(); 21447 el.__i18nWatcher = void 0; 21448 delete el.__i18nWatcher; 21449 } 21450 if (el.__composer) { 21451 el.__composer = void 0; 21452 delete el.__composer; 21453 } 21454 }; 21455 const update4 = (el, { value }) => { 21456 if (el.__composer) { 21457 const composer = el.__composer; 21458 const parsedValue = parseValue(value); 21459 el.textContent = Reflect.apply(composer.t, composer, [ 21460 ...makeParams(parsedValue) 21461 ]); 21462 } 21463 }; 21464 const getSSRProps = (binding) => { 21465 const [textContent] = _process(binding); 21466 return { textContent }; 21467 }; 21468 return { 21469 created: register2, 21470 unmounted: unregister2, 21471 beforeUpdate: update4, 21472 getSSRProps 21473 }; 21474} 21475function parseValue(value) { 21476 if (isString$1(value)) { 21477 return { path: value }; 21478 } else if (isPlainObject$1(value)) { 21479 if (!("path" in value)) { 21480 throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, "path"); 21481 } 21482 return value; 21483 } else { 21484 throw createI18nError(I18nErrorCodes.INVALID_VALUE); 21485 } 21486} 21487function makeParams(value) { 21488 const { path, locale, args, choice, plural } = value; 21489 const options2 = {}; 21490 const named = args || {}; 21491 if (isString$1(locale)) { 21492 options2.locale = locale; 21493 } 21494 if (isNumber$1(choice)) { 21495 options2.plural = choice; 21496 } 21497 if (isNumber$1(plural)) { 21498 options2.plural = plural; 21499 } 21500 return [path, named, options2]; 21501} 21502function apply(app2, i18n, ...options2) { 21503 const pluginOptions = isPlainObject$1(options2[0]) ? options2[0] : {}; 21504 const globalInstall = isBoolean$1(pluginOptions.globalInstall) ? pluginOptions.globalInstall : true; 21505 if (globalInstall) { 21506 [Translation.name, "I18nT"].forEach((name) => app2.component(name, Translation)); 21507 [NumberFormat.name, "I18nN"].forEach((name) => app2.component(name, NumberFormat)); 21508 [DatetimeFormat.name, "I18nD"].forEach((name) => app2.component(name, DatetimeFormat)); 21509 } 21510 { 21511 app2.directive("t", vTDirective(i18n)); 21512 } 21513} 21514const I18nInjectionKey = /* @__PURE__ */ makeSymbol("global-vue-i18n"); 21515function createI18n(options2 = {}) { 21516 const __legacyMode = isBoolean$1(options2.legacy) ? options2.legacy : true; 21517 const __globalInjection = isBoolean$1(options2.globalInjection) ? options2.globalInjection : true; 21518 const __instances = /* @__PURE__ */ new Map(); 21519 const [globalScope, __global] = createGlobal(options2, __legacyMode); 21520 const symbol = /* @__PURE__ */ makeSymbol(""); 21521 function __getInstance(component) { 21522 return __instances.get(component) || null; 21523 } 21524 function __setInstance(component, instance) { 21525 __instances.set(component, instance); 21526 } 21527 function __deleteInstance(component) { 21528 __instances.delete(component); 21529 } 21530 const i18n = { 21531 // mode 21532 get mode() { 21533 return __legacyMode ? "legacy" : "composition"; 21534 }, 21535 // install plugin 21536 async install(app2, ...options22) { 21537 app2.__VUE_I18N_SYMBOL__ = symbol; 21538 app2.provide(app2.__VUE_I18N_SYMBOL__, i18n); 21539 if (isPlainObject$1(options22[0])) { 21540 const opts = options22[0]; 21541 i18n.__composerExtend = opts.__composerExtend; 21542 i18n.__vueI18nExtend = opts.__vueI18nExtend; 21543 } 21544 let globalReleaseHandler = null; 21545 if (!__legacyMode && __globalInjection) { 21546 globalReleaseHandler = injectGlobalFields(app2, i18n.global); 21547 } 21548 { 21549 apply(app2, i18n, ...options22); 21550 } 21551 if (__legacyMode) {
vendor: 4,905 bytes, lines 21552-21715
21552 app2.mixin(defineMixin(__global, __global.__composer, i18n)); 21553 } 21554 const unmountApp = app2.unmount; 21555 app2.unmount = () => { 21556 globalReleaseHandler && globalReleaseHandler(); 21557 i18n.dispose(); 21558 unmountApp(); 21559 }; 21560 }, 21561 // global accessor 21562 get global() { 21563 return __global; 21564 }, 21565 dispose() { 21566 globalScope.stop(); 21567 }, 21568 // @internal 21569 __instances, 21570 // @internal 21571 __getInstance, 21572 // @internal 21573 __setInstance, 21574 // @internal 21575 __deleteInstance 21576 }; 21577 return i18n; 21578} 21579function useI18n(options2 = {}) { 21580 const instance = getCurrentInstance(); 21581 if (instance == null) { 21582 throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP); 21583 } 21584 if (!instance.isCE && instance.appContext.app != null && !instance.appContext.app.__VUE_I18N_SYMBOL__) { 21585 throw createI18nError(I18nErrorCodes.NOT_INSTALLED); 21586 } 21587 const i18n = getI18nInstance(instance); 21588 const gl = getGlobalComposer(i18n); 21589 const componentOptions = getComponentOptions(instance); 21590 const scope = getScope(options2, componentOptions); 21591 if (scope === "global") { 21592 adjustI18nResources(gl, options2, componentOptions); 21593 return gl; 21594 } 21595 if (scope === "parent") { 21596 let composer2 = getComposer(i18n, instance, options2.__useComponent); 21597 if (composer2 == null) { 21598 composer2 = gl; 21599 } 21600 return composer2; 21601 } 21602 const i18nInternal = i18n; 21603 let composer = i18nInternal.__getInstance(instance); 21604 if (composer == null) { 21605 const composerOptions = assign({}, options2); 21606 if ("__i18n" in componentOptions) { 21607 composerOptions.__i18n = componentOptions.__i18n; 21608 } 21609 if (gl) { 21610 composerOptions.__root = gl; 21611 } 21612 composer = createComposer(composerOptions); 21613 if (i18nInternal.__composerExtend) { 21614 composer[DisposeSymbol] = i18nInternal.__composerExtend(composer); 21615 } 21616 setupLifeCycle(i18nInternal, instance, composer); 21617 i18nInternal.__setInstance(instance, composer); 21618 } 21619 return composer; 21620} 21621function createGlobal(options2, legacyMode) { 21622 const scope = effectScope(); 21623 const obj = legacyMode ? scope.run(() => createVueI18n(options2)) : scope.run(() => createComposer(options2)); 21624 if (obj == null) { 21625 throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); 21626 } 21627 return [scope, obj]; 21628} 21629function getI18nInstance(instance) { 21630 const i18n = inject(!instance.isCE ? instance.appContext.app.__VUE_I18N_SYMBOL__ : I18nInjectionKey); 21631 if (!i18n) { 21632 throw createI18nError(!instance.isCE ? I18nErrorCodes.UNEXPECTED_ERROR : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE); 21633 } 21634 return i18n; 21635} 21636function getScope(options2, componentOptions) { 21637 return isEmptyObject(options2) ? "__i18n" in componentOptions ? "local" : "global" : !options2.useScope ? "local" : options2.useScope; 21638} 21639function getGlobalComposer(i18n) { 21640 return i18n.mode === "composition" ? i18n.global : i18n.global.__composer; 21641} 21642function getComposer(i18n, target, useComponent = false) { 21643 let composer = null; 21644 const root2 = target.root; 21645 let current = getParentComponentInstance(target, useComponent); 21646 while (current != null) { 21647 const i18nInternal = i18n; 21648 if (i18n.mode === "composition") { 21649 composer = i18nInternal.__getInstance(current); 21650 } else { 21651 { 21652 const vueI18n = i18nInternal.__getInstance(current); 21653 if (vueI18n != null) { 21654 composer = vueI18n.__composer; 21655 if (useComponent && composer && !composer[InejctWithOptionSymbol]) { 21656 composer = null; 21657 } 21658 } 21659 } 21660 } 21661 if (composer != null) { 21662 break; 21663 } 21664 if (root2 === current) { 21665 break; 21666 } 21667 current = current.parent; 21668 } 21669 return composer; 21670} 21671function getParentComponentInstance(target, useComponent = false) { 21672 if (target == null) { 21673 return null; 21674 } 21675 return !useComponent ? target.parent : target.vnode.ctx || target.parent; 21676} 21677function setupLifeCycle(i18n, target, composer) { 21678 onMounted(() => { 21679 }, target); 21680 onUnmounted(() => { 21681 const _composer = composer; 21682 i18n.__deleteInstance(target); 21683 const dispose = _composer[DisposeSymbol]; 21684 if (dispose) { 21685 dispose(); 21686 delete _composer[DisposeSymbol]; 21687 } 21688 }, target); 21689} 21690const globalExportProps = [ 21691 "locale", 21692 "fallbackLocale", 21693 "availableLocales" 21694]; 21695const globalExportMethods = ["t", "rt", "d", "n", "tm", "te"]; 21696function injectGlobalFields(app2, composer) { 21697 const i18n = /* @__PURE__ */ Object.create(null); 21698 globalExportProps.forEach((prop) => { 21699 const desc = Object.getOwnPropertyDescriptor(composer, prop); 21700 if (!desc) { 21701 throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); 21702 } 21703 const wrap = isRef(desc.value) ? { 21704 get() { 21705 return desc.value.value; 21706 }, 21707 // eslint-disable-next-line @typescript-eslint/no-explicit-any 21708 set(val) { 21709 desc.value.value = val; 21710 } 21711 } : { 21712 get() { 21713 return desc.get && desc.get(); 21714 } 21715 };
vendor: 9,493 bytes, lines 21716-22001
21716 Object.defineProperty(i18n, prop, wrap); 21717 }); 21718 app2.config.globalProperties.$i18n = i18n; 21719 globalExportMethods.forEach((method) => { 21720 const desc = Object.getOwnPropertyDescriptor(composer, method); 21721 if (!desc || !desc.value) { 21722 throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); 21723 } 21724 Object.defineProperty(app2.config.globalProperties, `$${method}`, desc); 21725 }); 21726 const dispose = () => { 21727 delete app2.config.globalProperties.$i18n; 21728 globalExportMethods.forEach((method) => { 21729 delete app2.config.globalProperties[`$${method}`]; 21730 }); 21731 }; 21732 return dispose; 21733} 21734const DatetimeFormatImpl = /* @__PURE__ */ defineComponent({ 21735 /* eslint-disable */ 21736 name: "i18n-d", 21737 props: assign({ 21738 value: { 21739 type: [Number, Date], 21740 required: true 21741 }, 21742 format: { 21743 type: [String, Object] 21744 } 21745 }, baseFormatProps), 21746 /* eslint-enable */ 21747 // eslint-disable-next-line @typescript-eslint/no-explicit-any 21748 setup(props2, context) { 21749 const i18n = props2.i18n || useI18n({ 21750 useScope: props2.scope, 21751 __useComponent: true 21752 }); 21753 return renderFormatter(props2, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => ( 21754 // eslint-disable-next-line @typescript-eslint/no-explicit-any 21755 i18n[DatetimePartsSymbol](...args) 21756 )); 21757 } 21758}); 21759const DatetimeFormat = DatetimeFormatImpl; 21760{ 21761 initFeatureFlags(); 21762} 21763registerMessageCompiler(compile); 21764registerMessageResolver(resolveValue); 21765registerLocaleFallbacker(fallbackWithLocaleChain); 21766if (__INTLIFY_PROD_DEVTOOLS__) { 21767 const target = getGlobalThis(); 21768 target.__INTLIFY__ = true; 21769 setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__); 21770} 21771function bind(fn, thisArg) { 21772 return function wrap() { 21773 return fn.apply(thisArg, arguments); 21774 }; 21775} 21776const { toString } = Object.prototype; 21777const { getPrototypeOf } = Object; 21778const { iterator, toStringTag } = Symbol; 21779const kindOf = /* @__PURE__ */ ((cache2) => (thing) => { 21780 const str = toString.call(thing); 21781 return cache2[str] || (cache2[str] = str.slice(8, -1).toLowerCase()); 21782})(/* @__PURE__ */ Object.create(null)); 21783const kindOfTest = (type) => { 21784 type = type.toLowerCase(); 21785 return (thing) => kindOf(thing) === type; 21786}; 21787const typeOfTest = (type) => (thing) => typeof thing === type; 21788const { isArray } = Array; 21789const isUndefined = typeOfTest("undefined"); 21790function isBuffer(val) { 21791 return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); 21792} 21793const isArrayBuffer = kindOfTest("ArrayBuffer"); 21794function isArrayBufferView(val) { 21795 let result; 21796 if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { 21797 result = ArrayBuffer.isView(val); 21798 } else { 21799 result = val && val.buffer && isArrayBuffer(val.buffer); 21800 } 21801 return result; 21802} 21803const isString = typeOfTest("string"); 21804const isFunction = typeOfTest("function"); 21805const isNumber = typeOfTest("number"); 21806const isObject$5 = (thing) => thing !== null && typeof thing === "object"; 21807const isBoolean = (thing) => thing === true || thing === false; 21808const isPlainObject = (val) => { 21809 if (kindOf(val) !== "object") { 21810 return false; 21811 } 21812 const prototype2 = getPrototypeOf(val); 21813 return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(toStringTag in val) && !(iterator in val); 21814}; 21815const isDate = kindOfTest("Date"); 21816const isFile = kindOfTest("File"); 21817const isBlob = kindOfTest("Blob"); 21818const isFileList = kindOfTest("FileList"); 21819const isStream = (val) => isObject$5(val) && isFunction(val.pipe); 21820const isFormData = (thing) => { 21821 let kind; 21822 return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance 21823 kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]")); 21824}; 21825const isURLSearchParams = kindOfTest("URLSearchParams"); 21826const [isReadableStream, isRequest, isResponse, isHeaders] = ["ReadableStream", "Request", "Response", "Headers"].map(kindOfTest); 21827const trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); 21828function forEach(obj, fn, { allOwnKeys = false } = {}) { 21829 if (obj === null || typeof obj === "undefined") { 21830 return; 21831 } 21832 let i; 21833 let l; 21834 if (typeof obj !== "object") { 21835 obj = [obj]; 21836 } 21837 if (isArray(obj)) { 21838 for (i = 0, l = obj.length; i < l; i++) { 21839 fn.call(null, obj[i], i, obj); 21840 } 21841 } else { 21842 const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); 21843 const len = keys.length; 21844 let key; 21845 for (i = 0; i < len; i++) { 21846 key = keys[i]; 21847 fn.call(null, obj[key], key, obj); 21848 } 21849 } 21850} 21851function findKey(obj, key) { 21852 key = key.toLowerCase(); 21853 const keys = Object.keys(obj); 21854 let i = keys.length; 21855 let _key; 21856 while (i-- > 0) { 21857 _key = keys[i]; 21858 if (key === _key.toLowerCase()) { 21859 return _key; 21860 } 21861 } 21862 return null; 21863} 21864const _global = (() => { 21865 if (typeof globalThis !== "undefined") return globalThis; 21866 return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; 21867})(); 21868const isContextDefined = (context) => !isUndefined(context) && context !== _global; 21869function merge$1() { 21870 const { caseless } = isContextDefined(this) && this || {}; 21871 const result = {}; 21872 const assignValue = (val, key) => { 21873 const targetKey = caseless && findKey(result, key) || key; 21874 if (isPlainObject(result[targetKey]) && isPlainObject(val)) { 21875 result[targetKey] = merge$1(result[targetKey], val); 21876 } else if (isPlainObject(val)) { 21877 result[targetKey] = merge$1({}, val); 21878 } else if (isArray(val)) { 21879 result[targetKey] = val.slice(); 21880 } else { 21881 result[targetKey] = val; 21882 } 21883 }; 21884 for (let i = 0, l = arguments.length; i < l; i++) { 21885 arguments[i] && forEach(arguments[i], assignValue); 21886 } 21887 return result; 21888} 21889const extend$4 = (a, b, thisArg, { allOwnKeys } = {}) => { 21890 forEach(b, (val, key) => { 21891 if (thisArg && isFunction(val)) { 21892 a[key] = bind(val, thisArg); 21893 } else { 21894 a[key] = val; 21895 } 21896 }, { allOwnKeys }); 21897 return a; 21898}; 21899const stripBOM = (content) => { 21900 if (content.charCodeAt(0) === 65279) { 21901 content = content.slice(1); 21902 } 21903 return content; 21904}; 21905const inherits = (constructor, superConstructor, props2, descriptors2) => { 21906 constructor.prototype = Object.create(superConstructor.prototype, descriptors2); 21907 constructor.prototype.constructor = constructor; 21908 Object.defineProperty(constructor, "super", { 21909 value: superConstructor.prototype 21910 }); 21911 props2 && Object.assign(constructor.prototype, props2); 21912}; 21913const toFlatObject = (sourceObj, destObj, filter2, propFilter) => { 21914 let props2; 21915 let i; 21916 let prop; 21917 const merged = {}; 21918 destObj = destObj || {}; 21919 if (sourceObj == null) return destObj; 21920 do { 21921 props2 = Object.getOwnPropertyNames(sourceObj); 21922 i = props2.length; 21923 while (i-- > 0) { 21924 prop = props2[i]; 21925 if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { 21926 destObj[prop] = sourceObj[prop]; 21927 merged[prop] = true; 21928 } 21929 } 21930 sourceObj = filter2 !== false && getPrototypeOf(sourceObj); 21931 } while (sourceObj && (!filter2 || filter2(sourceObj, destObj)) && sourceObj !== Object.prototype); 21932 return destObj; 21933}; 21934const endsWith = (str, searchString, position) => { 21935 str = String(str); 21936 if (position === void 0 || position > str.length) { 21937 position = str.length; 21938 } 21939 position -= searchString.length; 21940 const lastIndex = str.indexOf(searchString, position); 21941 return lastIndex !== -1 && lastIndex === position; 21942}; 21943const toArray = (thing) => { 21944 if (!thing) return null; 21945 if (isArray(thing)) return thing; 21946 let i = thing.length; 21947 if (!isNumber(i)) return null; 21948 const arr = new Array(i); 21949 while (i-- > 0) { 21950 arr[i] = thing[i]; 21951 } 21952 return arr; 21953}; 21954const isTypedArray = /* @__PURE__ */ ((TypedArray) => { 21955 return (thing) => { 21956 return TypedArray && thing instanceof TypedArray; 21957 }; 21958})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); 21959const forEachEntry = (obj, fn) => { 21960 const generator = obj && obj[iterator]; 21961 const _iterator = generator.call(obj); 21962 let result; 21963 while ((result = _iterator.next()) && !result.done) { 21964 const pair = result.value; 21965 fn.call(obj, pair[0], pair[1]); 21966 } 21967}; 21968const matchAll = (regExp, str) => { 21969 let matches2; 21970 const arr = []; 21971 while ((matches2 = regExp.exec(str)) !== null) { 21972 arr.push(matches2); 21973 } 21974 return arr; 21975}; 21976const isHTMLForm = kindOfTest("HTMLFormElement"); 21977const toCamelCase = (str) => { 21978 return str.toLowerCase().replace( 21979 /[-_\s]([a-z\d])(\w*)/g, 21980 function replacer2(m, p1, p2) { 21981 return p1.toUpperCase() + p2; 21982 } 21983 ); 21984}; 21985const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype); 21986const isRegExp = kindOfTest("RegExp"); 21987const reduceDescriptors = (obj, reducer) => { 21988 const descriptors2 = Object.getOwnPropertyDescriptors(obj); 21989 const reducedDescriptors = {}; 21990 forEach(descriptors2, (descriptor, name) => { 21991 let ret; 21992 if ((ret = reducer(descriptor, name, obj)) !== false) { 21993 reducedDescriptors[name] = ret || descriptor; 21994 } 21995 }); 21996 Object.defineProperties(obj, reducedDescriptors); 21997}; 21998const freezeMethods = (obj) => { 21999 reduceDescriptors(obj, (descriptor, name) => { 22000 if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) { 22001 return false;
22002 } 22003 const value = obj[name]; 22004 if (!isFunction(value)) return; 22005 descriptor.enumerable = false; 22006 if ("writable" in descriptor) { 22007 descriptor.writable = false; 22008 return; 22009 } 22010 if (!descriptor.set) { 22011 descriptor.set = () => { 22012 throw Error("Can not rewrite read-only method '" + name + "'"); 22013 }; 22014 } 22015 }); 22016}; 22017const toObjectSet = (arrayOrString, delimiter) => { 22018 const obj = {}; 22019 const define = (arr) => { 22020 arr.forEach((value) => { 22021 obj[value] = true; 22022 }); 22023 }; 22024 isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); 22025 return obj; 22026}; 22027const noop$1 = () => { 22028}; 22029const toFiniteNumber = (value, defaultValue) => { 22030 return value != null && Number.isFinite(value = +value) ? value : defaultValue; 22031}; 22032function isSpecCompliantForm(thing) { 22033 return !!(thing && isFunction(thing.append) && thing[toStringTag] === "FormData" && thing[iterator]); 22034} 22035const toJSONObject = (obj) => { 22036 const stack2 = new Array(10); 22037 const visit = (source, i) => { 22038 if (isObject$5(source)) { 22039 if (stack2.indexOf(source) >= 0) { 22040 return; 22041 } 22042 if (!("toJSON" in source)) { 22043 stack2[i] = source; 22044 const target = isArray(source) ? [] : {}; 22045 forEach(source, (value, key) => { 22046 const reducedValue = visit(value, i + 1); 22047 !isUndefined(reducedValue) && (target[key] = reducedValue); 22048 }); 22049 stack2[i] = void 0; 22050 return target; 22051 } 22052 } 22053 return source; 22054 }; 22055 return visit(obj, 0); 22056}; 22057const isAsyncFn = kindOfTest("AsyncFunction"); 22058const isThenable = (thing) => thing && (isObject$5(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); 22059const _setImmediate = ((setImmediateSupported, postMessageSupported) => { 22060 if (setImmediateSupported) { 22061 return setImmediate; 22062 } 22063 return postMessageSupported ? ((token, callbacks) => { 22064 _global.addEventListener("message", ({ source, data }) => { 22065 if (source === _global && data === token) { 22066 callbacks.length && callbacks.shift()(); 22067 } 22068 }, false); 22069 return (cb) => { 22070 callbacks.push(cb); 22071 _global.postMessage(token, "*"); 22072 }; 22073 })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb); 22074})( 22075 typeof setImmediate === "function", 22076 isFunction(_global.postMessage) 22077); 22078const asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate; 22079const isIterable = (thing) => thing != null && isFunction(thing[iterator]); 22080const utils$1 = { 22081 isArray, 22082 isArrayBuffer, 22083 isBuffer, 22084 isFormData, 22085 isArrayBufferView, 22086 isString, 22087 isNumber, 22088 isBoolean, 22089 isObject: isObject$5, 22090 isPlainObject, 22091 isReadableStream, 22092 isRequest, 22093 isResponse, 22094 isHeaders, 22095 isUndefined, 22096 isDate, 22097 isFile, 22098 isBlob, 22099 isRegExp, 22100 isFunction, 22101 isStream, 22102 isURLSearchParams, 22103 isTypedArray, 22104 isFileList, 22105 forEach, 22106 merge: merge$1, 22107 extend: extend$4, 22108 trim, 22109 stripBOM, 22110 inherits, 22111 toFlatObject, 22112 kindOf, 22113 kindOfTest, 22114 endsWith, 22115 toArray, 22116 forEachEntry, 22117 matchAll, 22118 isHTMLForm, 22119 hasOwnProperty, 22120 hasOwnProp: hasOwnProperty, 22121 // an alias to avoid ESLint no-prototype-builtins detection 22122 reduceDescriptors, 22123 freezeMethods, 22124 toObjectSet, 22125 toCamelCase, 22126 noop: noop$1, 22127 toFiniteNumber, 22128 findKey, 22129 global: _global, 22130 isContextDefined, 22131 isSpecCompliantForm, 22132 toJSONObject, 22133 isAsyncFn, 22134 isThenable, 22135 setImmediate: _setImmediate, 22136 asap, 22137 isIterable 22138}; 22139function AxiosError$1(message, code, config, request, response) { 22140 Error.call(this); 22141 if (Error.captureStackTrace) { 22142 Error.captureStackTrace(this, this.constructor); 22143 } else { 22144 this.stack = new Error().stack; 22145 } 22146 this.message = message; 22147 this.name = "AxiosError"; 22148 code && (this.code = code); 22149 config && (this.config = config); 22150 request && (this.request = request); 22151 if (response) { 22152 this.response = response; 22153 this.status = response.status ? response.status : null; 22154 } 22155} 22156utils$1.inherits(AxiosError$1, Error, { 22157 toJSON: function toJSON() { 22158 return { 22159 // Standard 22160 message: this.message, 22161 name: this.name, 22162 // Microsoft 22163 description: this.description, 22164 number: this.number, 22165 // Mozilla 22166 fileName: this.fileName, 22167 lineNumber: this.lineNumber, 22168 columnNumber: this.columnNumber, 22169 stack: this.stack, 22170 // Axios 22171 config: utils$1.toJSONObject(this.config),
vendor: 8,841 bytes, lines 22172-22459
22172 code: this.code, 22173 status: this.status 22174 }; 22175 } 22176}); 22177const prototype$1 = AxiosError$1.prototype; 22178const descriptors = {}; 22179[ 22180 "ERR_BAD_OPTION_VALUE", 22181 "ERR_BAD_OPTION", 22182 "ECONNABORTED", 22183 "ETIMEDOUT", 22184 "ERR_NETWORK", 22185 "ERR_FR_TOO_MANY_REDIRECTS", 22186 "ERR_DEPRECATED", 22187 "ERR_BAD_RESPONSE", 22188 "ERR_BAD_REQUEST", 22189 "ERR_CANCELED", 22190 "ERR_NOT_SUPPORT", 22191 "ERR_INVALID_URL" 22192 // eslint-disable-next-line func-names 22193].forEach((code) => { 22194 descriptors[code] = { value: code }; 22195}); 22196Object.defineProperties(AxiosError$1, descriptors); 22197Object.defineProperty(prototype$1, "isAxiosError", { value: true }); 22198AxiosError$1.from = (error, code, config, request, response, customProps) => { 22199 const axiosError = Object.create(prototype$1); 22200 utils$1.toFlatObject(error, axiosError, function filter2(obj) { 22201 return obj !== Error.prototype; 22202 }, (prop) => { 22203 return prop !== "isAxiosError"; 22204 }); 22205 AxiosError$1.call(axiosError, error.message, code, config, request, response); 22206 axiosError.cause = error; 22207 axiosError.name = error.name; 22208 customProps && Object.assign(axiosError, customProps); 22209 return axiosError; 22210}; 22211const httpAdapter = null; 22212function isVisitable(thing) { 22213 return utils$1.isPlainObject(thing) || utils$1.isArray(thing); 22214} 22215function removeBrackets(key) { 22216 return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key; 22217} 22218function renderKey(path, key, dots) { 22219 if (!path) return key; 22220 return path.concat(key).map(function each(token, i) { 22221 token = removeBrackets(token); 22222 return !dots && i ? "[" + token + "]" : token; 22223 }).join(dots ? "." : ""); 22224} 22225function isFlatArray(arr) { 22226 return utils$1.isArray(arr) && !arr.some(isVisitable); 22227} 22228const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { 22229 return /^is[A-Z]/.test(prop); 22230}); 22231function toFormData$1(obj, formData, options2) { 22232 if (!utils$1.isObject(obj)) { 22233 throw new TypeError("target must be an object"); 22234 } 22235 formData = formData || new FormData(); 22236 options2 = utils$1.toFlatObject(options2, { 22237 metaTokens: true, 22238 dots: false, 22239 indexes: false 22240 }, false, function defined(option, source) { 22241 return !utils$1.isUndefined(source[option]); 22242 }); 22243 const metaTokens = options2.metaTokens; 22244 const visitor = options2.visitor || defaultVisitor; 22245 const dots = options2.dots; 22246 const indexes = options2.indexes; 22247 const _Blob = options2.Blob || typeof Blob !== "undefined" && Blob; 22248 const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); 22249 if (!utils$1.isFunction(visitor)) { 22250 throw new TypeError("visitor must be a function"); 22251 } 22252 function convertValue(value) { 22253 if (value === null) return ""; 22254 if (utils$1.isDate(value)) { 22255 return value.toISOString(); 22256 } 22257 if (!useBlob && utils$1.isBlob(value)) { 22258 throw new AxiosError$1("Blob is not supported. Use a Buffer instead."); 22259 } 22260 if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { 22261 return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value); 22262 } 22263 return value; 22264 } 22265 function defaultVisitor(value, key, path) { 22266 let arr = value; 22267 if (value && !path && typeof value === "object") { 22268 if (utils$1.endsWith(key, "{}")) { 22269 key = metaTokens ? key : key.slice(0, -2); 22270 value = JSON.stringify(value); 22271 } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) { 22272 key = removeBrackets(key); 22273 arr.forEach(function each(el, index2) { 22274 !(utils$1.isUndefined(el) || el === null) && formData.append( 22275 // eslint-disable-next-line no-nested-ternary 22276 indexes === true ? renderKey([key], index2, dots) : indexes === null ? key : key + "[]", 22277 convertValue(el) 22278 ); 22279 }); 22280 return false; 22281 } 22282 } 22283 if (isVisitable(value)) { 22284 return true; 22285 } 22286 formData.append(renderKey(path, key, dots), convertValue(value)); 22287 return false; 22288 } 22289 const stack2 = []; 22290 const exposedHelpers = Object.assign(predicates, { 22291 defaultVisitor, 22292 convertValue, 22293 isVisitable 22294 }); 22295 function build(value, path) { 22296 if (utils$1.isUndefined(value)) return; 22297 if (stack2.indexOf(value) !== -1) { 22298 throw Error("Circular reference detected in " + path.join(".")); 22299 } 22300 stack2.push(value); 22301 utils$1.forEach(value, function each(el, key) { 22302 const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( 22303 formData, 22304 el, 22305 utils$1.isString(key) ? key.trim() : key, 22306 path, 22307 exposedHelpers 22308 ); 22309 if (result === true) { 22310 build(el, path ? path.concat(key) : [key]); 22311 } 22312 }); 22313 stack2.pop(); 22314 } 22315 if (!utils$1.isObject(obj)) { 22316 throw new TypeError("data must be an object"); 22317 } 22318 build(obj); 22319 return formData; 22320} 22321function encode$1(str) { 22322 const charMap = { 22323 "!": "%21", 22324 "'": "%27", 22325 "(": "%28", 22326 ")": "%29", 22327 "~": "%7E", 22328 "%20": "+", 22329 "%00": "\0" 22330 }; 22331 return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer2(match) { 22332 return charMap[match]; 22333 }); 22334} 22335function AxiosURLSearchParams(params, options2) { 22336 this._pairs = []; 22337 params && toFormData$1(params, this, options2); 22338} 22339const prototype = AxiosURLSearchParams.prototype; 22340prototype.append = function append(name, value) { 22341 this._pairs.push([name, value]); 22342}; 22343prototype.toString = function toString2(encoder) { 22344 const _encode = encoder ? function(value) { 22345 return encoder.call(this, value, encode$1); 22346 } : encode$1; 22347 return this._pairs.map(function each(pair) { 22348 return _encode(pair[0]) + "=" + _encode(pair[1]); 22349 }, "").join("&"); 22350}; 22351function encode(val) { 22352 return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); 22353} 22354function buildURL(url, params, options2) { 22355 if (!params) { 22356 return url; 22357 } 22358 const _encode = options2 && options2.encode || encode; 22359 if (utils$1.isFunction(options2)) { 22360 options2 = { 22361 serialize: options2 22362 }; 22363 } 22364 const serializeFn = options2 && options2.serialize; 22365 let serializedParams; 22366 if (serializeFn) { 22367 serializedParams = serializeFn(params, options2); 22368 } else { 22369 serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options2).toString(_encode); 22370 } 22371 if (serializedParams) { 22372 const hashmarkIndex = url.indexOf("#"); 22373 if (hashmarkIndex !== -1) { 22374 url = url.slice(0, hashmarkIndex); 22375 } 22376 url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams; 22377 } 22378 return url; 22379} 22380class InterceptorManager { 22381 constructor() { 22382 this.handlers = []; 22383 } 22384 /** 22385 * Add a new interceptor to the stack 22386 * 22387 * @param {Function} fulfilled The function to handle `then` for a `Promise` 22388 * @param {Function} rejected The function to handle `reject` for a `Promise` 22389 * 22390 * @return {Number} An ID used to remove interceptor later 22391 */ 22392 use(fulfilled, rejected, options2) { 22393 this.handlers.push({ 22394 fulfilled, 22395 rejected, 22396 synchronous: options2 ? options2.synchronous : false, 22397 runWhen: options2 ? options2.runWhen : null 22398 }); 22399 return this.handlers.length - 1; 22400 } 22401 /** 22402 * Remove an interceptor from the stack 22403 * 22404 * @param {Number} id The ID that was returned by `use` 22405 * 22406 * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise 22407 */ 22408 eject(id) { 22409 if (this.handlers[id]) { 22410 this.handlers[id] = null; 22411 } 22412 } 22413 /** 22414 * Clear all interceptors from the stack 22415 * 22416 * @returns {void} 22417 */ 22418 clear() { 22419 if (this.handlers) { 22420 this.handlers = []; 22421 } 22422 } 22423 /** 22424 * Iterate over all the registered interceptors 22425 * 22426 * This method is particularly useful for skipping over any 22427 * interceptors that may have become `null` calling `eject`. 22428 * 22429 * @param {Function} fn The function to call for each interceptor 22430 * 22431 * @returns {void} 22432 */ 22433 forEach(fn) { 22434 utils$1.forEach(this.handlers, function forEachHandler(h2) { 22435 if (h2 !== null) { 22436 fn(h2); 22437 } 22438 }); 22439 } 22440} 22441const transitionalDefaults = { 22442 silentJSONParsing: true, 22443 forcedJSONParsing: true, 22444 clarifyTimeoutError: false 22445}; 22446const URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams; 22447const FormData$1 = typeof FormData !== "undefined" ? FormData : null; 22448const Blob$1 = typeof Blob !== "undefined" ? Blob : null; 22449const platform$1 = { 22450 isBrowser: true, 22451 classes: { 22452 URLSearchParams: URLSearchParams$1, 22453 FormData: FormData$1, 22454 Blob: Blob$1 22455 }, 22456 protocols: ["http", "https", "file", "blob", "url", "data"] 22457}; 22458const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined"; 22459const _navigator = typeof navigator === "object" && navigator || void 0;
vendor: 5,274 bytes, lines 22460-22605
22460const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0); 22461const hasStandardBrowserWebWorkerEnv = (() => { 22462 return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef 22463 self instanceof WorkerGlobalScope && typeof self.importScripts === "function"; 22464})(); 22465const origin = hasBrowserEnv && window.location.href || "http://localhost"; 22466const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ 22467 __proto__: null, 22468 hasBrowserEnv, 22469 hasStandardBrowserEnv, 22470 hasStandardBrowserWebWorkerEnv, 22471 navigator: _navigator, 22472 origin 22473}, Symbol.toStringTag, { value: "Module" })); 22474const platform = { 22475 ...utils, 22476 ...platform$1 22477}; 22478function toURLEncodedForm(data, options2) { 22479 return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({ 22480 visitor: function(value, key, path, helpers) { 22481 if (platform.isNode && utils$1.isBuffer(value)) { 22482 this.append(key, value.toString("base64")); 22483 return false; 22484 } 22485 return helpers.defaultVisitor.apply(this, arguments); 22486 } 22487 }, options2)); 22488} 22489function parsePropPath(name) { 22490 return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { 22491 return match[0] === "[]" ? "" : match[1] || match[0]; 22492 }); 22493} 22494function arrayToObject(arr) { 22495 const obj = {}; 22496 const keys = Object.keys(arr); 22497 let i; 22498 const len = keys.length; 22499 let key; 22500 for (i = 0; i < len; i++) { 22501 key = keys[i]; 22502 obj[key] = arr[key]; 22503 } 22504 return obj; 22505} 22506function formDataToJSON(formData) { 22507 function buildPath(path, value, target, index2) { 22508 let name = path[index2++]; 22509 if (name === "__proto__") return true; 22510 const isNumericKey = Number.isFinite(+name); 22511 const isLast = index2 >= path.length; 22512 name = !name && utils$1.isArray(target) ? target.length : name; 22513 if (isLast) { 22514 if (utils$1.hasOwnProp(target, name)) { 22515 target[name] = [target[name], value]; 22516 } else { 22517 target[name] = value; 22518 } 22519 return !isNumericKey; 22520 } 22521 if (!target[name] || !utils$1.isObject(target[name])) { 22522 target[name] = []; 22523 } 22524 const result = buildPath(path, value, target[name], index2); 22525 if (result && utils$1.isArray(target[name])) { 22526 target[name] = arrayToObject(target[name]); 22527 } 22528 return !isNumericKey; 22529 } 22530 if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { 22531 const obj = {}; 22532 utils$1.forEachEntry(formData, (name, value) => { 22533 buildPath(parsePropPath(name), value, obj, 0); 22534 }); 22535 return obj; 22536 } 22537 return null; 22538} 22539function stringifySafely(rawValue, parser, encoder) { 22540 if (utils$1.isString(rawValue)) { 22541 try { 22542 (parser || JSON.parse)(rawValue); 22543 return utils$1.trim(rawValue); 22544 } catch (e) { 22545 if (e.name !== "SyntaxError") { 22546 throw e; 22547 } 22548 } 22549 } 22550 return (encoder || JSON.stringify)(rawValue); 22551} 22552const defaults$1 = { 22553 transitional: transitionalDefaults, 22554 adapter: ["xhr", "http", "fetch"], 22555 transformRequest: [function transformRequest(data, headers) { 22556 const contentType = headers.getContentType() || ""; 22557 const hasJSONContentType = contentType.indexOf("application/json") > -1; 22558 const isObjectPayload = utils$1.isObject(data); 22559 if (isObjectPayload && utils$1.isHTMLForm(data)) { 22560 data = new FormData(data); 22561 } 22562 const isFormData2 = utils$1.isFormData(data); 22563 if (isFormData2) { 22564 return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; 22565 } 22566 if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { 22567 return data; 22568 } 22569 if (utils$1.isArrayBufferView(data)) { 22570 return data.buffer; 22571 } 22572 if (utils$1.isURLSearchParams(data)) { 22573 headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false); 22574 return data.toString(); 22575 } 22576 let isFileList2; 22577 if (isObjectPayload) { 22578 if (contentType.indexOf("application/x-www-form-urlencoded") > -1) { 22579 return toURLEncodedForm(data, this.formSerializer).toString(); 22580 } 22581 if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) { 22582 const _FormData = this.env && this.env.FormData; 22583 return toFormData$1( 22584 isFileList2 ? { "files[]": data } : data, 22585 _FormData && new _FormData(), 22586 this.formSerializer 22587 ); 22588 } 22589 } 22590 if (isObjectPayload || hasJSONContentType) { 22591 headers.setContentType("application/json", false); 22592 return stringifySafely(data); 22593 } 22594 return data; 22595 }], 22596 transformResponse: [function transformResponse(data) { 22597 const transitional2 = this.transitional || defaults$1.transitional; 22598 const forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing; 22599 const JSONRequested = this.responseType === "json"; 22600 if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { 22601 return data; 22602 } 22603 if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { 22604 const silentJSONParsing = transitional2 && transitional2.silentJSONParsing; 22605 const strictJSONParsing = !silentJSONParsing && JSONRequested;
vendor: 4,153 bytes, lines 22606-22755
22606 try { 22607 return JSON.parse(data); 22608 } catch (e) { 22609 if (strictJSONParsing) { 22610 if (e.name === "SyntaxError") { 22611 throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); 22612 } 22613 throw e; 22614 } 22615 } 22616 } 22617 return data; 22618 }], 22619 /** 22620 * A timeout in milliseconds to abort a request. If set to 0 (default) a 22621 * timeout is not created. 22622 */ 22623 timeout: 0, 22624 xsrfCookieName: "XSRF-TOKEN", 22625 xsrfHeaderName: "X-XSRF-TOKEN", 22626 maxContentLength: -1, 22627 maxBodyLength: -1, 22628 env: { 22629 FormData: platform.classes.FormData, 22630 Blob: platform.classes.Blob 22631 }, 22632 validateStatus: function validateStatus(status) { 22633 return status >= 200 && status < 300; 22634 }, 22635 headers: { 22636 common: { 22637 "Accept": "application/json, text/plain, */*", 22638 "Content-Type": void 0 22639 } 22640 } 22641}; 22642utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => { 22643 defaults$1.headers[method] = {}; 22644}); 22645const ignoreDuplicateOf = utils$1.toObjectSet([ 22646 "age", 22647 "authorization", 22648 "content-length", 22649 "content-type", 22650 "etag", 22651 "expires", 22652 "from", 22653 "host", 22654 "if-modified-since", 22655 "if-unmodified-since", 22656 "last-modified", 22657 "location", 22658 "max-forwards", 22659 "proxy-authorization", 22660 "referer", 22661 "retry-after", 22662 "user-agent" 22663]); 22664const parseHeaders = (rawHeaders) => { 22665 const parsed = {}; 22666 let key; 22667 let val; 22668 let i; 22669 rawHeaders && rawHeaders.split("\n").forEach(function parser(line) { 22670 i = line.indexOf(":"); 22671 key = line.substring(0, i).trim().toLowerCase(); 22672 val = line.substring(i + 1).trim(); 22673 if (!key || parsed[key] && ignoreDuplicateOf[key]) { 22674 return; 22675 } 22676 if (key === "set-cookie") { 22677 if (parsed[key]) { 22678 parsed[key].push(val); 22679 } else { 22680 parsed[key] = [val]; 22681 } 22682 } else { 22683 parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; 22684 } 22685 }); 22686 return parsed; 22687}; 22688const $internals = Symbol("internals"); 22689function normalizeHeader(header) { 22690 return header && String(header).trim().toLowerCase(); 22691} 22692function normalizeValue(value) { 22693 if (value === false || value == null) { 22694 return value; 22695 } 22696 return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); 22697} 22698function parseTokens(str) { 22699 const tokens = /* @__PURE__ */ Object.create(null); 22700 const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; 22701 let match; 22702 while (match = tokensRE.exec(str)) { 22703 tokens[match[1]] = match[2]; 22704 } 22705 return tokens; 22706} 22707const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); 22708function matchHeaderValue(context, value, header, filter2, isHeaderNameFilter) { 22709 if (utils$1.isFunction(filter2)) { 22710 return filter2.call(this, value, header); 22711 } 22712 if (isHeaderNameFilter) { 22713 value = header; 22714 } 22715 if (!utils$1.isString(value)) return; 22716 if (utils$1.isString(filter2)) { 22717 return value.indexOf(filter2) !== -1; 22718 } 22719 if (utils$1.isRegExp(filter2)) { 22720 return filter2.test(value); 22721 } 22722} 22723function formatHeader(header) { 22724 return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { 22725 return char.toUpperCase() + str; 22726 }); 22727} 22728function buildAccessors(obj, header) { 22729 const accessorName = utils$1.toCamelCase(" " + header); 22730 ["get", "set", "has"].forEach((methodName) => { 22731 Object.defineProperty(obj, methodName + accessorName, { 22732 value: function(arg1, arg2, arg3) { 22733 return this[methodName].call(this, header, arg1, arg2, arg3); 22734 }, 22735 configurable: true 22736 }); 22737 }); 22738} 22739let AxiosHeaders$1 = class AxiosHeaders { 22740 constructor(headers) { 22741 headers && this.set(headers); 22742 } 22743 set(header, valueOrRewrite, rewrite) { 22744 const self2 = this; 22745 function setHeader(_value, _header, _rewrite) { 22746 const lHeader = normalizeHeader(_header); 22747 if (!lHeader) { 22748 throw new Error("header name must be a non-empty string"); 22749 } 22750 const key = utils$1.findKey(self2, lHeader); 22751 if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) { 22752 self2[key || _header] = normalizeValue(_value); 22753 } 22754 } 22755 const setHeaders = (headers, _rewrite) =>
vendor: 5,218 bytes, lines 22755-22918
22755 utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); 22756 if (utils$1.isPlainObject(header) || header instanceof this.constructor) { 22757 setHeaders(header, valueOrRewrite); 22758 } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { 22759 setHeaders(parseHeaders(header), valueOrRewrite); 22760 } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { 22761 let obj = {}, dest, key; 22762 for (const entry of header) { 22763 if (!utils$1.isArray(entry)) { 22764 throw TypeError("Object iterator must return a key-value pair"); 22765 } 22766 obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1]; 22767 } 22768 setHeaders(obj, valueOrRewrite); 22769 } else { 22770 header != null && setHeader(valueOrRewrite, header, rewrite); 22771 } 22772 return this; 22773 } 22774 get(header, parser) { 22775 header = normalizeHeader(header); 22776 if (header) { 22777 const key = utils$1.findKey(this, header); 22778 if (key) { 22779 const value = this[key]; 22780 if (!parser) { 22781 return value; 22782 } 22783 if (parser === true) { 22784 return parseTokens(value); 22785 } 22786 if (utils$1.isFunction(parser)) { 22787 return parser.call(this, value, key); 22788 } 22789 if (utils$1.isRegExp(parser)) { 22790 return parser.exec(value); 22791 } 22792 throw new TypeError("parser must be boolean|regexp|function"); 22793 } 22794 } 22795 } 22796 has(header, matcher) { 22797 header = normalizeHeader(header); 22798 if (header) { 22799 const key = utils$1.findKey(this, header); 22800 return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher))); 22801 } 22802 return false; 22803 } 22804 delete(header, matcher) { 22805 const self2 = this; 22806 let deleted = false; 22807 function deleteHeader(_header) { 22808 _header = normalizeHeader(_header); 22809 if (_header) { 22810 const key = utils$1.findKey(self2, _header); 22811 if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) { 22812 delete self2[key]; 22813 deleted = true; 22814 } 22815 } 22816 } 22817 if (utils$1.isArray(header)) { 22818 header.forEach(deleteHeader); 22819 } else { 22820 deleteHeader(header); 22821 } 22822 return deleted; 22823 } 22824 clear(matcher) { 22825 const keys = Object.keys(this); 22826 let i = keys.length; 22827 let deleted = false; 22828 while (i--) { 22829 const key = keys[i]; 22830 if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { 22831 delete this[key]; 22832 deleted = true; 22833 } 22834 } 22835 return deleted; 22836 } 22837 normalize(format2) { 22838 const self2 = this; 22839 const headers = {}; 22840 utils$1.forEach(this, (value, header) => { 22841 const key = utils$1.findKey(headers, header); 22842 if (key) { 22843 self2[key] = normalizeValue(value); 22844 delete self2[header]; 22845 return; 22846 } 22847 const normalized = format2 ? formatHeader(header) : String(header).trim(); 22848 if (normalized !== header) { 22849 delete self2[header]; 22850 } 22851 self2[normalized] = normalizeValue(value); 22852 headers[normalized] = true; 22853 }); 22854 return this; 22855 } 22856 concat(...targets) { 22857 return this.constructor.concat(this, ...targets); 22858 } 22859 toJSON(asStrings) { 22860 const obj = /* @__PURE__ */ Object.create(null); 22861 utils$1.forEach(this, (value, header) => { 22862 value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value); 22863 }); 22864 return obj; 22865 } 22866 [Symbol.iterator]() { 22867 return Object.entries(this.toJSON())[Symbol.iterator](); 22868 } 22869 toString() { 22870 return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n"); 22871 } 22872 getSetCookie() { 22873 return this.get("set-cookie") || []; 22874 } 22875 get [Symbol.toStringTag]() { 22876 return "AxiosHeaders"; 22877 } 22878 static from(thing) { 22879 return thing instanceof this ? thing : new this(thing); 22880 } 22881 static concat(first, ...targets) { 22882 const computed2 = new this(first); 22883 targets.forEach((target) => computed2.set(target)); 22884 return computed2; 22885 } 22886 static accessor(header) { 22887 const internals = this[$internals] = this[$internals] = { 22888 accessors: {} 22889 }; 22890 const accessors = internals.accessors; 22891 const prototype2 = this.prototype; 22892 function defineAccessor(_header) { 22893 const lHeader = normalizeHeader(_header); 22894 if (!accessors[lHeader]) { 22895 buildAccessors(prototype2, _header); 22896 accessors[lHeader] = true; 22897 } 22898 } 22899 utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); 22900 return this; 22901 } 22902}; 22903AxiosHeaders$1.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); 22904utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => { 22905 let mapped = key[0].toUpperCase() + key.slice(1); 22906 return { 22907 get: () => value, 22908 set(headerValue) { 22909 this[mapped] = headerValue; 22910 } 22911 }; 22912}); 22913utils$1.freezeMethods(AxiosHeaders$1); 22914function transformData(fns, response) { 22915 const config = this || defaults$1; 22916 const context = response || config; 22917 const headers = AxiosHeaders$1.from(context.headers); 22918 let data = context.data;
vendor: 4,165 bytes, lines 22919-23055
22919 utils$1.forEach(fns, function transform2(fn) { 22920 data = fn.call(config, data, headers.normalize(), response ? response.status : void 0); 22921 }); 22922 headers.normalize(); 22923 return data; 22924} 22925function isCancel$1(value) { 22926 return !!(value && value.__CANCEL__); 22927} 22928function CanceledError$1(message, config, request) { 22929 AxiosError$1.call(this, message == null ? "canceled" : message, AxiosError$1.ERR_CANCELED, config, request); 22930 this.name = "CanceledError"; 22931} 22932utils$1.inherits(CanceledError$1, AxiosError$1, { 22933 __CANCEL__: true 22934}); 22935function settle(resolve2, reject, response) { 22936 const validateStatus2 = response.config.validateStatus; 22937 if (!response.status || !validateStatus2 || validateStatus2(response.status)) { 22938 resolve2(response); 22939 } else { 22940 reject(new AxiosError$1( 22941 "Request failed with status code " + response.status, 22942 [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], 22943 response.config, 22944 response.request, 22945 response 22946 )); 22947 } 22948} 22949function parseProtocol(url) { 22950 const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); 22951 return match && match[1] || ""; 22952} 22953function speedometer(samplesCount, min) { 22954 samplesCount = samplesCount || 10; 22955 const bytes = new Array(samplesCount); 22956 const timestamps = new Array(samplesCount); 22957 let head = 0; 22958 let tail = 0; 22959 let firstSampleTS; 22960 min = min !== void 0 ? min : 1e3; 22961 return function push(chunkLength) { 22962 const now2 = Date.now(); 22963 const startedAt = timestamps[tail]; 22964 if (!firstSampleTS) { 22965 firstSampleTS = now2; 22966 } 22967 bytes[head] = chunkLength; 22968 timestamps[head] = now2; 22969 let i = tail; 22970 let bytesCount = 0; 22971 while (i !== head) { 22972 bytesCount += bytes[i++]; 22973 i = i % samplesCount; 22974 } 22975 head = (head + 1) % samplesCount; 22976 if (head === tail) { 22977 tail = (tail + 1) % samplesCount; 22978 } 22979 if (now2 - firstSampleTS < min) { 22980 return; 22981 } 22982 const passed = startedAt && now2 - startedAt; 22983 return passed ? Math.round(bytesCount * 1e3 / passed) : void 0; 22984 }; 22985} 22986function throttle$2(fn, freq) { 22987 let timestamp = 0; 22988 let threshold = 1e3 / freq; 22989 let lastArgs; 22990 let timer; 22991 const invoke = (args, now2 = Date.now()) => { 22992 timestamp = now2; 22993 lastArgs = null; 22994 if (timer) { 22995 clearTimeout(timer); 22996 timer = null; 22997 } 22998 fn.apply(null, args); 22999 }; 23000 const throttled = (...args) => { 23001 const now2 = Date.now(); 23002 const passed = now2 - timestamp; 23003 if (passed >= threshold) { 23004 invoke(args, now2); 23005 } else { 23006 lastArgs = args; 23007 if (!timer) { 23008 timer = setTimeout(() => { 23009 timer = null; 23010 invoke(lastArgs); 23011 }, threshold - passed); 23012 } 23013 } 23014 }; 23015 const flush = () => lastArgs && invoke(lastArgs); 23016 return [throttled, flush]; 23017} 23018const progressEventReducer = (listener, isDownloadStream, freq = 3) => { 23019 let bytesNotified = 0; 23020 const _speedometer = speedometer(50, 250); 23021 return throttle$2((e) => { 23022 const loaded = e.loaded; 23023 const total = e.lengthComputable ? e.total : void 0; 23024 const progressBytes = loaded - bytesNotified; 23025 const rate = _speedometer(progressBytes); 23026 const inRange = loaded <= total; 23027 bytesNotified = loaded; 23028 const data = { 23029 loaded, 23030 total, 23031 progress: total ? loaded / total : void 0, 23032 bytes: progressBytes, 23033 rate: rate ? rate : void 0, 23034 estimated: rate && total && inRange ? (total - loaded) / rate : void 0, 23035 event: e, 23036 lengthComputable: total != null, 23037 [isDownloadStream ? "download" : "upload"]: true 23038 }; 23039 listener(data); 23040 }, freq); 23041}; 23042const progressEventDecorator = (total, throttled) => { 23043 const lengthComputable = total != null; 23044 return [(loaded) => throttled[0]({ 23045 lengthComputable, 23046 total, 23047 loaded 23048 }), throttled[1]]; 23049}; 23050const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); 23051const isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url) => { 23052 url = new URL(url, platform.origin); 23053 return origin2.protocol === url.protocol && origin2.host === url.host && (isMSIE || origin2.port === url.port); 23054})( 23055 new URL(platform.origin),
vendor: 3,593 bytes, lines 23056-23161
23056 platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) 23057) : () => true; 23058const cookies = platform.hasStandardBrowserEnv ? ( 23059 // Standard browser envs support document.cookie 23060 { 23061 write(name, value, expires, path, domain, secure) { 23062 const cookie = [name + "=" + encodeURIComponent(value)]; 23063 utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString()); 23064 utils$1.isString(path) && cookie.push("path=" + path); 23065 utils$1.isString(domain) && cookie.push("domain=" + domain); 23066 secure === true && cookie.push("secure"); 23067 document.cookie = cookie.join("; "); 23068 }, 23069 read(name) { 23070 const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)")); 23071 return match ? decodeURIComponent(match[3]) : null; 23072 }, 23073 remove(name) { 23074 this.write(name, "", Date.now() - 864e5); 23075 } 23076 } 23077) : ( 23078 // Non-standard browser env (web workers, react-native) lack needed support. 23079 { 23080 write() { 23081 }, 23082 read() { 23083 return null; 23084 }, 23085 remove() { 23086 } 23087 } 23088); 23089function isAbsoluteURL(url) { 23090 return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); 23091} 23092function combineURLs(baseURL2, relativeURL) { 23093 return relativeURL ? baseURL2.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL2; 23094} 23095function buildFullPath(baseURL2, requestedURL, allowAbsoluteUrls) { 23096 let isRelativeUrl = !isAbsoluteURL(requestedURL); 23097 if (baseURL2 && (isRelativeUrl || allowAbsoluteUrls == false)) { 23098 return combineURLs(baseURL2, requestedURL); 23099 } 23100 return requestedURL; 23101} 23102const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; 23103function mergeConfig$1(config1, config2) { 23104 config2 = config2 || {}; 23105 const config = {}; 23106 function getMergedValue(target, source, prop, caseless) { 23107 if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { 23108 return utils$1.merge.call({ caseless }, target, source); 23109 } else if (utils$1.isPlainObject(source)) { 23110 return utils$1.merge({}, source); 23111 } else if (utils$1.isArray(source)) { 23112 return source.slice(); 23113 } 23114 return source; 23115 } 23116 function mergeDeepProperties(a, b, prop, caseless) { 23117 if (!utils$1.isUndefined(b)) { 23118 return getMergedValue(a, b, prop, caseless); 23119 } else if (!utils$1.isUndefined(a)) { 23120 return getMergedValue(void 0, a, prop, caseless); 23121 } 23122 } 23123 function valueFromConfig2(a, b) { 23124 if (!utils$1.isUndefined(b)) { 23125 return getMergedValue(void 0, b); 23126 } 23127 } 23128 function defaultToConfig2(a, b) { 23129 if (!utils$1.isUndefined(b)) { 23130 return getMergedValue(void 0, b); 23131 } else if (!utils$1.isUndefined(a)) { 23132 return getMergedValue(void 0, a); 23133 } 23134 } 23135 function mergeDirectKeys(a, b, prop) { 23136 if (prop in config2) { 23137 return getMergedValue(a, b); 23138 } else if (prop in config1) { 23139 return getMergedValue(void 0, a); 23140 } 23141 } 23142 const mergeMap = { 23143 url: valueFromConfig2, 23144 method: valueFromConfig2, 23145 data: valueFromConfig2, 23146 baseURL: defaultToConfig2, 23147 transformRequest: defaultToConfig2, 23148 transformResponse: defaultToConfig2, 23149 paramsSerializer: defaultToConfig2, 23150 timeout: defaultToConfig2, 23151 timeoutMessage: defaultToConfig2, 23152 withCredentials: defaultToConfig2, 23153 withXSRFToken: defaultToConfig2, 23154 adapter: defaultToConfig2, 23155 responseType: defaultToConfig2, 23156 xsrfCookieName: defaultToConfig2, 23157 xsrfHeaderName: defaultToConfig2, 23158 onUploadProgress: defaultToConfig2, 23159 onDownloadProgress: defaultToConfig2, 23160 decompress: defaultToConfig2, 23161 maxContentLength: defaultToConfig2,
23162 maxBodyLength: defaultToConfig2, 23163 beforeRedirect: defaultToConfig2, 23164 transport: defaultToConfig2, 23165 httpAgent: defaultToConfig2, 23166 httpsAgent: defaultToConfig2, 23167 cancelToken: defaultToConfig2, 23168 socketPath: defaultToConfig2, 23169 responseEncoding: defaultToConfig2, 23170 validateStatus: mergeDirectKeys, 23171 headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) 23172 }; 23173 utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { 23174 const merge2 = mergeMap[prop] || mergeDeepProperties; 23175 const configValue = merge2(config1[prop], config2[prop], prop); 23176 utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue); 23177 }); 23178 return config; 23179} 23180const resolveConfig = (config) => { 23181 const newConfig = mergeConfig$1({}, config); 23182 let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; 23183 newConfig.headers = headers = AxiosHeaders$1.from(headers); 23184 newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer); 23185 if (auth) { 23186 headers.set( 23187 "Authorization", 23188 "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : "")) 23189 ); 23190 } 23191 let contentType; 23192 if (utils$1.isFormData(data)) { 23193 if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { 23194 headers.setContentType(void 0); 23195 } else if ((contentType = headers.getContentType()) !== false) { 23196 const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : []; 23197 headers.setContentType([type || "multipart/form-data", ...tokens].join("; ")); 23198 } 23199 } 23200 if (platform.hasStandardBrowserEnv) { 23201 withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); 23202 if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { 23203 const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); 23204 if (xsrfValue) { 23205 headers.set(xsrfHeaderName, xsrfValue); 23206 } 23207 } 23208 } 23209 return newConfig; 23210}; 23211const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined"; 23212const xhrAdapter = isXHRAdapterSupported && function(config) { 23213 return new Promise(function dispatchXhrRequest(resolve2, reject) { 23214 const _config = resolveConfig(config); 23215 let requestData = _config.data; 23216 const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); 23217 let { responseType, onUploadProgress, onDownloadProgress } = _config; 23218 let onCanceled; 23219 let uploadThrottled, downloadThrottled; 23220 let flushUpload, flushDownload; 23221 function done() { 23222 flushUpload && flushUpload(); 23223 flushDownload && flushDownload(); 23224 _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); 23225 _config.signal && _config.signal.removeEventListener("abort", onCanceled); 23226 } 23227 let request = new XMLHttpRequest(); 23228 request.open(_config.method.toUpperCase(), _config.url, true); 23229 request.timeout = _config.timeout; 23230 function onloadend() { 23231 if (!request) { 23232 return; 23233 } 23234 const responseHeaders = AxiosHeaders$1.from( 23235 "getAllResponseHeaders" in request && request.getAllResponseHeaders() 23236 ); 23237 const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response; 23238 const response = { 23239 data: responseData, 23240 status: request.status, 23241 statusText: request.statusText, 23242 headers: responseHeaders, 23243 config, 23244 request 23245 }; 23246 settle(function _resolve(value) { 23247 resolve2(value); 23248 done(); 23249 }, function _reject(err) { 23250 reject(err); 23251 done(); 23252 }, response); 23253 request = null; 23254 } 23255 if ("onloadend" in request) { 23256 request.onloadend = onloadend; 23257 } else { 23258 request.onreadystatechange = function handleLoad() { 23259 if (!request || request.readyState !== 4) { 23260 return; 23261 } 23262 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) { 23263 return; 23264 } 23265 setTimeout(onloadend); 23266 }; 23267 } 23268 request.onabort = function handleAbort() { 23269 if (!request) { 23270 return; 23271 } 23272 reject(new AxiosError$1("Request aborted", AxiosError$1.ECONNABORTED, config, request)); 23273 request = null; 23274 }; 23275 request.onerror = function handleError2() { 23276 reject(new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request)); 23277 request = null; 23278 }; 23279 request.ontimeout = function handleTimeout() { 23280 let timeoutErrorMessage = _config.timeout ? "timeout of " + _config.timeout + "ms exceeded" : "timeout exceeded"; 23281 const transitional2 = _config.transitional || transitionalDefaults; 23282 if (_config.timeoutErrorMessage) { 23283 timeoutErrorMessage = _config.timeoutErrorMessage; 23284 } 23285 reject(new AxiosError$1( 23286 timeoutErrorMessage, 23287 transitional2.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, 23288 config, 23289 request 23290 )); 23291 request = null; 23292 }; 23293 requestData === void 0 && requestHeaders.setContentType(null); 23294 if ("setRequestHeader" in request) {
vendor: 1,770 bytes, lines 23295-23338
23295 utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { 23296 request.setRequestHeader(key, val); 23297 }); 23298 } 23299 if (!utils$1.isUndefined(_config.withCredentials)) { 23300 request.withCredentials = !!_config.withCredentials; 23301 } 23302 if (responseType && responseType !== "json") { 23303 request.responseType = _config.responseType; 23304 } 23305 if (onDownloadProgress) { 23306 [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); 23307 request.addEventListener("progress", downloadThrottled); 23308 } 23309 if (onUploadProgress && request.upload) { 23310 [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); 23311 request.upload.addEventListener("progress", uploadThrottled); 23312 request.upload.addEventListener("loadend", flushUpload); 23313 } 23314 if (_config.cancelToken || _config.signal) { 23315 onCanceled = (cancel) => { 23316 if (!request) { 23317 return; 23318 } 23319 reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); 23320 request.abort(); 23321 request = null; 23322 }; 23323 _config.cancelToken && _config.cancelToken.subscribe(onCanceled); 23324 if (_config.signal) { 23325 _config.signal.aborted ? onCanceled() : _config.signal.addEventListener("abort", onCanceled); 23326 } 23327 } 23328 const protocol = parseProtocol(_config.url); 23329 if (protocol && platform.protocols.indexOf(protocol) === -1) { 23330 reject(new AxiosError$1("Unsupported protocol " + protocol + ":", AxiosError$1.ERR_BAD_REQUEST, config)); 23331 return; 23332 } 23333 request.send(requestData || null); 23334 }); 23335}; 23336const composeSignals = (signals, timeout) => { 23337 const { length } = signals = signals ? signals.filter(Boolean) : []; 23338 if (timeout || length) {
vendor: 3,023 bytes, lines 23339-23446
23339 let controller = new AbortController(); 23340 let aborted; 23341 const onabort = function(reason) { 23342 if (!aborted) { 23343 aborted = true; 23344 unsubscribe(); 23345 const err = reason instanceof Error ? reason : this.reason; 23346 controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err)); 23347 } 23348 }; 23349 let timer = timeout && setTimeout(() => { 23350 timer = null; 23351 onabort(new AxiosError$1(`timeout ${timeout} of ms exceeded`, AxiosError$1.ETIMEDOUT)); 23352 }, timeout); 23353 const unsubscribe = () => { 23354 if (signals) { 23355 timer && clearTimeout(timer); 23356 timer = null; 23357 signals.forEach((signal2) => { 23358 signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort); 23359 }); 23360 signals = null; 23361 } 23362 }; 23363 signals.forEach((signal2) => signal2.addEventListener("abort", onabort)); 23364 const { signal } = controller; 23365 signal.unsubscribe = () => utils$1.asap(unsubscribe); 23366 return signal; 23367 } 23368}; 23369const streamChunk = function* (chunk, chunkSize) { 23370 let len = chunk.byteLength; 23371 if (len < chunkSize) { 23372 yield chunk; 23373 return; 23374 } 23375 let pos = 0; 23376 let end; 23377 while (pos < len) { 23378 end = pos + chunkSize; 23379 yield chunk.slice(pos, end); 23380 pos = end; 23381 } 23382}; 23383const readBytes = async function* (iterable, chunkSize) { 23384 for await (const chunk of readStream(iterable)) { 23385 yield* streamChunk(chunk, chunkSize); 23386 } 23387}; 23388const readStream = async function* (stream) { 23389 if (stream[Symbol.asyncIterator]) { 23390 yield* stream; 23391 return; 23392 } 23393 const reader = stream.getReader(); 23394 try { 23395 for (; ; ) { 23396 const { done, value } = await reader.read(); 23397 if (done) { 23398 break; 23399 } 23400 yield value; 23401 } 23402 } finally { 23403 await reader.cancel(); 23404 } 23405}; 23406const trackStream = (stream, chunkSize, onProgress, onFinish) => { 23407 const iterator2 = readBytes(stream, chunkSize); 23408 let bytes = 0; 23409 let done; 23410 let _onFinish = (e) => { 23411 if (!done) { 23412 done = true; 23413 onFinish && onFinish(e); 23414 } 23415 }; 23416 return new ReadableStream({ 23417 async pull(controller) { 23418 try { 23419 const { done: done2, value } = await iterator2.next(); 23420 if (done2) { 23421 _onFinish(); 23422 controller.close(); 23423 return; 23424 } 23425 let len = value.byteLength; 23426 if (onProgress) { 23427 let loadedBytes = bytes += len; 23428 onProgress(loadedBytes); 23429 } 23430 controller.enqueue(new Uint8Array(value)); 23431 } catch (err) { 23432 _onFinish(err); 23433 throw err; 23434 } 23435 }, 23436 cancel(reason) { 23437 _onFinish(reason); 23438 return iterator2.return(); 23439 } 23440 }, { 23441 highWaterMark: 2 23442 }); 23443}; 23444const isFetchSupported = typeof fetch === "function" && typeof Request === "function" && typeof Response === "function"; 23445const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === "function"; 23446const encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__P
23446URE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Response(str).arrayBuffer())); 23447const test = (fn, ...args) => { 23448 try { 23449 return !!fn(...args); 23450 } catch (e) { 23451 return false; 23452 } 23453}; 23454const supportsRequestStream = isReadableStreamSupported && test(() => { 23455 let duplexAccessed = false; 23456 const hasContentType = new Request(platform.origin, { 23457 body: new ReadableStream(), 23458 method: "POST", 23459 get duplex() { 23460 duplexAccessed = true; 23461 return "half"; 23462 } 23463 }).headers.has("Content-Type"); 23464 return duplexAccessed && !hasContentType; 23465}); 23466const DEFAULT_CHUNK_SIZE = 64 * 1024; 23467const supportsResponseStream = isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body)); 23468const resolvers = { 23469 stream: supportsResponseStream && ((res) => res.body) 23470}; 23471isFetchSupported && ((res) => { 23472 ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => { 23473 !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res2) => res2[type]() : (_, config) => { 23474 throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config); 23475 }); 23476 }); 23477})(new Response()); 23478const getBodyLength = async (body) => { 23479 if (body == null) { 23480 return 0; 23481 } 23482 if (utils$1.isBlob(body)) { 23483 return body.size; 23484 } 23485 if (utils$1.isSpecCompliantForm(body)) { 23486 const _request = new Request(platform.origin, { 23487 method: "POST", 23488 body 23489 }); 23490 return (await _request.arrayBuffer()).byteLength; 23491 } 23492 if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { 23493 return body.byteLength; 23494 } 23495 if (utils$1.isURLSearchParams(body)) { 23496 body = body + ""; 23497 } 23498 if (utils$1.isString(body)) { 23499 return (await encodeText(body)).byteLength; 23500 } 23501}; 23502const resolveBodyLength = async (headers, body) => { 23503 const length = utils$1.toFiniteNumber(headers.getContentLength()); 23504 return length == null ? getBodyLength(body) : length; 23505}; 23506const fetchAdapter = isFetchSupported && (async (config) => { 23507 let { 23508 url, 23509 method, 23510 data, 23511 signal, 23512 cancelToken, 23513 timeout, 23514 onDownloadProgress, 23515 onUploadProgress, 23516 responseType, 23517 headers, 23518 withCredentials = "same-origin", 23519 fetchOptions 23520 } = resolveConfig(config); 23521 responseType = responseType ? (responseType + "").toLowerCase() : "text"; 23522 let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); 23523 let request; 23524 const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { 23525 composedSignal.unsubscribe(); 23526 }); 23527 let requestContentLength; 23528 try { 23529 if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { 23530 let _request = new Request(url, { 23531 method: "POST", 23532 body: data, 23533 duplex: "half" 23534 }); 23535 let contentTypeHeader; 23536 if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) { 23537 headers.setContentType(contentTypeHeader); 23538 } 23539 if (_request.body) { 23540 const [onProgress, flush] = progressEventDecorator( 23541 requestContentLength, 23542 progressEventReducer(asyncDecorator(onUploadProgress)) 23543 ); 23544 data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); 23545 } 23546 } 23547 if (!utils$1.isString(withCredentials)) { 23548 withCredentials = withCredentials ? "include" : "omit"; 23549 } 23550 const isCredentialsSupported = "credentials" in Request.prototype; 23551 request = new Request(url, { 23552 ...fetchOptions, 23553 signal: composedSignal, 23554 method: method.toUpperCase(), 23555 headers: headers.normalize().toJSON(), 23556 body: data, 23557 duplex: "half", 23558 credentials: isCredentialsSupported ? withCredentials : void 0 23559 }); 23560 let response = await fetch(request); 23561 const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response"); 23562 if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { 23563 const options2 = {}; 23564 ["status", "statusText", "headers"].forEach((prop) => { 23565 options2[prop] = response[prop]; 23566 }); 23567 const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length")); 23568 const [onProgress, flush] = onDownloadProgress && progressEventDecorator( 23569 responseContentLength, 23570 progressEventReducer(asyncDecorator(onDownloadProgress), true) 23571 ) || []; 23572 response = new Response( 23573 trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { 23574 flush && flush(); 23575 unsubscribe && unsubscribe(); 23576 }), 23577 options2 23578 ); 23579 } 23580 responseType = responseType || "text"; 23581 let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"](response, config); 23582 !isStreamResponse && unsubscribe && unsubscribe(); 23583 return await new Promise((resolve2, reject) => { 23584 settle(resolve2, reject, { 23585 data: responseData, 23586 headers: AxiosHeaders$1.from(response.headers), 23587 status: response.status, 23588 statusText: response.statusText, 23589 config, 23590 request 23591 }); 23592 }); 23593 } catch (err) { 23594 unsubscribe && unsubscribe(); 23595 if (err && err.name === "TypeError" && /Load failed|fetch/i.test(err.message)) { 23596 throw Object.assign( 23597 new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request), 23598 { 23599 cause: err.cause || err 23600 } 23601 ); 23602 } 23603 throw AxiosError$1.from(err, err && err.code, config, request); 23604 } 23605}); 23606const knownAdapters = { 23607 http: httpAdapter, 23608 xhr: xhrAdapter, 23609 fetch: fetchAdapter 23610};
vendor: 7,739 bytes, lines 23611-23839
23611utils$1.forEach(knownAdapters, (fn, value) => { 23612 if (fn) { 23613 try { 23614 Object.defineProperty(fn, "name", { value }); 23615 } catch (e) { 23616 } 23617 Object.defineProperty(fn, "adapterName", { value }); 23618 } 23619}); 23620const renderReason = (reason) => `- ${reason}`; 23621const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; 23622const adapters = { 23623 getAdapter: (adapters2) => { 23624 adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2]; 23625 const { length } = adapters2; 23626 let nameOrAdapter; 23627 let adapter; 23628 const rejectedReasons = {}; 23629 for (let i = 0; i < length; i++) { 23630 nameOrAdapter = adapters2[i]; 23631 let id; 23632 adapter = nameOrAdapter; 23633 if (!isResolvedHandle(nameOrAdapter)) { 23634 adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; 23635 if (adapter === void 0) { 23636 throw new AxiosError$1(`Unknown adapter '${id}'`); 23637 } 23638 } 23639 if (adapter) { 23640 break; 23641 } 23642 rejectedReasons[id || "#" + i] = adapter; 23643 } 23644 if (!adapter) { 23645 const reasons = Object.entries(rejectedReasons).map( 23646 ([id, state2]) => `adapter ${id} ` + (state2 === false ? "is not supported by the environment" : "is not available in the build") 23647 ); 23648 let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified"; 23649 throw new AxiosError$1( 23650 `There is no suitable adapter to dispatch the request ` + s, 23651 "ERR_NOT_SUPPORT" 23652 ); 23653 } 23654 return adapter; 23655 }, 23656 adapters: knownAdapters 23657}; 23658function throwIfCancellationRequested(config) { 23659 if (config.cancelToken) { 23660 config.cancelToken.throwIfRequested(); 23661 } 23662 if (config.signal && config.signal.aborted) { 23663 throw new CanceledError$1(null, config); 23664 } 23665} 23666function dispatchRequest(config) { 23667 throwIfCancellationRequested(config); 23668 config.headers = AxiosHeaders$1.from(config.headers); 23669 config.data = transformData.call( 23670 config, 23671 config.transformRequest 23672 ); 23673 if (["post", "put", "patch"].indexOf(config.method) !== -1) { 23674 config.headers.setContentType("application/x-www-form-urlencoded", false); 23675 } 23676 const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); 23677 return adapter(config).then(function onAdapterResolution(response) { 23678 throwIfCancellationRequested(config); 23679 response.data = transformData.call( 23680 config, 23681 config.transformResponse, 23682 response 23683 ); 23684 response.headers = AxiosHeaders$1.from(response.headers); 23685 return response; 23686 }, function onAdapterRejection(reason) { 23687 if (!isCancel$1(reason)) { 23688 throwIfCancellationRequested(config); 23689 if (reason && reason.response) { 23690 reason.response.data = transformData.call( 23691 config, 23692 config.transformResponse, 23693 reason.response 23694 ); 23695 reason.response.headers = AxiosHeaders$1.from(reason.response.headers); 23696 } 23697 } 23698 return Promise.reject(reason); 23699 }); 23700} 23701const VERSION$2 = "1.9.0"; 23702const validators$1 = {}; 23703["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => { 23704 validators$1[type] = function validator2(thing) { 23705 return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type; 23706 }; 23707}); 23708const deprecatedWarnings = {}; 23709validators$1.transitional = function transitional(validator2, version2, message) { 23710 function formatMessage(opt, desc) { 23711 return "[Axios v" + VERSION$2 + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : ""); 23712 } 23713 return (value, opt, opts) => { 23714 if (validator2 === false) { 23715 throw new AxiosError$1( 23716 formatMessage(opt, " has been removed" + (version2 ? " in " + version2 : "")), 23717 AxiosError$1.ERR_DEPRECATED 23718 ); 23719 } 23720 if (version2 && !deprecatedWarnings[opt]) { 23721 deprecatedWarnings[opt] = true; 23722 console.warn( 23723 formatMessage( 23724 opt, 23725 " has been deprecated since v" + version2 + " and will be removed in the near future" 23726 ) 23727 ); 23728 } 23729 return validator2 ? validator2(value, opt, opts) : true; 23730 }; 23731}; 23732validators$1.spelling = function spelling(correctSpelling) { 23733 return (value, opt) => { 23734 console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); 23735 return true; 23736 }; 23737}; 23738function assertOptions(options2, schema, allowUnknown) { 23739 if (typeof options2 !== "object") { 23740 throw new AxiosError$1("options must be an object", AxiosError$1.ERR_BAD_OPTION_VALUE); 23741 } 23742 const keys = Object.keys(options2); 23743 let i = keys.length; 23744 while (i-- > 0) { 23745 const opt = keys[i]; 23746 const validator2 = schema[opt]; 23747 if (validator2) { 23748 const value = options2[opt]; 23749 const result = value === void 0 || validator2(value, opt, options2); 23750 if (result !== true) { 23751 throw new AxiosError$1("option " + opt + " must be " + result, AxiosError$1.ERR_BAD_OPTION_VALUE); 23752 } 23753 continue; 23754 } 23755 if (allowUnknown !== true) { 23756 throw new AxiosError$1("Unknown option " + opt, AxiosError$1.ERR_BAD_OPTION); 23757 } 23758 } 23759} 23760const validator = { 23761 assertOptions, 23762 validators: validators$1 23763}; 23764const validators = validator.validators; 23765let Axios$1 = class Axios { 23766 constructor(instanceConfig) { 23767 this.defaults = instanceConfig || {}; 23768 this.interceptors = { 23769 request: new InterceptorManager(), 23770 response: new InterceptorManager() 23771 }; 23772 } 23773 /** 23774 * Dispatch a request 23775 * 23776 * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) 23777 * @param {?Object} config 23778 * 23779 * @returns {Promise} The Promise to be fulfilled 23780 */ 23781 async request(configOrUrl, config) { 23782 try { 23783 return await this._request(configOrUrl, config); 23784 } catch (err) { 23785 if (err instanceof Error) { 23786 let dummy = {}; 23787 Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); 23788 const stack2 = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : ""; 23789 try { 23790 if (!err.stack) { 23791 err.stack = stack2; 23792 } else if (stack2 && !String(err.stack).endsWith(stack2.replace(/^.+\n.+\n/, ""))) { 23793 err.stack += "\n" + stack2; 23794 } 23795 } catch (e) { 23796 } 23797 } 23798 throw err; 23799 } 23800 } 23801 _request(configOrUrl, config) { 23802 if (typeof configOrUrl === "string") { 23803 config = config || {}; 23804 config.url = configOrUrl; 23805 } else { 23806 config = configOrUrl || {}; 23807 } 23808 config = mergeConfig$1(this.defaults, config); 23809 const { transitional: transitional2, paramsSerializer, headers } = config; 23810 if (transitional2 !== void 0) { 23811 validator.assertOptions(transitional2, { 23812 silentJSONParsing: validators.transitional(validators.boolean), 23813 forcedJSONParsing: validators.transitional(validators.boolean), 23814 clarifyTimeoutError: validators.transitional(validators.boolean) 23815 }, false); 23816 } 23817 if (paramsSerializer != null) { 23818 if (utils$1.isFunction(paramsSerializer)) { 23819 config.paramsSerializer = { 23820 serialize: paramsSerializer 23821 }; 23822 } else { 23823 validator.assertOptions(paramsSerializer, { 23824 encode: validators.function, 23825 serialize: validators.function 23826 }, true); 23827 } 23828 } 23829 if (config.allowAbsoluteUrls !== void 0) ; 23830 else if (this.defaults.allowAbsoluteUrls !== void 0) { 23831 config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; 23832 } else { 23833 config.allowAbsoluteUrls = true; 23834 } 23835 validator.assertOptions(config, { 23836 baseUrl: validators.spelling("baseURL"), 23837 withXsrfToken: validators.spelling("withXSRFToken") 23838 }, true); 23839 config.method = (config.method || this.defaults.method || "get").toLowerCase();
vendor: 5,397 bytes, lines 23840-24018
23840 let contextHeaders = headers && utils$1.merge( 23841 headers.common, 23842 headers[config.method] 23843 ); 23844 headers && utils$1.forEach( 23845 ["delete", "get", "head", "post", "put", "patch", "common"], 23846 (method) => { 23847 delete headers[method]; 23848 } 23849 ); 23850 config.headers = AxiosHeaders$1.concat(contextHeaders, headers); 23851 const requestInterceptorChain = []; 23852 let synchronousRequestInterceptors = true; 23853 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { 23854 if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) { 23855 return; 23856 } 23857 synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; 23858 requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); 23859 }); 23860 const responseInterceptorChain = []; 23861 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { 23862 responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); 23863 }); 23864 let promise; 23865 let i = 0; 23866 let len; 23867 if (!synchronousRequestInterceptors) { 23868 const chain = [dispatchRequest.bind(this), void 0]; 23869 chain.unshift.apply(chain, requestInterceptorChain); 23870 chain.push.apply(chain, responseInterceptorChain); 23871 len = chain.length; 23872 promise = Promise.resolve(config); 23873 while (i < len) { 23874 promise = promise.then(chain[i++], chain[i++]); 23875 } 23876 return promise; 23877 } 23878 len = requestInterceptorChain.length; 23879 let newConfig = config; 23880 i = 0; 23881 while (i < len) { 23882 const onFulfilled = requestInterceptorChain[i++]; 23883 const onRejected = requestInterceptorChain[i++]; 23884 try { 23885 newConfig = onFulfilled(newConfig); 23886 } catch (error) { 23887 onRejected.call(this, error); 23888 break; 23889 } 23890 } 23891 try { 23892 promise = dispatchRequest.call(this, newConfig); 23893 } catch (error) { 23894 return Promise.reject(error); 23895 } 23896 i = 0; 23897 len = responseInterceptorChain.length; 23898 while (i < len) { 23899 promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); 23900 } 23901 return promise; 23902 } 23903 getUri(config) { 23904 config = mergeConfig$1(this.defaults, config); 23905 const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); 23906 return buildURL(fullPath, config.params, config.paramsSerializer); 23907 } 23908}; 23909utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) { 23910 Axios$1.prototype[method] = function(url, config) { 23911 return this.request(mergeConfig$1(config || {}, { 23912 method, 23913 url, 23914 data: (config || {}).data 23915 })); 23916 }; 23917}); 23918utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) { 23919 function generateHTTPMethod(isForm) { 23920 return function httpMethod(url, data, config) { 23921 return this.request(mergeConfig$1(config || {}, { 23922 method, 23923 headers: isForm ? { 23924 "Content-Type": "multipart/form-data" 23925 } : {}, 23926 url, 23927 data 23928 })); 23929 }; 23930 } 23931 Axios$1.prototype[method] = generateHTTPMethod(); 23932 Axios$1.prototype[method + "Form"] = generateHTTPMethod(true); 23933}); 23934let CancelToken$1 = class CancelToken { 23935 constructor(executor) { 23936 if (typeof executor !== "function") { 23937 throw new TypeError("executor must be a function."); 23938 } 23939 let resolvePromise; 23940 this.promise = new Promise(function promiseExecutor(resolve2) { 23941 resolvePromise = resolve2; 23942 }); 23943 const token = this; 23944 this.promise.then((cancel) => { 23945 if (!token._listeners) return; 23946 let i = token._listeners.length; 23947 while (i-- > 0) { 23948 token._listeners[i](cancel); 23949 } 23950 token._listeners = null; 23951 }); 23952 this.promise.then = (onfulfilled) => { 23953 let _resolve; 23954 const promise = new Promise((resolve2) => { 23955 token.subscribe(resolve2); 23956 _resolve = resolve2; 23957 }).then(onfulfilled); 23958 promise.cancel = function reject() { 23959 token.unsubscribe(_resolve); 23960 }; 23961 return promise; 23962 }; 23963 executor(function cancel(message, config, request) { 23964 if (token.reason) { 23965 return; 23966 } 23967 token.reason = new CanceledError$1(message, config, request); 23968 resolvePromise(token.reason); 23969 }); 23970 } 23971 /** 23972 * Throws a `CanceledError` if cancellation has been requested. 23973 */ 23974 throwIfRequested() { 23975 if (this.reason) { 23976 throw this.reason; 23977 } 23978 } 23979 /** 23980 * Subscribe to the cancel signal 23981 */ 23982 subscribe(listener) { 23983 if (this.reason) { 23984 listener(this.reason); 23985 return; 23986 } 23987 if (this._listeners) { 23988 this._listeners.push(listener); 23989 } else { 23990 this._listeners = [listener]; 23991 } 23992 } 23993 /** 23994 * Unsubscribe from the cancel signal 23995 */ 23996 unsubscribe(listener) { 23997 if (!this._listeners) { 23998 return; 23999 } 24000 const index2 = this._listeners.indexOf(listener); 24001 if (index2 !== -1) { 24002 this._listeners.splice(index2, 1); 24003 } 24004 } 24005 toAbortSignal() { 24006 const controller = new AbortController(); 24007 const abort = (err) => { 24008 controller.abort(err); 24009 }; 24010 this.subscribe(abort); 24011 controller.signal.unsubscribe = () => this.unsubscribe(abort); 24012 return controller.signal; 24013 } 24014 /** 24015 * Returns an object that contains a new `CancelToken` and a function that, when called, 24016 * cancels the `CancelToken`. 24017 */ 24018 static source() {
24019 let cancel; 24020 const token = new CancelToken(function executor(c) { 24021 cancel = c; 24022 }); 24023 return { 24024 token, 24025 cancel 24026 }; 24027 } 24028}; 24029function spread$1(callback) { 24030 return function wrap(arr) { 24031 return callback.apply(null, arr); 24032 }; 24033} 24034function isAxiosError$1(payload) { 24035 return utils$1.isObject(payload) && payload.isAxiosError === true; 24036} 24037const HttpStatusCode$1 = { 24038 Continue: 100, 24039 SwitchingProtocols: 101, 24040 Processing: 102, 24041 EarlyHints: 103, 24042 Ok: 200, 24043 Created: 201, 24044 Accepted: 202, 24045 NonAuthoritativeInformation: 203, 24046 NoContent: 204, 24047 ResetContent: 205, 24048 PartialContent: 206, 24049 MultiStatus: 207, 24050 AlreadyReported: 208, 24051 ImUsed: 226, 24052 MultipleChoices: 300, 24053 MovedPermanently: 301, 24054 Found: 302, 24055 SeeOther: 303, 24056 NotModified: 304, 24057 UseProxy: 305, 24058 Unused: 306, 24059 TemporaryRedirect: 307, 24060 PermanentRedirect: 308, 24061 BadRequest: 400, 24062 Unauthorized: 401, 24063 PaymentRequired: 402, 24064 Forbidden: 403, 24065 NotFound: 404, 24066 MethodNotAllowed: 405, 24067 NotAcceptable: 406, 24068 ProxyAuthenticationRequired: 407, 24069 RequestTimeout: 408, 24070 Conflict: 409, 24071 Gone: 410, 24072 LengthRequired: 411, 24073 PreconditionFailed: 412, 24074 PayloadTooLarge: 413, 24075 UriTooLong: 414, 24076 UnsupportedMediaType: 415, 24077 RangeNotSatisfiable: 416, 24078 ExpectationFailed: 417, 24079 ImATeapot: 418, 24080 MisdirectedRequest: 421, 24081 UnprocessableEntity: 422, 24082 Locked: 423, 24083 FailedDependency: 424, 24084 TooEarly: 425, 24085 UpgradeRequired: 426, 24086 PreconditionRequired: 428, 24087 TooManyRequests: 429, 24088 RequestHeaderFieldsTooLarge: 431, 24089 UnavailableForLegalReasons: 451, 24090 InternalServerError: 500, 24091 NotImplemented: 501, 24092 BadGateway: 502, 24093 ServiceUnavailable: 503, 24094 GatewayTimeout: 504, 24095 HttpVersionNotSupported: 505, 24096 VariantAlsoNegotiates: 506, 24097 InsufficientStorage: 507, 24098 LoopDetected: 508, 24099 NotExtended: 510, 24100 NetworkAuthenticationRequired: 511 24101}; 24102Object.entries(HttpStatusCode$1).forEach(([key, value]) => { 24103 HttpStatusCode$1[value] = key; 24104}); 24105function createInstance(defaultConfig) { 24106 const context = new Axios$1(defaultConfig); 24107 const instance = bind(Axios$1.prototype.request, context); 24108 utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true }); 24109 utils$1.extend(instance, context, null, { allOwnKeys: true }); 24110 instance.create = function create2(instanceConfig) { 24111 return createInstance(mergeConfig$1(defaultConfig, instanceConfig)); 24112 }; 24113 return instance; 24114} 24115const axios = createInstance(defaults$1); 24116axios.Axios = Axios$1; 24117axios.CanceledError = CanceledError$1; 24118axios.CancelToken = CancelToken$1; 24119axios.isCancel = isCancel$1; 24120axios.VERSION = VERSION$2; 24121axios.toFormData = toFormData$1; 24122axios.AxiosError = AxiosError$1; 24123axios.Cancel = axios.CanceledError; 24124axios.all = function all(promises) { 24125 return Promise.all(promises); 24126}; 24127axios.spread = spread$1; 24128axios.isAxiosError = isAxiosError$1; 24129axios.mergeConfig = mergeConfig$1; 24130axios.AxiosHeaders = AxiosHeaders$1; 24131axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); 24132axios.getAdapter = adapters.getAdapter; 24133axios.HttpStatusCode = HttpStatusCode$1; 24134axios.default = axios; 24135const { 24136 Axios: Axios2, 24137 AxiosError, 24138 CanceledError, 24139 isCancel, 24140 CancelToken: CancelToken2, 24141 VERSION: VERSION$1, 24142 all: all2, 24143 Cancel, 24144 isAxiosError, 24145 spread, 24146 toFormData, 24147 AxiosHeaders: AxiosHeaders2, 24148 HttpStatusCode, 24149 formToJSON, 24150 getAdapter, 24151 mergeConfig 24152} = axios; 24153const i18nInstance = createI18n({ 24154 legacy: true, 24155 locale: "de", 24156 fallbackLocale: "de", 24157 messages: {}, 24158 globalInjection: true 24159}); 24160function setLocale(i18n, locale) { 24161 if (i18n.mode === "legacy") { 24162 i18n.global.locale = locale; 24163 } else { 24164 i18n.global.locale.value = locale; 24165 } 24166} 24167async function loadLocaleMessages(url, locale) { 24168 try { 24169 const { status, data } = await axios.get(url); 24170 if (status === 200 && typeof data !== "undefined") { 24171 i18nInstance.global.setLocaleMessage(locale, data); 24172 } else { 24173 i18nInstance.global.setLocaleMessage(locale, {}); 24174 } 24175 } catch (error) { 24176 i18nInstance.global.setLocaleMessage(locale, {}); 24177 } 24178 i18nInstance.global.locale = locale; 24179} 24180const _sfc_main$1D = { 24181 name: "App", 24182 components: { 24183 CookieConsent 24184 }, 24185 props: { 24186 environmentPath: { 24187 type: String, 24188 default: "" 24189 }, 24190 assetsPath: { 24191 type: String, 24192 default: null 24193 }, 24194 baseUrl: { 24195 type: String, 24196 default: "" 24197 }, 24198 language: { 24199 type: String, 24200 default: "de" 24201 }, 24202 siteName: { 24203 type: String, 24204 default: "" 24205 } 24206 }, 24207 data() { 24208 return { 24209 loaded: false 24210 }; 24211 }, 24212 computed: { 24213 ...mapState(CONSENT_TYPES.NAME, { 24214 consentDone: CONSENT_TYPES.state.CONSENT_DONE 24215 }) 24216 }, 24217 // Livecycle hooks 24218 created() { 24219 this.setEnvironmentPath({ 24220 [ENVIRONMENT_TYPES.state.ENVIRONMENT_PATH]: this.environmentPath 24221 }); 24222 }, 24223 async mounted() { 24224 this.setEnvironmentVariables(); 24225 await this.loadLanguageFiles(); 24226 this.startResizeListener(); 24227 this.$nextTick(() => { 24228 this.loaded = true; 24229 }); 24230 this.setIsTouchDevice(); 24231 }, 24232 // updated() {}, 24233 // beforeDestroy() {}, 24234 methods: { 24235 ...mapMutations(ENVIRONMENT_TYPES.NAME, { 24236 setBaseUrl: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BASE_URL, 24237 setAssetsPath: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ASSETS_PATH, 24238 setEnvironmentPath: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_PATH, 24239 setSiteName: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SITE_NAME 24240 }), 24241 ...mapActions(ENVIRONMENT_TYPES.NAME, { 24242 startResizeListener: ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_START_RESIZE_LISTENER, 24243 switchLanguage: ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_SWITCH_LANGUAGE 24244 }), 24245 async loadLanguageFiles() { 24246 const i18n_path = "/.rest/i18n/properties/__locale__"; 24247 const basePath = `${this.baseUrl}${i18n_path.replace("__locale__", this.language)}`; 24248 await loadLocaleMessages(basePath, this.language); 24249 await this.switchLanguage({ 24250 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]: this.language 24251 }); 24252 }, 24253 setEnvironmentVariables() { 24254 if (!empty(this.baseUrl)) { 24255 this.setBaseUrl({ 24256 [ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]: this.baseUrl 24257 }); 24258 } 24259 if (!empty(this.assetsPath)) { 24260 this.setAssetsPath({ 24261 [ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]: this.assetsPath 24262 }); 24263 } 24264 if (!empty(this.siteName)) { 24265 this.setSiteName({ 24266 [ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME]: this.siteName 24267 }); 24268 } 24269 }, 24270 setIsTouchDevice() { 24271 if ("ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 || // TODO: Figure out how to detect touch devices on safari browsers 24272 navigator.userAgent.includes("afari") && navigator.userAgent.includes("obile")) { 24273 document.getElementsByTagName("body")[0].classList.add("isTouchDevice"); 24274 } 24275 } 24276 } 24277}; 24278const _hoisted_1$1u = { 24279 class: "skip-to-content", 24280 href: "#main_content" 24281}; 24282const _hoisted_2$16 = { class: "page-wrapper" }; 24283function _sfc_render$1B(_ctx, _cache, $props, $setup, $data, $options) {
24284 const _component_cookie_consent = resolveComponent("cookie-consent"); 24285 return openBlock(), createElementBlock(Fragment, null, [ 24286 $data.loaded && !_ctx.consentDone ? (openBlock(), createBlock(_component_cookie_consent, { key: 0 })) : createCommentVNode("", true), 24287 createBaseVNode("a", _hoisted_1$1u, toDisplayString$1(_ctx.$t("menu.skipToContent.label")), 1), 24288 createBaseVNode("div", _hoisted_2$16, [ 24289 $data.loaded ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("", true) 24290 ]) 24291 ], 64); 24292} 24293const App = /* @__PURE__ */ _export_sfc(_sfc_main$1D, [["render", _sfc_render$1B]]); 24294function getDefaultExportFromCjs(x) { 24295 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; 24296} 24297var cjs; 24298var hasRequiredCjs; 24299function requireCjs() { 24300 if (hasRequiredCjs) return cjs; 24301 hasRequiredCjs = 1; 24302 var isMergeableObject = function isMergeableObject2(value) { 24303 return isNonNullObject(value) && !isSpecial(value); 24304 }; 24305 function isNonNullObject(value) { 24306 return !!value && typeof value === "object"; 24307 } 24308 function isSpecial(value) { 24309 var stringValue = Object.prototype.toString.call(value); 24310 return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); 24311 } 24312 var canUseSymbol = typeof Symbol === "function" && Symbol.for; 24313 var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103; 24314 function isReactElement(value) { 24315 return value.$$typeof === REACT_ELEMENT_TYPE; 24316 } 24317 function emptyTarget(val) { 24318 return Array.isArray(val) ? [] : {}; 24319 } 24320 function cloneUnlessOtherwiseSpecified(value, options2) { 24321 return options2.clone !== false && options2.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options2) : value; 24322 } 24323 function defaultArrayMerge(target, source, options2) { 24324 return target.concat(source).map(function(element) { 24325 return cloneUnlessOtherwiseSpecified(element, options2); 24326 }); 24327 } 24328 function getMergeFunction(key, options2) { 24329 if (!options2.customMerge) { 24330 return deepmerge2; 24331 } 24332 var customMerge = options2.customMerge(key); 24333 return typeof customMerge === "function" ? customMerge : deepmerge2; 24334 } 24335 function getEnumerableOwnPropertySymbols(target) { 24336 return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) { 24337 return target.propertyIsEnumerable(symbol); 24338 }) : []; 24339 } 24340 function getKeys(target) { 24341 return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); 24342 } 24343 function propertyIsOnObject(object, property) { 24344 try { 24345 return property in object; 24346 } catch (_) { 24347 return false; 24348 } 24349 } 24350 function propertyIsUnsafe(target, key) { 24351 return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key)); 24352 } 24353 function mergeObject(target, source, options2) { 24354 var destination = {}; 24355 if (options2.isMergeableObject(target)) { 24356 getKeys(target).forEach(function(key) { 24357 destination[key] = cloneUnlessOtherwiseSpecified(target[key], options2); 24358 }); 24359 } 24360 getKeys(source).forEach(function(key) { 24361 if (propertyIsUnsafe(target, key)) { 24362 return; 24363 } 24364 if (propertyIsOnObject(target, key) && options2.isMergeableObject(source[key])) { 24365 destination[key] = getMergeFunction(key, options2)(target[key], source[key], options2); 24366 } else { 24367 destination[key] = cloneUnlessOtherwiseSpecified(source[key], options2); 24368 } 24369 }); 24370 return destination; 24371 } 24372 function deepmerge2(target, source, options2) { 24373 options2 = options2 || {}; 24374 options2.arrayMerge = options2.arrayMerge || defaultArrayMerge; 24375 options2.isMergeableObject = options2.isMergeableObject || isMergeableObject; 24376 options2.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; 24377 var sourceIsArray = Array.isArray(source); 24378 var targetIsArray = Array.isArray(target); 24379 var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; 24380 if (!sourceAndTargetTypesMatch) { 24381 return cloneUnlessOtherwiseSpecified(source, options2); 24382 } else if (sourceIsArray) { 24383 return options2.arrayMerge(target, source, options2); 24384 } else { 24385 return mergeObject(target, source, options2); 24386 } 24387 } 24388 deepmerge2.all = function deepmergeAll(array, options2) { 24389 if (!Array.isArray(array)) { 24390 throw new Error("first argument should be an array"); 24391 } 24392 return array.reduce(function(prev, next) { 24393 return deepmerge2(prev, next, options2); 24394 }, {}); 24395 }; 24396 var deepmerge_1 = deepmerge2; 24397 cjs = deepmerge_1; 24398 return cjs; 24399} 24400var cjsExports = requireCjs(); 24401const deepmerge = /* @__PURE__ */ getDefaultExportFromCjs(cjsExports); 24402let MockStorage; 24403{ 24404 MockStorage = class { 24405 get length() { 24406 return Object.keys(this).length; 24407 } 24408 key(index2) { 24409 return Object.keys(this)[index2]; 24410 } 24411 setItem(key, data) { 24412 this[key] = data.toString(); 24413 } 24414 getItem(key) { 24415 return this[key]; 24416 } 24417 removeItem(key) { 24418 delete this[key]; 24419 } 24420 clear() { 24421 for (let key of Object.keys(this)) { 24422 delete this[key]; 24423 } 24424 } 24425 }; 24426} 24427class SimplePromiseQueue { 24428 constructor() { 24429 this._queue = []; 24430 this._flushing = false;
24431 } 24432 enqueue(promise) { 24433 this._queue.push(promise); 24434 if (!this._flushing) { 24435 return this.flushQueue(); 24436 } 24437 return Promise.resolve(); 24438 } 24439 flushQueue() { 24440 this._flushing = true; 24441 const chain = () => { 24442 const nextTask = this._queue.shift(); 24443 if (nextTask) { 24444 return nextTask.then(chain); 24445 } else { 24446 this._flushing = false; 24447 } 24448 }; 24449 return Promise.resolve(chain()); 24450 } 24451} 24452const options = { 24453 replaceArrays: { 24454 arrayMerge: (destinationArray, sourceArray, options2) => sourceArray 24455 }, 24456 concatArrays: { 24457 arrayMerge: (target, source, options2) => target.concat(...source) 24458 } 24459}; 24460function merge(into, from, mergeOption) { 24461 return deepmerge(into, from, options[mergeOption]); 24462} 24463let FlattedJSON = JSON; 24464class VuexPersistence { 24465 /** 24466 * Create a {@link VuexPersistence} object. 24467 * Use the <code>plugin</code> function of this class as a 24468 * Vuex plugin. 24469 * @param {PersistOptions} options 24470 */ 24471 constructor(options2) { 24472 this._mutex = new SimplePromiseQueue(); 24473 this.subscriber = (store2) => (handler) => store2.subscribe(handler); 24474 if (typeof options2 === "undefined") 24475 options2 = {}; 24476 this.key = options2.key != null ? options2.key : "vuex"; 24477 this.subscribed = false; 24478 this.supportCircular = options2.supportCircular || false; 24479 if (this.supportCircular) { 24480 FlattedJSON = require("flatted"); 24481 } 24482 this.mergeOption = options2.mergeOption || "replaceArrays"; 24483 let localStorageLitmus = true; 24484 try { 24485 window.localStorage.getItem(""); 24486 } catch (err) { 24487 localStorageLitmus = false; 24488 } 24489 if (options2.storage) { 24490 this.storage = options2.storage; 24491 } else if (localStorageLitmus) { 24492 this.storage = window.localStorage; 24493 } else if (MockStorage) { 24494 this.storage = new MockStorage(); 24495 } else { 24496 throw new Error("Neither 'window' is defined, nor 'MockStorage' is available"); 24497 } 24498 this.reducer = options2.reducer != null ? options2.reducer : options2.modules == null ? (state2) => state2 : (state2) => options2.modules.reduce((a, i) => merge(a, { [i]: state2[i] }, this.mergeOption), { 24499 /* start empty accumulator*/ 24500 }); 24501 this.filter = options2.filter || ((mutation) => true); 24502 this.strictMode = options2.strictMode || false; 24503 this.RESTORE_MUTATION = function RESTORE_MUTATION(state2, savedState) { 24504 const mergedState = merge(state2, savedState || {}, this.mergeOption); 24505 for (const propertyName of Object.keys(mergedState)) { 24506 this._vm.$set(state2, propertyName, mergedState[propertyName]); 24507 } 24508 }; 24509 this.asyncStorage = options2.asyncStorage || false; 24510 if (this.asyncStorage) { 24511 this.restoreState = options2.restoreState != null ? options2.restoreState : (key, storage) => storage.getItem(key).then((value) => typeof value === "string" ? this.supportCircular ? FlattedJSON.parse(value || "{}") : JSON.parse(value || "{}") : value || {}); 24512 this.saveState = options2.saveState != null ? options2.saveState : (key, state2, storage) => storage.setItem( 24513 key, 24514 // Second argument is state _object_ if asyc storage, stringified otherwise 24515 // do not stringify the state if the storage type is async 24516 this.asyncStorage ? merge({}, state2 || {}, this.mergeOption) : this.supportCircular ? FlattedJSON.stringify(state2) : JSON.stringify(state2) 24517 ); 24518 this.plugin = (store2) => { 24519 store2.restored = this.restoreState(this.key, this.storage).then((savedState) => { 24520 if (this.strictMode) { 24521 store2.commit("RESTORE_MUTATION", savedState); 24522 } else { 24523 store2.replaceState(merge(store2.state, savedState || {}, this.mergeOption)); 24524 } 24525 this.subscriber(store2)((mutation, state2) => { 24526 if (this.filter(mutation)) { 24527 this._mutex.enqueue(this.saveState(this.key, this.reducer(state2), this.storage)); 24528 } 24529 }); 24530 this.subscribed = true; 24531 }); 24532 }; 24533 } else { 24534 this.restoreState = options2.restoreState != null ? options2.restoreState : (key, storage) => { 24535 const value = storage.getItem(key); 24536 if (typeof value === "string") { 24537 return this.supportCircular ? FlattedJSON.parse(value || "{}") : JSON.parse(value || "{}"); 24538 } else { 24539 return value || {}; 24540 } 24541 }; 24542 this.saveState = options2.saveState != null ? options2.saveState : (key, state2, storage) => storage.setItem( 24543 key, 24544 // Second argument is state _object_ if localforage, stringified otherwise 24545 this.supportCircular ? FlattedJSON.stringify(state2) : JSON.stringify(state2) 24546 ); 24547 this.plugin = (store2) => { 24548 const savedState = this.restoreState(this.key, this.storage); 24549 if (this.strictMode) { 24550 store2.commit("RESTORE_MUTATION", savedState); 24551 } else { 24552 store2.replaceState(merge(store2.state, savedState || {}, this.mergeOption)); 24553 } 24554 this.subscriber(store2)((mutation, state2) => { 24555 if (this.filter(mutation)) { 24556 this.saveState(this.key, this.reducer(state2), this.storage); 24557 } 24558 }); 24559 this.subscribed = true; 24560 }; 24561 } 24562 } 24563} 24564const state$2 = { 24565 [ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]: "", 24566 [ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]: "/assets", 24567 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]: "de", 24568 [ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME]: "", 24569 [ENVIRONMENT_TYPES.state.ENVIRONMENT_MOBILE_BP]: 640, 24570 [ENVIRONMENT_TYPES.state.ENVIRONMENT_TABLET_BP]: 1024, 24571 [ENVIRONMENT_TYPES.state.ENVIRONMENT_DESKTOP_BP]: 1440, 24572 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LARGE_DESKTOP_BP]: 1680, 24573 [ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]: 1, 24574 // [types.state.ENVIRONMENT_OVERLAY_MODE]: false, 24575 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LOADING]: true, 24576 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_LIST]: {}, 24577 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_IDS]: [], 24578 [ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]: null, 24579 [ENVIRONMENT_TYPES.state.ENVIRONMENT_MENU_OPEN]: false, 24580 [ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION]: null 24581}; 24582const getters$2 = { 24583 [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE](state2) { 24584 return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_MOBILE_BP]; 24585 }, 24586 [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET](state2) { 24587 return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_MOBILE_BP] && state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_TABLET_BP]; 24588 }, 24589 [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_DESKTOP](state2) { 24590 return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_TABLET_BP] && state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_DESKTOP_BP]; 24591 },
24592 [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_LARGE_DESKTOP](state2) { 24593 return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_DESKTOP_BP] && state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LARGE_DESKTOP_BP]; 24594 }, 24595 [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_XLARGE_DESKTOP](state2) { 24596 return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LARGE_DESKTOP_BP]; 24597 }, 24598 [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_ASSETS_URL](state2) { 24599 return `${state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]}${state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]}`; 24600 } 24601}; 24602const mutations$2 = { 24603 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BASE_URL](state2, payload) { 24604 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]; 24605 }, 24606 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ASSETS_PATH](state2, payload) { 24607 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]; 24608 }, 24609 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LANGUAGE](state2, payload) { 24610 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]; 24611 }, 24612 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SITE_NAME](state2, payload) { 24613 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME]; 24614 }, 24615 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_WINDOW_WIDTH](state2, payload) { 24616 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]; 24617 }, 24618 // [types.mutations.SET_ENVIRONMENT_OVERLAY_MODE](state, payload) { 24619 // state[types.state.ENVIRONMENT_OVERLAY_MODE] = payload[types.state.ENVIRONMENT_OVERLAY_MODE]; 24620 // }, 24621 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LOADING](state2, payload) { 24622 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LOADING] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_LOADING]; 24623 }, 24624 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LINK](state2, payload) { 24625 if (!payload.id) return; 24626 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_LIST][payload.id] = payload; 24627 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_IDS].push(payload.id); 24628 }, 24629 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SIDEBAR_PORTAL](state2, payload) { 24630 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]; 24631 }, 24632 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_MENU_OPEN](state2, payload) { 24633 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_MENU_OPEN] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_MENU_OPEN]; 24634 }, 24635 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BREADCRUMB_EXTENSION](state2, payload) { 24636 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION]; 24637 }, 24638 [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ACTIVE_LINK_TEASER](state2, payload) { 24639 state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER]; 24640 } 24641}; 24642function throttle$1(callback, wait, immediate = false, ...args) { 24643 let timeout = null; 24644 let initialCall = true; 24645 return () => { 24646 const callNow = immediate && initialCall; 24647 const next = () => { 24648 callback.apply(this, args); 24649 timeout = null; 24650 }; 24651 if (callNow) { 24652 initialCall = false; 24653 next(); 24654 } 24655 if (!timeout) { 24656 timeout = setTimeout(next, wait); 24657 } 24658 }; 24659} 24660const actions$2 = { 24661 [ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_START_RESIZE_LISTENER]({ commit: commit2 }) { 24662 commit2(ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_WINDOW_WIDTH, { 24663 [ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]: parseInt(window.innerWidth, 10) 24664 }); 24665 window.onresize = throttle$1(() => { 24666 commit2(ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_WINDOW_WIDTH, { 24667 [ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]: parseInt(window.innerWidth, 10) 24668 }); 24669 }, 250); 24670 }, 24671 [ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_SWITCH_LANGUAGE]({ commit: commit2 }, payload) {
24672 setLocale(i18nInstance, payload.language); 24673 commit2(ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LANGUAGE, { 24674 [ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]: payload.language 24675 }); 24676 } 24677}; 24678const environment = { 24679 namespaced: true, 24680 state: state$2, 24681 getters: getters$2, 24682 mutations: mutations$2, 24683 actions: actions$2 24684}; 24685const state$1 = { 24686 [CONSENT_TYPES.state.CONSENT_DONE]: false, 24687 [CONSENT_TYPES.state.CONSENT_VIMEO]: false, 24688 [CONSENT_TYPES.state.CONSENT_YOUTUBE]: false, 24689 [CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]: false, 24690 [CONSENT_TYPES.state.CONSENT_MATOMO]: false, 24691 [CONSENT_TYPES.state.CONSENT_RECAPTCHA]: false 24692}; 24693const getters$1 = {}; 24694const mutations$1 = { 24695 [CONSENT_TYPES.mutations.CONSENT_SET_DONE](state2, payload) { 24696 if (typeof payload[CONSENT_TYPES.state.CONSENT_DONE] !== "undefined") { 24697 state2[CONSENT_TYPES.state.CONSENT_DONE] = payload[CONSENT_TYPES.state.CONSENT_DONE]; 24698 } 24699 }, 24700 [CONSENT_TYPES.mutations.CONSENT_SET_VIMEO](state2, payload) { 24701 if (typeof payload[CONSENT_TYPES.state.CONSENT_VIMEO] !== "undefined") { 24702 state2[CONSENT_TYPES.state.CONSENT_VIMEO] = payload[CONSENT_TYPES.state.CONSENT_VIMEO]; 24703 } 24704 }, 24705 [CONSENT_TYPES.mutations.CONSENT_SET_YOUTUBE](state2, payload) { 24706 if (typeof payload[CONSENT_TYPES.state.CONSENT_YOUTUBE] !== "undefined") { 24707 state2[CONSENT_TYPES.state.CONSENT_YOUTUBE] = payload[CONSENT_TYPES.state.CONSENT_YOUTUBE]; 24708 } 24709 }, 24710 [CONSENT_TYPES.mutations.CONSENT_SET_GOOGLEMAPS](state2, payload) { 24711 if (typeof payload[CONSENT_TYPES.state.CONSENT_GOOGLEMAPS] !== "undefined") { 24712 state2[CONSENT_TYPES.state.CONSENT_GOOGLEMAPS] = payload[CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]; 24713 } 24714 }, 24715 [CONSENT_TYPES.mutations.CONSENT_SET_MATOMO](state2, payload) { 24716 if (typeof payload[CONSENT_TYPES.state.CONSENT_MATOMO] !== "undefined") { 24717 state2[CONSENT_TYPES.state.CONSENT_MATOMO] = payload[CONSENT_TYPES.state.CONSENT_MATOMO]; 24718 } 24719 }, 24720 [CONSENT_TYPES.mutations.CONSENT_SET_RECAPTCHA](state2, payload) { 24721 if (typeof payload[CONSENT_TYPES.state.CONSENT_RECAPTCHA] !== "undefined") { 24722 state2[CONSENT_TYPES.state.CONSENT_RECAPTCHA] = payload[CONSENT_TYPES.state.CONSENT_RECAPTCHA]; 24723 } 24724 } 24725}; 24726const actions$1 = { 24727 // NONE SO FAR 24728}; 24729const consent = { 24730 namespaced: true, 24731 state: state$1, 24732 getters: getters$1, 24733 mutations: mutations$1, 24734 actions: actions$1 24735}; 24736const CART_TYPES = { 24737 NAME: "cart", 24738 state: { 24739 CART_LIST: "list" 24740 }, 24741 mutations: { 24742 CART_SET_ADD: "add", 24743 CART_SET_REMOVE: "remove" 24744 }, 24745 getters: { 24746 CART_GET_EXISTS: "exists" 24747 } 24748}; 24749const state = { 24750 [CART_TYPES.state.CART_LIST]: [] 24751}; 24752const getters = { 24753 [CART_TYPES.getters.CART_GET_EXISTS]: (state2) => (payload) => { 24754 const index2 = state2[CART_TYPES.state.CART_LIST].findIndex((x) => x.code === payload.code); 24755 return index2 > -1; 24756 } 24757}; 24758const mutations = { 24759 [CART_TYPES.mutations.CART_SET_ADD](state2, payload) { 24760 const index2 = state2[CART_TYPES.state.CART_LIST].findIndex((x) => x.code === payload.code); 24761 if (index2 === -1) { 24762 state2[CART_TYPES.state.CART_LIST].push(payload); 24763 } else { 24764 state2[CART_TYPES.state.CART_LIST][index2].count = payload.count; 24765 } 24766 }, 24767 [CART_TYPES.mutations.CART_SET_REMOVE](state2, payload) { 24768 const index2 = state2[CART_TYPES.state.CART_LIST].findIndex((x) => x.code === payload.code); 24769 if (index2 > -1) { 24770 state2[CART_TYPES.state.CART_LIST].splice(index2, 1); 24771 } 24772 } 24773}; 24774const actions = { 24775 // NONE SO FAR 24776}; 24777const cart = { 24778 namespaced: true, 24779 state, 24780 getters, 24781 mutations, 24782 actions 24783}; 24784const vuexPersistConsent = new VuexPersistence({ 24785 storage: window.localStorage, 24786 key: "consent", 24787 modules: [ 24788 "consent" 24789 ] 24790}); 24791const vuexPersistCart = new VuexPersistence({ 24792 storage: window.localStorage, 24793 key: "cart", 24794 modules: [ 24795 "cart" 24796 ] 24797}); 24798const store = index.createStore({ 24799 modules: { 24800 environment, 24801 consent, 24802 cart 24803 }, 24804 plugins: [ 24805 vuexPersistConsent.plugin, 24806 vuexPersistCart.plugin 24807 ] 24808}); 24809function isObject$4(obj) { 24810 return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object; 24811}
vendor: 7,351 bytes, lines 24812-25098
24812function extend$3(target, src) { 24813 if (target === void 0) { 24814 target = {}; 24815 } 24816 if (src === void 0) { 24817 src = {}; 24818 } 24819 const noExtend = ["__proto__", "constructor", "prototype"]; 24820 Object.keys(src).filter((key) => noExtend.indexOf(key) < 0).forEach((key) => { 24821 if (typeof target[key] === "undefined") target[key] = src[key]; 24822 else if (isObject$4(src[key]) && isObject$4(target[key]) && Object.keys(src[key]).length > 0) { 24823 extend$3(target[key], src[key]); 24824 } 24825 }); 24826} 24827const ssrDocument = { 24828 body: {}, 24829 addEventListener() { 24830 }, 24831 removeEventListener() { 24832 }, 24833 activeElement: { 24834 blur() { 24835 }, 24836 nodeName: "" 24837 }, 24838 querySelector() { 24839 return null; 24840 }, 24841 querySelectorAll() { 24842 return []; 24843 }, 24844 getElementById() { 24845 return null; 24846 }, 24847 createEvent() { 24848 return { 24849 initEvent() { 24850 } 24851 }; 24852 }, 24853 createElement() { 24854 return { 24855 children: [], 24856 childNodes: [], 24857 style: {}, 24858 setAttribute() { 24859 }, 24860 getElementsByTagName() { 24861 return []; 24862 } 24863 }; 24864 }, 24865 createElementNS() { 24866 return {}; 24867 }, 24868 importNode() { 24869 return null; 24870 }, 24871 location: { 24872 hash: "", 24873 host: "", 24874 hostname: "", 24875 href: "", 24876 origin: "", 24877 pathname: "", 24878 protocol: "", 24879 search: "" 24880 } 24881}; 24882function getDocument() { 24883 const doc2 = typeof document !== "undefined" ? document : {}; 24884 extend$3(doc2, ssrDocument); 24885 return doc2; 24886} 24887const ssrWindow = { 24888 document: ssrDocument, 24889 navigator: { 24890 userAgent: "" 24891 }, 24892 location: { 24893 hash: "", 24894 host: "", 24895 hostname: "", 24896 href: "", 24897 origin: "", 24898 pathname: "", 24899 protocol: "", 24900 search: "" 24901 }, 24902 history: { 24903 replaceState() { 24904 }, 24905 pushState() { 24906 }, 24907 go() { 24908 }, 24909 back() { 24910 } 24911 }, 24912 CustomEvent: function CustomEvent2() { 24913 return this; 24914 }, 24915 addEventListener() { 24916 }, 24917 removeEventListener() { 24918 }, 24919 getComputedStyle() { 24920 return { 24921 getPropertyValue() { 24922 return ""; 24923 } 24924 }; 24925 }, 24926 Image() { 24927 }, 24928 Date() { 24929 }, 24930 screen: {}, 24931 setTimeout() { 24932 }, 24933 clearTimeout() { 24934 }, 24935 matchMedia() { 24936 return {}; 24937 }, 24938 requestAnimationFrame(callback) { 24939 if (typeof setTimeout === "undefined") { 24940 callback(); 24941 return null; 24942 } 24943 return setTimeout(callback, 0); 24944 }, 24945 cancelAnimationFrame(id) { 24946 if (typeof setTimeout === "undefined") { 24947 return; 24948 } 24949 clearTimeout(id); 24950 } 24951}; 24952function getWindow() { 24953 const win = typeof window !== "undefined" ? window : {}; 24954 extend$3(win, ssrWindow); 24955 return win; 24956} 24957function classesToTokens(classes2) { 24958 if (classes2 === void 0) { 24959 classes2 = ""; 24960 } 24961 return classes2.trim().split(" ").filter((c) => !!c.trim()); 24962} 24963function deleteProps(obj) { 24964 const object = obj; 24965 Object.keys(object).forEach((key) => { 24966 try { 24967 object[key] = null; 24968 } catch (e) { 24969 } 24970 try { 24971 delete object[key]; 24972 } catch (e) { 24973 } 24974 }); 24975} 24976function nextTick(callback, delay) { 24977 if (delay === void 0) { 24978 delay = 0; 24979 } 24980 return setTimeout(callback, delay); 24981} 24982function now$2() { 24983 return Date.now(); 24984} 24985function getComputedStyle$1(el) { 24986 const window2 = getWindow(); 24987 let style; 24988 if (window2.getComputedStyle) { 24989 style = window2.getComputedStyle(el, null); 24990 } 24991 if (!style && el.currentStyle) { 24992 style = el.currentStyle; 24993 } 24994 if (!style) { 24995 style = el.style; 24996 } 24997 return style; 24998} 24999function getTranslate(el, axis) { 25000 if (axis === void 0) { 25001 axis = "x"; 25002 } 25003 const window2 = getWindow(); 25004 let matrix; 25005 let curTransform; 25006 let transformMatrix; 25007 const curStyle = getComputedStyle$1(el); 25008 if (window2.WebKitCSSMatrix) { 25009 curTransform = curStyle.transform || curStyle.webkitTransform; 25010 if (curTransform.split(",").length > 6) { 25011 curTransform = curTransform.split(", ").map((a) => a.replace(",", ".")).join(", "); 25012 } 25013 transformMatrix = new window2.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform); 25014 } else { 25015 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"); 25016 matrix = transformMatrix.toString().split(","); 25017 } 25018 if (axis === "x") { 25019 if (window2.WebKitCSSMatrix) curTransform = transformMatrix.m41; 25020 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 25021 else curTransform = parseFloat(matrix[4]); 25022 } 25023 if (axis === "y") { 25024 if (window2.WebKitCSSMatrix) curTransform = transformMatrix.m42; 25025 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 25026 else curTransform = parseFloat(matrix[5]); 25027 } 25028 return curTransform || 0; 25029} 25030function isObject$3(o) { 25031 return typeof o === "object" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === "Object"; 25032} 25033function isNode(node) { 25034 if (typeof window !== "undefined" && typeof window.HTMLElement !== "undefined") { 25035 return node instanceof HTMLElement; 25036 } 25037 return node && (node.nodeType === 1 || node.nodeType === 11); 25038} 25039function extend$2() { 25040 const to = Object(arguments.length <= 0 ? void 0 : arguments[0]); 25041 const noExtend = ["__proto__", "constructor", "prototype"]; 25042 for (let i = 1; i < arguments.length; i += 1) { 25043 const nextSource = i < 0 || arguments.length <= i ? void 0 : arguments[i]; 25044 if (nextSource !== void 0 && nextSource !== null && !isNode(nextSource)) { 25045 const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0); 25046 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 25047 const nextKey = keysArray[nextIndex]; 25048 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 25049 if (desc !== void 0 && desc.enumerable) { 25050 if (isObject$3(to[nextKey]) && isObject$3(nextSource[nextKey])) { 25051 if (nextSource[nextKey].__swiper__) { 25052 to[nextKey] = nextSource[nextKey]; 25053 } else { 25054 extend$2(to[nextKey], nextSource[nextKey]); 25055 } 25056 } else if (!isObject$3(to[nextKey]) && isObject$3(nextSource[nextKey])) { 25057 to[nextKey] = {}; 25058 if (nextSource[nextKey].__swiper__) { 25059 to[nextKey] = nextSource[nextKey]; 25060 } else { 25061 extend$2(to[nextKey], nextSource[nextKey]); 25062 } 25063 } else { 25064 to[nextKey] = nextSource[nextKey]; 25065 } 25066 } 25067 } 25068 } 25069 } 25070 return to; 25071} 25072function setCSSProperty(el, varName, varValue) { 25073 el.style.setProperty(varName, varValue); 25074} 25075function animateCSSModeScroll(_ref) { 25076 let { 25077 swiper, 25078 targetPosition, 25079 side 25080 } = _ref; 25081 const window2 = getWindow(); 25082 const startPosition = -swiper.translate; 25083 let startTime = null; 25084 let time; 25085 const duration = swiper.params.speed; 25086 swiper.wrapperEl.style.scrollSnapType = "none"; 25087 window2.cancelAnimationFrame(swiper.cssModeFrameID); 25088 const dir = targetPosition > startPosition ? "next" : "prev"; 25089 const isOutOfBound = (current, target) => { 25090 return dir === "next" && current >= target || dir === "prev" && current <= target; 25091 }; 25092 const animate = () => { 25093 time = (/* @__PURE__ */ new Date()).getTime(); 25094 if (startTime === null) { 25095 startTime = time; 25096 } 25097 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 25098 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
25099 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 25100 if (isOutOfBound(currentPosition, targetPosition)) { 25101 currentPosition = targetPosition; 25102 } 25103 swiper.wrapperEl.scrollTo({ 25104 [side]: currentPosition 25105 }); 25106 if (isOutOfBound(currentPosition, targetPosition)) { 25107 swiper.wrapperEl.style.overflow = "hidden"; 25108 swiper.wrapperEl.style.scrollSnapType = ""; 25109 setTimeout(() => { 25110 swiper.wrapperEl.style.overflow = ""; 25111 swiper.wrapperEl.scrollTo({ 25112 [side]: currentPosition 25113 }); 25114 }); 25115 window2.cancelAnimationFrame(swiper.cssModeFrameID); 25116 return; 25117 } 25118 swiper.cssModeFrameID = window2.requestAnimationFrame(animate); 25119 }; 25120 animate(); 25121} 25122function getSlideTransformEl(slideEl) { 25123 return slideEl.querySelector(".swiper-slide-transform") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(".swiper-slide-transform") || slideEl; 25124} 25125function elementChildren(element, selector) { 25126 if (selector === void 0) { 25127 selector = ""; 25128 } 25129 const window2 = getWindow(); 25130 const children = [...element.children]; 25131 if (window2.HTMLSlotElement && element instanceof HTMLSlotElement) { 25132 children.push(...element.assignedElements()); 25133 } 25134 if (!selector) { 25135 return children; 25136 } 25137 return children.filter((el) => el.matches(selector)); 25138} 25139function elementIsChildOfSlot(el, slot) { 25140 const elementsQueue = [slot]; 25141 while (elementsQueue.length > 0) { 25142 const elementToCheck = elementsQueue.shift(); 25143 if (el === elementToCheck) { 25144 return true; 25145 } 25146 elementsQueue.push(...elementToCheck.children, ...elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : [], ...elementToCheck.assignedElements ? elementToCheck.assignedElements() : []); 25147 } 25148} 25149function elementIsChildOf(el, parent) { 25150 const window2 = getWindow(); 25151 let isChild = parent.contains(el); 25152 if (!isChild && window2.HTMLSlotElement && parent instanceof HTMLSlotElement) { 25153 const children = [...parent.assignedElements()]; 25154 isChild = children.includes(el); 25155 if (!isChild) { 25156 isChild = elementIsChildOfSlot(el, parent); 25157 } 25158 } 25159 return isChild; 25160} 25161function showWarning(text) { 25162 try { 25163 console.warn(text); 25164 return; 25165 } catch (err) { 25166 } 25167} 25168function createElement(tag, classes2) { 25169 if (classes2 === void 0) { 25170 classes2 = []; 25171 } 25172 const el = document.createElement(tag); 25173 el.classList.add(...Array.isArray(classes2) ? classes2 : classesToTokens(classes2)); 25174 return el; 25175} 25176function elementOffset(el) { 25177 const window2 = getWindow(); 25178 const document2 = getDocument(); 25179 const box = el.getBoundingClientRect(); 25180 const body = document2.body; 25181 const clientTop = el.clientTop || body.clientTop || 0; 25182 const clientLeft = el.clientLeft || body.clientLeft || 0; 25183 const scrollTop = el === window2 ? window2.scrollY : el.scrollTop; 25184 const scrollLeft = el === window2 ? window2.scrollX : el.scrollLeft; 25185 return { 25186 top: box.top + scrollTop - clientTop, 25187 left: box.left + scrollLeft - clientLeft 25188 }; 25189} 25190function elementPrevAll(el, selector) { 25191 const prevEls = []; 25192 while (el.previousElementSibling) { 25193 const prev = el.previousElementSibling; 25194 if (selector) { 25195 if (prev.matches(selector)) prevEls.push(prev); 25196 } else prevEls.push(prev); 25197 el = prev; 25198 } 25199 return prevEls; 25200} 25201function elementNextAll(el, selector) { 25202 const nextEls = []; 25203 while (el.nextElementSibling) { 25204 const next = el.nextElementSibling; 25205 if (selector) { 25206 if (next.matches(selector)) nextEls.push(next); 25207 } else nextEls.push(next); 25208 el = next; 25209 } 25210 return nextEls; 25211} 25212function elementStyle(el, prop) { 25213 const window2 = getWindow(); 25214 return window2.getComputedStyle(el, null).getPropertyValue(prop); 25215} 25216function elementIndex(el) { 25217 let child = el; 25218 let i; 25219 if (child) { 25220 i = 0; 25221 while ((child = child.previousSibling) !== null) { 25222 if (child.nodeType === 1) i += 1; 25223 } 25224 return i; 25225 } 25226 return void 0; 25227} 25228function elementParents(el, selector) { 25229 const parents = []; 25230 let parent = el.parentElement; 25231 while (parent) { 25232 if (selector) { 25233 if (parent.matches(selector)) parents.push(parent); 25234 } else { 25235 parents.push(parent); 25236 } 25237 parent = parent.parentElement; 25238 } 25239 return parents; 25240} 25241function elementTransitionEnd(el, callback) { 25242 function fireCallBack(e) { 25243 if (e.target !== el) return; 25244 callback.call(el, e); 25245 el.removeEventListener("transitionend", fireCallBack); 25246 } 25247 if (callback) { 25248 el.addEventListener("transitionend", fireCallBack); 25249 } 25250} 25251function elementOuterSize(el, size, includeMargins) { 25252 const window2 = getWindow(); 25253 { 25254 return el[size === "width" ? "offsetWidth" : "offsetHeight"] + parseFloat(window2.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-right" : "margin-top")) + parseFloat(window2.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-left" : "margin-bottom")); 25255 } 25256} 25257function makeElementsArray(el) { 25258 return (Array.isArray(el) ? el : [el]).filter((e) => !!e); 25259} 25260function setInnerHTML(el, html) { 25261 if (html === void 0) { 25262 html = ""; 25263 } 25264 if (typeof trustedTypes !== "undefined") { 25265 el.innerHTML = trustedTypes.createPolicy("html", { 25266 createHTML: (s) => s 25267 }).createHTML(html); 25268 } else { 25269 el.innerHTML = html; 25270 } 25271} 25272let support; 25273function calcSupport() { 25274 const window2 = getWindow(); 25275 const document2 = getDocument(); 25276 return { 25277 smoothScroll: document2.documentElement && document2.documentElement.style && "scrollBehavior" in document2.documentElement.style, 25278 touch: !!("ontouchstart" in window2 || window2.DocumentTouch && document2 instanceof window2.DocumentTouch) 25279 }; 25280}
vendor: 23,858 bytes, lines 25281-25937
25281function getSupport() { 25282 if (!support) { 25283 support = calcSupport(); 25284 } 25285 return support; 25286} 25287let deviceCached; 25288function calcDevice(_temp) { 25289 let { 25290 userAgent 25291 } = _temp === void 0 ? {} : _temp; 25292 const support2 = getSupport(); 25293 const window2 = getWindow(); 25294 const platform2 = window2.navigator.platform; 25295 const ua = userAgent || window2.navigator.userAgent; 25296 const device = { 25297 ios: false, 25298 android: false 25299 }; 25300 const screenWidth = window2.screen.width; 25301 const screenHeight = window2.screen.height; 25302 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); 25303 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 25304 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 25305 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 25306 const windows = platform2 === "Win32"; 25307 let macos = platform2 === "MacIntel"; 25308 const iPadScreens = ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810"]; 25309 if (!ipad && macos && support2.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 25310 ipad = ua.match(/(Version)\/([\d.]+)/); 25311 if (!ipad) ipad = [0, 1, "13_0_0"]; 25312 macos = false; 25313 } 25314 if (android && !windows) { 25315 device.os = "android"; 25316 device.android = true; 25317 } 25318 if (ipad || iphone || ipod) { 25319 device.os = "ios"; 25320 device.ios = true; 25321 } 25322 return device; 25323} 25324function getDevice(overrides) { 25325 if (overrides === void 0) { 25326 overrides = {}; 25327 } 25328 if (!deviceCached) { 25329 deviceCached = calcDevice(overrides); 25330 } 25331 return deviceCached; 25332} 25333let browser; 25334function calcBrowser() { 25335 const window2 = getWindow(); 25336 const device = getDevice(); 25337 let needPerspectiveFix = false; 25338 function isSafari() { 25339 const ua = window2.navigator.userAgent.toLowerCase(); 25340 return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0; 25341 } 25342 if (isSafari()) { 25343 const ua = String(window2.navigator.userAgent); 25344 if (ua.includes("Version/")) { 25345 const [major, minor] = ua.split("Version/")[1].split(" ")[0].split(".").map((num) => Number(num)); 25346 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 25347 } 25348 } 25349 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window2.navigator.userAgent); 25350 const isSafariBrowser = isSafari(); 25351 const need3dFix = isSafariBrowser || isWebView && device.ios; 25352 return { 25353 isSafari: needPerspectiveFix || isSafariBrowser, 25354 needPerspectiveFix, 25355 need3dFix, 25356 isWebView 25357 }; 25358} 25359function getBrowser() { 25360 if (!browser) { 25361 browser = calcBrowser(); 25362 } 25363 return browser; 25364} 25365function Resize(_ref) { 25366 let { 25367 swiper, 25368 on, 25369 emit: emit2 25370 } = _ref; 25371 const window2 = getWindow(); 25372 let observer = null; 25373 let animationFrame = null; 25374 const resizeHandler = () => { 25375 if (!swiper || swiper.destroyed || !swiper.initialized) return; 25376 emit2("beforeResize"); 25377 emit2("resize"); 25378 }; 25379 const createObserver = () => { 25380 if (!swiper || swiper.destroyed || !swiper.initialized) return; 25381 observer = new ResizeObserver((entries) => { 25382 animationFrame = window2.requestAnimationFrame(() => { 25383 const { 25384 width, 25385 height 25386 } = swiper; 25387 let newWidth = width; 25388 let newHeight = height; 25389 entries.forEach((_ref2) => { 25390 let { 25391 contentBoxSize, 25392 contentRect, 25393 target 25394 } = _ref2; 25395 if (target && target !== swiper.el) return; 25396 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 25397 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 25398 }); 25399 if (newWidth !== width || newHeight !== height) { 25400 resizeHandler(); 25401 } 25402 }); 25403 }); 25404 observer.observe(swiper.el); 25405 }; 25406 const removeObserver = () => { 25407 if (animationFrame) { 25408 window2.cancelAnimationFrame(animationFrame); 25409 } 25410 if (observer && observer.unobserve && swiper.el) { 25411 observer.unobserve(swiper.el); 25412 observer = null; 25413 } 25414 }; 25415 const orientationChangeHandler = () => { 25416 if (!swiper || swiper.destroyed || !swiper.initialized) return; 25417 emit2("orientationchange"); 25418 }; 25419 on("init", () => { 25420 if (swiper.params.resizeObserver && typeof window2.ResizeObserver !== "undefined") { 25421 createObserver(); 25422 return; 25423 } 25424 window2.addEventListener("resize", resizeHandler); 25425 window2.addEventListener("orientationchange", orientationChangeHandler); 25426 }); 25427 on("destroy", () => { 25428 removeObserver(); 25429 window2.removeEventListener("resize", resizeHandler); 25430 window2.removeEventListener("orientationchange", orientationChangeHandler); 25431 }); 25432} 25433function Observer(_ref) { 25434 let { 25435 swiper, 25436 extendParams, 25437 on, 25438 emit: emit2 25439 } = _ref; 25440 const observers = []; 25441 const window2 = getWindow(); 25442 const attach = function(target, options2) { 25443 if (options2 === void 0) { 25444 options2 = {}; 25445 } 25446 const ObserverFunc = window2.MutationObserver || window2.WebkitMutationObserver; 25447 const observer = new ObserverFunc((mutations2) => { 25448 if (swiper.__preventObserver__) return; 25449 if (mutations2.length === 1) { 25450 emit2("observerUpdate", mutations2[0]); 25451 return; 25452 } 25453 const observerUpdate = function observerUpdate2() { 25454 emit2("observerUpdate", mutations2[0]); 25455 }; 25456 if (window2.requestAnimationFrame) { 25457 window2.requestAnimationFrame(observerUpdate); 25458 } else { 25459 window2.setTimeout(observerUpdate, 0); 25460 } 25461 }); 25462 observer.observe(target, { 25463 attributes: typeof options2.attributes === "undefined" ? true : options2.attributes, 25464 childList: swiper.isElement || (typeof options2.childList === "undefined" ? true : options2).childList, 25465 characterData: typeof options2.characterData === "undefined" ? true : options2.characterData 25466 }); 25467 observers.push(observer); 25468 }; 25469 const init = () => { 25470 if (!swiper.params.observer) return; 25471 if (swiper.params.observeParents) { 25472 const containerParents = elementParents(swiper.hostEl); 25473 for (let i = 0; i < containerParents.length; i += 1) { 25474 attach(containerParents[i]); 25475 } 25476 } 25477 attach(swiper.hostEl, { 25478 childList: swiper.params.observeSlideChildren 25479 }); 25480 attach(swiper.wrapperEl, { 25481 attributes: false 25482 }); 25483 }; 25484 const destroy = () => { 25485 observers.forEach((observer) => { 25486 observer.disconnect(); 25487 }); 25488 observers.splice(0, observers.length); 25489 }; 25490 extendParams({ 25491 observer: false, 25492 observeParents: false, 25493 observeSlideChildren: false 25494 }); 25495 on("init", init); 25496 on("destroy", destroy); 25497} 25498var eventsEmitter = { 25499 on(events2, handler, priority) { 25500 const self2 = this; 25501 if (!self2.eventsListeners || self2.destroyed) return self2; 25502 if (typeof handler !== "function") return self2; 25503 const method = priority ? "unshift" : "push"; 25504 events2.split(" ").forEach((event) => { 25505 if (!self2.eventsListeners[event]) self2.eventsListeners[event] = []; 25506 self2.eventsListeners[event][method](handler); 25507 }); 25508 return self2; 25509 }, 25510 once(events2, handler, priority) { 25511 const self2 = this; 25512 if (!self2.eventsListeners || self2.destroyed) return self2; 25513 if (typeof handler !== "function") return self2; 25514 function onceHandler() { 25515 self2.off(events2, onceHandler); 25516 if (onceHandler.__emitterProxy) { 25517 delete onceHandler.__emitterProxy; 25518 } 25519 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 25520 args[_key] = arguments[_key]; 25521 } 25522 handler.apply(self2, args); 25523 } 25524 onceHandler.__emitterProxy = handler; 25525 return self2.on(events2, onceHandler, priority); 25526 }, 25527 onAny(handler, priority) { 25528 const self2 = this; 25529 if (!self2.eventsListeners || self2.destroyed) return self2; 25530 if (typeof handler !== "function") return self2; 25531 const method = priority ? "unshift" : "push"; 25532 if (self2.eventsAnyListeners.indexOf(handler) < 0) { 25533 self2.eventsAnyListeners[method](handler); 25534 } 25535 return self2; 25536 }, 25537 offAny(handler) { 25538 const self2 = this; 25539 if (!self2.eventsListeners || self2.destroyed) return self2; 25540 if (!self2.eventsAnyListeners) return self2; 25541 const index2 = self2.eventsAnyListeners.indexOf(handler); 25542 if (index2 >= 0) { 25543 self2.eventsAnyListeners.splice(index2, 1); 25544 } 25545 return self2; 25546 }, 25547 off(events2, handler) { 25548 const self2 = this; 25549 if (!self2.eventsListeners || self2.destroyed) return self2; 25550 if (!self2.eventsListeners) return self2; 25551 events2.split(" ").forEach((event) => { 25552 if (typeof handler === "undefined") { 25553 self2.eventsListeners[event] = []; 25554 } else if (self2.eventsListeners[event]) { 25555 self2.eventsListeners[event].forEach((eventHandler, index2) => { 25556 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 25557 self2.eventsListeners[event].splice(index2, 1); 25558 } 25559 }); 25560 } 25561 }); 25562 return self2; 25563 }, 25564 emit() { 25565 const self2 = this; 25566 if (!self2.eventsListeners || self2.destroyed) return self2; 25567 if (!self2.eventsListeners) return self2; 25568 let events2; 25569 let data; 25570 let context; 25571 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 25572 args[_key2] = arguments[_key2]; 25573 } 25574 if (typeof args[0] === "string" || Array.isArray(args[0])) { 25575 events2 = args[0]; 25576 data = args.slice(1, args.length); 25577 context = self2; 25578 } else { 25579 events2 = args[0].events; 25580 data = args[0].data; 25581 context = args[0].context || self2; 25582 } 25583 data.unshift(context); 25584 const eventsArray = Array.isArray(events2) ? events2 : events2.split(" "); 25585 eventsArray.forEach((event) => { 25586 if (self2.eventsAnyListeners && self2.eventsAnyListeners.length) { 25587 self2.eventsAnyListeners.forEach((eventHandler) => { 25588 eventHandler.apply(context, [event, ...data]); 25589 }); 25590 } 25591 if (self2.eventsListeners && self2.eventsListeners[event]) { 25592 self2.eventsListeners[event].forEach((eventHandler) => { 25593 eventHandler.apply(context, data); 25594 }); 25595 } 25596 }); 25597 return self2; 25598 } 25599}; 25600function updateSize() { 25601 const swiper = this; 25602 let width; 25603 let height; 25604 const el = swiper.el; 25605 if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) { 25606 width = swiper.params.width; 25607 } else { 25608 width = el.clientWidth; 25609 } 25610 if (typeof swiper.params.height !== "undefined" && swiper.params.height !== null) { 25611 height = swiper.params.height; 25612 } else { 25613 height = el.clientHeight; 25614 } 25615 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 25616 return; 25617 } 25618 width = width - parseInt(elementStyle(el, "padding-left") || 0, 10) - parseInt(elementStyle(el, "padding-right") || 0, 10); 25619 height = height - parseInt(elementStyle(el, "padding-top") || 0, 10) - parseInt(elementStyle(el, "padding-bottom") || 0, 10); 25620 if (Number.isNaN(width)) width = 0; 25621 if (Number.isNaN(height)) height = 0; 25622 Object.assign(swiper, { 25623 width, 25624 height, 25625 size: swiper.isHorizontal() ? width : height 25626 }); 25627} 25628function updateSlides() { 25629 const swiper = this; 25630 function getDirectionPropertyValue(node, label) { 25631 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 25632 } 25633 const params = swiper.params; 25634 const { 25635 wrapperEl, 25636 slidesEl, 25637 size: swiperSize, 25638 rtlTranslate: rtl, 25639 wrongRTL 25640 } = swiper; 25641 const isVirtual = swiper.virtual && params.virtual.enabled; 25642 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 25643 const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 25644 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 25645 let snapGrid = []; 25646 const slidesGrid = []; 25647 const slidesSizesGrid = []; 25648 let offsetBefore = params.slidesOffsetBefore; 25649 if (typeof offsetBefore === "function") { 25650 offsetBefore = params.slidesOffsetBefore.call(swiper); 25651 } 25652 let offsetAfter = params.slidesOffsetAfter; 25653 if (typeof offsetAfter === "function") { 25654 offsetAfter = params.slidesOffsetAfter.call(swiper); 25655 } 25656 const previousSnapGridLength = swiper.snapGrid.length; 25657 const previousSlidesGridLength = swiper.slidesGrid.length; 25658 let spaceBetween = params.spaceBetween; 25659 let slidePosition = -offsetBefore; 25660 let prevSlideSize = 0; 25661 let index2 = 0; 25662 if (typeof swiperSize === "undefined") { 25663 return; 25664 } 25665 if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) { 25666 spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize; 25667 } else if (typeof spaceBetween === "string") { 25668 spaceBetween = parseFloat(spaceBetween); 25669 } 25670 swiper.virtualSize = -spaceBetween; 25671 slides.forEach((slideEl) => { 25672 if (rtl) { 25673 slideEl.style.marginLeft = ""; 25674 } else { 25675 slideEl.style.marginRight = ""; 25676 } 25677 slideEl.style.marginBottom = ""; 25678 slideEl.style.marginTop = ""; 25679 }); 25680 if (params.centeredSlides && params.cssMode) { 25681 setCSSProperty(wrapperEl, "--swiper-centered-offset-before", ""); 25682 setCSSProperty(wrapperEl, "--swiper-centered-offset-after", ""); 25683 } 25684 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 25685 if (gridEnabled) { 25686 swiper.grid.initSlides(slides); 25687 } else if (swiper.grid) { 25688 swiper.grid.unsetSlides(); 25689 } 25690 let slideSize; 25691 const shouldResetSlideSize = params.slidesPerView === "auto" && params.breakpoints && Object.keys(params.breakpoints).filter((key) => { 25692 return typeof params.breakpoints[key].slidesPerView !== "undefined"; 25693 }).length > 0; 25694 for (let i = 0; i < slidesLength; i += 1) { 25695 slideSize = 0; 25696 let slide2; 25697 if (slides[i]) slide2 = slides[i]; 25698 if (gridEnabled) { 25699 swiper.grid.updateSlide(i, slide2, slides); 25700 } 25701 if (slides[i] && elementStyle(slide2, "display") === "none") continue; 25702 if (params.slidesPerView === "auto") { 25703 if (shouldResetSlideSize) { 25704 slides[i].style[swiper.getDirectionLabel("width")] = ``; 25705 } 25706 const slideStyles = getComputedStyle(slide2); 25707 const currentTransform = slide2.style.transform; 25708 const currentWebKitTransform = slide2.style.webkitTransform; 25709 if (currentTransform) { 25710 slide2.style.transform = "none"; 25711 } 25712 if (currentWebKitTransform) { 25713 slide2.style.webkitTransform = "none"; 25714 } 25715 if (params.roundLengths) { 25716 slideSize = swiper.isHorizontal() ? elementOuterSize(slide2, "width") : elementOuterSize(slide2, "height"); 25717 } else { 25718 const width = getDirectionPropertyValue(slideStyles, "width"); 25719 const paddingLeft = getDirectionPropertyValue(slideStyles, "padding-left"); 25720 const paddingRight = getDirectionPropertyValue(slideStyles, "padding-right"); 25721 const marginLeft = getDirectionPropertyValue(slideStyles, "margin-left"); 25722 const marginRight = getDirectionPropertyValue(slideStyles, "margin-right"); 25723 const boxSizing = slideStyles.getPropertyValue("box-sizing"); 25724 if (boxSizing && boxSizing === "border-box") { 25725 slideSize = width + marginLeft + marginRight; 25726 } else { 25727 const { 25728 clientWidth, 25729 offsetWidth 25730 } = slide2; 25731 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 25732 } 25733 } 25734 if (currentTransform) { 25735 slide2.style.transform = currentTransform; 25736 } 25737 if (currentWebKitTransform) { 25738 slide2.style.webkitTransform = currentWebKitTransform; 25739 } 25740 if (params.roundLengths) slideSize = Math.floor(slideSize); 25741 } else { 25742 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 25743 if (params.roundLengths) slideSize = Math.floor(slideSize); 25744 if (slides[i]) { 25745 slides[i].style[swiper.getDirectionLabel("width")] = `${slideSize}px`; 25746 } 25747 } 25748 if (slides[i]) { 25749 slides[i].swiperSlideSize = slideSize; 25750 } 25751 slidesSizesGrid.push(slideSize); 25752 if (params.centeredSlides) { 25753 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 25754 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 25755 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 25756 if (Math.abs(slidePosition) < 1 / 1e3) slidePosition = 0; 25757 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 25758 if (index2 % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 25759 slidesGrid.push(slidePosition); 25760 } else { 25761 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 25762 if ((index2 - Math.min(swiper.params.slidesPerGroupSkip, index2)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 25763 slidesGrid.push(slidePosition); 25764 slidePosition = slidePosition + slideSize + spaceBetween; 25765 } 25766 swiper.virtualSize += slideSize + spaceBetween; 25767 prevSlideSize = slideSize; 25768 index2 += 1; 25769 } 25770 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 25771 if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) { 25772 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 25773 } 25774 if (params.setWrapperSize) { 25775 wrapperEl.style[swiper.getDirectionLabel("width")] = `${swiper.virtualSize + spaceBetween}px`; 25776 } 25777 if (gridEnabled) { 25778 swiper.grid.updateWrapperSize(slideSize, snapGrid); 25779 } 25780 if (!params.centeredSlides) { 25781 const newSlidesGrid = []; 25782 for (let i = 0; i < snapGrid.length; i += 1) { 25783 let slidesGridItem = snapGrid[i]; 25784 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 25785 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 25786 newSlidesGrid.push(slidesGridItem); 25787 } 25788 } 25789 snapGrid = newSlidesGrid; 25790 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 25791 snapGrid.push(swiper.virtualSize - swiperSize); 25792 } 25793 } 25794 if (isVirtual && params.loop) { 25795 const size = slidesSizesGrid[0] + spaceBetween; 25796 if (params.slidesPerGroup > 1) { 25797 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 25798 const groupSize = size * params.slidesPerGroup; 25799 for (let i = 0; i < groups; i += 1) { 25800 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 25801 } 25802 } 25803 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 25804 if (params.slidesPerGroup === 1) { 25805 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 25806 } 25807 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 25808 swiper.virtualSize += size; 25809 } 25810 } 25811 if (snapGrid.length === 0) snapGrid = [0]; 25812 if (spaceBetween !== 0) { 25813 const key = swiper.isHorizontal() && rtl ? "marginLeft" : swiper.getDirectionLabel("marginRight"); 25814 slides.filter((_, slideIndex) => { 25815 if (!params.cssMode || params.loop) return true; 25816 if (slideIndex === slides.length - 1) { 25817 return false; 25818 } 25819 return true; 25820 }).forEach((slideEl) => { 25821 slideEl.style[key] = `${spaceBetween}px`; 25822 }); 25823 } 25824 if (params.centeredSlides && params.centeredSlidesBounds) { 25825 let allSlidesSize = 0; 25826 slidesSizesGrid.forEach((slideSizeValue) => { 25827 allSlidesSize += slideSizeValue + (spaceBetween || 0); 25828 }); 25829 allSlidesSize -= spaceBetween; 25830 const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; 25831 snapGrid = snapGrid.map((snap) => { 25832 if (snap <= 0) return -offsetBefore; 25833 if (snap > maxSnap) return maxSnap + offsetAfter; 25834 return snap; 25835 }); 25836 } 25837 if (params.centerInsufficientSlides) { 25838 let allSlidesSize = 0; 25839 slidesSizesGrid.forEach((slideSizeValue) => { 25840 allSlidesSize += slideSizeValue + (spaceBetween || 0); 25841 }); 25842 allSlidesSize -= spaceBetween; 25843 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 25844 if (allSlidesSize + offsetSize < swiperSize) { 25845 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 25846 snapGrid.forEach((snap, snapIndex) => { 25847 snapGrid[snapIndex] = snap - allSlidesOffset; 25848 }); 25849 slidesGrid.forEach((snap, snapIndex) => { 25850 slidesGrid[snapIndex] = snap + allSlidesOffset; 25851 }); 25852 } 25853 } 25854 Object.assign(swiper, { 25855 slides, 25856 snapGrid, 25857 slidesGrid, 25858 slidesSizesGrid 25859 }); 25860 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 25861 setCSSProperty(wrapperEl, "--swiper-centered-offset-before", `${-snapGrid[0]}px`); 25862 setCSSProperty(wrapperEl, "--swiper-centered-offset-after", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 25863 const addToSnapGrid = -swiper.snapGrid[0]; 25864 const addToSlidesGrid = -swiper.slidesGrid[0]; 25865 swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid); 25866 swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid); 25867 } 25868 if (slidesLength !== previousSlidesLength) { 25869 swiper.emit("slidesLengthChange"); 25870 } 25871 if (snapGrid.length !== previousSnapGridLength) { 25872 if (swiper.params.watchOverflow) swiper.checkOverflow(); 25873 swiper.emit("snapGridLengthChange"); 25874 } 25875 if (slidesGrid.length !== previousSlidesGridLength) { 25876 swiper.emit("slidesGridLengthChange"); 25877 } 25878 if (params.watchSlidesProgress) { 25879 swiper.updateSlidesOffset(); 25880 } 25881 swiper.emit("slidesUpdated"); 25882 if (!isVirtual && !params.cssMode && (params.effect === "slide" || params.effect === "fade")) { 25883 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 25884 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 25885 if (slidesLength <= params.maxBackfaceHiddenSlides) { 25886 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 25887 } else if (hasClassBackfaceClassAdded) { 25888 swiper.el.classList.remove(backFaceHiddenClass); 25889 } 25890 } 25891} 25892function updateAutoHeight(speed) { 25893 const swiper = this; 25894 const activeSlides = []; 25895 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 25896 let newHeight = 0; 25897 let i; 25898 if (typeof speed === "number") { 25899 swiper.setTransition(speed); 25900 } else if (speed === true) { 25901 swiper.setTransition(swiper.params.speed); 25902 } 25903 const getSlideByIndex = (index2) => { 25904 if (isVirtual) { 25905 return swiper.slides[swiper.getSlideIndexByData(index2)]; 25906 } 25907 return swiper.slides[index2]; 25908 }; 25909 if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) { 25910 if (swiper.params.centeredSlides) { 25911 (swiper.visibleSlides || []).forEach((slide2) => { 25912 activeSlides.push(slide2); 25913 }); 25914 } else { 25915 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 25916 const index2 = swiper.activeIndex + i; 25917 if (index2 > swiper.slides.length && !isVirtual) break; 25918 activeSlides.push(getSlideByIndex(index2)); 25919 } 25920 } 25921 } else { 25922 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 25923 } 25924 for (i = 0; i < activeSlides.length; i += 1) { 25925 if (typeof activeSlides[i] !== "undefined") { 25926 const height = activeSlides[i].offsetHeight; 25927 newHeight = height > newHeight ? height : newHeight; 25928 } 25929 } 25930 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 25931} 25932function updateSlidesOffset() { 25933 const swiper = this; 25934 const slides = swiper.slides; 25935 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 25936 for (let i = 0; i < slides.length; i += 1) { 25937 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minu
vendor: 2,198 bytes, lines 25937-25985
25937sOffset - swiper.cssOverflowAdjustment(); 25938 } 25939} 25940const toggleSlideClasses$1 = (slideEl, condition, className) => { 25941 if (condition && !slideEl.classList.contains(className)) { 25942 slideEl.classList.add(className); 25943 } else if (!condition && slideEl.classList.contains(className)) { 25944 slideEl.classList.remove(className); 25945 } 25946}; 25947function updateSlidesProgress(translate2) { 25948 if (translate2 === void 0) { 25949 translate2 = this && this.translate || 0; 25950 } 25951 const swiper = this; 25952 const params = swiper.params; 25953 const { 25954 slides, 25955 rtlTranslate: rtl, 25956 snapGrid 25957 } = swiper; 25958 if (slides.length === 0) return; 25959 if (typeof slides[0].swiperSlideOffset === "undefined") swiper.updateSlidesOffset(); 25960 let offsetCenter = -translate2; 25961 if (rtl) offsetCenter = translate2; 25962 swiper.visibleSlidesIndexes = []; 25963 swiper.visibleSlides = []; 25964 let spaceBetween = params.spaceBetween; 25965 if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) { 25966 spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiper.size; 25967 } else if (typeof spaceBetween === "string") { 25968 spaceBetween = parseFloat(spaceBetween); 25969 } 25970 for (let i = 0; i < slides.length; i += 1) { 25971 const slide2 = slides[i]; 25972 let slideOffset = slide2.swiperSlideOffset; 25973 if (params.cssMode && params.centeredSlides) { 25974 slideOffset -= slides[0].swiperSlideOffset; 25975 } 25976 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + spaceBetween); 25977 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + spaceBetween); 25978 const slideBefore = -(offsetCenter - slideOffset); 25979 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 25980 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 25981 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 25982 if (isVisible) { 25983 swiper.visibleSlides.push(slide2); 25984 swiper.visibleSlidesIndexes.push(i); 25985 }
vendor: 4,456 bytes, lines 25986-26105
25986 toggleSlideClasses$1(slide2, isVisible, params.slideVisibleClass); 25987 toggleSlideClasses$1(slide2, isFullyVisible, params.slideFullyVisibleClass); 25988 slide2.progress = rtl ? -slideProgress : slideProgress; 25989 slide2.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 25990 } 25991} 25992function updateProgress(translate2) { 25993 const swiper = this; 25994 if (typeof translate2 === "undefined") { 25995 const multiplier = swiper.rtlTranslate ? -1 : 1; 25996 translate2 = swiper && swiper.translate && swiper.translate * multiplier || 0; 25997 } 25998 const params = swiper.params; 25999 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 26000 let { 26001 progress, 26002 isBeginning, 26003 isEnd, 26004 progressLoop 26005 } = swiper; 26006 const wasBeginning = isBeginning; 26007 const wasEnd = isEnd; 26008 if (translatesDiff === 0) { 26009 progress = 0; 26010 isBeginning = true; 26011 isEnd = true; 26012 } else { 26013 progress = (translate2 - swiper.minTranslate()) / translatesDiff; 26014 const isBeginningRounded = Math.abs(translate2 - swiper.minTranslate()) < 1; 26015 const isEndRounded = Math.abs(translate2 - swiper.maxTranslate()) < 1; 26016 isBeginning = isBeginningRounded || progress <= 0; 26017 isEnd = isEndRounded || progress >= 1; 26018 if (isBeginningRounded) progress = 0; 26019 if (isEndRounded) progress = 1; 26020 } 26021 if (params.loop) { 26022 const firstSlideIndex = swiper.getSlideIndexByData(0); 26023 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 26024 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 26025 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 26026 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 26027 const translateAbs = Math.abs(translate2); 26028 if (translateAbs >= firstSlideTranslate) { 26029 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 26030 } else { 26031 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 26032 } 26033 if (progressLoop > 1) progressLoop -= 1; 26034 } 26035 Object.assign(swiper, { 26036 progress, 26037 progressLoop, 26038 isBeginning, 26039 isEnd 26040 }); 26041 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate2); 26042 if (isBeginning && !wasBeginning) { 26043 swiper.emit("reachBeginning toEdge"); 26044 } 26045 if (isEnd && !wasEnd) { 26046 swiper.emit("reachEnd toEdge"); 26047 } 26048 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 26049 swiper.emit("fromEdge"); 26050 } 26051 swiper.emit("progress", progress); 26052} 26053const toggleSlideClasses = (slideEl, condition, className) => { 26054 if (condition && !slideEl.classList.contains(className)) { 26055 slideEl.classList.add(className); 26056 } else if (!condition && slideEl.classList.contains(className)) { 26057 slideEl.classList.remove(className); 26058 } 26059}; 26060function updateSlidesClasses() { 26061 const swiper = this; 26062 const { 26063 slides, 26064 params, 26065 slidesEl, 26066 activeIndex 26067 } = swiper; 26068 const isVirtual = swiper.virtual && params.virtual.enabled; 26069 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 26070 const getFilteredSlide = (selector) => { 26071 return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 26072 }; 26073 let activeSlide; 26074 let prevSlide; 26075 let nextSlide; 26076 if (isVirtual) { 26077 if (params.loop) { 26078 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 26079 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 26080 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 26081 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 26082 } else { 26083 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 26084 } 26085 } else { 26086 if (gridEnabled) { 26087 activeSlide = slides.find((slideEl) => slideEl.column === activeIndex); 26088 nextSlide = slides.find((slideEl) => slideEl.column === activeIndex + 1); 26089 prevSlide = slides.find((slideEl) => slideEl.column === activeIndex - 1); 26090 } else { 26091 activeSlide = slides[activeIndex]; 26092 } 26093 } 26094 if (activeSlide) { 26095 if (!gridEnabled) { 26096 nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 26097 if (params.loop && !nextSlide) { 26098 nextSlide = slides[0]; 26099 } 26100 prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 26101 if (params.loop && !prevSlide === 0) { 26102 prevSlide = slides[slides.length - 1]; 26103 } 26104 } 26105 }
vendor: 4,380 bytes, lines 26106-26221
26106 slides.forEach((slideEl) => { 26107 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 26108 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 26109 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 26110 }); 26111 swiper.emitSlidesClasses(); 26112} 26113const processLazyPreloader = (swiper, imageEl) => { 26114 if (!swiper || swiper.destroyed || !swiper.params) return; 26115 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 26116 const slideEl = imageEl.closest(slideSelector()); 26117 if (slideEl) { 26118 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 26119 if (!lazyEl && swiper.isElement) { 26120 if (slideEl.shadowRoot) { 26121 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 26122 } else { 26123 requestAnimationFrame(() => { 26124 if (slideEl.shadowRoot) { 26125 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 26126 if (lazyEl) lazyEl.remove(); 26127 } 26128 }); 26129 } 26130 } 26131 if (lazyEl) lazyEl.remove(); 26132 } 26133}; 26134const unlazy = (swiper, index2) => { 26135 if (!swiper.slides[index2]) return; 26136 const imageEl = swiper.slides[index2].querySelector('[loading="lazy"]'); 26137 if (imageEl) imageEl.removeAttribute("loading"); 26138}; 26139const preload = (swiper) => { 26140 if (!swiper || swiper.destroyed || !swiper.params) return; 26141 let amount = swiper.params.lazyPreloadPrevNext; 26142 const len = swiper.slides.length; 26143 if (!len || !amount || amount < 0) return; 26144 amount = Math.min(amount, len); 26145 const slidesPerView = swiper.params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 26146 const activeIndex = swiper.activeIndex; 26147 if (swiper.params.grid && swiper.params.grid.rows > 1) { 26148 const activeColumn = activeIndex; 26149 const preloadColumns = [activeColumn - amount]; 26150 preloadColumns.push(...Array.from({ 26151 length: amount 26152 }).map((_, i) => { 26153 return activeColumn + slidesPerView + i; 26154 })); 26155 swiper.slides.forEach((slideEl, i) => { 26156 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 26157 }); 26158 return; 26159 } 26160 const slideIndexLastInView = activeIndex + slidesPerView - 1; 26161 if (swiper.params.rewind || swiper.params.loop) { 26162 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 26163 const realIndex = (i % len + len) % len; 26164 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 26165 } 26166 } else { 26167 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 26168 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 26169 unlazy(swiper, i); 26170 } 26171 } 26172 } 26173}; 26174function getActiveIndexByTranslate(swiper) { 26175 const { 26176 slidesGrid, 26177 params 26178 } = swiper; 26179 const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 26180 let activeIndex; 26181 for (let i = 0; i < slidesGrid.length; i += 1) { 26182 if (typeof slidesGrid[i + 1] !== "undefined") { 26183 if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 26184 activeIndex = i; 26185 } else if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1]) { 26186 activeIndex = i + 1; 26187 } 26188 } else if (translate2 >= slidesGrid[i]) { 26189 activeIndex = i; 26190 } 26191 } 26192 if (params.normalizeSlideIndex) { 26193 if (activeIndex < 0 || typeof activeIndex === "undefined") activeIndex = 0; 26194 } 26195 return activeIndex; 26196} 26197function updateActiveIndex(newActiveIndex) { 26198 const swiper = this; 26199 const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 26200 const { 26201 snapGrid, 26202 params, 26203 activeIndex: previousIndex, 26204 realIndex: previousRealIndex, 26205 snapIndex: previousSnapIndex 26206 } = swiper; 26207 let activeIndex = newActiveIndex; 26208 let snapIndex; 26209 const getVirtualRealIndex = (aIndex) => { 26210 let realIndex2 = aIndex - swiper.virtual.slidesBefore; 26211 if (realIndex2 < 0) { 26212 realIndex2 = swiper.virtual.slides.length + realIndex2; 26213 } 26214 if (realIndex2 >= swiper.virtual.slides.length) { 26215 realIndex2 -= swiper.virtual.slides.length; 26216 } 26217 return realIndex2; 26218 }; 26219 if (typeof activeIndex === "undefined") { 26220 activeIndex = getActiveIndexByTranslate(swiper); 26221 }
vendor: 45,395 bytes, lines 26222-27525
26222 if (snapGrid.indexOf(translate2) >= 0) { 26223 snapIndex = snapGrid.indexOf(translate2); 26224 } else { 26225 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 26226 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 26227 } 26228 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 26229 if (activeIndex === previousIndex && !swiper.params.loop) { 26230 if (snapIndex !== previousSnapIndex) { 26231 swiper.snapIndex = snapIndex; 26232 swiper.emit("snapIndexChange"); 26233 } 26234 return; 26235 } 26236 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 26237 swiper.realIndex = getVirtualRealIndex(activeIndex); 26238 return; 26239 } 26240 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 26241 let realIndex; 26242 if (swiper.virtual && params.virtual.enabled && params.loop) { 26243 realIndex = getVirtualRealIndex(activeIndex); 26244 } else if (gridEnabled) { 26245 const firstSlideInColumn = swiper.slides.find((slideEl) => slideEl.column === activeIndex); 26246 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute("data-swiper-slide-index"), 10); 26247 if (Number.isNaN(activeSlideIndex)) { 26248 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 26249 } 26250 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 26251 } else if (swiper.slides[activeIndex]) { 26252 const slideIndex = swiper.slides[activeIndex].getAttribute("data-swiper-slide-index"); 26253 if (slideIndex) { 26254 realIndex = parseInt(slideIndex, 10); 26255 } else { 26256 realIndex = activeIndex; 26257 } 26258 } else { 26259 realIndex = activeIndex; 26260 } 26261 Object.assign(swiper, { 26262 previousSnapIndex, 26263 snapIndex, 26264 previousRealIndex, 26265 realIndex, 26266 previousIndex, 26267 activeIndex 26268 }); 26269 if (swiper.initialized) { 26270 preload(swiper); 26271 } 26272 swiper.emit("activeIndexChange"); 26273 swiper.emit("snapIndexChange"); 26274 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 26275 if (previousRealIndex !== realIndex) { 26276 swiper.emit("realIndexChange"); 26277 } 26278 swiper.emit("slideChange"); 26279 } 26280} 26281function updateClickedSlide(el, path) { 26282 const swiper = this; 26283 const params = swiper.params; 26284 let slide2 = el.closest(`.${params.slideClass}, swiper-slide`); 26285 if (!slide2 && swiper.isElement && path && path.length > 1 && path.includes(el)) { 26286 [...path.slice(path.indexOf(el) + 1, path.length)].forEach((pathEl) => { 26287 if (!slide2 && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 26288 slide2 = pathEl; 26289 } 26290 }); 26291 } 26292 let slideFound = false; 26293 let slideIndex; 26294 if (slide2) { 26295 for (let i = 0; i < swiper.slides.length; i += 1) { 26296 if (swiper.slides[i] === slide2) { 26297 slideFound = true; 26298 slideIndex = i; 26299 break; 26300 } 26301 } 26302 } 26303 if (slide2 && slideFound) { 26304 swiper.clickedSlide = slide2; 26305 if (swiper.virtual && swiper.params.virtual.enabled) { 26306 swiper.clickedIndex = parseInt(slide2.getAttribute("data-swiper-slide-index"), 10); 26307 } else { 26308 swiper.clickedIndex = slideIndex; 26309 } 26310 } else { 26311 swiper.clickedSlide = void 0; 26312 swiper.clickedIndex = void 0; 26313 return; 26314 } 26315 if (params.slideToClickedSlide && swiper.clickedIndex !== void 0 && swiper.clickedIndex !== swiper.activeIndex) { 26316 swiper.slideToClickedSlide(); 26317 } 26318} 26319var update3 = { 26320 updateSize, 26321 updateSlides, 26322 updateAutoHeight, 26323 updateSlidesOffset, 26324 updateSlidesProgress, 26325 updateProgress, 26326 updateSlidesClasses, 26327 updateActiveIndex, 26328 updateClickedSlide 26329}; 26330function getSwiperTranslate(axis) { 26331 if (axis === void 0) { 26332 axis = this.isHorizontal() ? "x" : "y"; 26333 } 26334 const swiper = this; 26335 const { 26336 params, 26337 rtlTranslate: rtl, 26338 translate: translate2, 26339 wrapperEl 26340 } = swiper; 26341 if (params.virtualTranslate) { 26342 return rtl ? -translate2 : translate2; 26343 } 26344 if (params.cssMode) { 26345 return translate2; 26346 } 26347 let currentTranslate = getTranslate(wrapperEl, axis); 26348 currentTranslate += swiper.cssOverflowAdjustment(); 26349 if (rtl) currentTranslate = -currentTranslate; 26350 return currentTranslate || 0; 26351} 26352function setTranslate(translate2, byController) { 26353 const swiper = this; 26354 const { 26355 rtlTranslate: rtl, 26356 params, 26357 wrapperEl, 26358 progress 26359 } = swiper; 26360 let x = 0; 26361 let y = 0; 26362 const z = 0; 26363 if (swiper.isHorizontal()) { 26364 x = rtl ? -translate2 : translate2; 26365 } else { 26366 y = translate2; 26367 } 26368 if (params.roundLengths) { 26369 x = Math.floor(x); 26370 y = Math.floor(y); 26371 } 26372 swiper.previousTranslate = swiper.translate; 26373 swiper.translate = swiper.isHorizontal() ? x : y; 26374 if (params.cssMode) { 26375 wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y; 26376 } else if (!params.virtualTranslate) { 26377 if (swiper.isHorizontal()) { 26378 x -= swiper.cssOverflowAdjustment(); 26379 } else { 26380 y -= swiper.cssOverflowAdjustment(); 26381 } 26382 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 26383 } 26384 let newProgress; 26385 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 26386 if (translatesDiff === 0) { 26387 newProgress = 0; 26388 } else { 26389 newProgress = (translate2 - swiper.minTranslate()) / translatesDiff; 26390 } 26391 if (newProgress !== progress) { 26392 swiper.updateProgress(translate2); 26393 } 26394 swiper.emit("setTranslate", swiper.translate, byController); 26395} 26396function minTranslate() { 26397 return -this.snapGrid[0]; 26398} 26399function maxTranslate() { 26400 return -this.snapGrid[this.snapGrid.length - 1]; 26401} 26402function translateTo(translate2, speed, runCallbacks, translateBounds, internal) { 26403 if (translate2 === void 0) { 26404 translate2 = 0; 26405 } 26406 if (speed === void 0) { 26407 speed = this.params.speed; 26408 } 26409 if (runCallbacks === void 0) { 26410 runCallbacks = true; 26411 } 26412 if (translateBounds === void 0) { 26413 translateBounds = true; 26414 } 26415 const swiper = this; 26416 const { 26417 params, 26418 wrapperEl 26419 } = swiper; 26420 if (swiper.animating && params.preventInteractionOnTransition) { 26421 return false; 26422 } 26423 const minTranslate2 = swiper.minTranslate(); 26424 const maxTranslate2 = swiper.maxTranslate(); 26425 let newTranslate; 26426 if (translateBounds && translate2 > minTranslate2) newTranslate = minTranslate2; 26427 else if (translateBounds && translate2 < maxTranslate2) newTranslate = maxTranslate2; 26428 else newTranslate = translate2; 26429 swiper.updateProgress(newTranslate); 26430 if (params.cssMode) { 26431 const isH = swiper.isHorizontal(); 26432 if (speed === 0) { 26433 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate; 26434 } else { 26435 if (!swiper.support.smoothScroll) { 26436 animateCSSModeScroll({ 26437 swiper, 26438 targetPosition: -newTranslate, 26439 side: isH ? "left" : "top" 26440 }); 26441 return true; 26442 } 26443 wrapperEl.scrollTo({ 26444 [isH ? "left" : "top"]: -newTranslate, 26445 behavior: "smooth" 26446 }); 26447 } 26448 return true; 26449 } 26450 if (speed === 0) { 26451 swiper.setTransition(0); 26452 swiper.setTranslate(newTranslate); 26453 if (runCallbacks) { 26454 swiper.emit("beforeTransitionStart", speed, internal); 26455 swiper.emit("transitionEnd"); 26456 } 26457 } else { 26458 swiper.setTransition(speed); 26459 swiper.setTranslate(newTranslate); 26460 if (runCallbacks) { 26461 swiper.emit("beforeTransitionStart", speed, internal); 26462 swiper.emit("transitionStart"); 26463 } 26464 if (!swiper.animating) { 26465 swiper.animating = true; 26466 if (!swiper.onTranslateToWrapperTransitionEnd) { 26467 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd2(e) { 26468 if (!swiper || swiper.destroyed) return; 26469 if (e.target !== this) return; 26470 swiper.wrapperEl.removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); 26471 swiper.onTranslateToWrapperTransitionEnd = null; 26472 delete swiper.onTranslateToWrapperTransitionEnd; 26473 swiper.animating = false; 26474 if (runCallbacks) { 26475 swiper.emit("transitionEnd"); 26476 } 26477 }; 26478 } 26479 swiper.wrapperEl.addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); 26480 } 26481 } 26482 return true; 26483} 26484var translate = { 26485 getTranslate: getSwiperTranslate, 26486 setTranslate, 26487 minTranslate, 26488 maxTranslate, 26489 translateTo 26490}; 26491function setTransition(duration, byController) { 26492 const swiper = this; 26493 if (!swiper.params.cssMode) { 26494 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 26495 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ""; 26496 } 26497 swiper.emit("setTransition", duration, byController); 26498} 26499function transitionEmit(_ref) { 26500 let { 26501 swiper, 26502 runCallbacks, 26503 direction, 26504 step 26505 } = _ref; 26506 const { 26507 activeIndex, 26508 previousIndex 26509 } = swiper; 26510 let dir = direction; 26511 if (!dir) { 26512 if (activeIndex > previousIndex) dir = "next"; 26513 else if (activeIndex < previousIndex) dir = "prev"; 26514 else dir = "reset"; 26515 } 26516 swiper.emit(`transition${step}`); 26517 if (runCallbacks && dir === "reset") { 26518 swiper.emit(`slideResetTransition${step}`); 26519 } else if (runCallbacks && activeIndex !== previousIndex) { 26520 swiper.emit(`slideChangeTransition${step}`); 26521 if (dir === "next") { 26522 swiper.emit(`slideNextTransition${step}`); 26523 } else { 26524 swiper.emit(`slidePrevTransition${step}`); 26525 } 26526 } 26527} 26528function transitionStart(runCallbacks, direction) { 26529 if (runCallbacks === void 0) { 26530 runCallbacks = true; 26531 } 26532 const swiper = this; 26533 const { 26534 params 26535 } = swiper; 26536 if (params.cssMode) return; 26537 if (params.autoHeight) { 26538 swiper.updateAutoHeight(); 26539 } 26540 transitionEmit({ 26541 swiper, 26542 runCallbacks, 26543 direction, 26544 step: "Start" 26545 }); 26546} 26547function transitionEnd(runCallbacks, direction) { 26548 if (runCallbacks === void 0) { 26549 runCallbacks = true; 26550 } 26551 const swiper = this; 26552 const { 26553 params 26554 } = swiper; 26555 swiper.animating = false; 26556 if (params.cssMode) return; 26557 swiper.setTransition(0); 26558 transitionEmit({ 26559 swiper, 26560 runCallbacks, 26561 direction, 26562 step: "End" 26563 }); 26564} 26565var transition = { 26566 setTransition, 26567 transitionStart, 26568 transitionEnd 26569}; 26570function slideTo(index2, speed, runCallbacks, internal, initial) { 26571 if (index2 === void 0) { 26572 index2 = 0; 26573 } 26574 if (runCallbacks === void 0) { 26575 runCallbacks = true; 26576 } 26577 if (typeof index2 === "string") { 26578 index2 = parseInt(index2, 10); 26579 } 26580 const swiper = this; 26581 let slideIndex = index2; 26582 if (slideIndex < 0) slideIndex = 0; 26583 const { 26584 params, 26585 snapGrid, 26586 slidesGrid, 26587 previousIndex, 26588 activeIndex, 26589 rtlTranslate: rtl, 26590 wrapperEl, 26591 enabled 26592 } = swiper; 26593 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 26594 return false; 26595 } 26596 if (typeof speed === "undefined") { 26597 speed = swiper.params.speed; 26598 } 26599 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 26600 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 26601 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 26602 const translate2 = -snapGrid[snapIndex]; 26603 if (params.normalizeSlideIndex) { 26604 for (let i = 0; i < slidesGrid.length; i += 1) { 26605 const normalizedTranslate = -Math.floor(translate2 * 100); 26606 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 26607 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 26608 if (typeof slidesGrid[i + 1] !== "undefined") { 26609 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 26610 slideIndex = i; 26611 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 26612 slideIndex = i + 1; 26613 } 26614 } else if (normalizedTranslate >= normalizedGrid) { 26615 slideIndex = i; 26616 } 26617 } 26618 } 26619 if (swiper.initialized && slideIndex !== activeIndex) { 26620 if (!swiper.allowSlideNext && (rtl ? translate2 > swiper.translate && translate2 > swiper.minTranslate() : translate2 < swiper.translate && translate2 < swiper.minTranslate())) { 26621 return false; 26622 } 26623 if (!swiper.allowSlidePrev && translate2 > swiper.translate && translate2 > swiper.maxTranslate()) { 26624 if ((activeIndex || 0) !== slideIndex) { 26625 return false; 26626 } 26627 } 26628 } 26629 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 26630 swiper.emit("beforeSlideChangeStart"); 26631 } 26632 swiper.updateProgress(translate2); 26633 let direction; 26634 if (slideIndex > activeIndex) direction = "next"; 26635 else if (slideIndex < activeIndex) direction = "prev"; 26636 else direction = "reset"; 26637 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 26638 const isInitialVirtual = isVirtual && initial; 26639 if (!isInitialVirtual && (rtl && -translate2 === swiper.translate || !rtl && translate2 === swiper.translate)) { 26640 swiper.updateActiveIndex(slideIndex); 26641 if (params.autoHeight) { 26642 swiper.updateAutoHeight(); 26643 } 26644 swiper.updateSlidesClasses(); 26645 if (params.effect !== "slide") { 26646 swiper.setTranslate(translate2); 26647 } 26648 if (direction !== "reset") { 26649 swiper.transitionStart(runCallbacks, direction); 26650 swiper.transitionEnd(runCallbacks, direction); 26651 } 26652 return false; 26653 } 26654 if (params.cssMode) { 26655 const isH = swiper.isHorizontal(); 26656 const t = rtl ? translate2 : -translate2; 26657 if (speed === 0) { 26658 if (isVirtual) { 26659 swiper.wrapperEl.style.scrollSnapType = "none"; 26660 swiper._immediateVirtual = true; 26661 } 26662 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 26663 swiper._cssModeVirtualInitialSet = true; 26664 requestAnimationFrame(() => { 26665 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t; 26666 }); 26667 } else { 26668 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t; 26669 } 26670 if (isVirtual) { 26671 requestAnimationFrame(() => { 26672 swiper.wrapperEl.style.scrollSnapType = ""; 26673 swiper._immediateVirtual = false; 26674 }); 26675 } 26676 } else { 26677 if (!swiper.support.smoothScroll) { 26678 animateCSSModeScroll({ 26679 swiper, 26680 targetPosition: t, 26681 side: isH ? "left" : "top" 26682 }); 26683 return true; 26684 } 26685 wrapperEl.scrollTo({ 26686 [isH ? "left" : "top"]: t, 26687 behavior: "smooth" 26688 }); 26689 } 26690 return true; 26691 } 26692 const browser2 = getBrowser(); 26693 const isSafari = browser2.isSafari; 26694 if (isVirtual && !initial && isSafari && swiper.isElement) { 26695 swiper.virtual.update(false, false, slideIndex); 26696 } 26697 swiper.setTransition(speed); 26698 swiper.setTranslate(translate2); 26699 swiper.updateActiveIndex(slideIndex); 26700 swiper.updateSlidesClasses(); 26701 swiper.emit("beforeTransitionStart", speed, internal); 26702 swiper.transitionStart(runCallbacks, direction); 26703 if (speed === 0) { 26704 swiper.transitionEnd(runCallbacks, direction); 26705 } else if (!swiper.animating) { 26706 swiper.animating = true; 26707 if (!swiper.onSlideToWrapperTransitionEnd) { 26708 swiper.onSlideToWrapperTransitionEnd = function transitionEnd2(e) { 26709 if (!swiper || swiper.destroyed) return; 26710 if (e.target !== this) return; 26711 swiper.wrapperEl.removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); 26712 swiper.onSlideToWrapperTransitionEnd = null; 26713 delete swiper.onSlideToWrapperTransitionEnd; 26714 swiper.transitionEnd(runCallbacks, direction); 26715 }; 26716 } 26717 swiper.wrapperEl.addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); 26718 } 26719 return true; 26720} 26721function slideToLoop(index2, speed, runCallbacks, internal) { 26722 if (index2 === void 0) { 26723 index2 = 0; 26724 } 26725 if (runCallbacks === void 0) { 26726 runCallbacks = true; 26727 } 26728 if (typeof index2 === "string") { 26729 const indexAsNumber = parseInt(index2, 10); 26730 index2 = indexAsNumber; 26731 } 26732 const swiper = this; 26733 if (swiper.destroyed) return; 26734 if (typeof speed === "undefined") { 26735 speed = swiper.params.speed; 26736 } 26737 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 26738 let newIndex = index2; 26739 if (swiper.params.loop) { 26740 if (swiper.virtual && swiper.params.virtual.enabled) { 26741 newIndex = newIndex + swiper.virtual.slidesBefore; 26742 } else { 26743 let targetSlideIndex; 26744 if (gridEnabled) { 26745 const slideIndex = newIndex * swiper.params.grid.rows; 26746 targetSlideIndex = swiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex).column; 26747 } else { 26748 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 26749 } 26750 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 26751 const { 26752 centeredSlides 26753 } = swiper.params; 26754 let slidesPerView = swiper.params.slidesPerView; 26755 if (slidesPerView === "auto") { 26756 slidesPerView = swiper.slidesPerViewDynamic(); 26757 } else { 26758 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 26759 if (centeredSlides && slidesPerView % 2 === 0) { 26760 slidesPerView = slidesPerView + 1; 26761 } 26762 } 26763 let needLoopFix = cols - targetSlideIndex < slidesPerView; 26764 if (centeredSlides) { 26765 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 26766 } 26767 if (internal && centeredSlides && swiper.params.slidesPerView !== "auto" && !gridEnabled) { 26768 needLoopFix = false; 26769 } 26770 if (needLoopFix) { 26771 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? "prev" : "next" : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? "next" : "prev"; 26772 swiper.loopFix({ 26773 direction, 26774 slideTo: true, 26775 activeSlideIndex: direction === "next" ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 26776 slideRealIndex: direction === "next" ? swiper.realIndex : void 0 26777 }); 26778 } 26779 if (gridEnabled) { 26780 const slideIndex = newIndex * swiper.params.grid.rows; 26781 newIndex = swiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex).column; 26782 } else { 26783 newIndex = swiper.getSlideIndexByData(newIndex); 26784 } 26785 } 26786 } 26787 requestAnimationFrame(() => { 26788 swiper.slideTo(newIndex, speed, runCallbacks, internal); 26789 }); 26790 return swiper; 26791} 26792function slideNext(speed, runCallbacks, internal) { 26793 if (runCallbacks === void 0) { 26794 runCallbacks = true; 26795 } 26796 const swiper = this; 26797 const { 26798 enabled, 26799 params, 26800 animating 26801 } = swiper; 26802 if (!enabled || swiper.destroyed) return swiper; 26803 if (typeof speed === "undefined") { 26804 speed = swiper.params.speed; 26805 } 26806 let perGroup = params.slidesPerGroup; 26807 if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 26808 perGroup = Math.max(swiper.slidesPerViewDynamic("current", true), 1); 26809 } 26810 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 26811 const isVirtual = swiper.virtual && params.virtual.enabled; 26812 if (params.loop) { 26813 if (animating && !isVirtual && params.loopPreventsSliding) return false; 26814 swiper.loopFix({ 26815 direction: "next" 26816 }); 26817 swiper._clientLeft = swiper.wrapperEl.clientLeft; 26818 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 26819 requestAnimationFrame(() => { 26820 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 26821 }); 26822 return true; 26823 } 26824 } 26825 if (params.rewind && swiper.isEnd) { 26826 return swiper.slideTo(0, speed, runCallbacks, internal); 26827 } 26828 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 26829} 26830function slidePrev(speed, runCallbacks, internal) { 26831 if (runCallbacks === void 0) { 26832 runCallbacks = true; 26833 } 26834 const swiper = this; 26835 const { 26836 params, 26837 snapGrid, 26838 slidesGrid, 26839 rtlTranslate, 26840 enabled, 26841 animating 26842 } = swiper; 26843 if (!enabled || swiper.destroyed) return swiper; 26844 if (typeof speed === "undefined") { 26845 speed = swiper.params.speed; 26846 } 26847 const isVirtual = swiper.virtual && params.virtual.enabled; 26848 if (params.loop) { 26849 if (animating && !isVirtual && params.loopPreventsSliding) return false; 26850 swiper.loopFix({ 26851 direction: "prev" 26852 }); 26853 swiper._clientLeft = swiper.wrapperEl.clientLeft; 26854 } 26855 const translate2 = rtlTranslate ? swiper.translate : -swiper.translate; 26856 function normalize(val) { 26857 if (val < 0) return -Math.floor(Math.abs(val)); 26858 return Math.floor(val); 26859 } 26860 const normalizedTranslate = normalize(translate2); 26861 const normalizedSnapGrid = snapGrid.map((val) => normalize(val)); 26862 const isFreeMode = params.freeMode && params.freeMode.enabled; 26863 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 26864 if (typeof prevSnap === "undefined" && (params.cssMode || isFreeMode)) { 26865 let prevSnapIndex; 26866 snapGrid.forEach((snap, snapIndex) => { 26867 if (normalizedTranslate >= snap) { 26868 prevSnapIndex = snapIndex; 26869 } 26870 }); 26871 if (typeof prevSnapIndex !== "undefined") { 26872 prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 26873 } 26874 } 26875 let prevIndex = 0; 26876 if (typeof prevSnap !== "undefined") { 26877 prevIndex = slidesGrid.indexOf(prevSnap); 26878 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 26879 if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 26880 prevIndex = prevIndex - swiper.slidesPerViewDynamic("previous", true) + 1; 26881 prevIndex = Math.max(prevIndex, 0); 26882 } 26883 } 26884 if (params.rewind && swiper.isBeginning) { 26885 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 26886 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 26887 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 26888 requestAnimationFrame(() => { 26889 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 26890 }); 26891 return true; 26892 } 26893 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 26894} 26895function slideReset(speed, runCallbacks, internal) { 26896 if (runCallbacks === void 0) { 26897 runCallbacks = true; 26898 } 26899 const swiper = this; 26900 if (swiper.destroyed) return; 26901 if (typeof speed === "undefined") { 26902 speed = swiper.params.speed; 26903 } 26904 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 26905} 26906function slideToClosest(speed, runCallbacks, internal, threshold) { 26907 if (runCallbacks === void 0) { 26908 runCallbacks = true; 26909 } 26910 if (threshold === void 0) { 26911 threshold = 0.5; 26912 } 26913 const swiper = this; 26914 if (swiper.destroyed) return; 26915 if (typeof speed === "undefined") { 26916 speed = swiper.params.speed; 26917 } 26918 let index2 = swiper.activeIndex; 26919 const skip = Math.min(swiper.params.slidesPerGroupSkip, index2); 26920 const snapIndex = skip + Math.floor((index2 - skip) / swiper.params.slidesPerGroup); 26921 const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 26922 if (translate2 >= swiper.snapGrid[snapIndex]) { 26923 const currentSnap = swiper.snapGrid[snapIndex]; 26924 const nextSnap = swiper.snapGrid[snapIndex + 1]; 26925 if (translate2 - currentSnap > (nextSnap - currentSnap) * threshold) { 26926 index2 += swiper.params.slidesPerGroup; 26927 } 26928 } else { 26929 const prevSnap = swiper.snapGrid[snapIndex - 1]; 26930 const currentSnap = swiper.snapGrid[snapIndex]; 26931 if (translate2 - prevSnap <= (currentSnap - prevSnap) * threshold) { 26932 index2 -= swiper.params.slidesPerGroup; 26933 } 26934 } 26935 index2 = Math.max(index2, 0); 26936 index2 = Math.min(index2, swiper.slidesGrid.length - 1); 26937 return swiper.slideTo(index2, speed, runCallbacks, internal); 26938} 26939function slideToClickedSlide() { 26940 const swiper = this; 26941 if (swiper.destroyed) return; 26942 const { 26943 params, 26944 slidesEl 26945 } = swiper; 26946 const slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView; 26947 let slideToIndex = swiper.clickedIndex; 26948 let realIndex; 26949 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 26950 if (params.loop) { 26951 if (swiper.animating) return; 26952 realIndex = parseInt(swiper.clickedSlide.getAttribute("data-swiper-slide-index"), 10); 26953 if (params.centeredSlides) { 26954 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 26955 swiper.loopFix(); 26956 slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 26957 nextTick(() => { 26958 swiper.slideTo(slideToIndex); 26959 }); 26960 } else { 26961 swiper.slideTo(slideToIndex); 26962 } 26963 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 26964 swiper.loopFix(); 26965 slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 26966 nextTick(() => { 26967 swiper.slideTo(slideToIndex); 26968 }); 26969 } else { 26970 swiper.slideTo(slideToIndex); 26971 } 26972 } else { 26973 swiper.slideTo(slideToIndex); 26974 } 26975} 26976var slide = { 26977 slideTo, 26978 slideToLoop, 26979 slideNext, 26980 slidePrev, 26981 slideReset, 26982 slideToClosest, 26983 slideToClickedSlide 26984}; 26985function loopCreate(slideRealIndex, initial) { 26986 const swiper = this; 26987 const { 26988 params, 26989 slidesEl 26990 } = swiper; 26991 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 26992 const initSlides = () => { 26993 const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); 26994 slides.forEach((el, index2) => { 26995 el.setAttribute("data-swiper-slide-index", index2); 26996 }); 26997 }; 26998 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 26999 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 27000 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 27001 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 27002 const addBlankSlides = (amountOfSlides) => { 27003 for (let i = 0; i < amountOfSlides; i += 1) { 27004 const slideEl = swiper.isElement ? createElement("swiper-slide", [params.slideBlankClass]) : createElement("div", [params.slideClass, params.slideBlankClass]); 27005 swiper.slidesEl.append(slideEl); 27006 } 27007 }; 27008 if (shouldFillGroup) { 27009 if (params.loopAddBlankSlides) { 27010 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 27011 addBlankSlides(slidesToAdd); 27012 swiper.recalcSlides(); 27013 swiper.updateSlides(); 27014 } else { 27015 showWarning("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"); 27016 } 27017 initSlides(); 27018 } else if (shouldFillGrid) { 27019 if (params.loopAddBlankSlides) { 27020 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 27021 addBlankSlides(slidesToAdd); 27022 swiper.recalcSlides(); 27023 swiper.updateSlides(); 27024 } else { 27025 showWarning("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"); 27026 } 27027 initSlides(); 27028 } else { 27029 initSlides(); 27030 } 27031 swiper.loopFix({ 27032 slideRealIndex, 27033 direction: params.centeredSlides ? void 0 : "next", 27034 initial 27035 }); 27036} 27037function loopFix(_temp) { 27038 let { 27039 slideRealIndex, 27040 slideTo: slideTo2 = true, 27041 direction, 27042 setTranslate: setTranslate2, 27043 activeSlideIndex, 27044 initial, 27045 byController, 27046 byMousewheel 27047 } = _temp === void 0 ? {} : _temp; 27048 const swiper = this; 27049 if (!swiper.params.loop) return; 27050 swiper.emit("beforeLoopFix"); 27051 const { 27052 slides, 27053 allowSlidePrev, 27054 allowSlideNext, 27055 slidesEl, 27056 params 27057 } = swiper; 27058 const { 27059 centeredSlides, 27060 initialSlide 27061 } = params; 27062 swiper.allowSlidePrev = true; 27063 swiper.allowSlideNext = true; 27064 if (swiper.virtual && params.virtual.enabled) { 27065 if (slideTo2) { 27066 if (!params.centeredSlides && swiper.snapIndex === 0) { 27067 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 27068 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 27069 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 27070 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 27071 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 27072 } 27073 } 27074 swiper.allowSlidePrev = allowSlidePrev; 27075 swiper.allowSlideNext = allowSlideNext; 27076 swiper.emit("loopFix"); 27077 return; 27078 } 27079 let slidesPerView = params.slidesPerView; 27080 if (slidesPerView === "auto") { 27081 slidesPerView = swiper.slidesPerViewDynamic(); 27082 } else { 27083 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 27084 if (centeredSlides && slidesPerView % 2 === 0) { 27085 slidesPerView = slidesPerView + 1; 27086 } 27087 } 27088 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 27089 let loopedSlides = slidesPerGroup; 27090 if (loopedSlides % slidesPerGroup !== 0) { 27091 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 27092 } 27093 loopedSlides += params.loopAdditionalSlides; 27094 swiper.loopedSlides = loopedSlides; 27095 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 27096 if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === "cards" && slides.length < slidesPerView + loopedSlides * 2) { 27097 showWarning("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"); 27098 } else if (gridEnabled && params.grid.fill === "row") { 27099 showWarning("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`"); 27100 } 27101 const prependSlidesIndexes = []; 27102 const appendSlidesIndexes = []; 27103 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 27104 const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides; 27105 let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; 27106 if (typeof activeSlideIndex === "undefined") { 27107 activeSlideIndex = swiper.getSlideIndex(slides.find((el) => el.classList.contains(params.slideActiveClass))); 27108 } else { 27109 activeIndex = activeSlideIndex; 27110 } 27111 const isNext = direction === "next" || !direction; 27112 const isPrev = direction === "prev" || !direction; 27113 let slidesPrepended = 0; 27114 let slidesAppended = 0; 27115 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 27116 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate2 === "undefined" ? -slidesPerView / 2 + 0.5 : 0); 27117 if (activeColIndexWithShift < loopedSlides) { 27118 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 27119 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 27120 const index2 = i - Math.floor(i / cols) * cols; 27121 if (gridEnabled) { 27122 const colIndexToPrepend = cols - index2 - 1; 27123 for (let i2 = slides.length - 1; i2 >= 0; i2 -= 1) { 27124 if (slides[i2].column === colIndexToPrepend) prependSlidesIndexes.push(i2); 27125 } 27126 } else { 27127 prependSlidesIndexes.push(cols - index2 - 1); 27128 } 27129 } 27130 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 27131 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 27132 if (isInitialOverflow) { 27133 slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); 27134 } 27135 for (let i = 0; i < slidesAppended; i += 1) { 27136 const index2 = i - Math.floor(i / cols) * cols; 27137 if (gridEnabled) { 27138 slides.forEach((slide2, slideIndex) => { 27139 if (slide2.column === index2) appendSlidesIndexes.push(slideIndex); 27140 }); 27141 } else { 27142 appendSlidesIndexes.push(index2); 27143 } 27144 } 27145 } 27146 swiper.__preventObserver__ = true; 27147 requestAnimationFrame(() => { 27148 swiper.__preventObserver__ = false; 27149 }); 27150 if (swiper.params.effect === "cards" && slides.length < slidesPerView + loopedSlides * 2) { 27151 if (appendSlidesIndexes.includes(activeSlideIndex)) { 27152 appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); 27153 } 27154 if (prependSlidesIndexes.includes(activeSlideIndex)) { 27155 prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); 27156 } 27157 } 27158 if (isPrev) { 27159 prependSlidesIndexes.forEach((index2) => { 27160 slides[index2].swiperLoopMoveDOM = true; 27161 slidesEl.prepend(slides[index2]); 27162 slides[index2].swiperLoopMoveDOM = false; 27163 }); 27164 } 27165 if (isNext) { 27166 appendSlidesIndexes.forEach((index2) => { 27167 slides[index2].swiperLoopMoveDOM = true; 27168 slidesEl.append(slides[index2]); 27169 slides[index2].swiperLoopMoveDOM = false; 27170 }); 27171 } 27172 swiper.recalcSlides(); 27173 if (params.slidesPerView === "auto") { 27174 swiper.updateSlides(); 27175 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 27176 swiper.slides.forEach((slide2, slideIndex) => { 27177 swiper.grid.updateSlide(slideIndex, slide2, swiper.slides); 27178 }); 27179 } 27180 if (params.watchSlidesProgress) { 27181 swiper.updateSlidesOffset(); 27182 } 27183 if (slideTo2) { 27184 if (prependSlidesIndexes.length > 0 && isPrev) { 27185 if (typeof slideRealIndex === "undefined") { 27186 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 27187 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 27188 const diff = newSlideTranslate - currentSlideTranslate; 27189 if (byMousewheel) { 27190 swiper.setTranslate(swiper.translate - diff); 27191 } else { 27192 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 27193 if (setTranslate2) { 27194 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 27195 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 27196 } 27197 } 27198 } else { 27199 if (setTranslate2) { 27200 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 27201 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 27202 swiper.touchEventsData.currentTranslate = swiper.translate; 27203 } 27204 } 27205 } else if (appendSlidesIndexes.length > 0 && isNext) { 27206 if (typeof slideRealIndex === "undefined") { 27207 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 27208 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 27209 const diff = newSlideTranslate - currentSlideTranslate; 27210 if (byMousewheel) { 27211 swiper.setTranslate(swiper.translate - diff); 27212 } else { 27213 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 27214 if (setTranslate2) { 27215 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 27216 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 27217 } 27218 } 27219 } else { 27220 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 27221 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 27222 } 27223 } 27224 } 27225 swiper.allowSlidePrev = allowSlidePrev; 27226 swiper.allowSlideNext = allowSlideNext; 27227 if (swiper.controller && swiper.controller.control && !byController) { 27228 const loopParams = { 27229 slideRealIndex, 27230 direction, 27231 setTranslate: setTranslate2, 27232 activeSlideIndex, 27233 byController: true 27234 }; 27235 if (Array.isArray(swiper.controller.control)) { 27236 swiper.controller.control.forEach((c) => { 27237 if (!c.destroyed && c.params.loop) c.loopFix({ 27238 ...loopParams, 27239 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo2 : false 27240 }); 27241 }); 27242 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 27243 swiper.controller.control.loopFix({ 27244 ...loopParams, 27245 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo2 : false 27246 }); 27247 } 27248 } 27249 swiper.emit("loopFix"); 27250} 27251function loopDestroy() { 27252 const swiper = this; 27253 const { 27254 params, 27255 slidesEl 27256 } = swiper; 27257 if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; 27258 swiper.recalcSlides(); 27259 const newSlidesOrder = []; 27260 swiper.slides.forEach((slideEl) => { 27261 const index2 = typeof slideEl.swiperSlideIndex === "undefined" ? slideEl.getAttribute("data-swiper-slide-index") * 1 : slideEl.swiperSlideIndex; 27262 newSlidesOrder[index2] = slideEl; 27263 }); 27264 swiper.slides.forEach((slideEl) => { 27265 slideEl.removeAttribute("data-swiper-slide-index"); 27266 }); 27267 newSlidesOrder.forEach((slideEl) => { 27268 slidesEl.append(slideEl); 27269 }); 27270 swiper.recalcSlides(); 27271 swiper.slideTo(swiper.realIndex, 0); 27272} 27273var loop = { 27274 loopCreate, 27275 loopFix, 27276 loopDestroy 27277}; 27278function setGrabCursor(moving) { 27279 const swiper = this; 27280 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 27281 const el = swiper.params.touchEventsTarget === "container" ? swiper.el : swiper.wrapperEl; 27282 if (swiper.isElement) { 27283 swiper.__preventObserver__ = true; 27284 } 27285 el.style.cursor = "move"; 27286 el.style.cursor = moving ? "grabbing" : "grab"; 27287 if (swiper.isElement) { 27288 requestAnimationFrame(() => { 27289 swiper.__preventObserver__ = false; 27290 }); 27291 } 27292} 27293function unsetGrabCursor() { 27294 const swiper = this; 27295 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 27296 return; 27297 } 27298 if (swiper.isElement) { 27299 swiper.__preventObserver__ = true; 27300 } 27301 swiper[swiper.params.touchEventsTarget === "container" ? "el" : "wrapperEl"].style.cursor = ""; 27302 if (swiper.isElement) { 27303 requestAnimationFrame(() => { 27304 swiper.__preventObserver__ = false; 27305 }); 27306 } 27307} 27308var grabCursor = { 27309 setGrabCursor, 27310 unsetGrabCursor 27311}; 27312function closestElement(selector, base) { 27313 if (base === void 0) { 27314 base = this; 27315 } 27316 function __closestFrom(el) { 27317 if (!el || el === getDocument() || el === getWindow()) return null; 27318 if (el.assignedSlot) el = el.assignedSlot; 27319 const found = el.closest(selector); 27320 if (!found && !el.getRootNode) { 27321 return null; 27322 } 27323 return found || __closestFrom(el.getRootNode().host); 27324 } 27325 return __closestFrom(base); 27326} 27327function preventEdgeSwipe(swiper, event, startX) { 27328 const window2 = getWindow(); 27329 const { 27330 params 27331 } = swiper; 27332 const edgeSwipeDetection = params.edgeSwipeDetection; 27333 const edgeSwipeThreshold = params.edgeSwipeThreshold; 27334 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window2.innerWidth - edgeSwipeThreshold)) { 27335 if (edgeSwipeDetection === "prevent") { 27336 event.preventDefault(); 27337 return true; 27338 } 27339 return false; 27340 } 27341 return true; 27342} 27343function onTouchStart(event) { 27344 const swiper = this; 27345 const document2 = getDocument(); 27346 let e = event; 27347 if (e.originalEvent) e = e.originalEvent; 27348 const data = swiper.touchEventsData; 27349 if (e.type === "pointerdown") { 27350 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 27351 return; 27352 } 27353 data.pointerId = e.pointerId; 27354 } else if (e.type === "touchstart" && e.targetTouches.length === 1) { 27355 data.touchId = e.targetTouches[0].identifier; 27356 } 27357 if (e.type === "touchstart") { 27358 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 27359 return; 27360 } 27361 const { 27362 params, 27363 touches, 27364 enabled 27365 } = swiper; 27366 if (!enabled) return; 27367 if (!params.simulateTouch && e.pointerType === "mouse") return; 27368 if (swiper.animating && params.preventInteractionOnTransition) { 27369 return; 27370 } 27371 if (!swiper.animating && params.cssMode && params.loop) { 27372 swiper.loopFix(); 27373 } 27374 let targetEl = e.target; 27375 if (params.touchEventsTarget === "wrapper") { 27376 if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; 27377 } 27378 if ("which" in e && e.which === 3) return; 27379 if ("button" in e && e.button > 0) return; 27380 if (data.isTouched && data.isMoved) return; 27381 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ""; 27382 const eventPath = e.composedPath ? e.composedPath() : e.path; 27383 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 27384 targetEl = eventPath[0]; 27385 } 27386 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 27387 const isTargetShadow = !!(e.target && e.target.shadowRoot); 27388 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 27389 swiper.allowClick = true; 27390 return; 27391 } 27392 if (params.swipeHandler) { 27393 if (!targetEl.closest(params.swipeHandler)) return; 27394 } 27395 touches.currentX = e.pageX; 27396 touches.currentY = e.pageY; 27397 const startX = touches.currentX; 27398 const startY = touches.currentY; 27399 if (!preventEdgeSwipe(swiper, e, startX)) { 27400 return; 27401 } 27402 Object.assign(data, { 27403 isTouched: true, 27404 isMoved: false, 27405 allowTouchCallbacks: true, 27406 isScrolling: void 0, 27407 startMoving: void 0 27408 }); 27409 touches.startX = startX; 27410 touches.startY = startY; 27411 data.touchStartTime = now$2(); 27412 swiper.allowClick = true; 27413 swiper.updateSize(); 27414 swiper.swipeDirection = void 0; 27415 if (params.threshold > 0) data.allowThresholdMove = false; 27416 let preventDefault = true; 27417 if (targetEl.matches(data.focusableElements)) { 27418 preventDefault = false; 27419 if (targetEl.nodeName === "SELECT") { 27420 data.isTouched = false; 27421 } 27422 } 27423 if (document2.activeElement && document2.activeElement.matches(data.focusableElements) && document2.activeElement !== targetEl && (e.pointerType === "mouse" || e.pointerType !== "mouse" && !targetEl.matches(data.focusableElements))) { 27424 document2.activeElement.blur(); 27425 } 27426 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 27427 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 27428 e.preventDefault(); 27429 } 27430 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 27431 swiper.freeMode.onTouchStart(); 27432 } 27433 swiper.emit("touchStart", e); 27434} 27435function onTouchMove(event) { 27436 const document2 = getDocument(); 27437 const swiper = this; 27438 const data = swiper.touchEventsData; 27439 const { 27440 params, 27441 touches, 27442 rtlTranslate: rtl, 27443 enabled 27444 } = swiper; 27445 if (!enabled) return; 27446 if (!params.simulateTouch && event.pointerType === "mouse") return; 27447 let e = event; 27448 if (e.originalEvent) e = e.originalEvent; 27449 if (e.type === "pointermove") { 27450 if (data.touchId !== null) return; 27451 const id = e.pointerId; 27452 if (id !== data.pointerId) return; 27453 } 27454 let targetTouch; 27455 if (e.type === "touchmove") { 27456 targetTouch = [...e.changedTouches].find((t) => t.identifier === data.touchId); 27457 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 27458 } else { 27459 targetTouch = e; 27460 } 27461 if (!data.isTouched) { 27462 if (data.startMoving && data.isScrolling) { 27463 swiper.emit("touchMoveOpposite", e); 27464 } 27465 return; 27466 } 27467 const pageX = targetTouch.pageX; 27468 const pageY = targetTouch.pageY; 27469 if (e.preventedByNestedSwiper) { 27470 touches.startX = pageX; 27471 touches.startY = pageY; 27472 return; 27473 } 27474 if (!swiper.allowTouchMove) { 27475 if (!e.target.matches(data.focusableElements)) { 27476 swiper.allowClick = false; 27477 } 27478 if (data.isTouched) { 27479 Object.assign(touches, { 27480 startX: pageX, 27481 startY: pageY, 27482 currentX: pageX, 27483 currentY: pageY 27484 }); 27485 data.touchStartTime = now$2(); 27486 } 27487 return; 27488 } 27489 if (params.touchReleaseOnEdges && !params.loop) { 27490 if (swiper.isVertical()) { 27491 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 27492 data.isTouched = false; 27493 data.isMoved = false; 27494 return; 27495 } 27496 } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { 27497 return; 27498 } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { 27499 return; 27500 } 27501 } 27502 if (document2.activeElement && document2.activeElement.matches(data.focusableElements) && document2.activeElement !== e.target && e.pointerType !== "mouse") { 27503 document2.activeElement.blur(); 27504 } 27505 if (document2.activeElement) { 27506 if (e.target === document2.activeElement && e.target.matches(data.focusableElements)) { 27507 data.isMoved = true; 27508 swiper.allowClick = false; 27509 return; 27510 } 27511 } 27512 if (data.allowTouchCallbacks) { 27513 swiper.emit("touchMove", e); 27514 } 27515 touches.previousX = touches.currentX; 27516 touches.previousY = touches.currentY; 27517 touches.currentX = pageX; 27518 touches.currentY = pageY; 27519 const diffX = touches.currentX - touches.startX; 27520 const diffY = touches.currentY - touches.startY; 27521 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 27522 if (typeof data.isScrolling === "undefined") { 27523 let touchAngle; 27524 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 27525 data.isScrolling = false;
vendor: 8,708 bytes, lines 27526-27746
27526 } else { 27527 if (diffX * diffX + diffY * diffY >= 25) { 27528 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 27529 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 27530 } 27531 } 27532 } 27533 if (data.isScrolling) { 27534 swiper.emit("touchMoveOpposite", e); 27535 } 27536 if (typeof data.startMoving === "undefined") { 27537 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 27538 data.startMoving = true; 27539 } 27540 } 27541 if (data.isScrolling || e.type === "touchmove" && data.preventTouchMoveFromPointerMove) { 27542 data.isTouched = false; 27543 return; 27544 } 27545 if (!data.startMoving) { 27546 return; 27547 } 27548 swiper.allowClick = false; 27549 if (!params.cssMode && e.cancelable) { 27550 e.preventDefault(); 27551 } 27552 if (params.touchMoveStopPropagation && !params.nested) { 27553 e.stopPropagation(); 27554 } 27555 let diff = swiper.isHorizontal() ? diffX : diffY; 27556 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 27557 if (params.oneWayMovement) { 27558 diff = Math.abs(diff) * (rtl ? 1 : -1); 27559 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 27560 } 27561 touches.diff = diff; 27562 diff *= params.touchRatio; 27563 if (rtl) { 27564 diff = -diff; 27565 touchesDiff = -touchesDiff; 27566 } 27567 const prevTouchesDirection = swiper.touchesDirection; 27568 swiper.swipeDirection = diff > 0 ? "prev" : "next"; 27569 swiper.touchesDirection = touchesDiff > 0 ? "prev" : "next"; 27570 const isLoop = swiper.params.loop && !params.cssMode; 27571 const allowLoopFix = swiper.touchesDirection === "next" && swiper.allowSlideNext || swiper.touchesDirection === "prev" && swiper.allowSlidePrev; 27572 if (!data.isMoved) { 27573 if (isLoop && allowLoopFix) { 27574 swiper.loopFix({ 27575 direction: swiper.swipeDirection 27576 }); 27577 } 27578 data.startTranslate = swiper.getTranslate(); 27579 swiper.setTransition(0); 27580 if (swiper.animating) { 27581 const evt = new window.CustomEvent("transitionend", { 27582 bubbles: true, 27583 cancelable: true, 27584 detail: { 27585 bySwiperTouchMove: true 27586 } 27587 }); 27588 swiper.wrapperEl.dispatchEvent(evt); 27589 } 27590 data.allowMomentumBounce = false; 27591 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 27592 swiper.setGrabCursor(true); 27593 } 27594 swiper.emit("sliderFirstMove", e); 27595 } 27596 (/* @__PURE__ */ new Date()).getTime(); 27597 if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 27598 Object.assign(touches, { 27599 startX: pageX, 27600 startY: pageY, 27601 currentX: pageX, 27602 currentY: pageY, 27603 startTranslate: data.currentTranslate 27604 }); 27605 data.loopSwapReset = true; 27606 data.startTranslate = data.currentTranslate; 27607 return; 27608 } 27609 swiper.emit("sliderMove", e); 27610 data.isMoved = true; 27611 data.currentTranslate = diff + data.startTranslate; 27612 let disableParentSwiper = true; 27613 let resistanceRatio = params.resistanceRatio; 27614 if (params.touchReleaseOnEdges) { 27615 resistanceRatio = 0; 27616 } 27617 if (diff > 0) { 27618 if (isLoop && allowLoopFix && true && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { 27619 swiper.loopFix({ 27620 direction: "prev", 27621 setTranslate: true, 27622 activeSlideIndex: 0 27623 }); 27624 } 27625 if (data.currentTranslate > swiper.minTranslate()) { 27626 disableParentSwiper = false; 27627 if (params.resistance) { 27628 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 27629 } 27630 } 27631 } else if (diff < 0) { 27632 if (isLoop && allowLoopFix && true && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { 27633 swiper.loopFix({ 27634 direction: "next", 27635 setTranslate: true, 27636 activeSlideIndex: swiper.slides.length - (params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 27637 }); 27638 } 27639 if (data.currentTranslate < swiper.maxTranslate()) { 27640 disableParentSwiper = false; 27641 if (params.resistance) { 27642 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 27643 } 27644 } 27645 } 27646 if (disableParentSwiper) { 27647 e.preventedByNestedSwiper = true; 27648 } 27649 if (!swiper.allowSlideNext && swiper.swipeDirection === "next" && data.currentTranslate < data.startTranslate) { 27650 data.currentTranslate = data.startTranslate; 27651 } 27652 if (!swiper.allowSlidePrev && swiper.swipeDirection === "prev" && data.currentTranslate > data.startTranslate) { 27653 data.currentTranslate = data.startTranslate; 27654 } 27655 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 27656 data.currentTranslate = data.startTranslate; 27657 } 27658 if (params.threshold > 0) { 27659 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 27660 if (!data.allowThresholdMove) { 27661 data.allowThresholdMove = true; 27662 touches.startX = touches.currentX; 27663 touches.startY = touches.currentY; 27664 data.currentTranslate = data.startTranslate; 27665 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 27666 return; 27667 } 27668 } else { 27669 data.currentTranslate = data.startTranslate; 27670 return; 27671 } 27672 } 27673 if (!params.followFinger || params.cssMode) return; 27674 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 27675 swiper.updateActiveIndex(); 27676 swiper.updateSlidesClasses(); 27677 } 27678 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 27679 swiper.freeMode.onTouchMove(); 27680 } 27681 swiper.updateProgress(data.currentTranslate); 27682 swiper.setTranslate(data.currentTranslate); 27683} 27684function onTouchEnd(event) { 27685 const swiper = this; 27686 const data = swiper.touchEventsData; 27687 let e = event; 27688 if (e.originalEvent) e = e.originalEvent; 27689 let targetTouch; 27690 const isTouchEvent = e.type === "touchend" || e.type === "touchcancel"; 27691 if (!isTouchEvent) { 27692 if (data.touchId !== null) return; 27693 if (e.pointerId !== data.pointerId) return; 27694 targetTouch = e; 27695 } else { 27696 targetTouch = [...e.changedTouches].find((t) => t.identifier === data.touchId); 27697 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 27698 } 27699 if (["pointercancel", "pointerout", "pointerleave", "contextmenu"].includes(e.type)) { 27700 const proceed = ["pointercancel", "contextmenu"].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 27701 if (!proceed) { 27702 return; 27703 } 27704 } 27705 data.pointerId = null; 27706 data.touchId = null; 27707 const { 27708 params, 27709 touches, 27710 rtlTranslate: rtl, 27711 slidesGrid, 27712 enabled 27713 } = swiper; 27714 if (!enabled) return; 27715 if (!params.simulateTouch && e.pointerType === "mouse") return; 27716 if (data.allowTouchCallbacks) { 27717 swiper.emit("touchEnd", e); 27718 } 27719 data.allowTouchCallbacks = false; 27720 if (!data.isTouched) { 27721 if (data.isMoved && params.grabCursor) { 27722 swiper.setGrabCursor(false); 27723 } 27724 data.isMoved = false; 27725 data.startMoving = false; 27726 return; 27727 } 27728 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 27729 swiper.setGrabCursor(false); 27730 } 27731 const touchEndTime = now$2(); 27732 const timeDiff = touchEndTime - data.touchStartTime; 27733 if (swiper.allowClick) { 27734 const pathTree = e.path || e.composedPath && e.composedPath(); 27735 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 27736 swiper.emit("tap click", e); 27737 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 27738 swiper.emit("doubleTap doubleClick", e); 27739 } 27740 } 27741 data.lastClickTime = now$2(); 27742 nextTick(() => { 27743 if (!swiper.destroyed) swiper.allowClick = true; 27744 }); 27745 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 27746 data.isTouched = false;
vendor: 5,975 bytes, lines 27747-27923
27747 data.isMoved = false; 27748 data.startMoving = false; 27749 return; 27750 } 27751 data.isTouched = false; 27752 data.isMoved = false; 27753 data.startMoving = false; 27754 let currentPos; 27755 if (params.followFinger) { 27756 currentPos = rtl ? swiper.translate : -swiper.translate; 27757 } else { 27758 currentPos = -data.currentTranslate; 27759 } 27760 if (params.cssMode) { 27761 return; 27762 } 27763 if (params.freeMode && params.freeMode.enabled) { 27764 swiper.freeMode.onTouchEnd({ 27765 currentPos 27766 }); 27767 return; 27768 } 27769 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 27770 let stopIndex = 0; 27771 let groupSize = swiper.slidesSizesGrid[0]; 27772 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 27773 const increment2 = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 27774 if (typeof slidesGrid[i + increment2] !== "undefined") { 27775 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment2]) { 27776 stopIndex = i; 27777 groupSize = slidesGrid[i + increment2] - slidesGrid[i]; 27778 } 27779 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 27780 stopIndex = i; 27781 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 27782 } 27783 } 27784 let rewindFirstIndex = null; 27785 let rewindLastIndex = null; 27786 if (params.rewind) { 27787 if (swiper.isBeginning) { 27788 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 27789 } else if (swiper.isEnd) { 27790 rewindFirstIndex = 0; 27791 } 27792 } 27793 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 27794 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 27795 if (timeDiff > params.longSwipesMs) { 27796 if (!params.longSwipes) { 27797 swiper.slideTo(swiper.activeIndex); 27798 return; 27799 } 27800 if (swiper.swipeDirection === "next") { 27801 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment); 27802 else swiper.slideTo(stopIndex); 27803 } 27804 if (swiper.swipeDirection === "prev") { 27805 if (ratio > 1 - params.longSwipesRatio) { 27806 swiper.slideTo(stopIndex + increment); 27807 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 27808 swiper.slideTo(rewindLastIndex); 27809 } else { 27810 swiper.slideTo(stopIndex); 27811 } 27812 } 27813 } else { 27814 if (!params.shortSwipes) { 27815 swiper.slideTo(swiper.activeIndex); 27816 return; 27817 } 27818 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 27819 if (!isNavButtonTarget) { 27820 if (swiper.swipeDirection === "next") { 27821 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 27822 } 27823 if (swiper.swipeDirection === "prev") { 27824 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 27825 } 27826 } else if (e.target === swiper.navigation.nextEl) { 27827 swiper.slideTo(stopIndex + increment); 27828 } else { 27829 swiper.slideTo(stopIndex); 27830 } 27831 } 27832} 27833function onResize() { 27834 const swiper = this; 27835 const { 27836 params, 27837 el 27838 } = swiper; 27839 if (el && el.offsetWidth === 0) return; 27840 if (params.breakpoints) { 27841 swiper.setBreakpoint(); 27842 } 27843 const { 27844 allowSlideNext, 27845 allowSlidePrev, 27846 snapGrid 27847 } = swiper; 27848 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 27849 swiper.allowSlideNext = true; 27850 swiper.allowSlidePrev = true; 27851 swiper.updateSize(); 27852 swiper.updateSlides(); 27853 swiper.updateSlidesClasses(); 27854 const isVirtualLoop = isVirtual && params.loop; 27855 if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 27856 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 27857 } else { 27858 if (swiper.params.loop && !isVirtual) { 27859 swiper.slideToLoop(swiper.realIndex, 0, false, true); 27860 } else { 27861 swiper.slideTo(swiper.activeIndex, 0, false, true); 27862 } 27863 } 27864 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 27865 clearTimeout(swiper.autoplay.resizeTimeout); 27866 swiper.autoplay.resizeTimeout = setTimeout(() => { 27867 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 27868 swiper.autoplay.resume(); 27869 } 27870 }, 500); 27871 } 27872 swiper.allowSlidePrev = allowSlidePrev; 27873 swiper.allowSlideNext = allowSlideNext; 27874 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 27875 swiper.checkOverflow(); 27876 } 27877} 27878function onClick(e) { 27879 const swiper = this; 27880 if (!swiper.enabled) return; 27881 if (!swiper.allowClick) { 27882 if (swiper.params.preventClicks) e.preventDefault(); 27883 if (swiper.params.preventClicksPropagation && swiper.animating) { 27884 e.stopPropagation(); 27885 e.stopImmediatePropagation(); 27886 } 27887 } 27888} 27889function onScroll() { 27890 const swiper = this; 27891 const { 27892 wrapperEl, 27893 rtlTranslate, 27894 enabled 27895 } = swiper; 27896 if (!enabled) return; 27897 swiper.previousTranslate = swiper.translate; 27898 if (swiper.isHorizontal()) { 27899 swiper.translate = -wrapperEl.scrollLeft; 27900 } else { 27901 swiper.translate = -wrapperEl.scrollTop; 27902 } 27903 if (swiper.translate === 0) swiper.translate = 0; 27904 swiper.updateActiveIndex(); 27905 swiper.updateSlidesClasses(); 27906 let newProgress; 27907 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 27908 if (translatesDiff === 0) { 27909 newProgress = 0; 27910 } else { 27911 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 27912 } 27913 if (newProgress !== swiper.progress) { 27914 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 27915 } 27916 swiper.emit("setTranslate", swiper.translate, false); 27917} 27918function onLoad(e) { 27919 const swiper = this; 27920 processLazyPreloader(swiper, e.target); 27921 if (swiper.params.cssMode || swiper.params.slidesPerView !== "auto" && !swiper.params.autoHeight) { 27922 return; 27923 }
vendor: 4,653 bytes, lines 27924-28059
27924 swiper.update(); 27925} 27926function onDocumentTouchStart() { 27927 const swiper = this; 27928 if (swiper.documentTouchHandlerProceeded) return; 27929 swiper.documentTouchHandlerProceeded = true; 27930 if (swiper.params.touchReleaseOnEdges) { 27931 swiper.el.style.touchAction = "auto"; 27932 } 27933} 27934const events$9 = (swiper, method) => { 27935 const document2 = getDocument(); 27936 const { 27937 params, 27938 el, 27939 wrapperEl, 27940 device 27941 } = swiper; 27942 const capture = !!params.nested; 27943 const domMethod = method === "on" ? "addEventListener" : "removeEventListener"; 27944 const swiperMethod = method; 27945 if (!el || typeof el === "string") return; 27946 document2[domMethod]("touchstart", swiper.onDocumentTouchStart, { 27947 passive: false, 27948 capture 27949 }); 27950 el[domMethod]("touchstart", swiper.onTouchStart, { 27951 passive: false 27952 }); 27953 el[domMethod]("pointerdown", swiper.onTouchStart, { 27954 passive: false 27955 }); 27956 document2[domMethod]("touchmove", swiper.onTouchMove, { 27957 passive: false, 27958 capture 27959 }); 27960 document2[domMethod]("pointermove", swiper.onTouchMove, { 27961 passive: false, 27962 capture 27963 }); 27964 document2[domMethod]("touchend", swiper.onTouchEnd, { 27965 passive: true 27966 }); 27967 document2[domMethod]("pointerup", swiper.onTouchEnd, { 27968 passive: true 27969 }); 27970 document2[domMethod]("pointercancel", swiper.onTouchEnd, { 27971 passive: true 27972 }); 27973 document2[domMethod]("touchcancel", swiper.onTouchEnd, { 27974 passive: true 27975 }); 27976 document2[domMethod]("pointerout", swiper.onTouchEnd, { 27977 passive: true 27978 }); 27979 document2[domMethod]("pointerleave", swiper.onTouchEnd, { 27980 passive: true 27981 }); 27982 document2[domMethod]("contextmenu", swiper.onTouchEnd, { 27983 passive: true 27984 }); 27985 if (params.preventClicks || params.preventClicksPropagation) { 27986 el[domMethod]("click", swiper.onClick, true); 27987 } 27988 if (params.cssMode) { 27989 wrapperEl[domMethod]("scroll", swiper.onScroll); 27990 } 27991 if (params.updateOnWindowResize) { 27992 swiper[swiperMethod](device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize, true); 27993 } else { 27994 swiper[swiperMethod]("observerUpdate", onResize, true); 27995 } 27996 el[domMethod]("load", swiper.onLoad, { 27997 capture: true 27998 }); 27999}; 28000function attachEvents() { 28001 const swiper = this; 28002 const { 28003 params 28004 } = swiper; 28005 swiper.onTouchStart = onTouchStart.bind(swiper); 28006 swiper.onTouchMove = onTouchMove.bind(swiper); 28007 swiper.onTouchEnd = onTouchEnd.bind(swiper); 28008 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 28009 if (params.cssMode) { 28010 swiper.onScroll = onScroll.bind(swiper); 28011 } 28012 swiper.onClick = onClick.bind(swiper); 28013 swiper.onLoad = onLoad.bind(swiper); 28014 events$9(swiper, "on"); 28015} 28016function detachEvents() { 28017 const swiper = this; 28018 events$9(swiper, "off"); 28019} 28020var events$1$1 = { 28021 attachEvents, 28022 detachEvents 28023}; 28024const isGridEnabled = (swiper, params) => { 28025 return swiper.grid && params.grid && params.grid.rows > 1; 28026}; 28027function setBreakpoint() { 28028 const swiper = this; 28029 const { 28030 realIndex, 28031 initialized, 28032 params, 28033 el 28034 } = swiper; 28035 const breakpoints2 = params.breakpoints; 28036 if (!breakpoints2 || breakpoints2 && Object.keys(breakpoints2).length === 0) return; 28037 const document2 = getDocument(); 28038 const breakpointsBase = params.breakpointsBase === "window" || !params.breakpointsBase ? params.breakpointsBase : "container"; 28039 const breakpointContainer = ["window", "container"].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document2.querySelector(params.breakpointsBase); 28040 const breakpoint = swiper.getBreakpoint(breakpoints2, breakpointsBase, breakpointContainer); 28041 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 28042 const breakpointOnlyParams = breakpoint in breakpoints2 ? breakpoints2[breakpoint] : void 0; 28043 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 28044 const wasMultiRow = isGridEnabled(swiper, params); 28045 const isMultiRow = isGridEnabled(swiper, breakpointParams); 28046 const wasGrabCursor = swiper.params.grabCursor; 28047 const isGrabCursor = breakpointParams.grabCursor; 28048 const wasEnabled = params.enabled; 28049 if (wasMultiRow && !isMultiRow) { 28050 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 28051 swiper.emitContainerClasses(); 28052 } else if (!wasMultiRow && isMultiRow) { 28053 el.classList.add(`${params.containerModifierClass}grid`); 28054 if (breakpointParams.grid.fill && breakpointParams.grid.fill === "column" || !breakpointParams.grid.fill && params.grid.fill === "column") { 28055 el.classList.add(`${params.containerModifierClass}grid-column`); 28056 } 28057 swiper.emitContainerClasses(); 28058 } 28059 if (wasGrabCursor && !isGrabCursor) {
vendor: 4,822 bytes, lines 28060-28226
28060 swiper.unsetGrabCursor(); 28061 } else if (!wasGrabCursor && isGrabCursor) { 28062 swiper.setGrabCursor(); 28063 } 28064 ["navigation", "pagination", "scrollbar"].forEach((prop) => { 28065 if (typeof breakpointParams[prop] === "undefined") return; 28066 const wasModuleEnabled = params[prop] && params[prop].enabled; 28067 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 28068 if (wasModuleEnabled && !isModuleEnabled) { 28069 swiper[prop].disable(); 28070 } 28071 if (!wasModuleEnabled && isModuleEnabled) { 28072 swiper[prop].enable(); 28073 } 28074 }); 28075 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 28076 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 28077 const wasLoop = params.loop; 28078 if (directionChanged && initialized) { 28079 swiper.changeDirection(); 28080 } 28081 extend$2(swiper.params, breakpointParams); 28082 const isEnabled = swiper.params.enabled; 28083 const hasLoop = swiper.params.loop; 28084 Object.assign(swiper, { 28085 allowTouchMove: swiper.params.allowTouchMove, 28086 allowSlideNext: swiper.params.allowSlideNext, 28087 allowSlidePrev: swiper.params.allowSlidePrev 28088 }); 28089 if (wasEnabled && !isEnabled) { 28090 swiper.disable(); 28091 } else if (!wasEnabled && isEnabled) { 28092 swiper.enable(); 28093 } 28094 swiper.currentBreakpoint = breakpoint; 28095 swiper.emit("_beforeBreakpoint", breakpointParams); 28096 if (initialized) { 28097 if (needsReLoop) { 28098 swiper.loopDestroy(); 28099 swiper.loopCreate(realIndex); 28100 swiper.updateSlides(); 28101 } else if (!wasLoop && hasLoop) { 28102 swiper.loopCreate(realIndex); 28103 swiper.updateSlides(); 28104 } else if (wasLoop && !hasLoop) { 28105 swiper.loopDestroy(); 28106 } 28107 } 28108 swiper.emit("breakpoint", breakpointParams); 28109} 28110function getBreakpoint(breakpoints2, base, containerEl) { 28111 if (base === void 0) { 28112 base = "window"; 28113 } 28114 if (!breakpoints2 || base === "container" && !containerEl) return void 0; 28115 let breakpoint = false; 28116 const window2 = getWindow(); 28117 const currentHeight = base === "window" ? window2.innerHeight : containerEl.clientHeight; 28118 const points = Object.keys(breakpoints2).map((point) => { 28119 if (typeof point === "string" && point.indexOf("@") === 0) { 28120 const minRatio = parseFloat(point.substr(1)); 28121 const value = currentHeight * minRatio; 28122 return { 28123 value, 28124 point 28125 }; 28126 } 28127 return { 28128 value: point, 28129 point 28130 }; 28131 }); 28132 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 28133 for (let i = 0; i < points.length; i += 1) { 28134 const { 28135 point, 28136 value 28137 } = points[i]; 28138 if (base === "window") { 28139 if (window2.matchMedia(`(min-width: ${value}px)`).matches) { 28140 breakpoint = point; 28141 } 28142 } else if (value <= containerEl.clientWidth) { 28143 breakpoint = point; 28144 } 28145 } 28146 return breakpoint || "max"; 28147} 28148var breakpoints = { 28149 setBreakpoint, 28150 getBreakpoint 28151}; 28152function prepareClasses(entries, prefix) { 28153 const resultClasses = []; 28154 entries.forEach((item) => { 28155 if (typeof item === "object") { 28156 Object.keys(item).forEach((classNames) => { 28157 if (item[classNames]) { 28158 resultClasses.push(prefix + classNames); 28159 } 28160 }); 28161 } else if (typeof item === "string") { 28162 resultClasses.push(prefix + item); 28163 } 28164 }); 28165 return resultClasses; 28166} 28167function addClasses() { 28168 const swiper = this; 28169 const { 28170 classNames, 28171 params, 28172 rtl, 28173 el, 28174 device 28175 } = swiper; 28176 const suffixes = prepareClasses(["initialized", params.direction, { 28177 "free-mode": swiper.params.freeMode && params.freeMode.enabled 28178 }, { 28179 "autoheight": params.autoHeight 28180 }, { 28181 "rtl": rtl 28182 }, { 28183 "grid": params.grid && params.grid.rows > 1 28184 }, { 28185 "grid-column": params.grid && params.grid.rows > 1 && params.grid.fill === "column" 28186 }, { 28187 "android": device.android 28188 }, { 28189 "ios": device.ios 28190 }, { 28191 "css-mode": params.cssMode 28192 }, { 28193 "centered": params.cssMode && params.centeredSlides 28194 }, { 28195 "watch-progress": params.watchSlidesProgress 28196 }], params.containerModifierClass); 28197 classNames.push(...suffixes); 28198 el.classList.add(...classNames); 28199 swiper.emitContainerClasses(); 28200} 28201function removeClasses() { 28202 const swiper = this; 28203 const { 28204 el, 28205 classNames 28206 } = swiper; 28207 if (!el || typeof el === "string") return; 28208 el.classList.remove(...classNames); 28209 swiper.emitContainerClasses(); 28210} 28211var classes = { 28212 addClasses, 28213 removeClasses 28214}; 28215function checkOverflow() { 28216 const swiper = this; 28217 const { 28218 isLocked: wasLocked, 28219 params 28220 } = swiper; 28221 const { 28222 slidesOffsetBefore 28223 } = params; 28224 if (slidesOffsetBefore) { 28225 const lastSlideIndex = swiper.slides.length - 1; 28226 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
vendor: 5,345 bytes, lines 28227-28423
28227 swiper.isLocked = swiper.size > lastSlideRightEdge; 28228 } else { 28229 swiper.isLocked = swiper.snapGrid.length === 1; 28230 } 28231 if (params.allowSlideNext === true) { 28232 swiper.allowSlideNext = !swiper.isLocked; 28233 } 28234 if (params.allowSlidePrev === true) { 28235 swiper.allowSlidePrev = !swiper.isLocked; 28236 } 28237 if (wasLocked && wasLocked !== swiper.isLocked) { 28238 swiper.isEnd = false; 28239 } 28240 if (wasLocked !== swiper.isLocked) { 28241 swiper.emit(swiper.isLocked ? "lock" : "unlock"); 28242 } 28243} 28244var checkOverflow$1 = { 28245 checkOverflow 28246}; 28247var defaults = { 28248 init: true, 28249 direction: "horizontal", 28250 oneWayMovement: false, 28251 swiperElementNodeName: "SWIPER-CONTAINER", 28252 touchEventsTarget: "wrapper", 28253 initialSlide: 0, 28254 speed: 300, 28255 cssMode: false, 28256 updateOnWindowResize: true, 28257 resizeObserver: true, 28258 nested: false, 28259 createElements: false, 28260 eventsPrefix: "swiper", 28261 enabled: true, 28262 focusableElements: "input, select, option, textarea, button, video, label", 28263 // Overrides 28264 width: null, 28265 height: null, 28266 // 28267 preventInteractionOnTransition: false, 28268 // ssr 28269 userAgent: null, 28270 url: null, 28271 // To support iOS's swipe-to-go-back gesture (when being used in-app). 28272 edgeSwipeDetection: false, 28273 edgeSwipeThreshold: 20, 28274 // Autoheight 28275 autoHeight: false, 28276 // Set wrapper width 28277 setWrapperSize: false, 28278 // Virtual Translate 28279 virtualTranslate: false, 28280 // Effects 28281 effect: "slide", 28282 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 28283 // Breakpoints 28284 breakpoints: void 0, 28285 breakpointsBase: "window", 28286 // Slides grid 28287 spaceBetween: 0, 28288 slidesPerView: 1, 28289 slidesPerGroup: 1, 28290 slidesPerGroupSkip: 0, 28291 slidesPerGroupAuto: false, 28292 centeredSlides: false, 28293 centeredSlidesBounds: false, 28294 slidesOffsetBefore: 0, 28295 // in px 28296 slidesOffsetAfter: 0, 28297 // in px 28298 normalizeSlideIndex: true, 28299 centerInsufficientSlides: false, 28300 // Disable swiper and hide navigation when container not overflow 28301 watchOverflow: true, 28302 // Round length 28303 roundLengths: false, 28304 // Touches 28305 touchRatio: 1, 28306 touchAngle: 45, 28307 simulateTouch: true, 28308 shortSwipes: true, 28309 longSwipes: true, 28310 longSwipesRatio: 0.5, 28311 longSwipesMs: 300, 28312 followFinger: true, 28313 allowTouchMove: true, 28314 threshold: 5, 28315 touchMoveStopPropagation: false, 28316 touchStartPreventDefault: true, 28317 touchStartForcePreventDefault: false, 28318 touchReleaseOnEdges: false, 28319 // Unique Navigation Elements 28320 uniqueNavElements: true, 28321 // Resistance 28322 resistance: true, 28323 resistanceRatio: 0.85, 28324 // Progress 28325 watchSlidesProgress: false, 28326 // Cursor 28327 grabCursor: false, 28328 // Clicks 28329 preventClicks: true, 28330 preventClicksPropagation: true, 28331 slideToClickedSlide: false, 28332 // loop 28333 loop: false, 28334 loopAddBlankSlides: true, 28335 loopAdditionalSlides: 0, 28336 loopPreventsSliding: true, 28337 // rewind 28338 rewind: false, 28339 // Swiping/no swiping 28340 allowSlidePrev: true, 28341 allowSlideNext: true, 28342 swipeHandler: null, 28343 // '.swipe-handler', 28344 noSwiping: true, 28345 noSwipingClass: "swiper-no-swiping", 28346 noSwipingSelector: null, 28347 // Passive Listeners 28348 passiveListeners: true, 28349 maxBackfaceHiddenSlides: 10, 28350 // NS 28351 containerModifierClass: "swiper-", 28352 // NEW 28353 slideClass: "swiper-slide", 28354 slideBlankClass: "swiper-slide-blank", 28355 slideActiveClass: "swiper-slide-active", 28356 slideVisibleClass: "swiper-slide-visible", 28357 slideFullyVisibleClass: "swiper-slide-fully-visible", 28358 slideNextClass: "swiper-slide-next", 28359 slidePrevClass: "swiper-slide-prev", 28360 wrapperClass: "swiper-wrapper", 28361 lazyPreloaderClass: "swiper-lazy-preloader", 28362 lazyPreloadPrevNext: 0, 28363 // Callbacks 28364 runCallbacksOnInit: true, 28365 // Internals 28366 _emitClasses: false 28367}; 28368function moduleExtendParams(params, allModulesParams) { 28369 return function extendParams(obj) { 28370 if (obj === void 0) { 28371 obj = {}; 28372 } 28373 const moduleParamName = Object.keys(obj)[0]; 28374 const moduleParams = obj[moduleParamName]; 28375 if (typeof moduleParams !== "object" || moduleParams === null) { 28376 extend$2(allModulesParams, obj); 28377 return; 28378 } 28379 if (params[moduleParamName] === true) { 28380 params[moduleParamName] = { 28381 enabled: true 28382 }; 28383 } 28384 if (moduleParamName === "navigation" && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 28385 params[moduleParamName].auto = true; 28386 } 28387 if (["pagination", "scrollbar"].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 28388 params[moduleParamName].auto = true; 28389 } 28390 if (!(moduleParamName in params && "enabled" in moduleParams)) { 28391 extend$2(allModulesParams, obj); 28392 return; 28393 } 28394 if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) { 28395 params[moduleParamName].enabled = true; 28396 } 28397 if (!params[moduleParamName]) params[moduleParamName] = { 28398 enabled: false 28399 }; 28400 extend$2(allModulesParams, obj); 28401 }; 28402} 28403const prototypes = { 28404 eventsEmitter, 28405 update: update3, 28406 translate, 28407 transition, 28408 slide, 28409 loop, 28410 grabCursor, 28411 events: events$1$1, 28412 breakpoints, 28413 checkOverflow: checkOverflow$1, 28414 classes 28415}; 28416const extendedDefaults = {}; 28417let Swiper$1 = class Swiper { 28418 constructor() { 28419 let el; 28420 let params; 28421 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 28422 args[_key] = arguments[_key]; 28423 }
vendor: 19,681 bytes, lines 28424-29088
28424 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === "Object") { 28425 params = args[0]; 28426 } else { 28427 [el, params] = args; 28428 } 28429 if (!params) params = {}; 28430 params = extend$2({}, params); 28431 if (el && !params.el) params.el = el; 28432 const document2 = getDocument(); 28433 if (params.el && typeof params.el === "string" && document2.querySelectorAll(params.el).length > 1) { 28434 const swipers = []; 28435 document2.querySelectorAll(params.el).forEach((containerEl) => { 28436 const newParams = extend$2({}, params, { 28437 el: containerEl 28438 }); 28439 swipers.push(new Swiper(newParams)); 28440 }); 28441 return swipers; 28442 } 28443 const swiper = this; 28444 swiper.__swiper__ = true; 28445 swiper.support = getSupport(); 28446 swiper.device = getDevice({ 28447 userAgent: params.userAgent 28448 }); 28449 swiper.browser = getBrowser(); 28450 swiper.eventsListeners = {}; 28451 swiper.eventsAnyListeners = []; 28452 swiper.modules = [...swiper.__modules__]; 28453 if (params.modules && Array.isArray(params.modules)) { 28454 swiper.modules.push(...params.modules); 28455 } 28456 const allModulesParams = {}; 28457 swiper.modules.forEach((mod) => { 28458 mod({ 28459 params, 28460 swiper, 28461 extendParams: moduleExtendParams(params, allModulesParams), 28462 on: swiper.on.bind(swiper), 28463 once: swiper.once.bind(swiper), 28464 off: swiper.off.bind(swiper), 28465 emit: swiper.emit.bind(swiper) 28466 }); 28467 }); 28468 const swiperParams = extend$2({}, defaults, allModulesParams); 28469 swiper.params = extend$2({}, swiperParams, extendedDefaults, params); 28470 swiper.originalParams = extend$2({}, swiper.params); 28471 swiper.passedParams = extend$2({}, params); 28472 if (swiper.params && swiper.params.on) { 28473 Object.keys(swiper.params.on).forEach((eventName) => { 28474 swiper.on(eventName, swiper.params.on[eventName]); 28475 }); 28476 } 28477 if (swiper.params && swiper.params.onAny) { 28478 swiper.onAny(swiper.params.onAny); 28479 } 28480 Object.assign(swiper, { 28481 enabled: swiper.params.enabled, 28482 el, 28483 // Classes 28484 classNames: [], 28485 // Slides 28486 slides: [], 28487 slidesGrid: [], 28488 snapGrid: [], 28489 slidesSizesGrid: [], 28490 // isDirection 28491 isHorizontal() { 28492 return swiper.params.direction === "horizontal"; 28493 }, 28494 isVertical() { 28495 return swiper.params.direction === "vertical"; 28496 }, 28497 // Indexes 28498 activeIndex: 0, 28499 realIndex: 0, 28500 // 28501 isBeginning: true, 28502 isEnd: false, 28503 // Props 28504 translate: 0, 28505 previousTranslate: 0, 28506 progress: 0, 28507 velocity: 0, 28508 animating: false, 28509 cssOverflowAdjustment() { 28510 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 28511 }, 28512 // Locks 28513 allowSlideNext: swiper.params.allowSlideNext, 28514 allowSlidePrev: swiper.params.allowSlidePrev, 28515 // Touch Events 28516 touchEventsData: { 28517 isTouched: void 0, 28518 isMoved: void 0, 28519 allowTouchCallbacks: void 0, 28520 touchStartTime: void 0, 28521 isScrolling: void 0, 28522 currentTranslate: void 0, 28523 startTranslate: void 0, 28524 allowThresholdMove: void 0, 28525 // Form elements to match 28526 focusableElements: swiper.params.focusableElements, 28527 // Last click time 28528 lastClickTime: 0, 28529 clickTimeout: void 0, 28530 // Velocities 28531 velocities: [], 28532 allowMomentumBounce: void 0, 28533 startMoving: void 0, 28534 pointerId: null, 28535 touchId: null 28536 }, 28537 // Clicks 28538 allowClick: true, 28539 // Touches 28540 allowTouchMove: swiper.params.allowTouchMove, 28541 touches: { 28542 startX: 0, 28543 startY: 0, 28544 currentX: 0, 28545 currentY: 0, 28546 diff: 0 28547 }, 28548 // Images 28549 imagesToLoad: [], 28550 imagesLoaded: 0 28551 }); 28552 swiper.emit("_swiper"); 28553 if (swiper.params.init) { 28554 swiper.init(); 28555 } 28556 return swiper; 28557 } 28558 getDirectionLabel(property) { 28559 if (this.isHorizontal()) { 28560 return property; 28561 } 28562 return { 28563 "width": "height", 28564 "margin-top": "margin-left", 28565 "margin-bottom ": "margin-right", 28566 "margin-left": "margin-top", 28567 "margin-right": "margin-bottom", 28568 "padding-left": "padding-top", 28569 "padding-right": "padding-bottom", 28570 "marginRight": "marginBottom" 28571 }[property]; 28572 } 28573 getSlideIndex(slideEl) { 28574 const { 28575 slidesEl, 28576 params 28577 } = this; 28578 const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); 28579 const firstSlideIndex = elementIndex(slides[0]); 28580 return elementIndex(slideEl) - firstSlideIndex; 28581 } 28582 getSlideIndexByData(index2) { 28583 return this.getSlideIndex(this.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === index2)); 28584 } 28585 recalcSlides() { 28586 const swiper = this; 28587 const { 28588 slidesEl, 28589 params 28590 } = swiper; 28591 swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); 28592 } 28593 enable() { 28594 const swiper = this; 28595 if (swiper.enabled) return; 28596 swiper.enabled = true; 28597 if (swiper.params.grabCursor) { 28598 swiper.setGrabCursor(); 28599 } 28600 swiper.emit("enable"); 28601 } 28602 disable() { 28603 const swiper = this; 28604 if (!swiper.enabled) return; 28605 swiper.enabled = false; 28606 if (swiper.params.grabCursor) { 28607 swiper.unsetGrabCursor(); 28608 } 28609 swiper.emit("disable"); 28610 } 28611 setProgress(progress, speed) { 28612 const swiper = this; 28613 progress = Math.min(Math.max(progress, 0), 1); 28614 const min = swiper.minTranslate(); 28615 const max = swiper.maxTranslate(); 28616 const current = (max - min) * progress + min; 28617 swiper.translateTo(current, typeof speed === "undefined" ? 0 : speed); 28618 swiper.updateActiveIndex(); 28619 swiper.updateSlidesClasses(); 28620 } 28621 emitContainerClasses() { 28622 const swiper = this; 28623 if (!swiper.params._emitClasses || !swiper.el) return; 28624 const cls = swiper.el.className.split(" ").filter((className) => { 28625 return className.indexOf("swiper") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 28626 }); 28627 swiper.emit("_containerClasses", cls.join(" ")); 28628 } 28629 getSlideClasses(slideEl) { 28630 const swiper = this; 28631 if (swiper.destroyed) return ""; 28632 return slideEl.className.split(" ").filter((className) => { 28633 return className.indexOf("swiper-slide") === 0 || className.indexOf(swiper.params.slideClass) === 0; 28634 }).join(" "); 28635 } 28636 emitSlidesClasses() { 28637 const swiper = this; 28638 if (!swiper.params._emitClasses || !swiper.el) return; 28639 const updates = []; 28640 swiper.slides.forEach((slideEl) => { 28641 const classNames = swiper.getSlideClasses(slideEl); 28642 updates.push({ 28643 slideEl, 28644 classNames 28645 }); 28646 swiper.emit("_slideClass", slideEl, classNames); 28647 }); 28648 swiper.emit("_slideClasses", updates); 28649 } 28650 slidesPerViewDynamic(view, exact) { 28651 if (view === void 0) { 28652 view = "current"; 28653 } 28654 if (exact === void 0) { 28655 exact = false; 28656 } 28657 const swiper = this; 28658 const { 28659 params, 28660 slides, 28661 slidesGrid, 28662 slidesSizesGrid, 28663 size: swiperSize, 28664 activeIndex 28665 } = swiper; 28666 let spv = 1; 28667 if (typeof params.slidesPerView === "number") return params.slidesPerView; 28668 if (params.centeredSlides) { 28669 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 28670 let breakLoop; 28671 for (let i = activeIndex + 1; i < slides.length; i += 1) { 28672 if (slides[i] && !breakLoop) { 28673 slideSize += Math.ceil(slides[i].swiperSlideSize); 28674 spv += 1; 28675 if (slideSize > swiperSize) breakLoop = true; 28676 } 28677 } 28678 for (let i = activeIndex - 1; i >= 0; i -= 1) { 28679 if (slides[i] && !breakLoop) { 28680 slideSize += slides[i].swiperSlideSize; 28681 spv += 1; 28682 if (slideSize > swiperSize) breakLoop = true; 28683 } 28684 } 28685 } else { 28686 if (view === "current") { 28687 for (let i = activeIndex + 1; i < slides.length; i += 1) { 28688 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 28689 if (slideInView) { 28690 spv += 1; 28691 } 28692 } 28693 } else { 28694 for (let i = activeIndex - 1; i >= 0; i -= 1) { 28695 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 28696 if (slideInView) { 28697 spv += 1; 28698 } 28699 } 28700 } 28701 } 28702 return spv; 28703 } 28704 update() { 28705 const swiper = this; 28706 if (!swiper || swiper.destroyed) return; 28707 const { 28708 snapGrid, 28709 params 28710 } = swiper; 28711 if (params.breakpoints) { 28712 swiper.setBreakpoint(); 28713 } 28714 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach((imageEl) => { 28715 if (imageEl.complete) { 28716 processLazyPreloader(swiper, imageEl); 28717 } 28718 }); 28719 swiper.updateSize(); 28720 swiper.updateSlides(); 28721 swiper.updateProgress(); 28722 swiper.updateSlidesClasses(); 28723 function setTranslate2() { 28724 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 28725 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 28726 swiper.setTranslate(newTranslate); 28727 swiper.updateActiveIndex(); 28728 swiper.updateSlidesClasses(); 28729 } 28730 let translated; 28731 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 28732 setTranslate2(); 28733 if (params.autoHeight) { 28734 swiper.updateAutoHeight(); 28735 } 28736 } else { 28737 if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 28738 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 28739 translated = swiper.slideTo(slides.length - 1, 0, false, true); 28740 } else { 28741 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 28742 } 28743 if (!translated) { 28744 setTranslate2(); 28745 } 28746 } 28747 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 28748 swiper.checkOverflow(); 28749 } 28750 swiper.emit("update"); 28751 } 28752 changeDirection(newDirection, needUpdate) { 28753 if (needUpdate === void 0) { 28754 needUpdate = true; 28755 } 28756 const swiper = this; 28757 const currentDirection = swiper.params.direction; 28758 if (!newDirection) { 28759 newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal"; 28760 } 28761 if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") { 28762 return swiper; 28763 } 28764 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 28765 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 28766 swiper.emitContainerClasses(); 28767 swiper.params.direction = newDirection; 28768 swiper.slides.forEach((slideEl) => { 28769 if (newDirection === "vertical") { 28770 slideEl.style.width = ""; 28771 } else { 28772 slideEl.style.height = ""; 28773 } 28774 }); 28775 swiper.emit("changeDirection"); 28776 if (needUpdate) swiper.update(); 28777 return swiper; 28778 } 28779 changeLanguageDirection(direction) { 28780 const swiper = this; 28781 if (swiper.rtl && direction === "rtl" || !swiper.rtl && direction === "ltr") return; 28782 swiper.rtl = direction === "rtl"; 28783 swiper.rtlTranslate = swiper.params.direction === "horizontal" && swiper.rtl; 28784 if (swiper.rtl) { 28785 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 28786 swiper.el.dir = "rtl"; 28787 } else { 28788 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 28789 swiper.el.dir = "ltr"; 28790 } 28791 swiper.update(); 28792 } 28793 mount(element) { 28794 const swiper = this; 28795 if (swiper.mounted) return true; 28796 let el = element || swiper.params.el; 28797 if (typeof el === "string") { 28798 el = document.querySelector(el); 28799 } 28800 if (!el) { 28801 return false; 28802 } 28803 el.swiper = swiper; 28804 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 28805 swiper.isElement = true; 28806 } 28807 const getWrapperSelector = () => { 28808 return `.${(swiper.params.wrapperClass || "").trim().split(" ").join(".")}`; 28809 }; 28810 const getWrapper = () => { 28811 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 28812 const res = el.shadowRoot.querySelector(getWrapperSelector()); 28813 return res; 28814 } 28815 return elementChildren(el, getWrapperSelector())[0]; 28816 }; 28817 let wrapperEl = getWrapper(); 28818 if (!wrapperEl && swiper.params.createElements) { 28819 wrapperEl = createElement("div", swiper.params.wrapperClass); 28820 el.append(wrapperEl); 28821 elementChildren(el, `.${swiper.params.slideClass}`).forEach((slideEl) => { 28822 wrapperEl.append(slideEl); 28823 }); 28824 } 28825 Object.assign(swiper, { 28826 el, 28827 wrapperEl, 28828 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 28829 hostEl: swiper.isElement ? el.parentNode.host : el, 28830 mounted: true, 28831 // RTL 28832 rtl: el.dir.toLowerCase() === "rtl" || elementStyle(el, "direction") === "rtl", 28833 rtlTranslate: swiper.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || elementStyle(el, "direction") === "rtl"), 28834 wrongRTL: elementStyle(wrapperEl, "display") === "-webkit-box" 28835 }); 28836 return true; 28837 } 28838 init(el) { 28839 const swiper = this; 28840 if (swiper.initialized) return swiper; 28841 const mounted = swiper.mount(el); 28842 if (mounted === false) return swiper; 28843 swiper.emit("beforeInit"); 28844 if (swiper.params.breakpoints) { 28845 swiper.setBreakpoint(); 28846 } 28847 swiper.addClasses(); 28848 swiper.updateSize(); 28849 swiper.updateSlides(); 28850 if (swiper.params.watchOverflow) { 28851 swiper.checkOverflow(); 28852 } 28853 if (swiper.params.grabCursor && swiper.enabled) { 28854 swiper.setGrabCursor(); 28855 } 28856 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 28857 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 28858 } else { 28859 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 28860 } 28861 if (swiper.params.loop) { 28862 swiper.loopCreate(void 0, true); 28863 } 28864 swiper.attachEvents(); 28865 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 28866 if (swiper.isElement) { 28867 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 28868 } 28869 lazyElements.forEach((imageEl) => { 28870 if (imageEl.complete) { 28871 processLazyPreloader(swiper, imageEl); 28872 } else { 28873 imageEl.addEventListener("load", (e) => { 28874 processLazyPreloader(swiper, e.target); 28875 }); 28876 } 28877 }); 28878 preload(swiper); 28879 swiper.initialized = true; 28880 preload(swiper); 28881 swiper.emit("init"); 28882 swiper.emit("afterInit"); 28883 return swiper; 28884 } 28885 destroy(deleteInstance, cleanStyles) { 28886 if (deleteInstance === void 0) { 28887 deleteInstance = true; 28888 } 28889 if (cleanStyles === void 0) { 28890 cleanStyles = true; 28891 } 28892 const swiper = this; 28893 const { 28894 params, 28895 el, 28896 wrapperEl, 28897 slides 28898 } = swiper; 28899 if (typeof swiper.params === "undefined" || swiper.destroyed) { 28900 return null; 28901 } 28902 swiper.emit("beforeDestroy"); 28903 swiper.initialized = false; 28904 swiper.detachEvents(); 28905 if (params.loop) { 28906 swiper.loopDestroy(); 28907 } 28908 if (cleanStyles) { 28909 swiper.removeClasses(); 28910 if (el && typeof el !== "string") { 28911 el.removeAttribute("style"); 28912 } 28913 if (wrapperEl) { 28914 wrapperEl.removeAttribute("style"); 28915 } 28916 if (slides && slides.length) { 28917 slides.forEach((slideEl) => { 28918 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 28919 slideEl.removeAttribute("style"); 28920 slideEl.removeAttribute("data-swiper-slide-index"); 28921 }); 28922 } 28923 } 28924 swiper.emit("destroy"); 28925 Object.keys(swiper.eventsListeners).forEach((eventName) => { 28926 swiper.off(eventName); 28927 }); 28928 if (deleteInstance !== false) { 28929 if (swiper.el && typeof swiper.el !== "string") { 28930 swiper.el.swiper = null; 28931 } 28932 deleteProps(swiper); 28933 } 28934 swiper.destroyed = true; 28935 return null; 28936 } 28937 static extendDefaults(newDefaults) { 28938 extend$2(extendedDefaults, newDefaults); 28939 } 28940 static get extendedDefaults() { 28941 return extendedDefaults; 28942 } 28943 static get defaults() { 28944 return defaults; 28945 } 28946 static installModule(mod) { 28947 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 28948 const modules = Swiper.prototype.__modules__; 28949 if (typeof mod === "function" && modules.indexOf(mod) < 0) { 28950 modules.push(mod); 28951 } 28952 } 28953 static use(module) { 28954 if (Array.isArray(module)) { 28955 module.forEach((m) => Swiper.installModule(m)); 28956 return Swiper; 28957 } 28958 Swiper.installModule(module); 28959 return Swiper; 28960 } 28961}; 28962Object.keys(prototypes).forEach((prototypeGroup) => { 28963 Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => { 28964 Swiper$1.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 28965 }); 28966}); 28967Swiper$1.use([Resize, Observer]); 28968const paramsList = [ 28969 "eventsPrefix", 28970 "injectStyles", 28971 "injectStylesUrls", 28972 "modules", 28973 "init", 28974 "_direction", 28975 "oneWayMovement", 28976 "swiperElementNodeName", 28977 "touchEventsTarget", 28978 "initialSlide", 28979 "_speed", 28980 "cssMode", 28981 "updateOnWindowResize", 28982 "resizeObserver", 28983 "nested", 28984 "focusableElements", 28985 "_enabled", 28986 "_width", 28987 "_height", 28988 "preventInteractionOnTransition", 28989 "userAgent", 28990 "url", 28991 "_edgeSwipeDetection", 28992 "_edgeSwipeThreshold", 28993 "_freeMode", 28994 "_autoHeight", 28995 "setWrapperSize", 28996 "virtualTranslate", 28997 "_effect", 28998 "breakpoints", 28999 "breakpointsBase", 29000 "_spaceBetween", 29001 "_slidesPerView", 29002 "maxBackfaceHiddenSlides", 29003 "_grid", 29004 "_slidesPerGroup", 29005 "_slidesPerGroupSkip", 29006 "_slidesPerGroupAuto", 29007 "_centeredSlides", 29008 "_centeredSlidesBounds", 29009 "_slidesOffsetBefore", 29010 "_slidesOffsetAfter", 29011 "normalizeSlideIndex", 29012 "_centerInsufficientSlides", 29013 "_watchOverflow", 29014 "roundLengths", 29015 "touchRatio", 29016 "touchAngle", 29017 "simulateTouch", 29018 "_shortSwipes", 29019 "_longSwipes", 29020 "longSwipesRatio", 29021 "longSwipesMs", 29022 "_followFinger", 29023 "allowTouchMove", 29024 "_threshold", 29025 "touchMoveStopPropagation", 29026 "touchStartPreventDefault", 29027 "touchStartForcePreventDefault", 29028 "touchReleaseOnEdges", 29029 "uniqueNavElements", 29030 "_resistance", 29031 "_resistanceRatio", 29032 "_watchSlidesProgress", 29033 "_grabCursor", 29034 "preventClicks", 29035 "preventClicksPropagation", 29036 "_slideToClickedSlide", 29037 "_loop", 29038 "loopAdditionalSlides", 29039 "loopAddBlankSlides", 29040 "loopPreventsSliding", 29041 "_rewind", 29042 "_allowSlidePrev", 29043 "_allowSlideNext", 29044 "_swipeHandler", 29045 "_noSwiping", 29046 "noSwipingClass", 29047 "noSwipingSelector", 29048 "passiveListeners", 29049 "containerModifierClass", 29050 "slideClass", 29051 "slideActiveClass", 29052 "slideVisibleClass", 29053 "slideFullyVisibleClass", 29054 "slideNextClass", 29055 "slidePrevClass", 29056 "slideBlankClass", 29057 "wrapperClass", 29058 "lazyPreloaderClass", 29059 "lazyPreloadPrevNext", 29060 "runCallbacksOnInit", 29061 "observer", 29062 "observeParents", 29063 "observeSlideChildren", 29064 // modules 29065 "a11y", 29066 "_autoplay", 29067 "_controller", 29068 "coverflowEffect", 29069 "cubeEffect", 29070 "fadeEffect", 29071 "flipEffect", 29072 "creativeEffect", 29073 "cardsEffect", 29074 "hashNavigation", 29075 "history", 29076 "keyboard", 29077 "mousewheel", 29078 "_navigation", 29079 "_pagination", 29080 "parallax", 29081 "_scrollbar", 29082 "_thumbs", 29083 "virtual", 29084 "zoom", 29085 "control" 29086]; 29087function isObject$2(o) { 29088 return typeof o === "object" && o !== null && o.constructor && Ob
29088ject.prototype.toString.call(o).slice(8, -1) === "Object" && !o.__swiper__; 29089} 29090function extend$1(target, src) { 29091 const noExtend = ["__proto__", "constructor", "prototype"]; 29092 Object.keys(src).filter((key) => noExtend.indexOf(key) < 0).forEach((key) => { 29093 if (typeof target[key] === "undefined") target[key] = src[key]; 29094 else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { 29095 if (src[key].__swiper__) target[key] = src[key]; 29096 else extend$1(target[key], src[key]); 29097 } else { 29098 target[key] = src[key]; 29099 } 29100 }); 29101} 29102function needsNavigation(params) { 29103 if (params === void 0) { 29104 params = {}; 29105 } 29106 return params.navigation && typeof params.navigation.nextEl === "undefined" && typeof params.navigation.prevEl === "undefined"; 29107} 29108function needsPagination(params) { 29109 if (params === void 0) { 29110 params = {}; 29111 } 29112 return params.pagination && typeof params.pagination.el === "undefined"; 29113} 29114function needsScrollbar(params) { 29115 if (params === void 0) { 29116 params = {}; 29117 } 29118 return params.scrollbar && typeof params.scrollbar.el === "undefined"; 29119} 29120function uniqueClasses(classNames) { 29121 if (classNames === void 0) { 29122 classNames = ""; 29123 } 29124 const classes2 = classNames.split(" ").map((c) => c.trim()).filter((c) => !!c); 29125 const unique = []; 29126 classes2.forEach((c) => { 29127 if (unique.indexOf(c) < 0) unique.push(c); 29128 }); 29129 return unique.join(" "); 29130} 29131function wrapperClass(className) { 29132 if (className === void 0) { 29133 className = ""; 29134 } 29135 if (!className) return "swiper-wrapper"; 29136 if (!className.includes("swiper-wrapper")) return `swiper-wrapper ${className}`; 29137 return className; 29138} 29139function updateSwiper(_ref) { 29140 let { 29141 swiper, 29142 slides, 29143 passedParams, 29144 changedParams, 29145 nextEl, 29146 prevEl, 29147 scrollbarEl, 29148 paginationEl 29149 } = _ref; 29150 const updateParams = changedParams.filter((key) => key !== "children" && key !== "direction" && key !== "wrapperClass"); 29151 const { 29152 params: currentParams, 29153 pagination, 29154 navigation, 29155 scrollbar, 29156 virtual, 29157 thumbs 29158 } = swiper; 29159 let needThumbsInit; 29160 let needControllerInit; 29161 let needPaginationInit; 29162 let needScrollbarInit; 29163 let needNavigationInit; 29164 let loopNeedDestroy; 29165 let loopNeedEnable; 29166 let loopNeedReloop; 29167 if (changedParams.includes("thumbs") && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) { 29168 needThumbsInit = true; 29169 } 29170 if (changedParams.includes("controller") && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { 29171 needControllerInit = true; 29172 } 29173 if (changedParams.includes("pagination") && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { 29174 needPaginationInit = true; 29175 } 29176 if (changedParams.includes("scrollbar") && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { 29177 needScrollbarInit = true; 29178 } 29179 if (changedParams.includes("navigation") && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { 29180 needNavigationInit = true; 29181 } 29182 const destroyModule = (mod) => { 29183 if (!swiper[mod]) return; 29184 swiper[mod].destroy(); 29185 if (mod === "navigation") { 29186 if (swiper.isElement) { 29187 swiper[mod].prevEl.remove(); 29188 swiper[mod].nextEl.remove(); 29189 } 29190 currentParams[mod].prevEl = void 0; 29191 currentParams[mod].nextEl = void 0; 29192 swiper[mod].prevEl = void 0; 29193 swiper[mod].nextEl = void 0; 29194 } else { 29195 if (swiper.isElement) { 29196 swiper[mod].el.remove(); 29197 } 29198 currentParams[mod].el = void 0; 29199 swiper[mod].el = void 0; 29200 } 29201 }; 29202 if (changedParams.includes("loop") && swiper.isElement) {
vendor: 4,290 bytes, lines 29203-29322
29203 if (currentParams.loop && !passedParams.loop) { 29204 loopNeedDestroy = true; 29205 } else if (!currentParams.loop && passedParams.loop) { 29206 loopNeedEnable = true; 29207 } else { 29208 loopNeedReloop = true; 29209 } 29210 } 29211 updateParams.forEach((key) => { 29212 if (isObject$2(currentParams[key]) && isObject$2(passedParams[key])) { 29213 Object.assign(currentParams[key], passedParams[key]); 29214 if ((key === "navigation" || key === "pagination" || key === "scrollbar") && "enabled" in passedParams[key] && !passedParams[key].enabled) { 29215 destroyModule(key); 29216 } 29217 } else { 29218 const newValue = passedParams[key]; 29219 if ((newValue === true || newValue === false) && (key === "navigation" || key === "pagination" || key === "scrollbar")) { 29220 if (newValue === false) { 29221 destroyModule(key); 29222 } 29223 } else { 29224 currentParams[key] = passedParams[key]; 29225 } 29226 } 29227 }); 29228 if (updateParams.includes("controller") && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { 29229 swiper.controller.control = currentParams.controller.control; 29230 } 29231 if (changedParams.includes("children") && slides && virtual && currentParams.virtual.enabled) { 29232 virtual.slides = slides; 29233 virtual.update(true); 29234 } else if (changedParams.includes("virtual") && virtual && currentParams.virtual.enabled) { 29235 if (slides) virtual.slides = slides; 29236 virtual.update(true); 29237 } 29238 if (changedParams.includes("children") && slides && currentParams.loop) { 29239 loopNeedReloop = true; 29240 } 29241 if (needThumbsInit) { 29242 const initialized = thumbs.init(); 29243 if (initialized) thumbs.update(true); 29244 } 29245 if (needControllerInit) { 29246 swiper.controller.control = currentParams.controller.control; 29247 } 29248 if (needPaginationInit) { 29249 if (swiper.isElement && (!paginationEl || typeof paginationEl === "string")) { 29250 paginationEl = document.createElement("div"); 29251 paginationEl.classList.add("swiper-pagination"); 29252 paginationEl.part.add("pagination"); 29253 swiper.el.appendChild(paginationEl); 29254 } 29255 if (paginationEl) currentParams.pagination.el = paginationEl; 29256 pagination.init(); 29257 pagination.render(); 29258 pagination.update(); 29259 } 29260 if (needScrollbarInit) { 29261 if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === "string")) { 29262 scrollbarEl = document.createElement("div"); 29263 scrollbarEl.classList.add("swiper-scrollbar"); 29264 scrollbarEl.part.add("scrollbar"); 29265 swiper.el.appendChild(scrollbarEl); 29266 } 29267 if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; 29268 scrollbar.init(); 29269 scrollbar.updateSize(); 29270 scrollbar.setTranslate(); 29271 } 29272 if (needNavigationInit) { 29273 if (swiper.isElement) { 29274 if (!nextEl || typeof nextEl === "string") { 29275 nextEl = document.createElement("div"); 29276 nextEl.classList.add("swiper-button-next"); 29277 setInnerHTML(nextEl, swiper.hostEl.constructor.nextButtonSvg); 29278 nextEl.part.add("button-next"); 29279 swiper.el.appendChild(nextEl); 29280 } 29281 if (!prevEl || typeof prevEl === "string") { 29282 prevEl = document.createElement("div"); 29283 prevEl.classList.add("swiper-button-prev"); 29284 setInnerHTML(prevEl, swiper.hostEl.constructor.prevButtonSvg); 29285 prevEl.part.add("button-prev"); 29286 swiper.el.appendChild(prevEl); 29287 } 29288 } 29289 if (nextEl) currentParams.navigation.nextEl = nextEl; 29290 if (prevEl) currentParams.navigation.prevEl = prevEl; 29291 navigation.init(); 29292 navigation.update(); 29293 } 29294 if (changedParams.includes("allowSlideNext")) { 29295 swiper.allowSlideNext = passedParams.allowSlideNext; 29296 } 29297 if (changedParams.includes("allowSlidePrev")) { 29298 swiper.allowSlidePrev = passedParams.allowSlidePrev; 29299 } 29300 if (changedParams.includes("direction")) { 29301 swiper.changeDirection(passedParams.direction, false); 29302 } 29303 if (loopNeedDestroy || loopNeedReloop) { 29304 swiper.loopDestroy(); 29305 } 29306 if (loopNeedEnable || loopNeedReloop) { 29307 swiper.loopCreate(); 29308 } 29309 swiper.update(); 29310} 29311function getParams(obj, splitEvents) { 29312 if (obj === void 0) { 29313 obj = {}; 29314 } 29315 const params = { 29316 on: {} 29317 }; 29318 const events2 = {}; 29319 const passedParams = {}; 29320 extend$1(params, defaults); 29321 params._emitClasses = true; 29322 params.init = false;
29323 const rest = {}; 29324 const allowedParams = paramsList.map((key) => key.replace(/_/, "")); 29325 const plainObj = Object.assign({}, obj); 29326 Object.keys(plainObj).forEach((key) => { 29327 if (typeof obj[key] === "undefined") return; 29328 if (allowedParams.indexOf(key) >= 0) { 29329 if (isObject$2(obj[key])) { 29330 params[key] = {}; 29331 passedParams[key] = {}; 29332 extend$1(params[key], obj[key]); 29333 extend$1(passedParams[key], obj[key]); 29334 } else { 29335 params[key] = obj[key]; 29336 passedParams[key] = obj[key]; 29337 } 29338 } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === "function") { 29339 { 29340 params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; 29341 } 29342 } else { 29343 rest[key] = obj[key]; 29344 } 29345 }); 29346 ["navigation", "pagination", "scrollbar"].forEach((key) => { 29347 if (params[key] === true) params[key] = {}; 29348 if (params[key] === false) delete params[key]; 29349 }); 29350 return { 29351 params, 29352 passedParams, 29353 rest, 29354 events: events2 29355 }; 29356} 29357function mountSwiper(_ref, swiperParams) { 29358 let { 29359 el, 29360 nextEl, 29361 prevEl, 29362 paginationEl, 29363 scrollbarEl, 29364 swiper 29365 } = _ref; 29366 if (needsNavigation(swiperParams) && nextEl && prevEl) { 29367 swiper.params.navigation.nextEl = nextEl; 29368 swiper.originalParams.navigation.nextEl = nextEl; 29369 swiper.params.navigation.prevEl = prevEl; 29370 swiper.originalParams.navigation.prevEl = prevEl; 29371 } 29372 if (needsPagination(swiperParams) && paginationEl) { 29373 swiper.params.pagination.el = paginationEl; 29374 swiper.originalParams.pagination.el = paginationEl; 29375 } 29376 if (needsScrollbar(swiperParams) && scrollbarEl) { 29377 swiper.params.scrollbar.el = scrollbarEl; 29378 swiper.originalParams.scrollbar.el = scrollbarEl; 29379 } 29380 swiper.init(el); 29381} 29382function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { 29383 const keys = []; 29384 if (!oldParams) return keys; 29385 const addKey = (key) => { 29386 if (keys.indexOf(key) < 0) keys.push(key); 29387 }; 29388 if (children && oldChildren) { 29389 const oldChildrenKeys = oldChildren.map(getKey); 29390 const childrenKeys = children.map(getKey); 29391 if (oldChildrenKeys.join("") !== childrenKeys.join("")) addKey("children"); 29392 if (oldChildren.length !== children.length) addKey("children"); 29393 } 29394 const watchParams = paramsList.filter((key) => key[0] === "_").map((key) => key.replace(/_/, "")); 29395 watchParams.forEach((key) => { 29396 if (key in swiperParams && key in oldParams) { 29397 if (isObject$2(swiperParams[key]) && isObject$2(oldParams[key])) { 29398 const newKeys = Object.keys(swiperParams[key]); 29399 const oldKeys = Object.keys(oldParams[key]); 29400 if (newKeys.length !== oldKeys.length) { 29401 addKey(key); 29402 } else { 29403 newKeys.forEach((newKey) => { 29404 if (swiperParams[key][newKey] !== oldParams[key][newKey]) { 29405 addKey(key); 29406 } 29407 }); 29408 oldKeys.forEach((oldKey) => { 29409 if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); 29410 }); 29411 } 29412 } else if (swiperParams[key] !== oldParams[key]) { 29413 addKey(key); 29414 } 29415 } 29416 }); 29417 return keys; 29418} 29419const updateOnVirtualData = (swiper) => { 29420 if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; 29421 swiper.updateSlides(); 29422 swiper.updateProgress(); 29423 swiper.updateSlidesClasses(); 29424 swiper.emit("_virtualUpdated"); 29425 if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { 29426 swiper.parallax.setTranslate(); 29427 } 29428}; 29429function getChildren(originalSlots, slidesRef, oldSlidesRef) { 29430 if (originalSlots === void 0) { 29431 originalSlots = {}; 29432 } 29433 const slides = []; 29434 const slots = { 29435 "container-start": [], 29436 "container-end": [], 29437 "wrapper-start": [], 29438 "wrapper-end": [] 29439 }; 29440 const getSlidesFromElements = (els, slotName) => { 29441 if (!Array.isArray(els)) { 29442 return; 29443 } 29444 els.forEach((vnode) => { 29445 const isFragment = typeof vnode.type === "symbol"; 29446 if (slotName === "default") slotName = "container-end"; 29447 if (isFragment && vnode.children) {
29448 getSlidesFromElements(vnode.children, slotName); 29449 } else if (vnode.type && (vnode.type.name === "SwiperSlide" || vnode.type.name === "AsyncComponentWrapper") || vnode.componentOptions && vnode.componentOptions.tag === "SwiperSlide") { 29450 slides.push(vnode); 29451 } else if (slots[slotName]) { 29452 slots[slotName].push(vnode); 29453 } 29454 }); 29455 }; 29456 Object.keys(originalSlots).forEach((slotName) => { 29457 if (typeof originalSlots[slotName] !== "function") return; 29458 const els = originalSlots[slotName](); 29459 getSlidesFromElements(els, slotName); 29460 }); 29461 oldSlidesRef.value = slidesRef.value; 29462 slidesRef.value = slides; 29463 return { 29464 slides, 29465 slots 29466 }; 29467} 29468function renderVirtual(swiperRef, slides, virtualData) { 29469 if (!virtualData) return null; 29470 const getSlideIndex = (index2) => { 29471 let slideIndex = index2; 29472 if (index2 < 0) { 29473 slideIndex = slides.length + index2; 29474 } else if (slideIndex >= slides.length) { 29475 slideIndex = slideIndex - slides.length; 29476 } 29477 return slideIndex; 29478 }; 29479 const style = swiperRef.value.isHorizontal() ? { 29480 [swiperRef.value.rtlTranslate ? "right" : "left"]: `${virtualData.offset}px` 29481 } : { 29482 top: `${virtualData.offset}px` 29483 }; 29484 const { 29485 from, 29486 to 29487 } = virtualData; 29488 const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; 29489 const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; 29490 const slidesToRender = []; 29491 for (let i = loopFrom; i < loopTo; i += 1) { 29492 if (i >= from && i <= to && slidesToRender.length < slides.length) { 29493 slidesToRender.push(slides[getSlideIndex(i)]); 29494 } 29495 } 29496 return slidesToRender.map((slide2) => { 29497 if (!slide2.props) slide2.props = {}; 29498 if (!slide2.props.style) slide2.props.style = {}; 29499 slide2.props.swiperRef = swiperRef; 29500 slide2.props.style = style; 29501 if (slide2.type) { 29502 return h(slide2.type, { 29503 ...slide2.props 29504 }, slide2.children); 29505 } else if (slide2.componentOptions) { 29506 return h(slide2.componentOptions.Ctor, { 29507 ...slide2.props 29508 }, slide2.componentOptions.children); 29509 } 29510 }); 29511} 29512const Swiper2 = { 29513 name: "Swiper", 29514 props: { 29515 tag: { 29516 type: String, 29517 default: "div" 29518 }, 29519 wrapperTag: { 29520 type: String, 29521 default: "div" 29522 }, 29523 modules: { 29524 type: Array, 29525 default: void 0 29526 }, 29527 init: { 29528 type: Boolean, 29529 default: void 0 29530 }, 29531 direction: { 29532 type: String, 29533 default: void 0 29534 }, 29535 oneWayMovement: { 29536 type: Boolean, 29537 default: void 0 29538 }, 29539 swiperElementNodeName: { 29540 type: String, 29541 default: "SWIPER-CONTAINER" 29542 }, 29543 touchEventsTarget: { 29544 type: String, 29545 default: void 0 29546 }, 29547 initialSlide: { 29548 type: Number, 29549 default: void 0 29550 }, 29551 speed: { 29552 type: Number, 29553 default: void 0 29554 }, 29555 cssMode: { 29556 type: Boolean, 29557 default: void 0 29558 }, 29559 updateOnWindowResize: { 29560 type: Boolean, 29561 default: void 0 29562 }, 29563 resizeObserver: { 29564 type: Boolean, 29565 default: void 0 29566 }, 29567 nested: { 29568 type: Boolean, 29569 default: void 0 29570 }, 29571 focusableElements: { 29572 type: String, 29573 default: void 0 29574 }, 29575 width: { 29576 type: Number, 29577 default: void 0 29578 }, 29579 height: { 29580 type: Number, 29581 default: void 0 29582 }, 29583 preventInteractionOnTransition: { 29584 type: Boolean, 29585 default: void 0 29586 }, 29587 userAgent: { 29588 type: String, 29589 default: void 0 29590 }, 29591 url: { 29592 type: String, 29593 default: void 0 29594 }, 29595 edgeSwipeDetection: { 29596 type: [Boolean, String], 29597 default: void 0 29598 }, 29599 edgeSwipeThreshold: { 29600 type: Number, 29601 default: void 0 29602 }, 29603 autoHeight: { 29604 type: Boolean, 29605 default: void 0 29606 }, 29607 setWrapperSize: { 29608 type: Boolean, 29609 default: void 0 29610 }, 29611 virtualTranslate: { 29612 type: Boolean, 29613 default: void 0 29614 }, 29615 effect: { 29616 type: String, 29617 default: void 0 29618 }, 29619 breakpoints: { 29620 type: Object, 29621 default: void 0 29622 }, 29623 breakpointsBase: { 29624 type: String, 29625 default: void 0 29626 }, 29627 spaceBetween: { 29628 type: [Number, String], 29629 default: void 0 29630 }, 29631 slidesPerView: { 29632 type: [Number, String], 29633 default: void 0 29634 }, 29635 maxBackfaceHiddenSlides: { 29636 type: Number, 29637 default: void 0 29638 }, 29639 slidesPerGroup: { 29640 type: Number, 29641 default: void 0 29642 }, 29643 slidesPerGroupSkip: { 29644 type: Number, 29645 default: void 0 29646 }, 29647 slidesPerGroupAuto: { 29648 type: Boolean, 29649 default: void 0 29650 }, 29651 centeredSlides: { 29652 type: Boolean, 29653 default: void 0 29654 },
29655 centeredSlidesBounds: { 29656 type: Boolean, 29657 default: void 0 29658 }, 29659 slidesOffsetBefore: { 29660 type: Number, 29661 default: void 0 29662 }, 29663 slidesOffsetAfter: { 29664 type: Number, 29665 default: void 0 29666 }, 29667 normalizeSlideIndex: { 29668 type: Boolean, 29669 default: void 0 29670 }, 29671 centerInsufficientSlides: { 29672 type: Boolean, 29673 default: void 0 29674 }, 29675 watchOverflow: { 29676 type: Boolean, 29677 default: void 0 29678 }, 29679 roundLengths: { 29680 type: Boolean, 29681 default: void 0 29682 }, 29683 touchRatio: { 29684 type: Number, 29685 default: void 0 29686 }, 29687 touchAngle: { 29688 type: Number, 29689 default: void 0 29690 }, 29691 simulateTouch: { 29692 type: Boolean, 29693 default: void 0 29694 }, 29695 shortSwipes: { 29696 type: Boolean, 29697 default: void 0 29698 }, 29699 longSwipes: { 29700 type: Boolean, 29701 default: void 0 29702 }, 29703 longSwipesRatio: { 29704 type: Number, 29705 default: void 0 29706 }, 29707 longSwipesMs: { 29708 type: Number, 29709 default: void 0 29710 }, 29711 followFinger: { 29712 type: Boolean, 29713 default: void 0 29714 }, 29715 allowTouchMove: { 29716 type: Boolean, 29717 default: void 0 29718 }, 29719 threshold: { 29720 type: Number, 29721 default: void 0 29722 }, 29723 touchMoveStopPropagation: { 29724 type: Boolean, 29725 default: void 0 29726 }, 29727 touchStartPreventDefault: { 29728 type: Boolean, 29729 default: void 0 29730 }, 29731 touchStartForcePreventDefault: { 29732 type: Boolean, 29733 default: void 0 29734 }, 29735 touchReleaseOnEdges: { 29736 type: Boolean, 29737 default: void 0 29738 }, 29739 uniqueNavElements: { 29740 type: Boolean, 29741 default: void 0 29742 }, 29743 resistance: { 29744 type: Boolean, 29745 default: void 0 29746 }, 29747 resistanceRatio: { 29748 type: Number, 29749 default: void 0 29750 }, 29751 watchSlidesProgress: { 29752 type: Boolean, 29753 default: void 0 29754 }, 29755 grabCursor: { 29756 type: Boolean, 29757 default: void 0 29758 }, 29759 preventClicks: { 29760 type: Boolean, 29761 default: void 0 29762 }, 29763 preventClicksPropagation: { 29764 type: Boolean, 29765 default: void 0 29766 }, 29767 slideToClickedSlide: { 29768 type: Boolean, 29769 default: void 0 29770 }, 29771 loop: { 29772 type: Boolean, 29773 default: void 0 29774 }, 29775 loopedSlides: { 29776 type: Number, 29777 default: void 0 29778 }, 29779 loopPreventsSliding: { 29780 type: Boolean, 29781 default: void 0 29782 }, 29783 loopAdditionalSlides: { 29784 type: Number, 29785 default: void 0 29786 }, 29787 loopAddBlankSlides: { 29788 type: Boolean, 29789 default: void 0 29790 }, 29791 rewind: { 29792 type: Boolean, 29793 default: void 0 29794 }, 29795 allowSlidePrev: { 29796 type: Boolean, 29797 default: void 0 29798 }, 29799 allowSlideNext: { 29800 type: Boolean, 29801 default: void 0 29802 }, 29803 swipeHandler: { 29804 type: Boolean, 29805 default: void 0 29806 }, 29807 noSwiping: { 29808 type: Boolean, 29809 default: void 0 29810 }, 29811 noSwipingClass: { 29812 type: String, 29813 default: void 0 29814 }, 29815 noSwipingSelector: { 29816 type: String, 29817 default: void 0 29818 }, 29819 passiveListeners: { 29820 type: Boolean, 29821 default: void 0 29822 }, 29823 containerModifierClass: { 29824 type: String, 29825 default: void 0 29826 }, 29827 slideClass: { 29828 type: String, 29829 default: void 0 29830 }, 29831 slideActiveClass: { 29832 type: String, 29833 default: void 0 29834 }, 29835 slideVisibleClass: { 29836 type: String, 29837 default: void 0 29838 }, 29839 slideFullyVisibleClass: { 29840 type: String, 29841 default: void 0 29842 }, 29843 slideBlankClass: { 29844 type: String, 29845 default: void 0 29846 }, 29847 slideNextClass: { 29848 type: String, 29849 default: void 0 29850 }, 29851 slidePrevClass: { 29852 type: String, 29853 default: void 0 29854 }, 29855 wrapperClass: { 29856 type: String, 29857 default: void 0 29858 }, 29859 lazyPreloaderClass: { 29860 type: String, 29861 default: void 0 29862 }, 29863 lazyPreloadPrevNext: { 29864 type: Number, 29865 default: void 0 29866 }, 29867 runCallbacksOnInit: { 29868 type: Boolean, 29869 default: void 0 29870 }, 29871 observer: { 29872 type: Boolean, 29873 default: void 0 29874 }, 29875 observeParents: { 29876 type: Boolean, 29877 default: void 0 29878 }, 29879 observeSlideChildren: { 29880 type: Boolean, 29881 default: void 0 29882 }, 29883 a11y: { 29884 type: [Boolean, Object], 29885 default: void 0 29886 }, 29887 autoplay: { 29888 type: [Boolean, Object], 29889 default: void 0 29890 }, 29891 controller: { 29892 type: Object, 29893 default: void 0 29894 }, 29895 coverflowEffect: { 29896 type: Object, 29897 default: void 0 29898 }, 29899 cubeEffect: { 29900 type: Object, 29901 default: void 0 29902 }, 29903 fadeEffect: { 29904 type: Object, 29905 default: void 0 29906 }, 29907 flipEffect: { 29908 type: Object, 29909 default: void 0 29910 }, 29911 creativeEffect: { 29912 type: Object, 29913 default: void 0 29914 }, 29915 cardsEffect: { 29916 type: Object, 29917 default: void 0 29918 }, 29919 hashNavigation: { 29920 type: [Boolean, Object], 29921 default: void 0 29922 }, 29923 history: { 29924 type: [Boolean, Object], 29925 default: void 0 29926 }, 29927 keyboard: { 29928 type: [Boolean, Object], 29929 default: void 0 29930 }, 29931 mousewheel: { 29932 type: [Boolean, Object], 29933 default: void 0 29934 }, 29935 navigation: { 29936 type: [Boolean, Object], 29937 default: void 0 29938 }, 29939 pagination: { 29940 type: [Boolean, Object], 29941 default: void 0 29942 }, 29943 parallax: { 29944 type: [Boolean, Object], 29945 default: void 0 29946 }, 29947 scrollbar: { 29948 type: [Boolean, Object], 29949 default: void 0 29950 }, 29951 thumbs: { 29952 type: Object, 29953 default: void 0 29954 }, 29955 virtual: { 29956 type: [Boolean, Object], 29957 default: void 0 29958 }, 29959 zoom: { 29960 type: [Boolean, Object], 29961 default: void 0 29962 }, 29963 grid: { 29964 type: [Object], 29965 default: void 0 29966 }, 29967 freeMode: { 29968 type: [Boolean, Object], 29969 default: void 0 29970 }, 29971 enabled: { 29972 type: Boolean, 29973 default: void 0 29974 } 29975 }, 29976 emits: ["_beforeBreakpoint", "_containerClasses", "_slideClass", "_slideClasses", "_swiper", "_freeModeNoMomentumRelease", "activeIndexChange", "afterInit", "autoplay", "autoplayStart", "autoplayStop", "autoplayPause", "autoplayResume", "autoplayTimeLeft", "beforeDestroy", "beforeInit", "beforeLoopFix", "beforeResize", "beforeSlideChangeStart", "beforeTransitionStart", "breakpoint", "changeDirection", "click", "disable", "doubleTap", "doubleClick", "destroy", "enable", "fromEdge", "hashChange", "hashSet", "init", "keyPress", "lock", "loopFix", "momentumBounce", "navigationHide", "navigationShow", "navigationPrev", "navigationNext", "observerUpdate", "orientationchange", "paginationHide", "paginationRender", "paginationShow", "paginationUpdate", "progress", "reachBeginning", "reachEnd", "realIndexChange", "resize", "scroll", "scrollbarDragEnd", "scrollbarDragMove", "scrollbarDragStart", "setTransition", "setTranslate", "slidesUpdated", "slideChange", "slideChangeTransitionEnd", "slideChangeTransitionStart", "slideNextTransitionEnd", "slideNextTransitionStart", "slidePrevTransitionEnd", "slidePrevTransitionStart", "slideResetTransitionStart", "slideResetTransitionEnd", "sliderMove", "sliderFirstMove", "slidesLengthChange", "slidesGridLengthChange", "snapGridLengthChange", "snapIndexChange", "swiper", "tap", "toEdge", "touchEnd", "touchMove", "touchMoveOpposite", "touchStart", "transitionEnd", "transitionStart", "unlock", "update", "virtualUpdate", "zoomChange"], 29977 setup(props2, _ref) { 29978 let { 29979 slots: originalSlots, 29980 emit: emit2 29981 } = _ref; 29982 const { 29983 tag: Tag, 29984 wrapperTag: WrapperTag 29985 } = props2; 29986 const containerClasses = ref("swiper"); 29987 const virtualData = ref(null); 29988 const breakpointChanged = ref(false); 29989 const initializedRef = ref(false); 29990 const swiperElRef = ref(null); 29991 const swiperRef = ref(null); 29992 const oldPassedParamsRef = ref(null); 29993 const slidesRef = { 29994 value: [] 29995 }; 29996 const oldSlidesRef = { 29997 value: [] 29998 }; 29999 const nextElRef = ref(null); 30000 const prevElRef = ref(null); 30001 const paginationElRef = ref(null); 30002 const scrollbarElRef = ref(null); 30003 const { 30004 params: swiperParams, 30005 passedParams 30006 } = getParams(props2); 30007 getChildren(originalSlots, slidesRef, oldSlidesRef); 30008 oldPassedParamsRef.value = passedParams; 30009 oldSlidesRef.value = slidesRef.value; 30010 const onBeforeBreakpoint = () => { 30011 getChildren(originalSlots, slidesRef, oldSlidesRef); 30012 breakpointChanged.value = true; 30013 }; 30014 swiperParams.onAny = function(event) { 30015 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 30016 args[_key - 1] = arguments[_key]; 30017 } 30018 emit2(event, ...args); 30019 };
30020 Object.assign(swiperParams.on, { 30021 _beforeBreakpoint: onBeforeBreakpoint, 30022 _containerClasses(swiper, classes2) { 30023 containerClasses.value = classes2; 30024 } 30025 }); 30026 const passParams = { 30027 ...swiperParams 30028 }; 30029 delete passParams.wrapperClass; 30030 swiperRef.value = new Swiper$1(passParams); 30031 if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { 30032 swiperRef.value.virtual.slides = slidesRef.value; 30033 const extendWith = { 30034 cache: false, 30035 slides: slidesRef.value, 30036 renderExternal: (data) => { 30037 virtualData.value = data; 30038 }, 30039 renderExternalUpdate: false 30040 }; 30041 extend$1(swiperRef.value.params.virtual, extendWith); 30042 extend$1(swiperRef.value.originalParams.virtual, extendWith); 30043 } 30044 onUpdated(() => { 30045 if (!initializedRef.value && swiperRef.value) { 30046 swiperRef.value.emitSlidesClasses(); 30047 initializedRef.value = true; 30048 } 30049 const { 30050 passedParams: newPassedParams 30051 } = getParams(props2); 30052 const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, (c) => c.props && c.props.key); 30053 oldPassedParamsRef.value = newPassedParams; 30054 if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { 30055 updateSwiper({ 30056 swiper: swiperRef.value, 30057 slides: slidesRef.value, 30058 passedParams: newPassedParams, 30059 changedParams, 30060 nextEl: nextElRef.value, 30061 prevEl: prevElRef.value, 30062 scrollbarEl: scrollbarElRef.value, 30063 paginationEl: paginationElRef.value 30064 }); 30065 } 30066 breakpointChanged.value = false; 30067 }); 30068 provide("swiper", swiperRef); 30069 watch(virtualData, () => { 30070 nextTick$1(() => { 30071 updateOnVirtualData(swiperRef.value); 30072 }); 30073 }); 30074 onMounted(() => { 30075 if (!swiperElRef.value) return; 30076 mountSwiper({ 30077 el: swiperElRef.value, 30078 nextEl: nextElRef.value, 30079 prevEl: prevElRef.value, 30080 paginationEl: paginationElRef.value, 30081 scrollbarEl: scrollbarElRef.value, 30082 swiper: swiperRef.value 30083 }, swiperParams); 30084 emit2("swiper", swiperRef.value); 30085 }); 30086 onBeforeUnmount(() => { 30087 if (swiperRef.value && !swiperRef.value.destroyed) { 30088 swiperRef.value.destroy(true, false); 30089 } 30090 });
30091 function renderSlides(slides) { 30092 if (swiperParams.virtual) { 30093 return renderVirtual(swiperRef, slides, virtualData.value); 30094 } 30095 slides.forEach((slide2, index2) => { 30096 if (!slide2.props) slide2.props = {}; 30097 slide2.props.swiperRef = swiperRef; 30098 slide2.props.swiperSlideIndex = index2; 30099 }); 30100 return slides; 30101 } 30102 return () => { 30103 const { 30104 slides, 30105 slots 30106 } = getChildren(originalSlots, slidesRef, oldSlidesRef); 30107 return h(Tag, { 30108 ref: swiperElRef, 30109 class: uniqueClasses(containerClasses.value) 30110 }, [slots["container-start"], h(WrapperTag, { 30111 class: wrapperClass(swiperParams.wrapperClass) 30112 }, [slots["wrapper-start"], renderSlides(slides), slots["wrapper-end"]]), needsNavigation(props2) && [h("div", { 30113 ref: prevElRef, 30114 class: "swiper-button-prev" 30115 }), h("div", { 30116 ref: nextElRef, 30117 class: "swiper-button-next" 30118 })], needsScrollbar(props2) && h("div", { 30119 ref: scrollbarElRef, 30120 class: "swiper-scrollbar" 30121 }), needsPagination(props2) && h("div", { 30122 ref: paginationElRef, 30123 class: "swiper-pagination" 30124 }), slots["container-end"]]); 30125 }; 30126 } 30127}; 30128const SwiperSlide = { 30129 name: "SwiperSlide", 30130 props: { 30131 tag: { 30132 type: String, 30133 default: "div" 30134 }, 30135 swiperRef: { 30136 type: Object, 30137 required: false 30138 }, 30139 swiperSlideIndex: { 30140 type: Number, 30141 default: void 0, 30142 required: false 30143 }, 30144 zoom: { 30145 type: Boolean, 30146 default: void 0, 30147 required: false 30148 }, 30149 lazy: { 30150 type: Boolean, 30151 default: false, 30152 required: false 30153 }, 30154 virtualIndex: { 30155 type: [String, Number], 30156 default: void 0 30157 } 30158 }, 30159 setup(props2, _ref) { 30160 let { 30161 slots 30162 } = _ref; 30163 let eventAttached = false; 30164 const { 30165 swiperRef 30166 } = props2; 30167 const slideElRef = ref(null); 30168 const slideClasses = ref("swiper-slide"); 30169 const lazyLoaded = ref(false); 30170 function updateClasses(swiper, el, classNames) { 30171 if (el === slideElRef.value) { 30172 slideClasses.value = classNames; 30173 } 30174 } 30175 onMounted(() => { 30176 if (!swiperRef || !swiperRef.value) return; 30177 swiperRef.value.on("_slideClass", updateClasses); 30178 eventAttached = true; 30179 }); 30180 onBeforeUpdate(() => { 30181 if (eventAttached || !swiperRef || !swiperRef.value) return; 30182 swiperRef.value.on("_slideClass", updateClasses); 30183 eventAttached = true; 30184 }); 30185 onUpdated(() => { 30186 if (!slideElRef.value || !swiperRef || !swiperRef.value) return; 30187 if (typeof props2.swiperSlideIndex !== "undefined") { 30188 slideElRef.value.swiperSlideIndex = props2.swiperSlideIndex; 30189 } 30190 if (swiperRef.value.destroyed) { 30191 if (slideClasses.value !== "swiper-slide") { 30192 slideClasses.value = "swiper-slide"; 30193 } 30194 } 30195 }); 30196 onBeforeUnmount(() => { 30197 if (!swiperRef || !swiperRef.value) return; 30198 swiperRef.value.off("_slideClass", updateClasses); 30199 }); 30200 const slideData = computed(() => ({ 30201 isActive: slideClasses.value.indexOf("swiper-slide-active") >= 0, 30202 isVisible: slideClasses.value.indexOf("swiper-slide-visible") >= 0, 30203 isPrev: slideClasses.value.indexOf("swiper-slide-prev") >= 0, 30204 isNext: slideClasses.value.indexOf("swiper-slide-next") >= 0 30205 })); 30206 provide("swiperSlide", slideData); 30207 const onLoad2 = () => { 30208 lazyLoaded.value = true; 30209 }; 30210 return () => { 30211 return h(props2.tag, { 30212 class: uniqueClasses(`${slideClasses.value}`), 30213 ref: slideElRef, 30214 "data-swiper-slide-index": typeof props2.virtualIndex === "undefined" && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props2.swiperSlideIndex : props2.virtualIndex, 30215 onLoadCapture: onLoad2 30216 }, props2.zoom ? h("div", { 30217 class: "swiper-zoom-container", 30218 "data-swiper-zoom": typeof props2.zoom === "number" ? props2.zoom : void 0 30219 }, [slots.default && slots.default(slideData.value), props2.lazy && !lazyLoaded.value && h("div", { 30220 class: "swiper-lazy-preloader" 30221 })]) : [slots.default && slots.default(slideData.value), props2.lazy && !lazyLoaded.value && h("div", { 30222 class: "swiper-lazy-preloader" 30223 })]); 30224 }; 30225 } 30226}; 30227const breadcrumbExtension = (el, binding) => { 30228 if (binding.value) { 30229 if (binding.value.label && binding.value.url) { 30230 store.commit(`${ENVIRONMENT_TYPES.NAME}/${ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BREADCRUMB_EXTENSION}`, { 30231 [ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION]: binding.value 30232 }); 30233 } 30234 } 30235}; 30236const anchorScrollIntoView = (el, binding) => { 30237 if (window.location.hash === binding.value) { 30238 requestAnimationFrame(() => { 30239 el.scrollIntoView({ behavior: "smooth" }); 30240 }); 30241 } 30242}; 30243const hideCookieConsent = () => { 30244 store.commit(`${CONSENT_TYPES.NAME}/${CONSENT_TYPES.mutations.CONSENT_SET_DONE}`, { 30245 [CONSENT_TYPES.state.CONSENT_DONE]: true 30246 }); 30247}; 30248const lazy = (fn) => { 30249 let called = false;
30250 let result; 30251 return () => { 30252 if (!called) { 30253 called = true; 30254 result = fn(); 30255 } 30256 return result; 30257 }; 30258}; 30259class Env { 30260 static isServer() { 30261 return typeof document === "undefined"; 30262 } 30263} 30264function createMapScript(options2) { 30265 const googleMapScript = document.createElement("SCRIPT"); 30266 if (typeof options2 !== "object") { 30267 throw new Error("options should be an object"); 30268 } 30269 if (Array.prototype.isPrototypeOf(options2.libraries)) { 30270 options2.libraries = options2.libraries.join(","); 30271 } 30272 options2["callback"] = "vueGoogleMapsInit"; 30273 let baseUrl = "https://maps.googleapis.com/maps/api/js?"; 30274 let url = baseUrl + Object.keys(options2).map((key) => encodeURIComponent(key) + "=" + encodeURIComponent(options2[key])).join("&"); 30275 googleMapScript.setAttribute("src", url); 30276 googleMapScript.setAttribute("async", ""); 30277 googleMapScript.setAttribute("defer", ""); 30278 return googleMapScript; 30279} 30280let isApiSetUp = false; 30281function loadGMapApi(options2) { 30282 if (Env.isServer()) { 30283 return; 30284 } 30285 if (!isApiSetUp) { 30286 isApiSetUp = true; 30287 const googleMapScript = createMapScript(options2); 30288 document.head.appendChild(googleMapScript); 30289 } else { 30290 throw new Error("You already started the loading of google maps"); 30291 } 30292} 30293const bindEvents = (vueInst, googleMapsInst, events2) => { 30294 for (let eventName of events2) { 30295 const propName = `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`.replace( 30296 /[-_]+(.)?/g, 30297 (_, c) => c ? c.toUpperCase() : "" 30298 ); 30299 if (vueInst.$props[propName] || vueInst.$attrs[propName]) { 30300 googleMapsInst.addListener(eventName, (ev) => { 30301 vueInst.$emit(eventName, ev); 30302 }); 30303 } else if (vueInst.$gmapOptions.autobindAllEvents || vueInst.$attrs[eventName]) { 30304 googleMapsInst.addListener(eventName, (ev) => { 30305 vueInst.$emit(eventName, ev); 30306 }); 30307 } 30308 } 30309}; 30310function WatchPrimitiveProperties(vueInst, propertiesToTrack, handler, immediate = false) { 30311 let isHandled = false; 30312 function requestHandle() { 30313 if (!isHandled) { 30314 isHandled = true; 30315 vueInst.$nextTick(() => { 30316 isHandled = false; 30317 handler(); 30318 }); 30319 } 30320 } 30321 for (let prop of propertiesToTrack) { 30322 vueInst.$watch(prop, requestHandle, { immediate }); 30323 } 30324} 30325class Str { 30326 static capitalizeFirstLetter(string) { 30327 return string.charAt(0).toUpperCase() + string.slice(1); 30328 } 30329} 30330function getPropsValues(vueInst, props2) { 30331 return Object.keys(props2).reduce((acc, prop) => { 30332 if (vueInst[prop] !== void 0) { 30333 acc[prop] = vueInst[prop]; 30334 } 30335 return acc; 30336 }, {}); 30337} 30338function bindProps(vueInst, googleMapsInst, props2) { 30339 for (let attribute in props2) { 30340 let { twoWay, type, trackProperties, noBind } = props2[attribute]; 30341 if (noBind) continue; 30342 const setMethodName = "set" + Str.capitalizeFirstLetter(attribute); 30343 const getMethodName = "get" + Str.capitalizeFirstLetter(attribute); 30344 const eventName = attribute.toLowerCase() + "_changed"; 30345 const initialValue = vueInst[attribute]; 30346 if (typeof googleMapsInst[setMethodName] === "undefined") { 30347 throw new Error( 30348 `${setMethodName} is not a method of (the Maps object corresponding to) ${vueInst.$options._componentTag}` 30349 ); 30350 } 30351 if (type !== Object || !trackProperties) { 30352 vueInst.$watch( 30353 attribute, 30354 () => { 30355 const attributeValue = vueInst[attribute]; 30356 googleMapsInst[setMethodName](attributeValue); 30357 }, 30358 { 30359 immediate: typeof initialValue !== "undefined", 30360 deep: type === Object 30361 } 30362 ); 30363 } else { 30364 WatchPrimitiveProperties( 30365 vueInst, 30366 trackProperties.map((prop) => `${attribute}.${prop}`), 30367 () => { 30368 googleMapsInst[setMethodName](vueInst[attribute]); 30369 }, 30370 vueInst[attribute] !== void 0 30371 ); 30372 } 30373 if (twoWay && (vueInst.$gmapOptions.autobindAllEvents || vueInst.$attrs[eventName])) { 30374 googleMapsInst.addListener(eventName, () => { 30375 vueInst.$emit(eventName, googleMapsInst[getMethodName]()); 30376 }); 30377 } 30378 } 30379} 30380const MapElementMixin = { 30381 inject: { 30382 $mapPromise: { default: "abcdef" } 30383 }, 30384 provide() { 30385 this.$mapPromise.then((map) => { 30386 this.$map = map; 30387 }); 30388 return {}; 30389 } 30390}; 30391function buildComponent(options2) { 30392 const { mappedProps: mappedProps2, name, ctr, ctrArgs, events: events2, beforeCreate, afterCreate, props: props2, ...rest } = options2; 30393 const promiseName = `$${name}Promise`; 30394 const instanceName = `$${name}Object`; 30395 assert(!(rest.props instanceof Array), "`props` should be an object, not Array"); 30396 return { 30397 ...typeof GENERATE_DOC !== "undefined" ? { $vgmOptions: options2 } : {}, 30398 mixins: [MapElementMixin], 30399 props: { 30400 ...props2, 30401 ...mappedPropsToVueProps(mappedProps2) 30402 }, 30403 render() { 30404 return ""; 30405 }, 30406 provide() { 30407 const promise = this.$mapPromise.then((map) => { 30408 this.$map = map; 30409 const options3 = { 30410 ...this.options, 30411 map, 30412 ...getPropsValues(this, mappedProps2) 30413 }; 30414 delete options3.options; 30415 if (beforeCreate) { 30416 const result = beforeCreate.bind(this)(options3); 30417 if (result instanceof Promise) { 30418 return result.then(() => ({ options: options3 })); 30419 } 30420 } 30421 return { options: options3 }; 30422 }).then(({ options: options3 }) => { 30423 const ConstructorObject = ctr(); 30424 this[instanceName] = ctrArgs ? new (Function.prototype.bind.call( 30425 ConstructorObject, 30426 null, 30427 ...ctrArgs(options3, getPropsValues(this, props2 || {})) 30428 ))() : new ConstructorObject(options3); 30429 bindProps(this, this[instanceName], mappedProps2); 30430 bindEvents(this, this[instanceName], events2); 30431 if (afterCreate) { 30432 afterCreate.bind(this)(this[instanceName]); 30433 } 30434 return this[instanceName]; 30435 }); 30436 this[promiseName] = promise; 30437 return { [promiseName]: promise }; 30438 }, 30439 unmounted() { 30440 if (this[instanceName] && this[instanceName].setMap) { 30441 this[instanceName].setMap(null); 30442 } 30443 }, 30444 ...rest 30445 }; 30446} 30447function assert(v, message) { 30448 if (!v) throw new Error(message); 30449} 30450function mappedPropsToVueProps(mappedProps2) { 30451 return Object.entries(mappedProps2).map(([key, prop]) => { 30452 const value = {}; 30453 if ("type" in prop) value.type = prop.type; 30454 if ("default" in prop) value.default = prop.default; 30455 if ("required" in prop) value.required = prop.required; 30456 return [key, value]; 30457 }).reduce((acc, [key, val]) => { 30458 acc[key] = val; 30459 return acc; 30460 }, {}); 30461} 30462const props$9 = { 30463 draggable: { 30464 type: Boolean 30465 }, 30466 editable: { 30467 type: Boolean 30468 }, 30469 options: {
30470 twoWay: false, 30471 type: Object 30472 }, 30473 path: { 30474 type: Array, 30475 twoWay: true 30476 } 30477}; 30478const events$8 = [ 30479 "click", 30480 "dblclick", 30481 "drag", 30482 "dragend", 30483 "dragstart", 30484 "mousedown", 30485 "mousemove", 30486 "mouseout", 30487 "mouseover", 30488 "mouseup", 30489 "rightclick" 30490]; 30491const Polyline = buildComponent({ 30492 mappedProps: props$9, 30493 props: { 30494 deepWatch: { 30495 type: Boolean, 30496 default: false 30497 } 30498 }, 30499 events: events$8, 30500 name: "polyline", 30501 ctr: () => google.maps.Polyline, 30502 emits: events$8, 30503 afterCreate(inst) { 30504 let clearEvents = () => { 30505 }; 30506 events$8.forEach((event) => { 30507 inst.addListener(event, (payload) => { 30508 this.$emit(event, payload); 30509 }); 30510 }); 30511 this.$watch( 30512 "path", 30513 (path) => { 30514 if (path) { 30515 clearEvents(); 30516 this.$polylineObject.setPath(path); 30517 const mvcPath = this.$polylineObject.getPath(); 30518 const eventListeners = []; 30519 const updatePaths = () => { 30520 this.$emit("path_changed", this.$polylineObject.getPath()); 30521 }; 30522 eventListeners.push([mvcPath, mvcPath.addListener("insert_at", updatePaths)]); 30523 eventListeners.push([mvcPath, mvcPath.addListener("remove_at", updatePaths)]); 30524 eventListeners.push([mvcPath, mvcPath.addListener("set_at", updatePaths)]); 30525 clearEvents = () => { 30526 eventListeners.map( 30527 ([obj, listenerHandle]) => google.maps.event.removeListener(listenerHandle) 30528 ); 30529 }; 30530 } 30531 }, 30532 { 30533 deep: this.deepWatch, 30534 immediate: true 30535 } 30536 ); 30537 } 30538}); 30539const props$8 = { 30540 draggable: { 30541 type: Boolean 30542 }, 30543 editable: { 30544 type: Boolean 30545 }, 30546 options: { 30547 type: Object 30548 }, 30549 path: { 30550 type: Array, 30551 twoWay: true, 30552 noBind: true 30553 }, 30554 paths: { 30555 type: Array, 30556 twoWay: true, 30557 noBind: true 30558 } 30559}; 30560const events$7 = [ 30561 "click", 30562 "dblclick", 30563 "drag", 30564 "dragend", 30565 "dragstart", 30566 "mousedown", 30567 "mousemove", 30568 "mouseout", 30569 "mouseover", 30570 "mouseup", 30571 "rightclick", 30572 "paths_changed" 30573]; 30574const Polygon = buildComponent({ 30575 props: { 30576 deepWatch: { 30577 type: Boolean, 30578 default: false 30579 } 30580 }, 30581 events: events$7, 30582 mappedProps: props$8, 30583 name: "polygon", 30584 ctr: () => google.maps.Polygon, 30585 emits: events$7, 30586 beforeCreate(options2) { 30587 if (!options2.path) delete options2.path; 30588 if (!options2.paths) delete options2.paths; 30589 }, 30590 afterCreate(inst) { 30591 let clearEvents = () => { 30592 }; 30593 events$7.forEach((event) => { 30594 inst.addListener(event, (payload) => { 30595 this.$emit(event, payload); 30596 }); 30597 }); 30598 this.$watch( 30599 "paths", 30600 (paths) => { 30601 if (paths) { 30602 clearEvents(); 30603 inst.setPaths(paths); 30604 const updatePaths = () => { 30605 this.$emit("paths_changed", inst.getPaths()); 30606 }; 30607 const eventListeners = []; 30608 const mvcArray = inst.getPaths(); 30609 for (let i = 0; i < mvcArray.getLength(); i++) { 30610 let mvcPath = mvcArray.getAt(i); 30611 eventListeners.push([mvcPath, mvcPath.addListener("insert_at", updatePaths)]); 30612 eventListeners.push([mvcPath, mvcPath.addListener("remove_at", updatePaths)]); 30613 eventListeners.push([mvcPath, mvcPath.addListener("set_at", updatePaths)]); 30614 } 30615 eventListeners.push([mvcArray, mvcArray.addListener("insert_at", updatePaths)]); 30616 eventListeners.push([mvcArray, mvcArray.addListener("remove_at", updatePaths)]); 30617 eventListeners.push([mvcArray, mvcArray.addListener("set_at", updatePaths)]); 30618 clearEvents = () => { 30619 eventListeners.map( 30620 ([obj, listenerHandle]) => google.maps.event.removeListener(listenerHandle) 30621 ); 30622 }; 30623 } 30624 }, 30625 { 30626 deep: this.deepWatch, 30627 immediate: true 30628 } 30629 ); 30630 this.$watch( 30631 "path", 30632 (path) => { 30633 if (path) { 30634 clearEvents(); 30635 inst.setPaths(path); 30636 const mvcPath = inst.getPath(); 30637 const eventListeners = []; 30638 const updatePaths = () => { 30639 this.$emit("path_changed", inst.getPath()); 30640 }; 30641 eventListeners.push([mvcPath, mvcPath.addListener("insert_at", updatePaths)]); 30642 eventListeners.push([mvcPath, mvcPath.addListener("remove_at", updatePaths)]); 30643 eventListeners.push([mvcPath, mvcPath.addListener("set_at", updatePaths)]); 30644 clearEvents = () => { 30645 eventListeners.map( 30646 ([obj, listenerHandle]) => google.maps.event.removeListener(listenerHandle) 30647 ); 30648 }; 30649 } 30650 }, 30651 { 30652 deep: this.deepWatch, 30653 immediate: true 30654 } 30655 ); 30656 } 30657}); 30658const props$7 = { 30659 center: { 30660 type: Object, 30661 twoWay: true, 30662 required: true 30663 }, 30664 radius: { 30665 type: Number, 30666 twoWay: true 30667 }, 30668 draggable: { 30669 type: Boolean, 30670 default: false 30671 }, 30672 editable: { 30673 type: Boolean, 30674 default: false 30675 }, 30676 options: { 30677 type: Object,
30678 twoWay: false 30679 } 30680}; 30681const events$6 = [ 30682 "click", 30683 "dblclick", 30684 "drag", 30685 "dragend", 30686 "dragstart", 30687 "mousedown", 30688 "mousemove", 30689 "mouseout", 30690 "mouseover", 30691 "mouseup", 30692 "rightclick" 30693]; 30694const Circle = buildComponent({ 30695 mappedProps: props$7, 30696 name: "circle", 30697 ctr: () => google.maps.Circle, 30698 events: events$6, 30699 emits: events$6, 30700 afterCreate(inst) { 30701 events$6.forEach((event) => { 30702 inst.addListener(event, (payload) => { 30703 this.$emit(event, payload); 30704 }); 30705 }); 30706 } 30707}); 30708const props$6 = { 30709 bounds: { 30710 type: Object, 30711 twoWay: true 30712 }, 30713 draggable: { 30714 type: Boolean, 30715 default: false 30716 }, 30717 editable: { 30718 type: Boolean, 30719 default: false 30720 }, 30721 options: { 30722 type: Object, 30723 twoWay: false 30724 } 30725}; 30726const events$5 = [ 30727 "click", 30728 "dblclick", 30729 "drag", 30730 "dragend", 30731 "dragstart", 30732 "mousedown", 30733 "mousemove", 30734 "mouseout", 30735 "mouseover", 30736 "mouseup", 30737 "rightclick" 30738]; 30739const Rectangle = buildComponent({ 30740 mappedProps: props$6, 30741 name: "rectangle", 30742 ctr: () => google.maps.Rectangle, 30743 events: events$5, 30744 emits: events$5, 30745 afterCreate(inst) { 30746 events$5.forEach((event) => { 30747 inst.addListener(event, (payload) => { 30748 this.$emit(event, payload); 30749 }); 30750 }); 30751 } 30752}); 30753const props$5 = { 30754 animation: { 30755 twoWay: true, 30756 type: Number 30757 }, 30758 attribution: { 30759 type: Object 30760 }, 30761 clickable: { 30762 type: Boolean, 30763 twoWay: true, 30764 default: true 30765 }, 30766 cursor: { 30767 type: String, 30768 twoWay: true 30769 }, 30770 draggable: { 30771 type: Boolean, 30772 twoWay: true, 30773 default: false 30774 }, 30775 icon: { 30776 twoWay: true 30777 }, 30778 label: {}, 30779 opacity: { 30780 type: Number, 30781 default: 1 30782 }, 30783 options: { 30784 type: Object 30785 }, 30786 place: { 30787 type: Object 30788 }, 30789 position: { 30790 type: Object, 30791 twoWay: true 30792 }, 30793 shape: { 30794 type: Object, 30795 twoWay: true 30796 }, 30797 title: { 30798 type: String, 30799 twoWay: true 30800 }, 30801 zIndex: { 30802 type: Number, 30803 twoWay: true 30804 }, 30805 visible: { 30806 twoWay: true, 30807 default: true 30808 } 30809}; 30810const events$4 = [ 30811 "click", 30812 "rightclick", 30813 "dblclick", 30814 "drag", 30815 "dragstart", 30816 "dragend", 30817 "mouseup", 30818 "mousedown", 30819 "mouseover", 30820 "mouseout" 30821]; 30822const _sfc_main$1C = buildComponent({ 30823 mappedProps: props$5, 30824 events: events$4, 30825 name: "marker", 30826 ctr: () => google.maps.Marker, 30827 inject: { 30828 $clusterPromise: { 30829 default: null 30830 } 30831 }, 30832 emits: events$4, 30833 unmounted() { 30834 if (!this.$markerObject) { 30835 return; 30836 } 30837 if (this.$clusterObject) { 30838 this.$clusterObject.removeMarker(this.$markerObject, true); 30839 } else { 30840 this.$markerObject.setMap(null); 30841 } 30842 }, 30843 beforeCreate(options2) { 30844 if (this.$clusterPromise) { 30845 options2.map = null; 30846 } 30847 return this.$clusterPromise; 30848 }, 30849 afterCreate(inst) { 30850 events$4.forEach((event) => { 30851 inst.addListener(event, (payload) => { 30852 this.$emit(event, payload); 30853 }); 30854 }); 30855 if (this.$clusterPromise) { 30856 this.$clusterPromise.then((co) => { 30857 this.$clusterObject = co; 30858 co.addMarker(inst); 30859 }); 30860 } 30861 } 30862}); 30863function _sfc_render$1A(_ctx, _cache, $props, $setup, $data, $options) { 30864 return openBlock(), createElementBlock("div", { 30865 onClick: _cache[0] || (_cache[0] = () => { 30866 console.log("sdfsd"); 30867 }) 30868 }, [ 30869 renderSlot(_ctx.$slots, "default") 30870 ]); 30871} 30872const Marker = /* @__PURE__ */ _export_sfc(_sfc_main$1C, [["render", _sfc_render$1A]]); 30873var fastDeepEqual; 30874var hasRequiredFastDeepEqual; 30875function requireFastDeepEqual() { 30876 if (hasRequiredFastDeepEqual) return fastDeepEqual; 30877 hasRequiredFastDeepEqual = 1; 30878 fastDeepEqual = function equal2(a, b) { 30879 if (a === b) return true; 30880 if (a && b && typeof a == "object" && typeof b == "object") { 30881 if (a.constructor !== b.constructor) return false; 30882 var length, i, keys; 30883 if (Array.isArray(a)) { 30884 length = a.length; 30885 if (length != b.length) return false; 30886 for (i = length; i-- !== 0; ) 30887 if (!equal2(a[i], b[i])) return false; 30888 return true; 30889 } 30890 if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; 30891 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); 30892 if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); 30893 keys = Object.keys(a); 30894 length = keys.length; 30895 if (length !== Object.keys(b).length) return false;
vendor: 22,384 bytes, lines 30896-31540
30896 for (i = length; i-- !== 0; ) 30897 if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; 30898 for (i = length; i-- !== 0; ) { 30899 var key = keys[i]; 30900 if (!equal2(a[key], b[key])) return false; 30901 } 30902 return true; 30903 } 30904 return a !== a && b !== b; 30905 }; 30906 return fastDeepEqual; 30907} 30908var fastDeepEqualExports = requireFastDeepEqual(); 30909const equal = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports); 30910const ARRAY_TYPES = [ 30911 Int8Array, 30912 Uint8Array, 30913 Uint8ClampedArray, 30914 Int16Array, 30915 Uint16Array, 30916 Int32Array, 30917 Uint32Array, 30918 Float32Array, 30919 Float64Array 30920]; 30921const VERSION = 1; 30922const HEADER_SIZE = 8; 30923class KDBush { 30924 /** 30925 * Creates an index from raw `ArrayBuffer` data. 30926 * @param {ArrayBuffer} data 30927 */ 30928 static from(data) { 30929 if (!(data instanceof ArrayBuffer)) { 30930 throw new Error("Data must be an instance of ArrayBuffer."); 30931 } 30932 const [magic, versionAndType] = new Uint8Array(data, 0, 2); 30933 if (magic !== 219) { 30934 throw new Error("Data does not appear to be in a KDBush format."); 30935 } 30936 const version2 = versionAndType >> 4; 30937 if (version2 !== VERSION) { 30938 throw new Error(`Got v${version2} data when expected v${VERSION}.`); 30939 } 30940 const ArrayType = ARRAY_TYPES[versionAndType & 15]; 30941 if (!ArrayType) { 30942 throw new Error("Unrecognized array type."); 30943 } 30944 const [nodeSize] = new Uint16Array(data, 2, 1); 30945 const [numItems] = new Uint32Array(data, 4, 1); 30946 return new KDBush(numItems, nodeSize, ArrayType, data); 30947 } 30948 /** 30949 * Creates an index that will hold a given number of items. 30950 * @param {number} numItems 30951 * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default). 30952 * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default). 30953 * @param {ArrayBuffer} [data] (For internal use only) 30954 */ 30955 constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) { 30956 if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`); 30957 this.numItems = +numItems; 30958 this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535); 30959 this.ArrayType = ArrayType; 30960 this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array; 30961 const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType); 30962 const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT; 30963 const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT; 30964 const padCoords = (8 - idsByteSize % 8) % 8; 30965 if (arrayTypeIndex < 0) { 30966 throw new Error(`Unexpected typed array class: ${ArrayType}.`); 30967 } 30968 if (data && data instanceof ArrayBuffer) { 30969 this.data = data; 30970 this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems); 30971 this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2); 30972 this._pos = numItems * 2; 30973 this._finished = true; 30974 } else { 30975 this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords); 30976 this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems); 30977 this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2); 30978 this._pos = 0; 30979 this._finished = false; 30980 new Uint8Array(this.data, 0, 2).set([219, (VERSION << 4) + arrayTypeIndex]); 30981 new Uint16Array(this.data, 2, 1)[0] = nodeSize; 30982 new Uint32Array(this.data, 4, 1)[0] = numItems; 30983 } 30984 } 30985 /** 30986 * Add a point to the index. 30987 * @param {number} x 30988 * @param {number} y 30989 * @returns {number} An incremental index associated with the added item (starting from `0`). 30990 */ 30991 add(x, y) { 30992 const index2 = this._pos >> 1; 30993 this.ids[index2] = index2; 30994 this.coords[this._pos++] = x; 30995 this.coords[this._pos++] = y; 30996 return index2; 30997 } 30998 /** 30999 * Perform indexing of the added points. 31000 */ 31001 finish() { 31002 const numAdded = this._pos >> 1; 31003 if (numAdded !== this.numItems) { 31004 throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`); 31005 } 31006 sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0); 31007 this._finished = true; 31008 return this; 31009 } 31010 /** 31011 * Search the index for items within a given bounding box. 31012 * @param {number} minX 31013 * @param {number} minY 31014 * @param {number} maxX 31015 * @param {number} maxY 31016 * @returns {number[]} An array of indices correponding to the found items. 31017 */ 31018 range(minX, minY, maxX, maxY) { 31019 if (!this._finished) throw new Error("Data not yet indexed - call index.finish()."); 31020 const { ids, coords, nodeSize } = this; 31021 const stack2 = [0, ids.length - 1, 0]; 31022 const result = []; 31023 while (stack2.length) { 31024 const axis = stack2.pop() || 0; 31025 const right = stack2.pop() || 0; 31026 const left = stack2.pop() || 0; 31027 if (right - left <= nodeSize) { 31028 for (let i = left; i <= right; i++) { 31029 const x2 = coords[2 * i]; 31030 const y2 = coords[2 * i + 1]; 31031 if (x2 >= minX && x2 <= maxX && y2 >= minY && y2 <= maxY) result.push(ids[i]); 31032 } 31033 continue; 31034 } 31035 const m = left + right >> 1; 31036 const x = coords[2 * m]; 31037 const y = coords[2 * m + 1]; 31038 if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]); 31039 if (axis === 0 ? minX <= x : minY <= y) { 31040 stack2.push(left); 31041 stack2.push(m - 1); 31042 stack2.push(1 - axis); 31043 } 31044 if (axis === 0 ? maxX >= x : maxY >= y) { 31045 stack2.push(m + 1); 31046 stack2.push(right); 31047 stack2.push(1 - axis); 31048 } 31049 } 31050 return result; 31051 } 31052 /** 31053 * Search the index for items within a given radius. 31054 * @param {number} qx 31055 * @param {number} qy 31056 * @param {number} r Query radius. 31057 * @returns {number[]} An array of indices correponding to the found items. 31058 */ 31059 within(qx, qy, r) { 31060 if (!this._finished) throw new Error("Data not yet indexed - call index.finish()."); 31061 const { ids, coords, nodeSize } = this; 31062 const stack2 = [0, ids.length - 1, 0]; 31063 const result = []; 31064 const r2 = r * r; 31065 while (stack2.length) { 31066 const axis = stack2.pop() || 0; 31067 const right = stack2.pop() || 0; 31068 const left = stack2.pop() || 0; 31069 if (right - left <= nodeSize) { 31070 for (let i = left; i <= right; i++) { 31071 if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]); 31072 } 31073 continue; 31074 } 31075 const m = left + right >> 1; 31076 const x = coords[2 * m]; 31077 const y = coords[2 * m + 1]; 31078 if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]); 31079 if (axis === 0 ? qx - r <= x : qy - r <= y) { 31080 stack2.push(left); 31081 stack2.push(m - 1); 31082 stack2.push(1 - axis); 31083 } 31084 if (axis === 0 ? qx + r >= x : qy + r >= y) { 31085 stack2.push(m + 1); 31086 stack2.push(right); 31087 stack2.push(1 - axis); 31088 } 31089 } 31090 return result; 31091 } 31092} 31093function sort(ids, coords, nodeSize, left, right, axis) { 31094 if (right - left <= nodeSize) return; 31095 const m = left + right >> 1; 31096 select(ids, coords, m, left, right, axis); 31097 sort(ids, coords, nodeSize, left, m - 1, 1 - axis); 31098 sort(ids, coords, nodeSize, m + 1, right, 1 - axis); 31099} 31100function select(ids, coords, k, left, right, axis) { 31101 while (right > left) { 31102 if (right - left > 600) { 31103 const n = right - left + 1; 31104 const m = k - left + 1; 31105 const z = Math.log(n); 31106 const s = 0.5 * Math.exp(2 * z / 3); 31107 const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); 31108 const newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); 31109 const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); 31110 select(ids, coords, k, newLeft, newRight, axis); 31111 } 31112 const t = coords[2 * k + axis]; 31113 let i = left; 31114 let j = right; 31115 swapItem(ids, coords, left, k); 31116 if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right); 31117 while (i < j) { 31118 swapItem(ids, coords, i, j); 31119 i++; 31120 j--; 31121 while (coords[2 * i + axis] < t) i++; 31122 while (coords[2 * j + axis] > t) j--; 31123 } 31124 if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j); 31125 else { 31126 j++; 31127 swapItem(ids, coords, j, right); 31128 } 31129 if (j <= k) left = j + 1; 31130 if (k <= j) right = j - 1; 31131 } 31132} 31133function swapItem(ids, coords, i, j) { 31134 swap(ids, i, j); 31135 swap(coords, 2 * i, 2 * j); 31136 swap(coords, 2 * i + 1, 2 * j + 1); 31137} 31138function swap(arr, i, j) { 31139 const tmp = arr[i]; 31140 arr[i] = arr[j]; 31141 arr[j] = tmp; 31142} 31143function sqDist(ax, ay, bx, by) { 31144 const dx = ax - bx; 31145 const dy = ay - by; 31146 return dx * dx + dy * dy; 31147} 31148const defaultOptions = { 31149 minZoom: 0, 31150 // min zoom to generate clusters on 31151 maxZoom: 16, 31152 // max zoom level to cluster the points on 31153 minPoints: 2, 31154 // minimum points to form a cluster 31155 radius: 40, 31156 // cluster radius in pixels 31157 extent: 512, 31158 // tile extent (radius is calculated relative to it) 31159 nodeSize: 64, 31160 // size of the KD-tree leaf node, affects performance 31161 log: false, 31162 // whether to log timing info 31163 // whether to generate numeric ids for input features (in vector tiles) 31164 generateId: false, 31165 // a reduce function for calculating custom cluster properties 31166 reduce: null, 31167 // (accumulated, props) => { accumulated.sum += props.sum; } 31168 // properties to use for individual points when running the reducer 31169 map: (props2) => props2 31170 // props => ({sum: props.my_value}) 31171}; 31172const fround = Math.fround || /* @__PURE__ */ ((tmp) => (x) => { 31173 tmp[0] = +x; 31174 return tmp[0]; 31175})(new Float32Array(1)); 31176const OFFSET_ZOOM = 2; 31177const OFFSET_ID = 3; 31178const OFFSET_PARENT = 4; 31179const OFFSET_NUM = 5; 31180const OFFSET_PROP = 6; 31181class Supercluster { 31182 constructor(options2) { 31183 this.options = Object.assign(Object.create(defaultOptions), options2); 31184 this.trees = new Array(this.options.maxZoom + 1); 31185 this.stride = this.options.reduce ? 7 : 6; 31186 this.clusterProps = []; 31187 } 31188 load(points) { 31189 const { log, minZoom, maxZoom } = this.options; 31190 if (log) console.time("total time"); 31191 const timerId = `prepare ${points.length} points`; 31192 if (log) console.time(timerId); 31193 this.points = points; 31194 const data = []; 31195 for (let i = 0; i < points.length; i++) { 31196 const p2 = points[i]; 31197 if (!p2.geometry) continue; 31198 const [lng, lat] = p2.geometry.coordinates; 31199 const x = fround(lngX(lng)); 31200 const y = fround(latY(lat)); 31201 data.push( 31202 x, 31203 y, 31204 // projected point coordinates 31205 Infinity, 31206 // the last zoom the point was processed at 31207 i, 31208 // index of the source feature in the original input array 31209 -1, 31210 // parent cluster id 31211 1 31212 // number of points in a cluster 31213 ); 31214 if (this.options.reduce) data.push(0); 31215 } 31216 let tree = this.trees[maxZoom + 1] = this._createTree(data); 31217 if (log) console.timeEnd(timerId); 31218 for (let z = maxZoom; z >= minZoom; z--) { 31219 const now2 = +Date.now(); 31220 tree = this.trees[z] = this._createTree(this._cluster(tree, z)); 31221 if (log) console.log("z%d: %d clusters in %dms", z, tree.numItems, +Date.now() - now2); 31222 } 31223 if (log) console.timeEnd("total time"); 31224 return this; 31225 } 31226 getClusters(bbox, zoom) { 31227 let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180; 31228 const minLat = Math.max(-90, Math.min(90, bbox[1])); 31229 let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180; 31230 const maxLat = Math.max(-90, Math.min(90, bbox[3])); 31231 if (bbox[2] - bbox[0] >= 360) { 31232 minLng = -180; 31233 maxLng = 180; 31234 } else if (minLng > maxLng) { 31235 const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom); 31236 const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom); 31237 return easternHem.concat(westernHem); 31238 } 31239 const tree = this.trees[this._limitZoom(zoom)]; 31240 const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat)); 31241 const data = tree.data; 31242 const clusters = []; 31243 for (const id of ids) { 31244 const k = this.stride * id; 31245 clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]); 31246 } 31247 return clusters; 31248 } 31249 getChildren(clusterId) { 31250 const originId = this._getOriginId(clusterId); 31251 const originZoom = this._getOriginZoom(clusterId); 31252 const errorMsg = "No cluster with the specified id."; 31253 const tree = this.trees[originZoom]; 31254 if (!tree) throw new Error(errorMsg); 31255 const data = tree.data; 31256 if (originId * this.stride >= data.length) throw new Error(errorMsg); 31257 const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1)); 31258 const x = data[originId * this.stride]; 31259 const y = data[originId * this.stride + 1]; 31260 const ids = tree.within(x, y, r); 31261 const children = []; 31262 for (const id of ids) { 31263 const k = id * this.stride; 31264 if (data[k + OFFSET_PARENT] === clusterId) { 31265 children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]); 31266 } 31267 } 31268 if (children.length === 0) throw new Error(errorMsg); 31269 return children; 31270 } 31271 getLeaves(clusterId, limit, offset) { 31272 limit = limit || 10; 31273 offset = offset || 0; 31274 const leaves = []; 31275 this._appendLeaves(leaves, clusterId, limit, offset, 0); 31276 return leaves; 31277 } 31278 getTile(z, x, y) { 31279 const tree = this.trees[this._limitZoom(z)]; 31280 const z2 = Math.pow(2, z); 31281 const { extent, radius } = this.options; 31282 const p2 = radius / extent; 31283 const top = (y - p2) / z2; 31284 const bottom = (y + 1 + p2) / z2; 31285 const tile = { 31286 features: [] 31287 }; 31288 this._addTileFeatures( 31289 tree.range((x - p2) / z2, top, (x + 1 + p2) / z2, bottom), 31290 tree.data, 31291 x, 31292 y, 31293 z2, 31294 tile 31295 ); 31296 if (x === 0) { 31297 this._addTileFeatures( 31298 tree.range(1 - p2 / z2, top, 1, bottom), 31299 tree.data, 31300 z2, 31301 y, 31302 z2, 31303 tile 31304 ); 31305 } 31306 if (x === z2 - 1) { 31307 this._addTileFeatures( 31308 tree.range(0, top, p2 / z2, bottom), 31309 tree.data, 31310 -1, 31311 y, 31312 z2, 31313 tile 31314 ); 31315 } 31316 return tile.features.length ? tile : null; 31317 } 31318 getClusterExpansionZoom(clusterId) { 31319 let expansionZoom = this._getOriginZoom(clusterId) - 1; 31320 while (expansionZoom <= this.options.maxZoom) { 31321 const children = this.getChildren(clusterId); 31322 expansionZoom++; 31323 if (children.length !== 1) break; 31324 clusterId = children[0].properties.cluster_id; 31325 } 31326 return expansionZoom; 31327 } 31328 _appendLeaves(result, clusterId, limit, offset, skipped) { 31329 const children = this.getChildren(clusterId); 31330 for (const child of children) { 31331 const props2 = child.properties; 31332 if (props2 && props2.cluster) { 31333 if (skipped + props2.point_count <= offset) { 31334 skipped += props2.point_count; 31335 } else { 31336 skipped = this._appendLeaves(result, props2.cluster_id, limit, offset, skipped); 31337 } 31338 } else if (skipped < offset) { 31339 skipped++; 31340 } else { 31341 result.push(child); 31342 } 31343 if (result.length === limit) break; 31344 } 31345 return skipped; 31346 } 31347 _createTree(data) { 31348 const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array); 31349 for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]); 31350 tree.finish(); 31351 tree.data = data; 31352 return tree; 31353 } 31354 _addTileFeatures(ids, data, x, y, z2, tile) { 31355 for (const i of ids) { 31356 const k = i * this.stride; 31357 const isCluster = data[k + OFFSET_NUM] > 1; 31358 let tags, px, py; 31359 if (isCluster) { 31360 tags = getClusterProperties(data, k, this.clusterProps); 31361 px = data[k]; 31362 py = data[k + 1]; 31363 } else { 31364 const p2 = this.points[data[k + OFFSET_ID]]; 31365 tags = p2.properties; 31366 const [lng, lat] = p2.geometry.coordinates; 31367 px = lngX(lng); 31368 py = latY(lat); 31369 } 31370 const f = { 31371 type: 1, 31372 geometry: [[ 31373 Math.round(this.options.extent * (px * z2 - x)), 31374 Math.round(this.options.extent * (py * z2 - y)) 31375 ]], 31376 tags 31377 }; 31378 let id; 31379 if (isCluster || this.options.generateId) { 31380 id = data[k + OFFSET_ID]; 31381 } else { 31382 id = this.points[data[k + OFFSET_ID]].id; 31383 } 31384 if (id !== void 0) f.id = id; 31385 tile.features.push(f); 31386 } 31387 } 31388 _limitZoom(z) { 31389 return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1)); 31390 } 31391 _cluster(tree, zoom) { 31392 const { radius, extent, reduce: reduce2, minPoints } = this.options; 31393 const r = radius / (extent * Math.pow(2, zoom)); 31394 const data = tree.data; 31395 const nextData = []; 31396 const stride = this.stride; 31397 for (let i = 0; i < data.length; i += stride) { 31398 if (data[i + OFFSET_ZOOM] <= zoom) continue; 31399 data[i + OFFSET_ZOOM] = zoom; 31400 const x = data[i]; 31401 const y = data[i + 1]; 31402 const neighborIds = tree.within(data[i], data[i + 1], r); 31403 const numPointsOrigin = data[i + OFFSET_NUM]; 31404 let numPoints = numPointsOrigin; 31405 for (const neighborId of neighborIds) { 31406 const k = neighborId * stride; 31407 if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM]; 31408 } 31409 if (numPoints > numPointsOrigin && numPoints >= minPoints) { 31410 let wx = x * numPointsOrigin; 31411 let wy = y * numPointsOrigin; 31412 let clusterProperties; 31413 let clusterPropIndex = -1; 31414 const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length; 31415 for (const neighborId of neighborIds) { 31416 const k = neighborId * stride; 31417 if (data[k + OFFSET_ZOOM] <= zoom) continue; 31418 data[k + OFFSET_ZOOM] = zoom; 31419 const numPoints2 = data[k + OFFSET_NUM]; 31420 wx += data[k] * numPoints2; 31421 wy += data[k + 1] * numPoints2; 31422 data[k + OFFSET_PARENT] = id; 31423 if (reduce2) { 31424 if (!clusterProperties) { 31425 clusterProperties = this._map(data, i, true); 31426 clusterPropIndex = this.clusterProps.length; 31427 this.clusterProps.push(clusterProperties); 31428 } 31429 reduce2(clusterProperties, this._map(data, k)); 31430 } 31431 } 31432 data[i + OFFSET_PARENT] = id; 31433 nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints); 31434 if (reduce2) nextData.push(clusterPropIndex); 31435 } else { 31436 for (let j = 0; j < stride; j++) nextData.push(data[i + j]); 31437 if (numPoints > 1) { 31438 for (const neighborId of neighborIds) { 31439 const k = neighborId * stride; 31440 if (data[k + OFFSET_ZOOM] <= zoom) continue; 31441 data[k + OFFSET_ZOOM] = zoom; 31442 for (let j = 0; j < stride; j++) nextData.push(data[k + j]); 31443 } 31444 } 31445 } 31446 } 31447 return nextData; 31448 } 31449 // get index of the point from which the cluster originated 31450 _getOriginId(clusterId) { 31451 return clusterId - this.points.length >> 5; 31452 } 31453 // get zoom of the point from which the cluster originated 31454 _getOriginZoom(clusterId) { 31455 return (clusterId - this.points.length) % 32; 31456 } 31457 _map(data, i, clone) { 31458 if (data[i + OFFSET_NUM] > 1) { 31459 const props2 = this.clusterProps[data[i + OFFSET_PROP]]; 31460 return clone ? Object.assign({}, props2) : props2; 31461 } 31462 const original = this.points[data[i + OFFSET_ID]].properties; 31463 const result = this.options.map(original); 31464 return clone && result === original ? Object.assign({}, result) : result; 31465 } 31466} 31467function getClusterJSON(data, i, clusterProps) { 31468 return { 31469 type: "Feature", 31470 id: data[i + OFFSET_ID], 31471 properties: getClusterProperties(data, i, clusterProps), 31472 geometry: { 31473 type: "Point", 31474 coordinates: [xLng(data[i]), yLat(data[i + 1])] 31475 } 31476 }; 31477} 31478function getClusterProperties(data, i, clusterProps) { 31479 const count = data[i + OFFSET_NUM]; 31480 const abbrev = count >= 1e4 ? `${Math.round(count / 1e3)}k` : count >= 1e3 ? `${Math.round(count / 100) / 10}k` : count; 31481 const propIndex = data[i + OFFSET_PROP]; 31482 const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]); 31483 return Object.assign(properties, { 31484 cluster: true, 31485 cluster_id: data[i + OFFSET_ID], 31486 point_count: count, 31487 point_count_abbreviated: abbrev 31488 }); 31489} 31490function lngX(lng) { 31491 return lng / 360 + 0.5; 31492} 31493function latY(lat) { 31494 const sin = Math.sin(lat * Math.PI / 180); 31495 const y = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI; 31496 return y < 0 ? 0 : y > 1 ? 1 : y; 31497} 31498function xLng(x) { 31499 return (x - 0.5) * 360; 31500} 31501function yLat(y) { 31502 const y2 = (180 - y * 360) * Math.PI / 180; 31503 return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90; 31504} 31505/*! ***************************************************************************** 31506Copyright (c) Microsoft Corporation. 31507 31508Permission to use, copy, modify, and/or distribute this software for any 31509purpose with or without fee is hereby granted. 31510 31511THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 31512REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 31513AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 31514INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 31515LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 31516OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 31517PERFORMANCE OF THIS SOFTWARE. 31518***************************************************************************** */ 31519function __rest(s, e) { 31520 var t = {}; 31521 for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e.indexOf(p2) < 0) 31522 t[p2] = s[p2]; 31523 if (s != null && typeof Object.getOwnPropertySymbols === "function") 31524 for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) { 31525 if (e.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) 31526 t[p2[i]] = s[p2[i]]; 31527 } 31528 return t; 31529} 31530class MarkerUtils { 31531 static isAdvancedMarkerAvailable(map) { 31532 return google.maps.marker && map.getMapCapabilities().isAdvancedMarkersAvailable === true; 31533 } 31534 static isAdvancedMarker(marker) { 31535 return google.maps.marker && marker instanceof google.maps.marker.AdvancedMarkerElement; 31536 } 31537 static setMap(marker, map) { 31538 if (this.isAdvancedMarker(marker)) { 31539 marker.map = map; 31540 } else {
31541 marker.setMap(map); 31542 } 31543 } 31544 static getPosition(marker) { 31545 if (this.isAdvancedMarker(marker)) { 31546 if (marker.position) { 31547 if (marker.position instanceof google.maps.LatLng) { 31548 return marker.position; 31549 } 31550 if (marker.position.lat && marker.position.lng) { 31551 return new google.maps.LatLng(marker.position.lat, marker.position.lng); 31552 } 31553 } 31554 return new google.maps.LatLng(null); 31555 } 31556 return marker.getPosition(); 31557 } 31558 static getVisible(marker) { 31559 if (this.isAdvancedMarker(marker)) { 31560 return true; 31561 } 31562 return marker.getVisible(); 31563 } 31564} 31565class Cluster { 31566 constructor({ markers, position }) { 31567 this.markers = markers; 31568 if (position) { 31569 if (position instanceof google.maps.LatLng) { 31570 this._position = position; 31571 } else { 31572 this._position = new google.maps.LatLng(position); 31573 } 31574 } 31575 } 31576 get bounds() { 31577 if (this.markers.length === 0 && !this._position) { 31578 return; 31579 } 31580 const bounds = new google.maps.LatLngBounds(this._position, this._position); 31581 for (const marker of this.markers) { 31582 bounds.extend(MarkerUtils.getPosition(marker)); 31583 } 31584 return bounds; 31585 } 31586 get position() { 31587 return this._position || this.bounds.getCenter(); 31588 } 31589 /** 31590 * Get the count of **visible** markers. 31591 */ 31592 get count() { 31593 return this.markers.filter((m) => MarkerUtils.getVisible(m)).length; 31594 } 31595 /** 31596 * Add a marker to the cluster. 31597 */ 31598 push(marker) { 31599 this.markers.push(marker); 31600 } 31601 /** 31602 * Cleanup references and remove marker from map. 31603 */ 31604 delete() { 31605 if (this.marker) { 31606 MarkerUtils.setMap(this.marker, null); 31607 this.marker = void 0; 31608 } 31609 this.markers.length = 0; 31610 } 31611} 31612class AbstractAlgorithm { 31613 constructor({ maxZoom = 16 }) { 31614 this.maxZoom = maxZoom; 31615 } 31616 /** 31617 * Helper function to bypass clustering based upon some map state such as 31618 * zoom, number of markers, etc. 31619 * 31620 * ```typescript 31621 * cluster({markers, map}: AlgorithmInput): Cluster[] { 31622 * if (shouldBypassClustering(map)) { 31623 * return this.noop({markers}) 31624 * } 31625 * } 31626 * ``` 31627 */ 31628 noop({ markers }) { 31629 return noop(markers); 31630 } 31631} 31632const noop = (markers) => { 31633 const clusters = markers.map((marker) => new Cluster({ 31634 position: MarkerUtils.getPosition(marker), 31635 markers: [marker] 31636 })); 31637 return clusters; 31638}; 31639class SuperClusterAlgorithm extends AbstractAlgorithm { 31640 constructor(_a) { 31641 var { maxZoom, radius = 60 } = _a, options2 = __rest(_a, ["maxZoom", "radius"]); 31642 super({ maxZoom }); 31643 this.state = { zoom: -1 }; 31644 this.superCluster = new Supercluster(Object.assign({ maxZoom: this.maxZoom, radius }, options2)); 31645 } 31646 calculate(input) { 31647 let changed = false; 31648 const state2 = { zoom: input.map.getZoom() }; 31649 if (!equal(input.markers, this.markers)) { 31650 changed = true; 31651 this.markers = [...input.markers]; 31652 const points = this.markers.map((marker) => { 31653 const position = MarkerUtils.getPosition(marker); 31654 const coordinates = [position.lng(), position.lat()]; 31655 return { 31656 type: "Feature", 31657 geometry: { 31658 type: "Point", 31659 coordinates 31660 }, 31661 properties: { marker } 31662 }; 31663 }); 31664 this.superCluster.load(points); 31665 } 31666 if (!changed) { 31667 if (this.state.zoom <= this.maxZoom || state2.zoom <= this.maxZoom) { 31668 changed = !equal(this.state, state2); 31669 } 31670 } 31671 this.state = state2; 31672 if (changed) { 31673 this.clusters = this.cluster(input); 31674 } 31675 return { clusters: this.clusters, changed }; 31676 } 31677 cluster({ map }) { 31678 return this.superCluster.getClusters([-180, -90, 180, 90], Math.round(map.getZoom())).map((feature) => this.transformCluster(feature)); 31679 } 31680 transformCluster({ geometry: { coordinates: [lng, lat] }, properties }) { 31681 if (properties.cluster) { 31682 return new Cluster({ 31683 markers: this.superCluster.getLeaves(properties.cluster_id, Infinity).map((leaf) => leaf.properties.marker), 31684 position: { lat, lng } 31685 }); 31686 } 31687 const marker = properties.marker; 31688 return new Cluster({ 31689 markers: [marker], 31690 position: MarkerUtils.getPosition(marker) 31691 }); 31692 } 31693} 31694class ClusterStats {
31695 constructor(markers, clusters) { 31696 this.markers = { sum: markers.length }; 31697 const clusterMarkerCounts = clusters.map((a) => a.count); 31698 const clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0); 31699 this.clusters = { 31700 count: clusters.length, 31701 markers: { 31702 mean: clusterMarkerSum / clusters.length, 31703 sum: clusterMarkerSum, 31704 min: Math.min(...clusterMarkerCounts), 31705 max: Math.max(...clusterMarkerCounts) 31706 } 31707 }; 31708 } 31709} 31710class DefaultRenderer { 31711 /** 31712 * The default render function for the library used by {@link MarkerClusterer}. 31713 * 31714 * Currently set to use the following: 31715 * 31716 * ```typescript 31717 * // change color if this cluster has more markers than the mean cluster 31718 * const color = 31719 * count > Math.max(10, stats.clusters.markers.mean) 31720 * ? "#ff0000" 31721 * : "#0000ff"; 31722 * 31723 * // create svg url with fill color 31724 * const svg = window.btoa(` 31725 * <svg fill="${color}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240"> 31726 * <circle cx="120" cy="120" opacity=".6" r="70" /> 31727 * <circle cx="120" cy="120" opacity=".3" r="90" /> 31728 * <circle cx="120" cy="120" opacity=".2" r="110" /> 31729 * <circle cx="120" cy="120" opacity=".1" r="130" /> 31730 * </svg>`); 31731 * 31732 * // create marker using svg icon 31733 * return new google.maps.Marker({ 31734 * position, 31735 * icon: { 31736 * url: `data:image/svg+xml;base64,${svg}`, 31737 * scaledSize: new google.maps.Size(45, 45), 31738 * }, 31739 * label: { 31740 * text: String(count), 31741 * color: "rgba(255,255,255,0.9)", 31742 * fontSize: "12px", 31743 * }, 31744 * // adjust zIndex to be above other markers 31745 * zIndex: 1000 + count, 31746 * }); 31747 * ``` 31748 */ 31749 render({ count, position }, stats, map) { 31750 const color = count > Math.max(10, stats.clusters.markers.mean) ? "#ff0000" : "#0000ff"; 31751 const svg = `<svg fill="${color}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="50" height="50"> 31752<circle cx="120" cy="120" opacity=".6" r="70" /> 31753<circle cx="120" cy="120" opacity=".3" r="90" /> 31754<circle cx="120" cy="120" opacity=".2" r="110" /> 31755<text x="50%" y="50%" style="fill:#fff" text-anchor="middle" font-size="50" dominant-baseline="middle" font-family="roboto,arial,sans-serif">${count}</text> 31756</svg>`; 31757 const title = `Cluster of ${count} markers`, zIndex = Number(google.maps.Marker.MAX_ZINDEX) + count; 31758 if (MarkerUtils.isAdvancedMarkerAvailable(map)) { 31759 const parser = new DOMParser(); 31760 const svgEl = parser.parseFromString(svg, "image/svg+xml").documentElement; 31761 svgEl.setAttribute("transform", "translate(0 25)"); 31762 const clusterOptions2 = { 31763 map, 31764 position, 31765 zIndex, 31766 title, 31767 content: svgEl 31768 }; 31769 return new google.maps.marker.AdvancedMarkerElement(clusterOptions2); 31770 } 31771 const clusterOptions = { 31772 position, 31773 zIndex, 31774 title, 31775 icon: { 31776 url: `data:image/svg+xml;base64,${btoa(svg)}`, 31777 anchor: new google.maps.Point(25, 25) 31778 } 31779 }; 31780 return new google.maps.Marker(clusterOptions); 31781 } 31782} 31783function extend(type1, type2) { 31784 for (let property in type2.prototype) { 31785 type1.prototype[property] = type2.prototype[property]; 31786 } 31787} 31788class OverlayViewSafe { 31789 constructor() { 31790 extend(OverlayViewSafe, google.maps.OverlayView); 31791 } 31792} 31793var MarkerClustererEvents; 31794(function(MarkerClustererEvents2) { 31795 MarkerClustererEvents2["CLUSTERING_BEGIN"] = "clusteringbegin"; 31796 MarkerClustererEvents2["CLUSTERING_END"] = "clusteringend"; 31797 MarkerClustererEvents2["CLUSTER_CLICK"] = "click"; 31798})(MarkerClustererEvents || (MarkerClustererEvents = {})); 31799const defaultOnClusterClickHandler = (_, cluster, map) => { 31800 map.fitBounds(cluster.bounds); 31801}; 31802class MarkerClusterer extends OverlayViewSafe { 31803 constructor({ map, markers = [], algorithmOptions = {}, algorithm = new SuperClusterAlgorithm(algorithmOptions), renderer: renderer2 = new DefaultRenderer(), onClusterClick = defaultOnClusterClickHandler }) { 31804 super(); 31805 this.markers = [...markers]; 31806 this.clusters = []; 31807 this.algorithm = algorithm; 31808 this.renderer = renderer2; 31809 this.onClusterClick = onClusterClick; 31810 if (map) {
vendor: 1,043 bytes, lines 31811-31860
31811 this.setMap(map); 31812 } 31813 } 31814 addMarker(marker, noDraw) { 31815 if (this.markers.includes(marker)) { 31816 return; 31817 } 31818 this.markers.push(marker); 31819 if (!noDraw) { 31820 this.render(); 31821 } 31822 } 31823 addMarkers(markers, noDraw) { 31824 markers.forEach((marker) => { 31825 this.addMarker(marker, true); 31826 }); 31827 if (!noDraw) { 31828 this.render(); 31829 } 31830 } 31831 removeMarker(marker, noDraw) { 31832 const index2 = this.markers.indexOf(marker); 31833 if (index2 === -1) { 31834 return false; 31835 } 31836 MarkerUtils.setMap(marker, null); 31837 this.markers.splice(index2, 1); 31838 if (!noDraw) { 31839 this.render(); 31840 } 31841 return true; 31842 } 31843 removeMarkers(markers, noDraw) { 31844 let removed = false; 31845 markers.forEach((marker) => { 31846 removed = this.removeMarker(marker, true) || removed; 31847 }); 31848 if (removed && !noDraw) { 31849 this.render(); 31850 } 31851 return removed; 31852 } 31853 clearMarkers(noDraw) { 31854 this.markers.length = 0; 31855 if (!noDraw) { 31856 this.render(); 31857 } 31858 } 31859 /** 31860 * Recalculates and draws all the marker cluster
31860s. 31861 */ 31862 render() { 31863 const map = this.getMap(); 31864 if (map instanceof google.maps.Map && map.getProjection()) { 31865 google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_BEGIN, this); 31866 const { clusters, changed } = this.algorithm.calculate({ 31867 markers: this.markers, 31868 map, 31869 mapCanvasProjection: this.getProjection() 31870 }); 31871 if (changed || changed == void 0) { 31872 const singleMarker = /* @__PURE__ */ new Set(); 31873 for (const cluster of clusters) { 31874 if (cluster.markers.length == 1) { 31875 singleMarker.add(cluster.markers[0]); 31876 } 31877 } 31878 const groupMarkers = []; 31879 for (const cluster of this.clusters) { 31880 if (cluster.marker == null) { 31881 continue; 31882 } 31883 if (cluster.markers.length == 1) { 31884 if (!singleMarker.has(cluster.marker)) { 31885 MarkerUtils.setMap(cluster.marker, null); 31886 } 31887 } else { 31888 groupMarkers.push(cluster.marker); 31889 } 31890 } 31891 this.clusters = clusters; 31892 this.renderClusters(); 31893 requestAnimationFrame(() => groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null))); 31894 } 31895 google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_END, this); 31896 } 31897 } 31898 onAdd() { 31899 this.idleListener = this.getMap().addListener("idle", this.render.bind(this)); 31900 this.render(); 31901 } 31902 onRemove() { 31903 google.maps.event.removeListener(this.idleListener); 31904 this.reset(); 31905 } 31906 reset() { 31907 this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));
31908 this.clusters.forEach((cluster) => cluster.delete()); 31909 this.clusters = []; 31910 } 31911 renderClusters() { 31912 const stats = new ClusterStats(this.markers, this.clusters); 31913 const map = this.getMap(); 31914 this.clusters.forEach((cluster) => { 31915 if (cluster.markers.length === 1) { 31916 cluster.marker = cluster.markers[0]; 31917 } else { 31918 cluster.marker = this.renderer.render(cluster, stats, map); 31919 cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null)); 31920 if (this.onClusterClick) { 31921 cluster.marker.addListener( 31922 "click", 31923 /* istanbul ignore next */ 31924 (event) => { 31925 google.maps.event.trigger(this, MarkerClustererEvents.CLUSTER_CLICK, cluster); 31926 this.onClusterClick(event, cluster, map); 31927 } 31928 ); 31929 } 31930 } 31931 MarkerUtils.setMap(cluster.marker, map); 31932 }); 31933 } 31934} 31935const props$4 = { 31936 algorithm: { 31937 type: Object, 31938 default: new SuperClusterAlgorithm({}), 31939 noBind: true 31940 }, 31941 renderer: { 31942 type: Object, 31943 default: new DefaultRenderer(), 31944 noBind: true 31945 } 31946}; 31947const events$3 = ["clusteringbegin", "clusteringend"]; 31948const _sfc_main$1B = buildComponent({ 31949 mappedProps: props$4, 31950 events: events$3, 31951 name: "cluster", 31952 ctr: () => { 31953 if (typeof MarkerClusterer === "undefined") { 31954 const errorMessage = "MarkerClusterer is not installed!"; 31955 console.error(errorMessage); 31956 throw new Error(errorMessage); 31957 } 31958 return MarkerClusterer; 31959 }, 31960 ctrArgs: ({ map, ...otherOptions }) => [{ map, ...otherOptions }], 31961 afterCreate(inst) { 31962 const reinsertMarkers = () => { 31963 const oldMarkers = inst.getMarkers(); 31964 inst.clearMarkers(); 31965 inst.addMarkers(oldMarkers); 31966 }; 31967 for (let prop in props$4) { 31968 if (props$4[prop].twoWay) { 31969 this.$on(prop.toLowerCase() + "_changed", reinsertMarkers); 31970 } 31971 } 31972 }, 31973 updated() { 31974 if (this.$clusterObject) { 31975 this.$clusterObject.render(); 31976 } 31977 }, 31978 beforeUnmount() { 31979 if (this.$children && this.$children.length) { 31980 this.$children.forEach((marker) => { 31981 if (marker.$clusterObject === this.$clusterObject) { 31982 marker.$clusterObject = null; 31983 } 31984 }); 31985 } 31986 if (this.$clusterObject) { 31987 this.$clusterObject.clearMarkers(); 31988 } 31989 } 31990}); 31991function _sfc_render$1z(_ctx, _cache, $props, $setup, $data, $options) { 31992 return openBlock(), createElementBlock("div", null, [ 31993 renderSlot(_ctx.$slots, "default") 31994 ]); 31995} 31996const GMapCluster = /* @__PURE__ */ _export_sfc(_sfc_main$1B, [["render", _sfc_render$1z]]); 31997const props$3 = { 31998 options: { 31999 type: Object, 32000 required: false, 32001 default() { 32002 return {}; 32003 } 32004 }, 32005 position: { 32006 type: Object, 32007 twoWay: true 32008 }, 32009 zIndex: { 32010 type: Number, 32011 twoWay: true 32012 } 32013}; 32014const events$2 = ["domready", "click", "closeclick", "content_changed"]; 32015const _sfc_main$1A = buildComponent({ 32016 mappedProps: props$3, 32017 events: events$2, 32018 name: "infoWindow", 32019 ctr: () => google.maps.InfoWindow, 32020 props: { 32021 opened: { 32022 type: Boolean, 32023 default: true 32024 } 32025 }, 32026 inject: { 32027 $markerPromise: { 32028 default: null 32029 } 32030 }, 32031 mounted() { 32032 const el = this.$refs.infoWindow; 32033 el.parentNode.removeChild(el); 32034 }, 32035 beforeCreate(options2) { 32036 options2.content = this.$refs.infoWindow; 32037 if (this.$markerPromise) { 32038 delete options2.position; 32039 return this.$markerPromise.then((mo) => { 32040 this.$markerObject = mo; 32041 return mo; 32042 }); 32043 } 32044 }, 32045 emits: ["closeclick"], 32046 methods: { 32047 _openInfoWindow() { 32048 this.$infoWindowObject.close(); 32049 if (this.opened) { 32050 this.$infoWindowObject.open(this.$map, this.$markerObject); 32051 } 32052 } 32053 }, 32054 afterCreate() { 32055 this._openInfoWindow(); 32056 this.$infoWindowObject.addListener("closeclick", () => { 32057 this.$emit("closeclick"); 32058 this.$infoWindowObject.open(this.$map, this.$markerObject); 32059 }); 32060 this.$watch("opened", () => { 32061 this._openInfoWindow(); 32062 }); 32063 } 32064}); 32065const _hoisted_1$1t = { ref: "infoWindow" }; 32066function _sfc_render$1y(_ctx, _cache, $props, $setup, $data, $options) { 32067 return openBlock(), createElementBlock("div", _hoisted_1$1t, [ 32068 renderSlot(_ctx.$slots, "default") 32069 ], 512); 32070} 32071const InfoWindow = /* @__PURE__ */ _export_sfc(_sfc_main$1A, [["render", _sfc_render$1y]]); 32072const mountableMixin = { 32073 props: ["resizeBus"], 32074 data() { 32075 return { 32076 _actualResizeBus: null 32077 }; 32078 }, 32079 created() { 32080 if (typeof this.resizeBus === "undefined") { 32081 this.$data._actualResizeBus = this.$gmapDefaultResizeBus; 32082 } else { 32083 this.$data._actualResizeBus = this.resizeBus; 32084 } 32085 }, 32086 methods: { 32087 _resizeCallback() { 32088 this.resize(); 32089 }, 32090 isFunction(functionToCheck) { 32091 return functionToCheck && {}.toString.call(functionToCheck) === "[object Function]"; 32092 }, 32093 _delayedResizeCallback() { 32094 this.$nextTick(() => this._resizeCallback()); 32095 } 32096 }, 32097 watch: { 32098 resizeBus(newVal) { 32099 this.$data._actualResizeBus = newVal; 32100 }, 32101 "$data._actualResizeBus"(newVal, oldVal) { 32102 if (oldVal) { 32103 oldVal.$off("resize", this._delayedResizeCallback); 32104 } 32105 } 32106 }, 32107 unmounted() { 32108 if (this.$data._actualResizeBus && this.isFunction(this.$data._actualResizeBus.$off)) { 32109 this.$data._actualResizeBus.$off("resize", this._delayedResizeCallback); 32110 } 32111 } 32112}; 32113function TwoWayBindingWrapper(fn) { 32114 let counter = 0; 32115 fn( 32116 () => { 32117 counter += 1; 32118 }, 32119 () => { 32120 counter = Math.max(0, counter - 1); 32121 }, 32122 () => counter === 0 32123 ); 32124} 32125const props$2 = { 32126 center: { 32127 default: { lat: 0, lng: 0 }, 32128 twoWay: true, 32129 type: Object, 32130 noBind: true 32131 }, 32132 zoom: { 32133 required: false, 32134 twoWay: true, 32135 type: Number, 32136 noBind: true 32137 }, 32138 maxZoom: { 32139 required: false, 32140 twoWay: true, 32141 type: Number, 32142 noBind: true 32143 }, 32144 minZoom: { 32145 required: false, 32146 twoWay: true, 32147 type: Number, 32148 noBind: true 32149 }, 32150 heading: { 32151 type: Number, 32152 twoWay: true 32153 }, 32154 mapTypeId: { 32155 twoWay: true, 32156 type: String 32157 }, 32158 tilt: { 32159 twoWay: true, 32160 type: Number 32161 }, 32162 options: { 32163 type: Object, 32164 default() { 32165 return {}; 32166 } 32167 } 32168}; 32169const events$1 = [ 32170 "bounds_changed", 32171 "click", 32172 "dblclick", 32173 "drag", 32174 "dragend", 32175 "dragstart", 32176 "idle", 32177 "mousemove", 32178 "mouseout", 32179 "mouseover", 32180 "resize", 32181 "rightclick", 32182 "tilesloaded" 32183]; 32184const linkedMethods = ["panBy", "panTo", "panToBounds", "fitBounds"].reduce((all3, methodName) => { 32185 all3[methodName] = function() { 32186 if (this.$mapObject) { 32187 this.$mapObject[methodName].apply(this.$mapObject, arguments); 32188 } 32189 }; 32190 return all3; 32191}, {}); 32192const customMethods = { 32193 resize() { 32194 if (this.$mapObject) { 32195 google.maps.event.trigger(this.$mapObject, "resize"); 32196 } 32197 }, 32198 resizePreserveCenter() { 32199 if (!this.$mapObject) { 32200 return; 32201 } 32202 const oldCenter = this.$mapObject.getCenter(); 32203 google.maps.event.trigger(this.$mapObject, "resize"); 32204 this.$mapObject.setCenter(oldCenter); 32205 }, 32206 /// Override mountableMixin::_resizeCallback 32207 /// because resizePreserveCenter is usually the 32208 /// expected behaviour 32209 _resizeCallback() { 32210 this.resizePreserveCenter(); 32211 } 32212}; 32213const _sfc_main$1z = { 32214 mixins: [mountableMixin], 32215 props: mappedPropsToVueProps({ 32216 ...props$2, 32217 ...events$1.reduce( 32218 (obj, eventName) => ({ 32219 ...obj, 32220 [`on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`.replace( 32221 /[-_]+(.)?/g, 32222 (_, c) => c ? c.toUpperCase() : "" 32223 )]: Function 32224 }), 32225 {} 32226 ) 32227 }), 32228 inheritAttrs: false, 32229 provide() { 32230 this.$mapPromise = new Promise((resolve2, reject) => { 32231 this.$mapPromiseDeferred = { resolve: resolve2, reject }; 32232 }); 32233 return { 32234 $mapPromise: this.$mapPromise 32235 }; 32236 }, 32237 emits: ["center_changed", "zoom_changed", "bounds_changed"], 32238 computed: { 32239 finalLat() { 32240 return this.center && typeof this.center.lat === "function" ? this.center.lat() : this.center.lat; 32241 }, 32242 finalLng() { 32243 return this.center && typeof this.center.lng === "function" ? this.center.lng() : this.center.lng; 32244 }, 32245 finalLatLng() { 32246 return { lat: this.finalLat, lng: this.finalLng }; 32247 } 32248 }, 32249 watch: { 32250 zoom(zoom) { 32251 if (this.$mapObject) { 32252 this.$mapObject.setZoom(zoom); 32253 } 32254 } 32255 }, 32256 mounted() {
32257 return this.$gmapApiPromiseLazy().then(() => { 32258 const element = this.$refs["vue-map"]; 32259 const options2 = { 32260 ...this.options, 32261 ...getPropsValues(this, props$2) 32262 }; 32263 delete options2.options; 32264 this.$mapObject = new google.maps.Map(element, options2); 32265 bindProps(this, this.$mapObject, props$2); 32266 bindEvents(this, this.$mapObject, events$1); 32267 TwoWayBindingWrapper((increment, decrement, shouldUpdate) => { 32268 this.$mapObject.addListener("center_changed", () => { 32269 if (shouldUpdate()) { 32270 this.$emit("center_changed", this.$mapObject.getCenter()); 32271 } 32272 decrement(); 32273 }); 32274 const updateCenter = () => { 32275 increment(); 32276 this.$mapObject.setCenter(this.finalLatLng); 32277 }; 32278 WatchPrimitiveProperties(this, ["finalLat", "finalLng"], updateCenter); 32279 }); 32280 this.$mapObject.addListener("zoom_changed", () => { 32281 this.$emit("zoom_changed", this.$mapObject.getZoom()); 32282 }); 32283 this.$mapObject.addListener("bounds_changed", () => { 32284 this.$emit("bounds_changed", this.$mapObject.getBounds()); 32285 }); 32286 this.$mapPromiseDeferred.resolve(this.$mapObject); 32287 return this.$mapObject; 32288 }).catch((error) => { 32289 throw error; 32290 }); 32291 }, 32292 methods: { 32293 ...customMethods, 32294 ...linkedMethods 32295 } 32296}; 32297const _hoisted_1$1s = { class: "vue-map-hidden" }; 32298function _sfc_render$1x(_ctx, _cache, $props, $setup, $data, $options) { 32299 return openBlock(), createElementBlock("div", { 32300 class: normalizeClass(["vue-map-container", _ctx.$attrs.class]) 32301 }, [ 32302 createBaseVNode("div", { 32303 ref: "vue-map", 32304 class: "vue-map", 32305 style: normalizeStyle(_ctx.$attrs.style ? _ctx.$attrs.style : "") 32306 }, null, 4), 32307 createBaseVNode("div", _hoisted_1$1s, [ 32308 renderSlot(_ctx.$slots, "default") 32309 ]), 32310 renderSlot(_ctx.$slots, "visible") 32311 ], 2); 32312} 32313const Map$1 = /* @__PURE__ */ _export_sfc(_sfc_main$1z, [["render", _sfc_render$1x]]); 32314const props$1 = { 32315 options: { 32316 type: Object, 32317 twoWay: false, 32318 default: () => { 32319 } 32320 }, 32321 data: { 32322 type: Array, 32323 twoWay: true 32324 } 32325}; 32326const events = []; 32327const Heatmap = buildComponent({ 32328 mappedProps: props$1, 32329 name: "heatmap", 32330 ctr: () => google.maps.visualization.HeatmapLayer, 32331 events 32332}); 32333const downArrowSimulator = (input) => { 32334 const _addEventListener = input.addEventListener ? input.addEventListener : input.attachEvent; 32335 function addEventListenerWrapper(type, listener) { 32336 if (type === "keydown") { 32337 const origListener = listener; 32338 listener = function(event) { 32339 const suggestionSelected = document.getElementsByClassName("pac-item-selected").length > 0; 32340 if (event.which === 13 && !suggestionSelected) { 32341 const simulatedEvent = document.createEvent("Event"); 32342 simulatedEvent.keyCode = 40; 32343 simulatedEvent.which = 40; 32344 origListener.apply(input, [simulatedEvent]); 32345 } 32346 origListener.apply(input, [event]); 32347 }; 32348 } 32349 _addEventListener.apply(input, [type, listener]); 32350 } 32351 input.addEventListener = addEventListenerWrapper; 32352 input.attachEvent = addEventListenerWrapper; 32353}; 32354const mappedProps = { 32355 bounds: { 32356 type: Object 32357 }, 32358 componentRestrictions: { 32359 type: Object, 32360 // Do not bind -- must check for undefined 32361 // in the property 32362 noBind: true 32363 }, 32364 types: { 32365 type: Array, 32366 default: function() { 32367 return []; 32368 } 32369 } 32370}; 32371const props = { 32372 selectFirstOnEnter: { 32373 required: false, 32374 type: Boolean, 32375 default: false 32376 }, 32377 options: { 32378 type: Object 32379 } 32380}; 32381const _sfc_main$1y = { 32382 mounted() { 32383 const _this = this; 32384 this.$gmapApiPromiseLazy().then(() => { 32385 let refInput = _this.$refs.input; 32386 if (_this.$slots.input) { 32387 const refName = _this.$slots.input()[0].props.ref; 32388 const scopedInput = _this.$slots.input()[0].ref.i.ctx.$refs[refName]; 32389 if (scopedInput) { 32390 refInput = scopedInput.$el.getElementsByTagName("input")[0]; 32391 } 32392 } 32393 if (this.selectFirstOnEnter) { 32394 downArrowSimulator(refInput); 32395 } 32396 if (typeof google.maps.places.Autocomplete !== "function") { 32397 throw new Error( 32398 "google.maps.places.Autocomplete is undefined. Did you add 'places' to libraries when loading Google Maps?" 32399 ); 32400 } 32401 const finalOptions = { 32402 ...getPropsValues(this, mappedProps), 32403 ...this.options 32404 }; 32405 this.$autocomplete = new google.maps.places.Autocomplete(refInput, finalOptions); 32406 bindProps(this, this.$autocomplete, mappedProps); 32407 this.$watch("componentRestrictions", (v) => { 32408 if (v !== void 0) { 32409 this.$autocomplete.setComponentRestrictions(v); 32410 } 32411 }); 32412 this.$autocomplete.addListener("place_changed", () => { 32413 this.$emit("place_changed", this.$autocomplete.getPlace()); 32414 }); 32415 }); 32416 }, 32417 props: { 32418 ...mappedPropsToVueProps(mappedProps), 32419 ...props 32420 } 32421}; 32422function _sfc_render$1w(_ctx, _cache, $props, $setup, $data, $options) { 32423 return _ctx.$slots["input"] ? renderSlot(_ctx.$slots, "input", normalizeProps(mergeProps({ key: 0 }, _ctx.$attrs))) : !_ctx.$slots["input"] ? (openBlock(), createElementBlock("input", mergeProps({
32424 key: 1, 32425 ref: "input" 32426 }, _ctx.$attrs, toHandlers(_ctx.$attrs, true)), null, 16)) : createCommentVNode("", true); 32427} 32428const Autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$1y, [["render", _sfc_render$1w]]); 32429let GMapApi = null; 32430function install2(Vue, options2) { 32431 options2 = { 32432 installComponents: true, 32433 autobindAllEvents: false, 32434 ...options2 32435 }; 32436 GMapApi = createApp({ 32437 data: function() { 32438 return { gmapApi: null }; 32439 } 32440 }); 32441 const defaultResizeBus = createApp(); 32442 let gmapApiPromiseLazy = makeGMapApiPromiseLazy(options2); 32443 Vue.mixin({ 32444 created() { 32445 this.$gmapDefaultResizeBus = defaultResizeBus; 32446 this.$gmapOptions = options2; 32447 this.$gmapApiPromiseLazy = gmapApiPromiseLazy; 32448 } 32449 }); 32450 Vue.$gmapDefaultResizeBus = defaultResizeBus; 32451 Vue.$gmapApiPromiseLazy = gmapApiPromiseLazy; 32452 if (options2.installComponents) { 32453 Vue.component("GMapMap", Map$1); 32454 Vue.component("GMapMarker", Marker); 32455 Vue.component("GMapInfoWindow", InfoWindow); 32456 Vue.component("GMapCluster", GMapCluster); 32457 Vue.component("GMapPolyline", Polyline); 32458 Vue.component("GMapPolygon", Polygon); 32459 Vue.component("GMapCircle", Circle); 32460 Vue.component("GMapRectangle", Rectangle); 32461 Vue.component("GMapAutocomplete", Autocomplete); 32462 Vue.component("GMapHeatmap", Heatmap); 32463 } 32464} 32465function makeGMapApiPromiseLazy(options2) { 32466 function onApiLoaded() { 32467 GMapApi.gmapApi = {}; 32468 return window.google; 32469 } 32470 if (options2.load) { 32471 return lazy(() => { 32472 if (Env.isServer()) { 32473 return new Promise(() => { 32474 }).then(onApiLoaded); 32475 } else { 32476 return new Promise((resolve2, reject) => { 32477 try { 32478 window["vueGoogleMapsInit"] = resolve2; 32479 loadGMapApi(options2.load); 32480 } catch (err) { 32481 reject(err); 32482 } 32483 }).then(onApiLoaded); 32484 } 32485 }); 32486 } else { 32487 const promise = new Promise((resolve2) => { 32488 if (Env.isServer()) { 32489 return; 32490 } 32491 window["vueGoogleMapsInit"] = resolve2; 32492 }).then(onApiLoaded); 32493 return lazy(() => promise); 32494 } 32495} 32496var sweetalert2$1 = { exports: {} }; 32497/*! 32498* sweetalert2 v11.22.0 32499* Released under the MIT License. 32500*/ 32501var sweetalert2 = sweetalert2$1.exports; 32502var hasRequiredSweetalert2; 32503function requireSweetalert2() { 32504 if (hasRequiredSweetalert2) return sweetalert2$1.exports; 32505 hasRequiredSweetalert2 = 1; 32506 (function(module, exports) { 32507 (function(global2, factory) { 32508 module.exports = factory(); 32509 })(sweetalert2, function() { 32510 function _assertClassBrand(e, t, n) { 32511 if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; 32512 throw new TypeError("Private element is not present on this object"); 32513 } 32514 function _checkPrivateRedeclaration(e, t) { 32515 if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); 32516 } 32517 function _classPrivateFieldGet2(s, a) { 32518 return s.get(_assertClassBrand(s, a)); 32519 } 32520 function _classPrivateFieldInitSpec(e, t, a) { 32521 _checkPrivateRedeclaration(e, t), t.set(e, a); 32522 } 32523 function _classPrivateFieldSet2(s, a, r) { 32524 return s.set(_assertClassBrand(s, a), r), r; 32525 } 32526 const RESTORE_FOCUS_TIMEOUT = 100; 32527 const globalState = {}; 32528 const focusPreviousActiveElement = () => { 32529 if (globalState.previousActiveElement instanceof HTMLElement) { 32530 globalState.previousActiveElement.focus(); 32531 globalState.previousActiveElement = null; 32532 } else if (document.body) { 32533 document.body.focus(); 32534 } 32535 }; 32536 const restoreActiveElement = (returnFocus) => { 32537 return new Promise((resolve2) => { 32538 if (!returnFocus) { 32539 return resolve2(); 32540 } 32541 const x = window.scrollX; 32542 const y = window.scrollY; 32543 globalState.restoreFocusTimeout = setTimeout(() => { 32544 focusPreviousActiveElement(); 32545 resolve2(); 32546 }, RESTORE_FOCUS_TIMEOUT); 32547 window.scrollTo(x, y); 32548 }); 32549 }; 32550 const swalPrefix = "swal2-"; 32551 const classNames = ["container", "shown", "height-auto", "iosfix", "popup", "modal", "no-backdrop", "no-transition", "toast", "toast-shown", "show", "hide", "close", "title", "html-container", "actions", "confirm", "deny", "cancel", "footer", "icon", "icon-content", "image", "input", "file", "range", "select", "radio", "checkbox", "label", "textarea", "inputerror", "input-label", "validation-message", "progress-steps", "active-progress-step", "progress-step", "progress-step-line", "loader", "loading", "styled", "top", "top-start", "top-end", "top-left", "top-right", "center", "center-start", "center-end", "center-left", "center-right", "bottom", "bottom-start", "bottom-end", "bottom-left", "bottom-right", "grow-row", "grow-column", "grow-fullscreen", "rtl", "timer-progress-bar", "timer-progress-bar-container", "scrollbar-measure", "icon-success", "icon-warning", "icon-info", "icon-question", "icon-error", "draggable", "dragging"]; 32552 const swalClasses = classNames.reduce( 32553 (acc, className) => { 32554 acc[className] = swalPrefix + className; 32555 return acc; 32556 }, 32557 /** @type {SwalClasses} */ 32558 {} 32559 ); 32560 const icons = ["success", "warning", "info", "question", "error"]; 32561 const iconTypes = icons.reduce( 32562 (acc, icon) => { 32563 acc[icon] = swalPrefix + icon; 32564 return acc; 32565 }, 32566 /** @type {SwalIcons} */ 32567 {} 32568 ); 32569 const consolePrefix = "SweetAlert2:"; 32570 const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1); 32571 const warn2 = (message) => { 32572 console.warn(`${consolePrefix} ${typeof message === "object" ? message.join(" ") : message}`); 32573 }; 32574 const error = (message) => { 32575 console.error(`${consolePrefix} ${message}`); 32576 }; 32577 const previousWarnOnceMessages = []; 32578 const warnOnce = (message) => { 32579 if (!previousWarnOnceMessages.includes(message)) { 32580 previousWarnOnceMessages.push(message); 32581 warn2(message); 32582 } 32583 }; 32584 const warnAboutDeprecation = (deprecatedParam, useInstead = null) => { 32585 warnOnce(`"${deprecatedParam}" is deprecated and will be removed in the next major release.${useInstead ? ` Use "${useInstead}" instead.` : ""}`); 32586 }; 32587 const callIfFunction = (arg) => typeof arg === "function" ? arg() : arg;
32588 const hasToPromiseFn = (arg) => arg && typeof arg.toPromise === "function"; 32589 const asPromise = (arg) => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); 32590 const isPromise2 = (arg) => arg && Promise.resolve(arg) === arg; 32591 const getContainer = () => document.body.querySelector(`.${swalClasses.container}`); 32592 const elementBySelector = (selectorString) => { 32593 const container = getContainer(); 32594 return container ? container.querySelector(selectorString) : null; 32595 }; 32596 const elementByClass = (className) => { 32597 return elementBySelector(`.${className}`); 32598 }; 32599 const getPopup = () => elementByClass(swalClasses.popup); 32600 const getIcon = () => elementByClass(swalClasses.icon); 32601 const getIconContent = () => elementByClass(swalClasses["icon-content"]); 32602 const getTitle = () => elementByClass(swalClasses.title); 32603 const getHtmlContainer = () => elementByClass(swalClasses["html-container"]); 32604 const getImage = () => elementByClass(swalClasses.image); 32605 const getProgressSteps = () => elementByClass(swalClasses["progress-steps"]); 32606 const getValidationMessage = () => elementByClass(swalClasses["validation-message"]); 32607 const getConfirmButton = () => ( 32608 /** @type {HTMLButtonElement} */ 32609 elementBySelector(`.${swalClasses.actions} .${swalClasses.confirm}`) 32610 ); 32611 const getCancelButton = () => ( 32612 /** @type {HTMLButtonElement} */ 32613 elementBySelector(`.${swalClasses.actions} .${swalClasses.cancel}`) 32614 ); 32615 const getDenyButton = () => ( 32616 /** @type {HTMLButtonElement} */ 32617 elementBySelector(`.${swalClasses.actions} .${swalClasses.deny}`) 32618 ); 32619 const getInputLabel = () => elementByClass(swalClasses["input-label"]); 32620 const getLoader = () => elementBySelector(`.${swalClasses.loader}`); 32621 const getActions = () => elementByClass(swalClasses.actions); 32622 const getFooter = () => elementByClass(swalClasses.footer); 32623 const getTimerProgressBar = () => elementByClass(swalClasses["timer-progress-bar"]); 32624 const getCloseButton = () => elementByClass(swalClasses.close); 32625 const focusable = ` 32626 a[href], 32627 area[href], 32628 input:not([disabled]), 32629 select:not([disabled]), 32630 textarea:not([disabled]), 32631 button:not([disabled]), 32632 iframe, 32633 object, 32634 embed, 32635 [tabindex="0"], 32636 [contenteditable], 32637 audio[controls], 32638 video[controls], 32639 summary 32640`; 32641 const getFocusableElements = () => { 32642 const popup = getPopup(); 32643 if (!popup) { 32644 return []; 32645 } 32646 const focusableElementsWithTabindex = popup.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'); 32647 const focusableElementsWithTabindexSorted = Array.from(focusableElementsWithTabindex).sort((a, b) => { 32648 const tabindexA = parseInt(a.getAttribute("tabindex") || "0"); 32649 const tabindexB = parseInt(b.getAttribute("tabindex") || "0"); 32650 if (tabindexA > tabindexB) { 32651 return 1; 32652 } else if (tabindexA < tabindexB) { 32653 return -1; 32654 } 32655 return 0; 32656 }); 32657 const otherFocusableElements = popup.querySelectorAll(focusable); 32658 const otherFocusableElementsFiltered = Array.from(otherFocusableElements).filter((el) => el.getAttribute("tabindex") !== "-1"); 32659 return [...new Set(focusableElementsWithTabindexSorted.concat(otherFocusableElementsFiltered))].filter((el) => isVisible$1(el)); 32660 }; 32661 const isModal = () => { 32662 return hasClass(document.body, swalClasses.shown) && !hasClass(document.body, swalClasses["toast-shown"]) && !hasClass(document.body, swalClasses["no-backdrop"]); 32663 }; 32664 const isToast = () => { 32665 const popup = getPopup(); 32666 if (!popup) { 32667 return false; 32668 } 32669 return hasClass(popup, swalClasses.toast); 32670 }; 32671 const isLoading = () => { 32672 const popup = getPopup(); 32673 if (!popup) { 32674 return false; 32675 } 32676 return popup.hasAttribute("data-loading"); 32677 }; 32678 const setInnerHtml = (elem, html) => { 32679 elem.textContent = ""; 32680 if (html) { 32681 const parser = new DOMParser(); 32682 const parsed = parser.parseFromString(html, `text/html`); 32683 const head = parsed.querySelector("head"); 32684 if (head) {
32685 Array.from(head.childNodes).forEach((child) => { 32686 elem.appendChild(child); 32687 }); 32688 } 32689 const body = parsed.querySelector("body"); 32690 if (body) { 32691 Array.from(body.childNodes).forEach((child) => { 32692 if (child instanceof HTMLVideoElement || child instanceof HTMLAudioElement) { 32693 elem.appendChild(child.cloneNode(true)); 32694 } else { 32695 elem.appendChild(child); 32696 } 32697 }); 32698 } 32699 } 32700 }; 32701 const hasClass = (elem, className) => { 32702 if (!className) { 32703 return false; 32704 } 32705 const classList = className.split(/\s+/); 32706 for (let i = 0; i < classList.length; i++) { 32707 if (!elem.classList.contains(classList[i])) { 32708 return false; 32709 } 32710 } 32711 return true; 32712 }; 32713 const removeCustomClasses = (elem, params) => { 32714 Array.from(elem.classList).forEach((className) => { 32715 if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass || {}).includes(className)) { 32716 elem.classList.remove(className); 32717 } 32718 }); 32719 }; 32720 const applyCustomClass = (elem, params, className) => { 32721 removeCustomClasses(elem, params); 32722 if (!params.customClass) { 32723 return; 32724 } 32725 const customClass = params.customClass[ 32726 /** @type {keyof SweetAlertCustomClass} */ 32727 className 32728 ]; 32729 if (!customClass) { 32730 return; 32731 } 32732 if (typeof customClass !== "string" && !customClass.forEach) { 32733 warn2(`Invalid type of customClass.${className}! Expected string or iterable object, got "${typeof customClass}"`); 32734 return; 32735 } 32736 addClass(elem, customClass); 32737 }; 32738 const getInput$1 = (popup, inputClass) => { 32739 if (!inputClass) { 32740 return null; 32741 } 32742 switch (inputClass) { 32743 case "select": 32744 case "textarea": 32745 case "file": 32746 return popup.querySelector(`.${swalClasses.popup} > .${swalClasses[inputClass]}`); 32747 case "checkbox": 32748 return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.checkbox} input`); 32749 case "radio": 32750 return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:checked`) || popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:first-child`); 32751 case "range": 32752 return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.range} input`); 32753 default: 32754 return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.input}`); 32755 } 32756 }; 32757 const focusInput = (input) => { 32758 input.focus(); 32759 if (input.type !== "file") { 32760 const val = input.value; 32761 input.value = ""; 32762 input.value = val; 32763 } 32764 }; 32765 const toggleClass = (target, classList, condition) => { 32766 if (!target || !classList) { 32767 return; 32768 } 32769 if (typeof classList === "string") { 32770 classList = classList.split(/\s+/).filter(Boolean); 32771 } 32772 classList.forEach((className) => { 32773 if (Array.isArray(target)) { 32774 target.forEach((elem) => { 32775 if (condition) { 32776 elem.classList.add(className); 32777 } else { 32778 elem.classList.remove(className); 32779 } 32780 }); 32781 } else { 32782 if (condition) { 32783 target.classList.add(className); 32784 } else { 32785 target.classList.remove(className); 32786 } 32787 } 32788 }); 32789 }; 32790 const addClass = (target, classList) => { 32791 toggleClass(target, classList, true); 32792 }; 32793 const removeClass = (target, classList) => { 32794 toggleClass(target, classList, false); 32795 }; 32796 const getDirectChildByClass = (elem, className) => { 32797 const children = Array.from(elem.children); 32798 for (let i = 0; i < children.length; i++) { 32799 const child = children[i]; 32800 if (child instanceof HTMLElement && hasClass(child, className)) { 32801 return child; 32802 } 32803 } 32804 }; 32805 const applyNumericalStyle = (elem, property, value) => { 32806 if (value === `${parseInt(value)}`) { 32807 value = parseInt(value); 32808 } 32809 if (value || parseInt(value) === 0) { 32810 elem.style.setProperty(property, typeof value === "number" ? `${value}px` : value); 32811 } else { 32812 elem.style.removeProperty(property); 32813 } 32814 }; 32815 const show = (elem, display = "flex") => { 32816 if (!elem) { 32817 return; 32818 } 32819 elem.style.display = display; 32820 }; 32821 const hide = (elem) => { 32822 if (!elem) { 32823 return; 32824 } 32825 elem.style.display = "none"; 32826 }; 32827 const showWhenInnerHtmlPresent = (elem, display = "block") => { 32828 if (!elem) { 32829 return; 32830 } 32831 new MutationObserver(() => { 32832 toggle(elem, elem.innerHTML, display); 32833 }).observe(elem, { 32834 childList: true, 32835 subtree: true 32836 }); 32837 }; 32838 const setStyle2 = (parent, selector, property, value) => { 32839 const el = parent.querySelector(selector); 32840 if (el) { 32841 el.style.setProperty(property, value); 32842 } 32843 }; 32844 const toggle = (elem, condition, display = "flex") => { 32845 if (condition) { 32846 show(elem, display); 32847 } else { 32848 hide(elem); 32849 } 32850 }; 32851 const isVisible$1 = (elem) => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); 32852 const allButtonsAreHidden = () => !isVisible$1(getConfirmButton()) && !isVisible$1(getDenyButton()) && !isVisible$1(getCancelButton()); 32853 const isScrollable = (elem) => !!(elem.scrollHeight > elem.clientHeight); 32854 const selfOrParentIsScrollable = (element, stopElement) => { 32855 let parent = element; 32856 while (parent && parent !== stopElement) { 32857 if (isScrollable(parent)) { 32858 return true; 32859 } 32860 parent = parent.parentElement; 32861 } 32862 return false;
vendor: 9,952 bytes, lines 32863-33090
32863 }; 32864 const hasCssAnimation = (elem) => { 32865 const style = window.getComputedStyle(elem); 32866 const animDuration = parseFloat(style.getPropertyValue("animation-duration") || "0"); 32867 const transDuration = parseFloat(style.getPropertyValue("transition-duration") || "0"); 32868 return animDuration > 0 || transDuration > 0; 32869 }; 32870 const animateTimerProgressBar = (timer, reset2 = false) => { 32871 const timerProgressBar = getTimerProgressBar(); 32872 if (!timerProgressBar) { 32873 return; 32874 } 32875 if (isVisible$1(timerProgressBar)) { 32876 if (reset2) { 32877 timerProgressBar.style.transition = "none"; 32878 timerProgressBar.style.width = "100%"; 32879 } 32880 setTimeout(() => { 32881 timerProgressBar.style.transition = `width ${timer / 1e3}s linear`; 32882 timerProgressBar.style.width = "0%"; 32883 }, 10); 32884 } 32885 }; 32886 const stopTimerProgressBar = () => { 32887 const timerProgressBar = getTimerProgressBar(); 32888 if (!timerProgressBar) { 32889 return; 32890 } 32891 const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); 32892 timerProgressBar.style.removeProperty("transition"); 32893 timerProgressBar.style.width = "100%"; 32894 const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); 32895 const timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100; 32896 timerProgressBar.style.width = `${timerProgressBarPercent}%`; 32897 }; 32898 const isNodeEnv = () => typeof window === "undefined" || typeof document === "undefined"; 32899 const sweetHTML = ` 32900 <div aria-labelledby="${swalClasses.title}" aria-describedby="${swalClasses["html-container"]}" class="${swalClasses.popup}" tabindex="-1"> 32901 <button type="button" class="${swalClasses.close}"></button> 32902 <ul class="${swalClasses["progress-steps"]}"></ul> 32903 <div class="${swalClasses.icon}"></div> 32904 <img class="${swalClasses.image}" /> 32905 <h2 class="${swalClasses.title}" id="${swalClasses.title}"></h2> 32906 <div class="${swalClasses["html-container"]}" id="${swalClasses["html-container"]}"></div> 32907 <input class="${swalClasses.input}" id="${swalClasses.input}" /> 32908 <input type="file" class="${swalClasses.file}" /> 32909 <div class="${swalClasses.range}"> 32910 <input type="range" /> 32911 <output></output> 32912 </div> 32913 <select class="${swalClasses.select}" id="${swalClasses.select}"></select> 32914 <div class="${swalClasses.radio}"></div> 32915 <label class="${swalClasses.checkbox}"> 32916 <input type="checkbox" id="${swalClasses.checkbox}" /> 32917 <span class="${swalClasses.label}"></span> 32918 </label> 32919 <textarea class="${swalClasses.textarea}" id="${swalClasses.textarea}"></textarea> 32920 <div class="${swalClasses["validation-message"]}" id="${swalClasses["validation-message"]}"></div> 32921 <div class="${swalClasses.actions}"> 32922 <div class="${swalClasses.loader}"></div> 32923 <button type="button" class="${swalClasses.confirm}"></button> 32924 <button type="button" class="${swalClasses.deny}"></button> 32925 <button type="button" class="${swalClasses.cancel}"></button> 32926 </div> 32927 <div class="${swalClasses.footer}"></div> 32928 <div class="${swalClasses["timer-progress-bar-container"]}"> 32929 <div class="${swalClasses["timer-progress-bar"]}"></div> 32930 </div> 32931 </div> 32932`.replace(/(^|\n)\s*/g, ""); 32933 const resetOldContainer = () => { 32934 const oldContainer = getContainer(); 32935 if (!oldContainer) { 32936 return false; 32937 } 32938 oldContainer.remove(); 32939 removeClass([document.documentElement, document.body], [swalClasses["no-backdrop"], swalClasses["toast-shown"], swalClasses["has-column"]]); 32940 return true; 32941 }; 32942 const resetValidationMessage$1 = () => { 32943 globalState.currentInstance.resetValidationMessage(); 32944 }; 32945 const addInputChangeListeners = () => { 32946 const popup = getPopup(); 32947 const input = getDirectChildByClass(popup, swalClasses.input); 32948 const file = getDirectChildByClass(popup, swalClasses.file); 32949 const range = popup.querySelector(`.${swalClasses.range} input`); 32950 const rangeOutput = popup.querySelector(`.${swalClasses.range} output`); 32951 const select2 = getDirectChildByClass(popup, swalClasses.select); 32952 const checkbox = popup.querySelector(`.${swalClasses.checkbox} input`); 32953 const textarea = getDirectChildByClass(popup, swalClasses.textarea); 32954 input.oninput = resetValidationMessage$1; 32955 file.onchange = resetValidationMessage$1; 32956 select2.onchange = resetValidationMessage$1; 32957 checkbox.onchange = resetValidationMessage$1; 32958 textarea.oninput = resetValidationMessage$1; 32959 range.oninput = () => { 32960 resetValidationMessage$1(); 32961 rangeOutput.value = range.value; 32962 }; 32963 range.onchange = () => { 32964 resetValidationMessage$1(); 32965 rangeOutput.value = range.value; 32966 }; 32967 }; 32968 const getTarget2 = (target) => typeof target === "string" ? document.querySelector(target) : target; 32969 const setupAccessibility = (params) => { 32970 const popup = getPopup(); 32971 popup.setAttribute("role", params.toast ? "alert" : "dialog"); 32972 popup.setAttribute("aria-live", params.toast ? "polite" : "assertive"); 32973 if (!params.toast) { 32974 popup.setAttribute("aria-modal", "true"); 32975 } 32976 }; 32977 const setupRTL = (targetElement) => { 32978 if (window.getComputedStyle(targetElement).direction === "rtl") { 32979 addClass(getContainer(), swalClasses.rtl); 32980 } 32981 }; 32982 const init = (params) => { 32983 const oldContainerExisted = resetOldContainer(); 32984 if (isNodeEnv()) { 32985 error("SweetAlert2 requires document to initialize"); 32986 return; 32987 } 32988 const container = document.createElement("div"); 32989 container.className = swalClasses.container; 32990 if (oldContainerExisted) { 32991 addClass(container, swalClasses["no-transition"]); 32992 } 32993 setInnerHtml(container, sweetHTML); 32994 container.dataset["swal2Theme"] = params.theme; 32995 const targetElement = getTarget2(params.target); 32996 targetElement.appendChild(container); 32997 if (params.topLayer) { 32998 container.setAttribute("popover", ""); 32999 container.showPopover(); 33000 } 33001 setupAccessibility(params); 33002 setupRTL(targetElement); 33003 addInputChangeListeners(); 33004 }; 33005 const parseHtmlToContainer = (param, target) => { 33006 if (param instanceof HTMLElement) { 33007 target.appendChild(param); 33008 } else if (typeof param === "object") { 33009 handleObject(param, target); 33010 } else if (param) { 33011 setInnerHtml(target, param); 33012 } 33013 }; 33014 const handleObject = (param, target) => { 33015 if (param.jquery) { 33016 handleJqueryElem(target, param); 33017 } else { 33018 setInnerHtml(target, param.toString()); 33019 } 33020 }; 33021 const handleJqueryElem = (target, elem) => { 33022 target.textContent = ""; 33023 if (0 in elem) { 33024 for (let i = 0; i in elem; i++) { 33025 target.appendChild(elem[i].cloneNode(true)); 33026 } 33027 } else { 33028 target.appendChild(elem.cloneNode(true)); 33029 } 33030 }; 33031 const renderActions = (instance, params) => { 33032 const actions2 = getActions(); 33033 const loader = getLoader(); 33034 if (!actions2 || !loader) { 33035 return; 33036 } 33037 if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) { 33038 hide(actions2); 33039 } else { 33040 show(actions2); 33041 } 33042 applyCustomClass(actions2, params, "actions"); 33043 renderButtons(actions2, loader, params); 33044 setInnerHtml(loader, params.loaderHtml || ""); 33045 applyCustomClass(loader, params, "loader"); 33046 }; 33047 function renderButtons(actions2, loader, params) { 33048 const confirmButton = getConfirmButton(); 33049 const denyButton = getDenyButton(); 33050 const cancelButton = getCancelButton(); 33051 if (!confirmButton || !denyButton || !cancelButton) { 33052 return; 33053 } 33054 renderButton(confirmButton, "confirm", params); 33055 renderButton(denyButton, "deny", params); 33056 renderButton(cancelButton, "cancel", params); 33057 handleButtonsStyling(confirmButton, denyButton, cancelButton, params); 33058 if (params.reverseButtons) { 33059 if (params.toast) { 33060 actions2.insertBefore(cancelButton, confirmButton); 33061 actions2.insertBefore(denyButton, confirmButton); 33062 } else { 33063 actions2.insertBefore(cancelButton, loader); 33064 actions2.insertBefore(denyButton, loader); 33065 actions2.insertBefore(confirmButton, loader); 33066 } 33067 } 33068 } 33069 function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) { 33070 if (!params.buttonsStyling) { 33071 removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled); 33072 return; 33073 } 33074 addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); 33075 if (params.confirmButtonColor) { 33076 confirmButton.style.setProperty("--swal2-confirm-button-background-color", params.confirmButtonColor); 33077 } 33078 if (params.denyButtonColor) { 33079 denyButton.style.setProperty("--swal2-deny-button-background-color", params.denyButtonColor); 33080 } 33081 if (params.cancelButtonColor) { 33082 cancelButton.style.setProperty("--swal2-cancel-button-background-color", params.cancelButtonColor); 33083 } 33084 applyOutlineColor(confirmButton); 33085 applyOutlineColor(denyButton); 33086 applyOutlineColor(cancelButton); 33087 } 33088 function applyOutlineColor(button) { 33089 const buttonStyle = window.getComputedStyle(button); 33090 if (buttonStyle.getPropertyValue("--swal2-action-button-focus-box-sha
vendor: 7,022 bytes, lines 33090-33268
33090dow")) { 33091 return; 33092 } 33093 const outlineColor = buttonStyle.backgroundColor.replace(/rgba?\((\d+), (\d+), (\d+).*/, "rgba($1, $2, $3, 0.5)"); 33094 button.style.setProperty("--swal2-action-button-focus-box-shadow", buttonStyle.getPropertyValue("--swal2-outline").replace(/ rgba\(.*/, ` ${outlineColor}`)); 33095 } 33096 function renderButton(button, buttonType, params) { 33097 const buttonName = ( 33098 /** @type {'Confirm' | 'Deny' | 'Cancel'} */ 33099 capitalizeFirstLetter(buttonType) 33100 ); 33101 toggle(button, params[`show${buttonName}Button`], "inline-block"); 33102 setInnerHtml(button, params[`${buttonType}ButtonText`] || ""); 33103 button.setAttribute("aria-label", params[`${buttonType}ButtonAriaLabel`] || ""); 33104 button.className = swalClasses[buttonType]; 33105 applyCustomClass(button, params, `${buttonType}Button`); 33106 } 33107 const renderCloseButton = (instance, params) => { 33108 const closeButton = getCloseButton(); 33109 if (!closeButton) { 33110 return; 33111 } 33112 setInnerHtml(closeButton, params.closeButtonHtml || ""); 33113 applyCustomClass(closeButton, params, "closeButton"); 33114 toggle(closeButton, params.showCloseButton); 33115 closeButton.setAttribute("aria-label", params.closeButtonAriaLabel || ""); 33116 }; 33117 const renderContainer = (instance, params) => { 33118 const container = getContainer(); 33119 if (!container) { 33120 return; 33121 } 33122 handleBackdropParam(container, params.backdrop); 33123 handlePositionParam(container, params.position); 33124 handleGrowParam(container, params.grow); 33125 applyCustomClass(container, params, "container"); 33126 }; 33127 function handleBackdropParam(container, backdrop) { 33128 if (typeof backdrop === "string") { 33129 container.style.background = backdrop; 33130 } else if (!backdrop) { 33131 addClass([document.documentElement, document.body], swalClasses["no-backdrop"]); 33132 } 33133 } 33134 function handlePositionParam(container, position) { 33135 if (!position) { 33136 return; 33137 } 33138 if (position in swalClasses) { 33139 addClass(container, swalClasses[position]); 33140 } else { 33141 warn2('The "position" parameter is not valid, defaulting to "center"'); 33142 addClass(container, swalClasses.center); 33143 } 33144 } 33145 function handleGrowParam(container, grow) { 33146 if (!grow) { 33147 return; 33148 } 33149 addClass(container, swalClasses[`grow-${grow}`]); 33150 } 33151 var privateProps = { 33152 innerParams: /* @__PURE__ */ new WeakMap(), 33153 domCache: /* @__PURE__ */ new WeakMap() 33154 }; 33155 const inputClasses = ["input", "file", "range", "select", "radio", "checkbox", "textarea"]; 33156 const renderInput = (instance, params) => { 33157 const popup = getPopup(); 33158 if (!popup) { 33159 return; 33160 } 33161 const innerParams = privateProps.innerParams.get(instance); 33162 const rerender = !innerParams || params.input !== innerParams.input; 33163 inputClasses.forEach((inputClass) => { 33164 const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); 33165 if (!inputContainer) { 33166 return; 33167 } 33168 setAttributes(inputClass, params.inputAttributes); 33169 inputContainer.className = swalClasses[inputClass]; 33170 if (rerender) { 33171 hide(inputContainer); 33172 } 33173 }); 33174 if (params.input) { 33175 if (rerender) { 33176 showInput(params); 33177 } 33178 setCustomClass(params); 33179 } 33180 }; 33181 const showInput = (params) => { 33182 if (!params.input) { 33183 return; 33184 } 33185 if (!renderInputType[params.input]) { 33186 error(`Unexpected type of input! Expected ${Object.keys(renderInputType).join(" | ")}, got "${params.input}"`); 33187 return; 33188 } 33189 const inputContainer = getInputContainer(params.input); 33190 if (!inputContainer) { 33191 return; 33192 } 33193 const input = renderInputType[params.input](inputContainer, params); 33194 show(inputContainer); 33195 if (params.inputAutoFocus) { 33196 setTimeout(() => { 33197 focusInput(input); 33198 }); 33199 } 33200 }; 33201 const removeAttributes = (input) => { 33202 for (let i = 0; i < input.attributes.length; i++) { 33203 const attrName = input.attributes[i].name; 33204 if (!["id", "type", "value", "style"].includes(attrName)) { 33205 input.removeAttribute(attrName); 33206 } 33207 } 33208 }; 33209 const setAttributes = (inputClass, inputAttributes) => { 33210 const popup = getPopup(); 33211 if (!popup) { 33212 return; 33213 } 33214 const input = getInput$1(popup, inputClass); 33215 if (!input) { 33216 return; 33217 } 33218 removeAttributes(input); 33219 for (const attr in inputAttributes) { 33220 input.setAttribute(attr, inputAttributes[attr]); 33221 } 33222 }; 33223 const setCustomClass = (params) => { 33224 if (!params.input) { 33225 return; 33226 } 33227 const inputContainer = getInputContainer(params.input); 33228 if (inputContainer) { 33229 applyCustomClass(inputContainer, params, "input"); 33230 } 33231 }; 33232 const setInputPlaceholder = (input, params) => { 33233 if (!input.placeholder && params.inputPlaceholder) { 33234 input.placeholder = params.inputPlaceholder; 33235 } 33236 }; 33237 const setInputLabel = (input, prependTo, params) => { 33238 if (params.inputLabel) { 33239 const label = document.createElement("label"); 33240 const labelClass = swalClasses["input-label"]; 33241 label.setAttribute("for", input.id); 33242 label.className = labelClass; 33243 if (typeof params.customClass === "object") { 33244 addClass(label, params.customClass.inputLabel); 33245 } 33246 label.innerText = params.inputLabel; 33247 prependTo.insertAdjacentElement("beforebegin", label); 33248 } 33249 }; 33250 const getInputContainer = (inputType) => { 33251 const popup = getPopup(); 33252 if (!popup) { 33253 return; 33254 } 33255 return getDirectChildByClass(popup, swalClasses[ 33256 /** @type {SwalClass} */ 33257 inputType 33258 ] || swalClasses.input); 33259 }; 33260 const checkAndSetInputValue = (input, inputValue) => { 33261 if (["string", "number"].includes(typeof inputValue)) { 33262 input.value = `${inputValue}`; 33263 } else if (!isPromise2(inputValue)) { 33264 warn2(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof inputValue}"`); 33265 } 33266 }; 33267 const renderInputType = {}; 33268 renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType["datetime-local"] = renderInputType.time = renderInputType.week = renderInputType.month = /** @type {(input: Input | HTMLElement, params: SweetAlertOptions) =>
vendor: 21,663 bytes, lines 33268-33828
33268 Input} */ 33269 (input, params) => { 33270 checkAndSetInputValue(input, params.inputValue); 33271 setInputLabel(input, input, params); 33272 setInputPlaceholder(input, params); 33273 input.type = params.input; 33274 return input; 33275 }; 33276 renderInputType.file = (input, params) => { 33277 setInputLabel(input, input, params); 33278 setInputPlaceholder(input, params); 33279 return input; 33280 }; 33281 renderInputType.range = (range, params) => { 33282 const rangeInput = range.querySelector("input"); 33283 const rangeOutput = range.querySelector("output"); 33284 checkAndSetInputValue(rangeInput, params.inputValue); 33285 rangeInput.type = params.input; 33286 checkAndSetInputValue(rangeOutput, params.inputValue); 33287 setInputLabel(rangeInput, range, params); 33288 return range; 33289 }; 33290 renderInputType.select = (select2, params) => { 33291 select2.textContent = ""; 33292 if (params.inputPlaceholder) { 33293 const placeholder = document.createElement("option"); 33294 setInnerHtml(placeholder, params.inputPlaceholder); 33295 placeholder.value = ""; 33296 placeholder.disabled = true; 33297 placeholder.selected = true; 33298 select2.appendChild(placeholder); 33299 } 33300 setInputLabel(select2, select2, params); 33301 return select2; 33302 }; 33303 renderInputType.radio = (radio) => { 33304 radio.textContent = ""; 33305 return radio; 33306 }; 33307 renderInputType.checkbox = (checkboxContainer, params) => { 33308 const checkbox = getInput$1(getPopup(), "checkbox"); 33309 checkbox.value = "1"; 33310 checkbox.checked = Boolean(params.inputValue); 33311 const label = checkboxContainer.querySelector("span"); 33312 setInnerHtml(label, params.inputPlaceholder || params.inputLabel); 33313 return checkbox; 33314 }; 33315 renderInputType.textarea = (textarea, params) => { 33316 checkAndSetInputValue(textarea, params.inputValue); 33317 setInputPlaceholder(textarea, params); 33318 setInputLabel(textarea, textarea, params); 33319 const getMargin = (el) => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); 33320 setTimeout(() => { 33321 if ("MutationObserver" in window) { 33322 const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); 33323 const textareaResizeHandler = () => { 33324 if (!document.body.contains(textarea)) { 33325 return; 33326 } 33327 const textareaWidth = textarea.offsetWidth + getMargin(textarea); 33328 if (textareaWidth > initialPopupWidth) { 33329 getPopup().style.width = `${textareaWidth}px`; 33330 } else { 33331 applyNumericalStyle(getPopup(), "width", params.width); 33332 } 33333 }; 33334 new MutationObserver(textareaResizeHandler).observe(textarea, { 33335 attributes: true, 33336 attributeFilter: ["style"] 33337 }); 33338 } 33339 }); 33340 return textarea; 33341 }; 33342 const renderContent = (instance, params) => { 33343 const htmlContainer = getHtmlContainer(); 33344 if (!htmlContainer) { 33345 return; 33346 } 33347 showWhenInnerHtmlPresent(htmlContainer); 33348 applyCustomClass(htmlContainer, params, "htmlContainer"); 33349 if (params.html) { 33350 parseHtmlToContainer(params.html, htmlContainer); 33351 show(htmlContainer, "block"); 33352 } else if (params.text) { 33353 htmlContainer.textContent = params.text; 33354 show(htmlContainer, "block"); 33355 } else { 33356 hide(htmlContainer); 33357 } 33358 renderInput(instance, params); 33359 }; 33360 const renderFooter = (instance, params) => { 33361 const footer = getFooter(); 33362 if (!footer) { 33363 return; 33364 } 33365 showWhenInnerHtmlPresent(footer); 33366 toggle(footer, params.footer, "block"); 33367 if (params.footer) { 33368 parseHtmlToContainer(params.footer, footer); 33369 } 33370 applyCustomClass(footer, params, "footer"); 33371 }; 33372 const renderIcon = (instance, params) => { 33373 const innerParams = privateProps.innerParams.get(instance); 33374 const icon = getIcon(); 33375 if (!icon) { 33376 return; 33377 } 33378 if (innerParams && params.icon === innerParams.icon) { 33379 setContent(icon, params); 33380 applyStyles(icon, params); 33381 return; 33382 } 33383 if (!params.icon && !params.iconHtml) { 33384 hide(icon); 33385 return; 33386 } 33387 if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { 33388 error(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${params.icon}"`); 33389 hide(icon); 33390 return; 33391 } 33392 show(icon); 33393 setContent(icon, params); 33394 applyStyles(icon, params); 33395 addClass(icon, params.showClass && params.showClass.icon); 33396 const colorSchemeQueryList = window.matchMedia("(prefers-color-scheme: dark)"); 33397 colorSchemeQueryList.addEventListener("change", adjustSuccessIconBackgroundColor); 33398 }; 33399 const applyStyles = (icon, params) => { 33400 for (const [iconType, iconClassName] of Object.entries(iconTypes)) { 33401 if (params.icon !== iconType) { 33402 removeClass(icon, iconClassName); 33403 } 33404 } 33405 addClass(icon, params.icon && iconTypes[params.icon]); 33406 setColor(icon, params); 33407 adjustSuccessIconBackgroundColor(); 33408 applyCustomClass(icon, params, "icon"); 33409 }; 33410 const adjustSuccessIconBackgroundColor = () => { 33411 const popup = getPopup(); 33412 if (!popup) { 33413 return; 33414 } 33415 const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue("background-color"); 33416 const successIconParts = popup.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"); 33417 for (let i = 0; i < successIconParts.length; i++) { 33418 successIconParts[i].style.backgroundColor = popupBackgroundColor; 33419 } 33420 }; 33421 const successIconHtml = ` 33422 <div class="swal2-success-circular-line-left"></div> 33423 <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span> 33424 <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div> 33425 <div class="swal2-success-circular-line-right"></div> 33426`; 33427 const errorIconHtml = ` 33428 <span class="swal2-x-mark"> 33429 <span class="swal2-x-mark-line-left"></span> 33430 <span class="swal2-x-mark-line-right"></span> 33431 </span> 33432`; 33433 const setContent = (icon, params) => { 33434 if (!params.icon && !params.iconHtml) { 33435 return; 33436 } 33437 let oldContent = icon.innerHTML; 33438 let newContent = ""; 33439 if (params.iconHtml) { 33440 newContent = iconContent(params.iconHtml); 33441 } else if (params.icon === "success") { 33442 newContent = successIconHtml; 33443 oldContent = oldContent.replace(/ style=".*?"/g, ""); 33444 } else if (params.icon === "error") { 33445 newContent = errorIconHtml; 33446 } else if (params.icon) { 33447 const defaultIconHtml = { 33448 question: "?", 33449 warning: "!", 33450 info: "i" 33451 }; 33452 newContent = iconContent(defaultIconHtml[params.icon]); 33453 } 33454 if (oldContent.trim() !== newContent.trim()) { 33455 setInnerHtml(icon, newContent); 33456 } 33457 }; 33458 const setColor = (icon, params) => { 33459 if (!params.iconColor) { 33460 return; 33461 } 33462 icon.style.color = params.iconColor; 33463 icon.style.borderColor = params.iconColor; 33464 for (const sel of [".swal2-success-line-tip", ".swal2-success-line-long", ".swal2-x-mark-line-left", ".swal2-x-mark-line-right"]) { 33465 setStyle2(icon, sel, "background-color", params.iconColor); 33466 } 33467 setStyle2(icon, ".swal2-success-ring", "border-color", params.iconColor); 33468 }; 33469 const iconContent = (content) => `<div class="${swalClasses["icon-content"]}">${content}</div>`; 33470 const renderImage = (instance, params) => { 33471 const image = getImage(); 33472 if (!image) { 33473 return; 33474 } 33475 if (!params.imageUrl) { 33476 hide(image); 33477 return; 33478 } 33479 show(image, ""); 33480 image.setAttribute("src", params.imageUrl); 33481 image.setAttribute("alt", params.imageAlt || ""); 33482 applyNumericalStyle(image, "width", params.imageWidth); 33483 applyNumericalStyle(image, "height", params.imageHeight); 33484 image.className = swalClasses.image; 33485 applyCustomClass(image, params, "image"); 33486 }; 33487 let dragging = false; 33488 let mousedownX = 0; 33489 let mousedownY = 0; 33490 let initialX = 0; 33491 let initialY = 0; 33492 const addDraggableListeners = (popup) => { 33493 popup.addEventListener("mousedown", down); 33494 document.body.addEventListener("mousemove", move); 33495 popup.addEventListener("mouseup", up); 33496 popup.addEventListener("touchstart", down); 33497 document.body.addEventListener("touchmove", move); 33498 popup.addEventListener("touchend", up); 33499 }; 33500 const removeDraggableListeners = (popup) => { 33501 popup.removeEventListener("mousedown", down); 33502 document.body.removeEventListener("mousemove", move); 33503 popup.removeEventListener("mouseup", up); 33504 popup.removeEventListener("touchstart", down); 33505 document.body.removeEventListener("touchmove", move); 33506 popup.removeEventListener("touchend", up); 33507 }; 33508 const down = (event) => { 33509 const popup = getPopup(); 33510 if (event.target === popup || getIcon().contains( 33511 /** @type {HTMLElement} */ 33512 event.target 33513 )) { 33514 dragging = true; 33515 const clientXY = getClientXY(event); 33516 mousedownX = clientXY.clientX; 33517 mousedownY = clientXY.clientY; 33518 initialX = parseInt(popup.style.insetInlineStart) || 0; 33519 initialY = parseInt(popup.style.insetBlockStart) || 0; 33520 addClass(popup, "swal2-dragging"); 33521 } 33522 }; 33523 const move = (event) => { 33524 const popup = getPopup(); 33525 if (dragging) { 33526 let { 33527 clientX, 33528 clientY 33529 } = getClientXY(event); 33530 popup.style.insetInlineStart = `${initialX + (clientX - mousedownX)}px`; 33531 popup.style.insetBlockStart = `${initialY + (clientY - mousedownY)}px`; 33532 } 33533 }; 33534 const up = () => { 33535 const popup = getPopup(); 33536 dragging = false; 33537 removeClass(popup, "swal2-dragging"); 33538 }; 33539 const getClientXY = (event) => { 33540 let clientX = 0, clientY = 0; 33541 if (event.type.startsWith("mouse")) { 33542 clientX = /** @type {MouseEvent} */ 33543 event.clientX; 33544 clientY = /** @type {MouseEvent} */ 33545 event.clientY; 33546 } else if (event.type.startsWith("touch")) { 33547 clientX = /** @type {TouchEvent} */ 33548 event.touches[0].clientX; 33549 clientY = /** @type {TouchEvent} */ 33550 event.touches[0].clientY; 33551 } 33552 return { 33553 clientX, 33554 clientY 33555 }; 33556 }; 33557 const renderPopup = (instance, params) => { 33558 const container = getContainer(); 33559 const popup = getPopup(); 33560 if (!container || !popup) { 33561 return; 33562 } 33563 if (params.toast) { 33564 applyNumericalStyle(container, "width", params.width); 33565 popup.style.width = "100%"; 33566 const loader = getLoader(); 33567 if (loader) { 33568 popup.insertBefore(loader, getIcon()); 33569 } 33570 } else { 33571 applyNumericalStyle(popup, "width", params.width); 33572 } 33573 applyNumericalStyle(popup, "padding", params.padding); 33574 if (params.color) { 33575 popup.style.color = params.color; 33576 } 33577 if (params.background) { 33578 popup.style.background = params.background; 33579 } 33580 hide(getValidationMessage()); 33581 addClasses$1(popup, params); 33582 if (params.draggable && !params.toast) { 33583 addClass(popup, swalClasses.draggable); 33584 addDraggableListeners(popup); 33585 } else { 33586 removeClass(popup, swalClasses.draggable); 33587 removeDraggableListeners(popup); 33588 } 33589 }; 33590 const addClasses$1 = (popup, params) => { 33591 const showClass = params.showClass || {}; 33592 popup.className = `${swalClasses.popup} ${isVisible$1(popup) ? showClass.popup : ""}`; 33593 if (params.toast) { 33594 addClass([document.documentElement, document.body], swalClasses["toast-shown"]); 33595 addClass(popup, swalClasses.toast); 33596 } else { 33597 addClass(popup, swalClasses.modal); 33598 } 33599 applyCustomClass(popup, params, "popup"); 33600 if (typeof params.customClass === "string") { 33601 addClass(popup, params.customClass); 33602 } 33603 if (params.icon) { 33604 addClass(popup, swalClasses[`icon-${params.icon}`]); 33605 } 33606 }; 33607 const renderProgressSteps = (instance, params) => { 33608 const progressStepsContainer = getProgressSteps(); 33609 if (!progressStepsContainer) { 33610 return; 33611 } 33612 const { 33613 progressSteps, 33614 currentProgressStep 33615 } = params; 33616 if (!progressSteps || progressSteps.length === 0 || currentProgressStep === void 0) { 33617 hide(progressStepsContainer); 33618 return; 33619 } 33620 show(progressStepsContainer); 33621 progressStepsContainer.textContent = ""; 33622 if (currentProgressStep >= progressSteps.length) { 33623 warn2("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"); 33624 } 33625 progressSteps.forEach((step, index2) => { 33626 const stepEl = createStepElement(step); 33627 progressStepsContainer.appendChild(stepEl); 33628 if (index2 === currentProgressStep) { 33629 addClass(stepEl, swalClasses["active-progress-step"]); 33630 } 33631 if (index2 !== progressSteps.length - 1) { 33632 const lineEl = createLineElement(params); 33633 progressStepsContainer.appendChild(lineEl); 33634 } 33635 }); 33636 }; 33637 const createStepElement = (step) => { 33638 const stepEl = document.createElement("li"); 33639 addClass(stepEl, swalClasses["progress-step"]); 33640 setInnerHtml(stepEl, step); 33641 return stepEl; 33642 }; 33643 const createLineElement = (params) => { 33644 const lineEl = document.createElement("li"); 33645 addClass(lineEl, swalClasses["progress-step-line"]); 33646 if (params.progressStepsDistance) { 33647 applyNumericalStyle(lineEl, "width", params.progressStepsDistance); 33648 } 33649 return lineEl; 33650 }; 33651 const renderTitle = (instance, params) => { 33652 const title = getTitle(); 33653 if (!title) { 33654 return; 33655 } 33656 showWhenInnerHtmlPresent(title); 33657 toggle(title, params.title || params.titleText, "block"); 33658 if (params.title) { 33659 parseHtmlToContainer(params.title, title); 33660 } 33661 if (params.titleText) { 33662 title.innerText = params.titleText; 33663 } 33664 applyCustomClass(title, params, "title"); 33665 }; 33666 const render2 = (instance, params) => { 33667 renderPopup(instance, params); 33668 renderContainer(instance, params); 33669 renderProgressSteps(instance, params); 33670 renderIcon(instance, params); 33671 renderImage(instance, params); 33672 renderTitle(instance, params); 33673 renderCloseButton(instance, params); 33674 renderContent(instance, params); 33675 renderActions(instance, params); 33676 renderFooter(instance, params); 33677 const popup = getPopup(); 33678 if (typeof params.didRender === "function" && popup) { 33679 params.didRender(popup); 33680 } 33681 globalState.eventEmitter.emit("didRender", popup); 33682 }; 33683 const isVisible = () => { 33684 return isVisible$1(getPopup()); 33685 }; 33686 const clickConfirm = () => { 33687 var _dom$getConfirmButton; 33688 return (_dom$getConfirmButton = getConfirmButton()) === null || _dom$getConfirmButton === void 0 ? void 0 : _dom$getConfirmButton.click(); 33689 }; 33690 const clickDeny = () => { 33691 var _dom$getDenyButton; 33692 return (_dom$getDenyButton = getDenyButton()) === null || _dom$getDenyButton === void 0 ? void 0 : _dom$getDenyButton.click(); 33693 }; 33694 const clickCancel = () => { 33695 var _dom$getCancelButton; 33696 return (_dom$getCancelButton = getCancelButton()) === null || _dom$getCancelButton === void 0 ? void 0 : _dom$getCancelButton.click(); 33697 }; 33698 const DismissReason = Object.freeze({ 33699 cancel: "cancel", 33700 backdrop: "backdrop", 33701 close: "close", 33702 esc: "esc", 33703 timer: "timer" 33704 }); 33705 const removeKeydownHandler = (globalState2) => { 33706 if (globalState2.keydownTarget && globalState2.keydownHandlerAdded) { 33707 globalState2.keydownTarget.removeEventListener("keydown", globalState2.keydownHandler, { 33708 capture: globalState2.keydownListenerCapture 33709 }); 33710 globalState2.keydownHandlerAdded = false; 33711 } 33712 }; 33713 const addKeydownHandler = (globalState2, innerParams, dismissWith) => { 33714 removeKeydownHandler(globalState2); 33715 if (!innerParams.toast) { 33716 globalState2.keydownHandler = (e) => keydownHandler(innerParams, e, dismissWith); 33717 globalState2.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); 33718 globalState2.keydownListenerCapture = innerParams.keydownListenerCapture; 33719 globalState2.keydownTarget.addEventListener("keydown", globalState2.keydownHandler, { 33720 capture: globalState2.keydownListenerCapture 33721 }); 33722 globalState2.keydownHandlerAdded = true; 33723 } 33724 }; 33725 const setFocus = (index2, increment) => { 33726 var _dom$getPopup; 33727 const focusableElements = getFocusableElements(); 33728 if (focusableElements.length) { 33729 index2 = index2 + increment; 33730 if (index2 === -2) { 33731 index2 = focusableElements.length - 1; 33732 } 33733 if (index2 === focusableElements.length) { 33734 index2 = 0; 33735 } else if (index2 === -1) { 33736 index2 = focusableElements.length - 1; 33737 } 33738 focusableElements[index2].focus(); 33739 return; 33740 } 33741 (_dom$getPopup = getPopup()) === null || _dom$getPopup === void 0 || _dom$getPopup.focus(); 33742 }; 33743 const arrowKeysNextButton = ["ArrowRight", "ArrowDown"]; 33744 const arrowKeysPreviousButton = ["ArrowLeft", "ArrowUp"]; 33745 const keydownHandler = (innerParams, event, dismissWith) => { 33746 if (!innerParams) { 33747 return; 33748 } 33749 if (event.isComposing || event.keyCode === 229) { 33750 return; 33751 } 33752 if (innerParams.stopKeydownPropagation) { 33753 event.stopPropagation(); 33754 } 33755 if (event.key === "Enter") { 33756 handleEnter(event, innerParams); 33757 } else if (event.key === "Tab") { 33758 handleTab(event); 33759 } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(event.key)) { 33760 handleArrows(event.key); 33761 } else if (event.key === "Escape") { 33762 handleEsc(event, innerParams, dismissWith); 33763 } 33764 }; 33765 const handleEnter = (event, innerParams) => { 33766 if (!callIfFunction(innerParams.allowEnterKey)) { 33767 return; 33768 } 33769 const input = getInput$1(getPopup(), innerParams.input); 33770 if (event.target && input && event.target instanceof HTMLElement && event.target.outerHTML === input.outerHTML) { 33771 if (["textarea", "file"].includes(innerParams.input)) { 33772 return; 33773 } 33774 clickConfirm(); 33775 event.preventDefault(); 33776 } 33777 }; 33778 const handleTab = (event) => { 33779 const targetElement = event.target; 33780 const focusableElements = getFocusableElements(); 33781 let btnIndex = -1; 33782 for (let i = 0; i < focusableElements.length; i++) { 33783 if (targetElement === focusableElements[i]) { 33784 btnIndex = i; 33785 break; 33786 } 33787 } 33788 if (!event.shiftKey) { 33789 setFocus(btnIndex, 1); 33790 } else { 33791 setFocus(btnIndex, -1); 33792 } 33793 event.stopPropagation(); 33794 event.preventDefault(); 33795 }; 33796 const handleArrows = (key) => { 33797 const actions2 = getActions(); 33798 const confirmButton = getConfirmButton(); 33799 const denyButton = getDenyButton(); 33800 const cancelButton = getCancelButton(); 33801 if (!actions2 || !confirmButton || !denyButton || !cancelButton) { 33802 return; 33803 } 33804 const buttons = [confirmButton, denyButton, cancelButton]; 33805 if (document.activeElement instanceof HTMLElement && !buttons.includes(document.activeElement)) { 33806 return; 33807 } 33808 const sibling = arrowKeysNextButton.includes(key) ? "nextElementSibling" : "previousElementSibling"; 33809 let buttonToFocus = document.activeElement; 33810 if (!buttonToFocus) { 33811 return; 33812 } 33813 for (let i = 0; i < actions2.children.length; i++) { 33814 buttonToFocus = buttonToFocus[sibling]; 33815 if (!buttonToFocus) { 33816 return; 33817 } 33818 if (buttonToFocus instanceof HTMLButtonElement && isVisible$1(buttonToFocus)) { 33819 break; 33820 } 33821 } 33822 if (buttonToFocus instanceof HTMLButtonElement) { 33823 buttonToFocus.focus(); 33824 } 33825 }; 33826 const handleEsc = (event, innerParams, dismissWith) => { 33827 if (callIfFunction(innerParams.allowEscapeKey)) { 33828 event.preventDefault();
33829 dismissWith(DismissReason.esc); 33830 } 33831 }; 33832 var privateMethods = { 33833 swalPromiseResolve: /* @__PURE__ */ new WeakMap(), 33834 swalPromiseReject: /* @__PURE__ */ new WeakMap() 33835 }; 33836 const setAriaHidden = () => { 33837 const container = getContainer(); 33838 const bodyChildren = Array.from(document.body.children); 33839 bodyChildren.forEach((el) => { 33840 if (el.contains(container)) { 33841 return; 33842 } 33843 if (el.hasAttribute("aria-hidden")) { 33844 el.setAttribute("data-previous-aria-hidden", el.getAttribute("aria-hidden") || ""); 33845 } 33846 el.setAttribute("aria-hidden", "true"); 33847 }); 33848 }; 33849 const unsetAriaHidden = () => { 33850 const bodyChildren = Array.from(document.body.children); 33851 bodyChildren.forEach((el) => { 33852 if (el.hasAttribute("data-previous-aria-hidden")) { 33853 el.setAttribute("aria-hidden", el.getAttribute("data-previous-aria-hidden") || ""); 33854 el.removeAttribute("data-previous-aria-hidden"); 33855 } else { 33856 el.removeAttribute("aria-hidden"); 33857 } 33858 }); 33859 }; 33860 const isSafariOrIOS = typeof window !== "undefined" && !!window.GestureEvent; 33861 const iOSfix = () => { 33862 if (isSafariOrIOS && !hasClass(document.body, swalClasses.iosfix)) { 33863 const offset = document.body.scrollTop; 33864 document.body.style.top = `${offset * -1}px`; 33865 addClass(document.body, swalClasses.iosfix); 33866 lockBodyScroll(); 33867 } 33868 }; 33869 const lockBodyScroll = () => { 33870 const container = getContainer(); 33871 if (!container) { 33872 return; 33873 } 33874 let preventTouchMove; 33875 container.ontouchstart = (event) => { 33876 preventTouchMove = shouldPreventTouchMove(event); 33877 }; 33878 container.ontouchmove = (event) => { 33879 if (preventTouchMove) { 33880 event.preventDefault(); 33881 event.stopPropagation(); 33882 } 33883 }; 33884 }; 33885 const shouldPreventTouchMove = (event) => { 33886 const target = event.target; 33887 const container = getContainer(); 33888 const htmlContainer = getHtmlContainer(); 33889 if (!container || !htmlContainer) { 33890 return false; 33891 } 33892 if (isStylus(event) || isZoom(event)) { 33893 return false; 33894 } 33895 if (target === container) { 33896 return true; 33897 } 33898 if (!isScrollable(container) && target instanceof HTMLElement && !selfOrParentIsScrollable(target, htmlContainer) && // #2823 33899 target.tagName !== "INPUT" && // #1603 33900 target.tagName !== "TEXTAREA" && // #2266 33901 !(isScrollable(htmlContainer) && // #1944 33902 htmlContainer.contains(target))) { 33903 return true; 33904 } 33905 return false; 33906 }; 33907 const isStylus = (event) => { 33908 return event.touches && event.touches.length && event.touches[0].touchType === "stylus"; 33909 }; 33910 const isZoom = (event) => { 33911 return event.touches && event.touches.length > 1; 33912 }; 33913 const undoIOSfix = () => { 33914 if (hasClass(document.body, swalClasses.iosfix)) { 33915 const offset = parseInt(document.body.style.top, 10); 33916 removeClass(document.body, swalClasses.iosfix); 33917 document.body.style.top = ""; 33918 document.body.scrollTop = offset * -1; 33919 } 33920 }; 33921 const measureScrollbar = () => { 33922 const scrollDiv = document.createElement("div"); 33923 scrollDiv.className = swalClasses["scrollbar-measure"]; 33924 document.body.appendChild(scrollDiv); 33925 const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; 33926 document.body.removeChild(scrollDiv); 33927 return scrollbarWidth; 33928 }; 33929 let previousBodyPadding = null; 33930 const replaceScrollbarWithPadding = (initialBodyOverflow) => { 33931 if (previousBodyPadding !== null) { 33932 return; 33933 } 33934 if (document.body.scrollHeight > window.innerHeight || initialBodyOverflow === "scroll") { 33935 previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")); 33936 document.body.style.paddingRight = `${previousBodyPadding + measureScrollbar()}px`; 33937 } 33938 }; 33939 const undoReplaceScrollbarWithPadding = () => { 33940 if (previousBodyPadding !== null) { 33941 document.body.style.paddingRight = `${previousBodyPadding}px`; 33942 previousBodyPadding = null; 33943 } 33944 };
vendor: 10,166 bytes, lines 33945-34193
33945 function removePopupAndResetState(instance, container, returnFocus, didClose) { 33946 if (isToast()) { 33947 triggerDidCloseAndDispose(instance, didClose); 33948 } else { 33949 restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); 33950 removeKeydownHandler(globalState); 33951 } 33952 if (isSafariOrIOS) { 33953 container.setAttribute("style", "display:none !important"); 33954 container.removeAttribute("class"); 33955 container.innerHTML = ""; 33956 } else { 33957 container.remove(); 33958 } 33959 if (isModal()) { 33960 undoReplaceScrollbarWithPadding(); 33961 undoIOSfix(); 33962 unsetAriaHidden(); 33963 } 33964 removeBodyClasses(); 33965 } 33966 function removeBodyClasses() { 33967 removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses["height-auto"], swalClasses["no-backdrop"], swalClasses["toast-shown"]]); 33968 } 33969 function close(resolveValue2) { 33970 resolveValue2 = prepareResolveValue(resolveValue2); 33971 const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); 33972 const didClose = triggerClosePopup(this); 33973 if (this.isAwaitingPromise) { 33974 if (!resolveValue2.isDismissed) { 33975 handleAwaitingPromise(this); 33976 swalPromiseResolve(resolveValue2); 33977 } 33978 } else if (didClose) { 33979 swalPromiseResolve(resolveValue2); 33980 } 33981 } 33982 const triggerClosePopup = (instance) => { 33983 const popup = getPopup(); 33984 if (!popup) { 33985 return false; 33986 } 33987 const innerParams = privateProps.innerParams.get(instance); 33988 if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { 33989 return false; 33990 } 33991 removeClass(popup, innerParams.showClass.popup); 33992 addClass(popup, innerParams.hideClass.popup); 33993 const backdrop = getContainer(); 33994 removeClass(backdrop, innerParams.showClass.backdrop); 33995 addClass(backdrop, innerParams.hideClass.backdrop); 33996 handlePopupAnimation(instance, popup, innerParams); 33997 return true; 33998 }; 33999 function rejectPromise(error2) { 34000 const rejectPromise2 = privateMethods.swalPromiseReject.get(this); 34001 handleAwaitingPromise(this); 34002 if (rejectPromise2) { 34003 rejectPromise2(error2); 34004 } 34005 } 34006 const handleAwaitingPromise = (instance) => { 34007 if (instance.isAwaitingPromise) { 34008 delete instance.isAwaitingPromise; 34009 if (!privateProps.innerParams.get(instance)) { 34010 instance._destroy(); 34011 } 34012 } 34013 }; 34014 const prepareResolveValue = (resolveValue2) => { 34015 if (typeof resolveValue2 === "undefined") { 34016 return { 34017 isConfirmed: false, 34018 isDenied: false, 34019 isDismissed: true 34020 }; 34021 } 34022 return Object.assign({ 34023 isConfirmed: false, 34024 isDenied: false, 34025 isDismissed: false 34026 }, resolveValue2); 34027 }; 34028 const handlePopupAnimation = (instance, popup, innerParams) => { 34029 var _globalState$eventEmi; 34030 const container = getContainer(); 34031 const animationIsSupported = hasCssAnimation(popup); 34032 if (typeof innerParams.willClose === "function") { 34033 innerParams.willClose(popup); 34034 } 34035 (_globalState$eventEmi = globalState.eventEmitter) === null || _globalState$eventEmi === void 0 || _globalState$eventEmi.emit("willClose", popup); 34036 if (animationIsSupported) { 34037 animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); 34038 } else { 34039 removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose); 34040 } 34041 }; 34042 const animatePopup = (instance, popup, container, returnFocus, didClose) => { 34043 globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); 34044 const swalCloseAnimationFinished = function(e) { 34045 if (e.target === popup) { 34046 var _globalState$swalClos; 34047 (_globalState$swalClos = globalState.swalCloseEventFinishedCallback) === null || _globalState$swalClos === void 0 || _globalState$swalClos.call(globalState); 34048 delete globalState.swalCloseEventFinishedCallback; 34049 popup.removeEventListener("animationend", swalCloseAnimationFinished); 34050 popup.removeEventListener("transitionend", swalCloseAnimationFinished); 34051 } 34052 }; 34053 popup.addEventListener("animationend", swalCloseAnimationFinished); 34054 popup.addEventListener("transitionend", swalCloseAnimationFinished); 34055 }; 34056 const triggerDidCloseAndDispose = (instance, didClose) => { 34057 setTimeout(() => { 34058 var _globalState$eventEmi2; 34059 if (typeof didClose === "function") { 34060 didClose.bind(instance.params)(); 34061 } 34062 (_globalState$eventEmi2 = globalState.eventEmitter) === null || _globalState$eventEmi2 === void 0 || _globalState$eventEmi2.emit("didClose"); 34063 if (instance._destroy) { 34064 instance._destroy(); 34065 } 34066 }); 34067 }; 34068 const showLoading = (buttonToReplace) => { 34069 let popup = getPopup(); 34070 if (!popup) { 34071 new Swal2(); 34072 } 34073 popup = getPopup(); 34074 if (!popup) { 34075 return; 34076 } 34077 const loader = getLoader(); 34078 if (isToast()) { 34079 hide(getIcon()); 34080 } else { 34081 replaceButton(popup, buttonToReplace); 34082 } 34083 show(loader); 34084 popup.setAttribute("data-loading", "true"); 34085 popup.setAttribute("aria-busy", "true"); 34086 popup.focus(); 34087 }; 34088 const replaceButton = (popup, buttonToReplace) => { 34089 const actions2 = getActions(); 34090 const loader = getLoader(); 34091 if (!actions2 || !loader) { 34092 return; 34093 } 34094 if (!buttonToReplace && isVisible$1(getConfirmButton())) { 34095 buttonToReplace = getConfirmButton(); 34096 } 34097 show(actions2); 34098 if (buttonToReplace) { 34099 hide(buttonToReplace); 34100 loader.setAttribute("data-button-to-replace", buttonToReplace.className); 34101 actions2.insertBefore(loader, buttonToReplace); 34102 } 34103 addClass([popup, actions2], swalClasses.loading); 34104 }; 34105 const handleInputOptionsAndValue = (instance, params) => { 34106 if (params.input === "select" || params.input === "radio") { 34107 handleInputOptions(instance, params); 34108 } else if (["text", "email", "number", "tel", "textarea"].some((i) => i === params.input) && (hasToPromiseFn(params.inputValue) || isPromise2(params.inputValue))) { 34109 showLoading(getConfirmButton()); 34110 handleInputValue(instance, params); 34111 } 34112 }; 34113 const getInputValue = (instance, innerParams) => { 34114 const input = instance.getInput(); 34115 if (!input) { 34116 return null; 34117 } 34118 switch (innerParams.input) { 34119 case "checkbox": 34120 return getCheckboxValue2(input); 34121 case "radio": 34122 return getRadioValue(input); 34123 case "file": 34124 return getFileValue(input); 34125 default: 34126 return innerParams.inputAutoTrim ? input.value.trim() : input.value; 34127 } 34128 }; 34129 const getCheckboxValue2 = (input) => input.checked ? 1 : 0; 34130 const getRadioValue = (input) => input.checked ? input.value : null; 34131 const getFileValue = (input) => input.files && input.files.length ? input.getAttribute("multiple") !== null ? input.files : input.files[0] : null; 34132 const handleInputOptions = (instance, params) => { 34133 const popup = getPopup(); 34134 if (!popup) { 34135 return; 34136 } 34137 const processInputOptions = (inputOptions) => { 34138 if (params.input === "select") { 34139 populateSelectOptions(popup, formatInputOptions(inputOptions), params); 34140 } else if (params.input === "radio") { 34141 populateRadioOptions(popup, formatInputOptions(inputOptions), params); 34142 } 34143 }; 34144 if (hasToPromiseFn(params.inputOptions) || isPromise2(params.inputOptions)) { 34145 showLoading(getConfirmButton()); 34146 asPromise(params.inputOptions).then((inputOptions) => { 34147 instance.hideLoading(); 34148 processInputOptions(inputOptions); 34149 }); 34150 } else if (typeof params.inputOptions === "object") { 34151 processInputOptions(params.inputOptions); 34152 } else { 34153 error(`Unexpected type of inputOptions! Expected object, Map or Promise, got ${typeof params.inputOptions}`); 34154 } 34155 }; 34156 const handleInputValue = (instance, params) => { 34157 const input = instance.getInput(); 34158 if (!input) { 34159 return; 34160 } 34161 hide(input); 34162 asPromise(params.inputValue).then((inputValue) => { 34163 input.value = params.input === "number" ? `${parseFloat(inputValue) || 0}` : `${inputValue}`; 34164 show(input); 34165 input.focus(); 34166 instance.hideLoading(); 34167 }).catch((err) => { 34168 error(`Error in inputValue promise: ${err}`); 34169 input.value = ""; 34170 show(input); 34171 input.focus(); 34172 instance.hideLoading(); 34173 }); 34174 }; 34175 function populateSelectOptions(popup, inputOptions, params) { 34176 const select2 = getDirectChildByClass(popup, swalClasses.select); 34177 if (!select2) { 34178 return; 34179 } 34180 const renderOption = (parent, optionLabel, optionValue) => { 34181 const option = document.createElement("option"); 34182 option.value = optionValue; 34183 setInnerHtml(option, optionLabel); 34184 option.selected = isSelected(optionValue, params.inputValue); 34185 parent.appendChild(option); 34186 }; 34187 inputOptions.forEach((inputOption) => { 34188 const optionValue = inputOption[0]; 34189 const optionLabel = inputOption[1]; 34190 if (Array.isArray(optionLabel)) { 34191 const optgroup = document.createElement("optgroup"); 34192 optgroup.label = optionValue; 34193 optgroup.disabled = false;
34194 select2.appendChild(optgroup); 34195 optionLabel.forEach((o) => renderOption(optgroup, o[1], o[0])); 34196 } else { 34197 renderOption(select2, optionLabel, optionValue); 34198 } 34199 }); 34200 select2.focus(); 34201 } 34202 function populateRadioOptions(popup, inputOptions, params) { 34203 const radio = getDirectChildByClass(popup, swalClasses.radio); 34204 if (!radio) { 34205 return; 34206 } 34207 inputOptions.forEach((inputOption) => { 34208 const radioValue = inputOption[0]; 34209 const radioLabel = inputOption[1]; 34210 const radioInput = document.createElement("input"); 34211 const radioLabelElement = document.createElement("label"); 34212 radioInput.type = "radio"; 34213 radioInput.name = swalClasses.radio; 34214 radioInput.value = radioValue; 34215 if (isSelected(radioValue, params.inputValue)) { 34216 radioInput.checked = true; 34217 } 34218 const label = document.createElement("span"); 34219 setInnerHtml(label, radioLabel); 34220 label.className = swalClasses.label; 34221 radioLabelElement.appendChild(radioInput); 34222 radioLabelElement.appendChild(label); 34223 radio.appendChild(radioLabelElement); 34224 }); 34225 const radios = radio.querySelectorAll("input"); 34226 if (radios.length) { 34227 radios[0].focus(); 34228 } 34229 } 34230 const formatInputOptions = (inputOptions) => { 34231 const result = []; 34232 if (inputOptions instanceof Map) { 34233 inputOptions.forEach((value, key) => { 34234 let valueFormatted = value; 34235 if (typeof valueFormatted === "object") { 34236 valueFormatted = formatInputOptions(valueFormatted); 34237 } 34238 result.push([key, valueFormatted]); 34239 }); 34240 } else { 34241 Object.keys(inputOptions).forEach((key) => { 34242 let valueFormatted = inputOptions[key]; 34243 if (typeof valueFormatted === "object") { 34244 valueFormatted = formatInputOptions(valueFormatted); 34245 } 34246 result.push([key, valueFormatted]); 34247 }); 34248 } 34249 return result; 34250 }; 34251 const isSelected = (optionValue, inputValue) => { 34252 return !!inputValue && inputValue.toString() === optionValue.toString(); 34253 }; 34254 const handleConfirmButtonClick = (instance) => { 34255 const innerParams = privateProps.innerParams.get(instance); 34256 instance.disableButtons(); 34257 if (innerParams.input) { 34258 handleConfirmOrDenyWithInput(instance, "confirm"); 34259 } else { 34260 confirm(instance, true); 34261 } 34262 }; 34263 const handleDenyButtonClick = (instance) => { 34264 const innerParams = privateProps.innerParams.get(instance); 34265 instance.disableButtons(); 34266 if (innerParams.returnInputValueOnDeny) { 34267 handleConfirmOrDenyWithInput(instance, "deny"); 34268 } else { 34269 deny(instance, false); 34270 } 34271 }; 34272 const handleCancelButtonClick = (instance, dismissWith) => { 34273 instance.disableButtons(); 34274 dismissWith(DismissReason.cancel); 34275 }; 34276 const handleConfirmOrDenyWithInput = (instance, type) => { 34277 const innerParams = privateProps.innerParams.get(instance); 34278 if (!innerParams.input) { 34279 error(`The "input" parameter is needed to be set when using returnInputValueOn${capitalizeFirstLetter(type)}`); 34280 return; 34281 } 34282 const input = instance.getInput(); 34283 const inputValue = getInputValue(instance, innerParams); 34284 if (innerParams.inputValidator) { 34285 handleInputValidator(instance, inputValue, type); 34286 } else if (input && !input.checkValidity()) { 34287 instance.enableButtons(); 34288 instance.showValidationMessage(innerParams.validationMessage || input.validationMessage); 34289 } else if (type === "deny") { 34290 deny(instance, inputValue); 34291 } else { 34292 confirm(instance, inputValue); 34293 } 34294 }; 34295 const handleInputValidator = (instance, inputValue, type) => { 34296 const innerParams = privateProps.innerParams.get(instance); 34297 instance.disableInput(); 34298 const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); 34299 validationPromise.then((validationMessage) => { 34300 instance.enableButtons(); 34301 instance.enableInput(); 34302 if (validationMessage) { 34303 instance.showValidationMessage(validationMessage); 34304 } else if (type === "deny") { 34305 deny(instance, inputValue); 34306 } else { 34307 confirm(instance, inputValue); 34308 } 34309 }); 34310 }; 34311 const deny = (instance, value) => { 34312 const innerParams = privateProps.innerParams.get(instance || void 0); 34313 if (innerParams.showLoaderOnDeny) { 34314 showLoading(getDenyButton()); 34315 } 34316 if (innerParams.preDeny) { 34317 instance.isAwaitingPromise = true; 34318 const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); 34319 preDenyPromise.then((preDenyValue) => { 34320 if (preDenyValue === false) { 34321 instance.hideLoading(); 34322 handleAwaitingPromise(instance); 34323 } else { 34324 instance.close({ 34325 isDenied: true, 34326 value: typeof preDenyValue === "undefined" ? value : preDenyValue 34327 }); 34328 } 34329 }).catch((error2) => rejectWith(instance || void 0, error2)); 34330 } else { 34331 instance.close({ 34332 isDenied: true, 34333 value 34334 }); 34335 } 34336 }; 34337 const succeedWith = (instance, value) => { 34338 instance.close({ 34339 isConfirmed: true, 34340 value 34341 }); 34342 }; 34343 const rejectWith = (instance, error2) => { 34344 instance.rejectPromise(error2); 34345 }; 34346 const confirm = (instance, value) => { 34347 const innerParams = privateProps.innerParams.get(instance || void 0); 34348 if (innerParams.showLoaderOnConfirm) { 34349 showLoading(); 34350 } 34351 if (innerParams.preConfirm) { 34352 instance.resetValidationMessage(); 34353 instance.isAwaitingPromise = true; 34354 const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); 34355 preConfirmPromise.then((preConfirmValue) => { 34356 if (isVisible$1(getValidationMessage()) || preConfirmValue === false) { 34357 instance.hideLoading(); 34358 handleAwaitingPromise(instance); 34359 } else { 34360 succeedWith(instance, typeof preConfirmValue === "undefined" ? value : preConfirmValue); 34361 } 34362 }).catch((error2) => rejectWith(instance || void 0, error2)); 34363 } else { 34364 succeedWith(instance, value); 34365 } 34366 }; 34367 function hideLoading() { 34368 const innerParams = privateProps.innerParams.get(this); 34369 if (!innerParams) { 34370 return; 34371 } 34372 const domCache = privateProps.domCache.get(this); 34373 hide(domCache.loader); 34374 if (isToast()) { 34375 if (innerParams.icon) { 34376 show(getIcon()); 34377 } 34378 } else { 34379 showRelatedButton(domCache); 34380 } 34381 removeClass([domCache.popup, domCache.actions], swalClasses.loading); 34382 domCache.popup.removeAttribute("aria-busy"); 34383 domCache.popup.removeAttribute("data-loading"); 34384 domCache.confirmButton.disabled = false;
34385 domCache.denyButton.disabled = false; 34386 domCache.cancelButton.disabled = false; 34387 } 34388 const showRelatedButton = (domCache) => { 34389 const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute("data-button-to-replace")); 34390 if (buttonToReplace.length) { 34391 show(buttonToReplace[0], "inline-block"); 34392 } else if (allButtonsAreHidden()) { 34393 hide(domCache.actions); 34394 } 34395 }; 34396 function getInput() { 34397 const innerParams = privateProps.innerParams.get(this); 34398 const domCache = privateProps.domCache.get(this); 34399 if (!domCache) { 34400 return null; 34401 } 34402 return getInput$1(domCache.popup, innerParams.input); 34403 } 34404 function setButtonsDisabled(instance, buttons, disabled) { 34405 const domCache = privateProps.domCache.get(instance); 34406 buttons.forEach((button) => { 34407 domCache[button].disabled = disabled; 34408 }); 34409 } 34410 function setInputDisabled(input, disabled) { 34411 const popup = getPopup(); 34412 if (!popup || !input) { 34413 return; 34414 } 34415 if (input.type === "radio") { 34416 const radios = popup.querySelectorAll(`[name="${swalClasses.radio}"]`); 34417 for (let i = 0; i < radios.length; i++) { 34418 radios[i].disabled = disabled; 34419 } 34420 } else { 34421 input.disabled = disabled; 34422 } 34423 } 34424 function enableButtons() { 34425 setButtonsDisabled(this, ["confirmButton", "denyButton", "cancelButton"], false); 34426 } 34427 function disableButtons() { 34428 setButtonsDisabled(this, ["confirmButton", "denyButton", "cancelButton"], true); 34429 } 34430 function enableInput() { 34431 setInputDisabled(this.getInput(), false); 34432 } 34433 function disableInput() { 34434 setInputDisabled(this.getInput(), true); 34435 } 34436 function showValidationMessage(error2) { 34437 const domCache = privateProps.domCache.get(this); 34438 const params = privateProps.innerParams.get(this); 34439 setInnerHtml(domCache.validationMessage, error2); 34440 domCache.validationMessage.className = swalClasses["validation-message"]; 34441 if (params.customClass && params.customClass.validationMessage) { 34442 addClass(domCache.validationMessage, params.customClass.validationMessage); 34443 } 34444 show(domCache.validationMessage); 34445 const input = this.getInput(); 34446 if (input) { 34447 input.setAttribute("aria-invalid", "true"); 34448 input.setAttribute("aria-describedby", swalClasses["validation-message"]); 34449 focusInput(input); 34450 addClass(input, swalClasses.inputerror); 34451 } 34452 } 34453 function resetValidationMessage() { 34454 const domCache = privateProps.domCache.get(this); 34455 if (domCache.validationMessage) { 34456 hide(domCache.validationMessage); 34457 } 34458 const input = this.getInput(); 34459 if (input) { 34460 input.removeAttribute("aria-invalid"); 34461 input.removeAttribute("aria-describedby"); 34462 removeClass(input, swalClasses.inputerror); 34463 } 34464 } 34465 const defaultParams = { 34466 title: "", 34467 titleText: "", 34468 text: "", 34469 html: "", 34470 footer: "", 34471 icon: void 0, 34472 iconColor: void 0, 34473 iconHtml: void 0, 34474 template: void 0, 34475 toast: false, 34476 draggable: false, 34477 animation: true, 34478 theme: "light", 34479 showClass: { 34480 popup: "swal2-show", 34481 backdrop: "swal2-backdrop-show", 34482 icon: "swal2-icon-show" 34483 }, 34484 hideClass: { 34485 popup: "swal2-hide", 34486 backdrop: "swal2-backdrop-hide", 34487 icon: "swal2-icon-hide" 34488 }, 34489 customClass: {}, 34490 target: "body", 34491 color: void 0, 34492 backdrop: true, 34493 heightAuto: true, 34494 allowOutsideClick: true, 34495 allowEscapeKey: true, 34496 allowEnterKey: true, 34497 stopKeydownPropagation: true, 34498 keydownListenerCapture: false, 34499 showConfirmButton: true, 34500 showDenyButton: false,
34501 showCancelButton: false, 34502 preConfirm: void 0, 34503 preDeny: void 0, 34504 confirmButtonText: "OK", 34505 confirmButtonAriaLabel: "", 34506 confirmButtonColor: void 0, 34507 denyButtonText: "No", 34508 denyButtonAriaLabel: "", 34509 denyButtonColor: void 0, 34510 cancelButtonText: "Cancel", 34511 cancelButtonAriaLabel: "", 34512 cancelButtonColor: void 0, 34513 buttonsStyling: true, 34514 reverseButtons: false, 34515 focusConfirm: true, 34516 focusDeny: false, 34517 focusCancel: false, 34518 returnFocus: true, 34519 showCloseButton: false, 34520 closeButtonHtml: "×", 34521 closeButtonAriaLabel: "Close this dialog", 34522 loaderHtml: "", 34523 showLoaderOnConfirm: false, 34524 showLoaderOnDeny: false, 34525 imageUrl: void 0, 34526 imageWidth: void 0, 34527 imageHeight: void 0, 34528 imageAlt: "", 34529 timer: void 0, 34530 timerProgressBar: false, 34531 width: void 0, 34532 padding: void 0, 34533 background: void 0, 34534 input: void 0, 34535 inputPlaceholder: "", 34536 inputLabel: "", 34537 inputValue: "", 34538 inputOptions: {}, 34539 inputAutoFocus: true, 34540 inputAutoTrim: true, 34541 inputAttributes: {}, 34542 inputValidator: void 0, 34543 returnInputValueOnDeny: false, 34544 validationMessage: void 0, 34545 grow: false, 34546 position: "center", 34547 progressSteps: [], 34548 currentProgressStep: void 0, 34549 progressStepsDistance: void 0, 34550 willOpen: void 0, 34551 didOpen: void 0, 34552 didRender: void 0, 34553 willClose: void 0,
34554 didClose: void 0, 34555 didDestroy: void 0, 34556 scrollbarPadding: true, 34557 topLayer: false 34558 }; 34559 const updatableParams = ["allowEscapeKey", "allowOutsideClick", "background", "buttonsStyling", "cancelButtonAriaLabel", "cancelButtonColor", "cancelButtonText", "closeButtonAriaLabel", "closeButtonHtml", "color", "confirmButtonAriaLabel", "confirmButtonColor", "confirmButtonText", "currentProgressStep", "customClass", "denyButtonAriaLabel", "denyButtonColor", "denyButtonText", "didClose", "didDestroy", "draggable", "footer", "hideClass", "html", "icon", "iconColor", "iconHtml", "imageAlt", "imageHeight", "imageUrl", "imageWidth", "preConfirm", "preDeny", "progressSteps", "returnFocus", "reverseButtons", "showCancelButton", "showCloseButton", "showConfirmButton", "showDenyButton", "text", "title", "titleText", "theme", "willClose"]; 34560 const deprecatedParams = { 34561 allowEnterKey: void 0 34562 }; 34563 const toastIncompatibleParams = ["allowOutsideClick", "allowEnterKey", "backdrop", "draggable", "focusConfirm", "focusDeny", "focusCancel", "returnFocus", "heightAuto", "keydownListenerCapture"]; 34564 const isValidParameter = (paramName) => { 34565 return Object.prototype.hasOwnProperty.call(defaultParams, paramName); 34566 }; 34567 const isUpdatableParameter = (paramName) => { 34568 return updatableParams.indexOf(paramName) !== -1; 34569 }; 34570 const isDeprecatedParameter = (paramName) => { 34571 return deprecatedParams[paramName]; 34572 }; 34573 const checkIfParamIsValid = (param) => { 34574 if (!isValidParameter(param)) { 34575 warn2(`Unknown parameter "${param}"`); 34576 } 34577 }; 34578 const checkIfToastParamIsValid = (param) => { 34579 if (toastIncompatibleParams.includes(param)) { 34580 warn2(`The parameter "${param}" is incompatible with toasts`); 34581 } 34582 }; 34583 const checkIfParamIsDeprecated = (param) => { 34584 const isDeprecated = isDeprecatedParameter(param); 34585 if (isDeprecated) { 34586 warnAboutDeprecation(param, isDeprecated); 34587 } 34588 }; 34589 const showWarningsForParams = (params) => { 34590 if (params.backdrop === false && params.allowOutsideClick) { 34591 warn2('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); 34592 } 34593 if (params.theme && !["light", "dark", "auto", "minimal", "borderless", "embed-iframe", "bulma", "bulma-light", "bulma-dark"].includes(params.theme)) { 34594 warn2(`Invalid theme "${params.theme}"`); 34595 } 34596 for (const param in params) { 34597 checkIfParamIsValid(param); 34598 if (params.toast) { 34599 checkIfToastParamIsValid(param); 34600 } 34601 checkIfParamIsDeprecated(param); 34602 } 34603 }; 34604 function update4(params) { 34605 const container = getContainer(); 34606 const popup = getPopup(); 34607 const innerParams = privateProps.innerParams.get(this); 34608 if (!popup || hasClass(popup, innerParams.hideClass.popup)) { 34609 warn2(`You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.`); 34610 return; 34611 } 34612 const validUpdatableParams = filterValidParams(params); 34613 const updatedParams = Object.assign({}, innerParams, validUpdatableParams); 34614 showWarningsForParams(updatedParams); 34615 container.dataset["swal2Theme"] = updatedParams.theme; 34616 render2(this, updatedParams); 34617 privateProps.innerParams.set(this, updatedParams); 34618 Object.defineProperties(this, { 34619 params: { 34620 value: Object.assign({}, this.params, params), 34621 writable: false, 34622 enumerable: true 34623 } 34624 }); 34625 } 34626 const filterValidParams = (params) => { 34627 const validUpdatableParams = {}; 34628 Object.keys(params).forEach((param) => { 34629 if (isUpdatableParameter(param)) { 34630 validUpdatableParams[param] = params[param]; 34631 } else { 34632 warn2(`Invalid parameter to update: ${param}`); 34633 } 34634 }); 34635 return validUpdatableParams; 34636 }; 34637 function _destroy() { 34638 const domCache = privateProps.domCache.get(this); 34639 const innerParams = privateProps.innerParams.get(this); 34640 if (!innerParams) { 34641 disposeWeakMaps(this); 34642 return; 34643 } 34644 if (domCache.popup && globalState.swalCloseEventFinishedCallback) { 34645 globalState.swalCloseEventFinishedCallback(); 34646 delete globalState.swalCloseEventFinishedCallback; 34647 } 34648 if (typeof innerParams.didDestroy === "function") { 34649 innerParams.didDestroy(); 34650 } 34651 globalState.eventEmitter.emit("didDestroy"); 34652 disposeSwal(this); 34653 } 34654 const disposeSwal = (instance) => { 34655 disposeWeakMaps(instance); 34656 delete instance.params; 34657 delete globalState.keydownHandler; 34658 delete globalState.keydownTarget; 34659 delete globalState.currentInstance; 34660 }; 34661 const disposeWeakMaps = (instance) => { 34662 if (instance.isAwaitingPromise) { 34663 unsetWeakMaps(privateProps, instance); 34664 instance.isAwaitingPromise = true; 34665 } else { 34666 unsetWeakMaps(privateMethods, instance); 34667 unsetWeakMaps(privateProps, instance); 34668 delete instance.isAwaitingPromise; 34669 delete instance.disableButtons; 34670 delete instance.enableButtons; 34671 delete instance.getInput; 34672 delete instance.disableInput; 34673 delete instance.enableInput; 34674 delete instance.hideLoading; 34675 delete instance.disableLoading; 34676 delete instance.showValidationMessage; 34677 delete instance.resetValidationMessage; 34678 delete instance.close; 34679 delete instance.closePopup; 34680 delete instance.closeModal; 34681 delete instance.closeToast; 34682 delete instance.rejectPromise; 34683 delete instance.update; 34684 delete instance._destroy; 34685 } 34686 }; 34687 const unsetWeakMaps = (obj, instance) => { 34688 for (const i in obj) { 34689 obj[i].delete(instance); 34690 } 34691 }; 34692 var instanceMethods = /* @__PURE__ */ Object.freeze({ 34693 __proto__: null, 34694 _destroy, 34695 close, 34696 closeModal: close, 34697 closePopup: close, 34698 closeToast: close, 34699 disableButtons, 34700 disableInput, 34701 disableLoading: hideLoading, 34702 enableButtons, 34703 enableInput, 34704 getInput, 34705 handleAwaitingPromise, 34706 hideLoading, 34707 rejectPromise, 34708 resetValidationMessage, 34709 showValidationMessage, 34710 update: update4 34711 }); 34712 const handlePopupClick = (innerParams, domCache, dismissWith) => { 34713 if (innerParams.toast) { 34714 handleToastClick(innerParams, domCache, dismissWith); 34715 } else { 34716 handleModalMousedown(domCache); 34717 handleContainerMousedown(domCache); 34718 handleModalClick(innerParams, domCache, dismissWith); 34719 } 34720 }; 34721 const handleToastClick = (innerParams, domCache, dismissWith) => { 34722 domCache.popup.onclick = () => { 34723 if (innerParams && (isAnyButtonShown(innerParams) || innerParams.timer || innerParams.input)) { 34724 return; 34725 }
34726 dismissWith(DismissReason.close); 34727 }; 34728 }; 34729 const isAnyButtonShown = (innerParams) => { 34730 return !!(innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton); 34731 }; 34732 let ignoreOutsideClick = false; 34733 const handleModalMousedown = (domCache) => { 34734 domCache.popup.onmousedown = () => { 34735 domCache.container.onmouseup = function(e) { 34736 domCache.container.onmouseup = () => { 34737 }; 34738 if (e.target === domCache.container) { 34739 ignoreOutsideClick = true; 34740 } 34741 }; 34742 }; 34743 }; 34744 const handleContainerMousedown = (domCache) => { 34745 domCache.container.onmousedown = (e) => { 34746 if (e.target === domCache.container) { 34747 e.preventDefault(); 34748 } 34749 domCache.popup.onmouseup = function(e2) { 34750 domCache.popup.onmouseup = () => { 34751 }; 34752 if (e2.target === domCache.popup || e2.target instanceof HTMLElement && domCache.popup.contains(e2.target)) { 34753 ignoreOutsideClick = true; 34754 } 34755 }; 34756 }; 34757 }; 34758 const handleModalClick = (innerParams, domCache, dismissWith) => { 34759 domCache.container.onclick = (e) => { 34760 if (ignoreOutsideClick) { 34761 ignoreOutsideClick = false; 34762 return; 34763 } 34764 if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) { 34765 dismissWith(DismissReason.backdrop); 34766 } 34767 }; 34768 }; 34769 const isJqueryElement = (elem) => typeof elem === "object" && elem.jquery; 34770 const isElement = (elem) => elem instanceof Element || isJqueryElement(elem); 34771 const argsToParams = (args) => { 34772 const params = {}; 34773 if (typeof args[0] === "object" && !isElement(args[0])) { 34774 Object.assign(params, args[0]); 34775 } else { 34776 ["title", "html", "icon"].forEach((name, index2) => { 34777 const arg = args[index2]; 34778 if (typeof arg === "string" || isElement(arg)) { 34779 params[name] = arg; 34780 } else if (arg !== void 0) { 34781 error(`Unexpected type of ${name}! Expected "string" or "Element", got ${typeof arg}`); 34782 } 34783 }); 34784 } 34785 return params; 34786 }; 34787 function fire(...args) { 34788 return new this(...args); 34789 } 34790 function mixin(mixinParams) { 34791 class MixinSwal extends this { 34792 _main(params, priorityMixinParams) { 34793 return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); 34794 } 34795 } 34796 return MixinSwal; 34797 } 34798 const getTimerLeft = () => { 34799 return globalState.timeout && globalState.timeout.getTimerLeft(); 34800 }; 34801 const stopTimer = () => { 34802 if (globalState.timeout) { 34803 stopTimerProgressBar(); 34804 return globalState.timeout.stop(); 34805 } 34806 }; 34807 const resumeTimer = () => { 34808 if (globalState.timeout) { 34809 const remaining = globalState.timeout.start(); 34810 animateTimerProgressBar(remaining); 34811 return remaining; 34812 } 34813 }; 34814 const toggleTimer = () => { 34815 const timer = globalState.timeout; 34816 return timer && (timer.running ? stopTimer() : resumeTimer()); 34817 }; 34818 const increaseTimer = (ms) => { 34819 if (globalState.timeout) { 34820 const remaining = globalState.timeout.increase(ms); 34821 animateTimerProgressBar(remaining, true); 34822 return remaining; 34823 } 34824 }; 34825 const isTimerRunning = () => { 34826 return !!(globalState.timeout && globalState.timeout.isRunning()); 34827 }; 34828 let bodyClickListenerAdded = false; 34829 const clickHandlers = {}; 34830 function bindClickHandler(attr = "data-swal-template") { 34831 clickHandlers[attr] = this; 34832 if (!bodyClickListenerAdded) { 34833 document.body.addEventListener("click", bodyClickListener); 34834 bodyClickListenerAdded = true; 34835 } 34836 } 34837 const bodyClickListener = (event) => { 34838 for (let el = event.target; el && el !== document; el = el.parentNode) { 34839 for (const attr in clickHandlers) { 34840 const template = el.getAttribute(attr); 34841 if (template) { 34842 clickHandlers[attr].fire({ 34843 template 34844 }); 34845 return; 34846 } 34847 } 34848 } 34849 }; 34850 class EventEmitter { 34851 constructor() { 34852 this.events = {}; 34853 } 34854 /** 34855 * @param {string} eventName 34856 * @returns {EventHandlers} 34857 */ 34858 _getHandlersByEventName(eventName) { 34859 if (typeof this.events[eventName] === "undefined") { 34860 this.events[eventName] = []; 34861 } 34862 return this.events[eventName]; 34863 } 34864 /** 34865 * @param {string} eventName 34866 * @param {EventHandler} eventHandler 34867 */ 34868 on(eventName, eventHandler) { 34869 const currentHandlers = this._getHandlersByEventName(eventName); 34870 if (!currentHandlers.includes(eventHandler)) { 34871 currentHandlers.push(eventHandler); 34872 } 34873 } 34874 /** 34875 * @param {string} eventName 34876 * @param {EventHandler} eventHandler 34877 */ 34878 once(eventName, eventHandler) { 34879 const onceFn = (...args) => { 34880 this.removeListener(eventName, onceFn); 34881 eventHandler.apply(this, args); 34882 }; 34883 this.on(eventName, onceFn); 34884 } 34885 /** 34886 * @param {string} eventName 34887 * @param {Array} args 34888 */ 34889 emit(eventName, ...args) { 34890 this._getHandlersByEventName(eventName).forEach( 34891 /** 34892 * @param {EventHandler} eventHandler 34893 */ 34894 (eventHandler) => { 34895 try { 34896 eventHandler.apply(this, args); 34897 } catch (error2) { 34898 console.error(error2); 34899 } 34900 } 34901 ); 34902 } 34903 /** 34904 * @param {string} eventName 34905 * @param {EventHandler} eventHandler 34906 */ 34907 removeListener(eventName, eventHandler) { 34908 const currentHandlers = this._getHandlersByEventName(eventName); 34909 const index2 = currentHandlers.indexOf(eventHandler); 34910 if (index2 > -1) { 34911 currentHandlers.splice(index2, 1); 34912 } 34913 } 34914 /** 34915 * @param {string} eventName 34916 */ 34917 removeAllListeners(eventName) { 34918 if (this.events[eventName] !== void 0) { 34919 this.events[eventName].length = 0; 34920 } 34921 } 34922 reset() { 34923 this.events = {}; 34924 } 34925 } 34926 globalState.eventEmitter = new EventEmitter(); 34927 const on = (eventName, eventHandler) => { 34928 globalState.eventEmitter.on(eventName, eventHandler); 34929 }; 34930 const once = (eventName, eventHandler) => { 34931 globalState.eventEmitter.once(eventName, eventHandler); 34932 }; 34933 const off = (eventName, eventHandler) => { 34934 if (!eventName) { 34935 globalState.eventEmitter.reset(); 34936 return; 34937 } 34938 if (eventHandler) { 34939 globalState.eventEmitter.removeListener(eventName, eventHandler); 34940 } else { 34941 globalState.eventEmitter.removeAllListeners(eventName); 34942 } 34943 }; 34944 var staticMethods = /* @__PURE__ */ Object.freeze({ 34945 __proto__: null, 34946 argsToParams, 34947 bindClickHandler, 34948 clickCancel, 34949 clickConfirm, 34950 clickDeny, 34951 enableLoading: showLoading, 34952 fire, 34953 getActions, 34954 getCancelButton, 34955 getCloseButton, 34956 getConfirmButton, 34957 getContainer, 34958 getDenyButton, 34959 getFocusableElements, 34960 getFooter, 34961 getHtmlContainer, 34962 getIcon, 34963 getIconContent, 34964 getImage, 34965 getInputLabel, 34966 getLoader, 34967 getPopup, 34968 getProgressSteps, 34969 getTimerLeft, 34970 getTimerProgressBar, 34971 getTitle, 34972 getValidationMessage, 34973 increaseTimer, 34974 isDeprecatedParameter, 34975 isLoading, 34976 isTimerRunning, 34977 isUpdatableParameter, 34978 isValidParameter, 34979 isVisible, 34980 mixin, 34981 off, 34982 on, 34983 once, 34984 resumeTimer, 34985 showLoading, 34986 stopTimer, 34987 toggleTimer 34988 }); 34989 class Timer { 34990 /** 34991 * @param {Function} callback 34992 * @param {number} delay 34993 */ 34994 constructor(callback, delay) { 34995 this.callback = callback; 34996 this.remaining = delay; 34997 this.running = false;
34998 this.start(); 34999 } 35000 /** 35001 * @returns {number} 35002 */ 35003 start() { 35004 if (!this.running) { 35005 this.running = true; 35006 this.started = /* @__PURE__ */ new Date(); 35007 this.id = setTimeout(this.callback, this.remaining); 35008 } 35009 return this.remaining; 35010 } 35011 /** 35012 * @returns {number} 35013 */ 35014 stop() { 35015 if (this.started && this.running) { 35016 this.running = false; 35017 clearTimeout(this.id); 35018 this.remaining -= (/* @__PURE__ */ new Date()).getTime() - this.started.getTime(); 35019 } 35020 return this.remaining; 35021 } 35022 /** 35023 * @param {number} n 35024 * @returns {number} 35025 */ 35026 increase(n) { 35027 const running = this.running; 35028 if (running) { 35029 this.stop(); 35030 } 35031 this.remaining += n; 35032 if (running) { 35033 this.start(); 35034 } 35035 return this.remaining; 35036 } 35037 /** 35038 * @returns {number} 35039 */ 35040 getTimerLeft() { 35041 if (this.running) { 35042 this.stop(); 35043 this.start(); 35044 } 35045 return this.remaining; 35046 } 35047 /** 35048 * @returns {boolean} 35049 */ 35050 isRunning() { 35051 return this.running; 35052 } 35053 } 35054 const swalStringParams = ["swal-title", "swal-html", "swal-footer"]; 35055 const getTemplateParams = (params) => { 35056 const template = typeof params.template === "string" ? ( 35057 /** @type {HTMLTemplateElement} */ 35058 document.querySelector(params.template) 35059 ) : params.template; 35060 if (!template) { 35061 return {}; 35062 } 35063 const templateContent = template.content; 35064 showWarningsForElements(templateContent); 35065 const result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); 35066 return result; 35067 }; 35068 const getSwalParams = (templateContent) => { 35069 const result = {}; 35070 const swalParams = Array.from(templateContent.querySelectorAll("swal-param")); 35071 swalParams.forEach((param) => { 35072 showWarningsForAttributes(param, ["name", "value"]); 35073 const paramName = ( 35074 /** @type {keyof SweetAlertOptions} */ 35075 param.getAttribute("name") 35076 ); 35077 const value = param.getAttribute("value"); 35078 if (!paramName || !value) { 35079 return; 35080 } 35081 if (typeof defaultParams[paramName] === "boolean") { 35082 result[paramName] = value !== "false"; 35083 } else if (typeof defaultParams[paramName] === "object") { 35084 result[paramName] = JSON.parse(value); 35085 } else { 35086 result[paramName] = value; 35087 } 35088 }); 35089 return result; 35090 }; 35091 const getSwalFunctionParams = (templateContent) => { 35092 const result = {}; 35093 const swalFunctions = Array.from(templateContent.querySelectorAll("swal-function-param")); 35094 swalFunctions.forEach((param) => { 35095 const paramName = ( 35096 /** @type {keyof SweetAlertOptions} */ 35097 param.getAttribute("name") 35098 ); 35099 const value = param.getAttribute("value"); 35100 if (!paramName || !value) { 35101 return; 35102 } 35103 result[paramName] = new Function(`return ${value}`)(); 35104 }); 35105 return result; 35106 }; 35107 const getSwalButtons = (templateContent) => { 35108 const result = {}; 35109 const swalButtons = Array.from(templateContent.querySelectorAll("swal-button")); 35110 swalButtons.forEach((button) => { 35111 showWarningsForAttributes(button, ["type", "color", "aria-label"]); 35112 const type = button.getAttribute("type"); 35113 if (!type || !["confirm", "cancel", "deny"].includes(type)) { 35114 return; 35115 } 35116 result[`${type}ButtonText`] = button.innerHTML; 35117 result[`show${capitalizeFirstLetter(type)}Button`] = true; 35118 if (button.hasAttribute("color")) { 35119 result[`${type}ButtonColor`] = button.getAttribute("color"); 35120 } 35121 if (button.hasAttribute("aria-label")) { 35122 result[`${type}ButtonAriaLabel`] = button.getAttribute("aria-label"); 35123 } 35124 }); 35125 return result; 35126 }; 35127 const getSwalImage = (templateContent) => { 35128 const result = {}; 35129 const image = templateContent.querySelector("swal-image"); 35130 if (image) { 35131 showWarningsForAttributes(image, ["src", "width", "height", "alt"]); 35132 if (image.hasAttribute("src")) { 35133 result.imageUrl = image.getAttribute("src") || void 0; 35134 } 35135 if (image.hasAttribute("width")) { 35136 result.imageWidth = image.getAttribute("width") || void 0; 35137 } 35138 if (image.hasAttribute("height")) { 35139 result.imageHeight = image.getAttribute("height") || void 0; 35140 } 35141 if (image.hasAttribute("alt")) { 35142 result.imageAlt = image.getAttribute("alt") || void 0; 35143 } 35144 } 35145 return result; 35146 }; 35147 const getSwalIcon = (templateContent) => { 35148 const result = {}; 35149 const icon = templateContent.querySelector("swal-icon"); 35150 if (icon) { 35151 showWarningsForAttributes(icon, ["type", "color"]); 35152 if (icon.hasAttribute("type")) { 35153 result.icon = icon.getAttribute("type"); 35154 } 35155 if (icon.hasAttribute("color")) { 35156 result.iconColor = icon.getAttribute("color"); 35157 } 35158 result.iconHtml = icon.innerHTML; 35159 } 35160 return result; 35161 }; 35162 const getSwalInput = (templateContent) => { 35163 const result = {}; 35164 const input = templateContent.querySelector("swal-input"); 35165 if (input) { 35166 showWarningsForAttributes(input, ["type", "label", "placeholder", "value"]); 35167 result.input = input.getAttribute("type") || "text"; 35168 if (input.hasAttribute("label")) { 35169 result.inputLabel = input.getAttribute("label"); 35170 } 35171 if (input.hasAttribute("placeholder")) { 35172 result.inputPlaceholder = input.getAttribute("placeholder"); 35173 } 35174 if (input.hasAttribute("value")) { 35175 result.inputValue = input.getAttribute("value"); 35176 } 35177 } 35178 const inputOptions = Array.from(templateContent.querySelectorAll("swal-input-option")); 35179 if (inputOptions.length) { 35180 result.inputOptions = {}; 35181 inputOptions.forEach((option) => { 35182 showWarningsForAttributes(option, ["value"]); 35183 const optionValue = option.getAttribute("value"); 35184 if (!optionValue) { 35185 return; 35186 } 35187 const optionName = option.innerHTML; 35188 result.inputOptions[optionValue] = optionName; 35189 }); 35190 } 35191 return result; 35192 }; 35193 const getSwalStringParams = (templateContent, paramNames) => { 35194 const result = {}; 35195 for (const i in paramNames) { 35196 const paramName = paramNames[i]; 35197 const tag = templateContent.querySelector(paramName); 35198 if (tag) { 35199 showWarningsForAttributes(tag, []); 35200 result[paramName.replace(/^swal-/, "")] = tag.innerHTML.trim(); 35201 } 35202 } 35203 return result; 35204 }; 35205 const showWarningsForElements = (templateContent) => { 35206 const allowedElements = swalStringParams.concat(["swal-param", "swal-function-param", "swal-button", "swal-image", "swal-icon", "swal-input", "swal-input-option"]);
vendor: 5,101 bytes, lines 35207-35323
35207 Array.from(templateContent.children).forEach((el) => { 35208 const tagName = el.tagName.toLowerCase(); 35209 if (!allowedElements.includes(tagName)) { 35210 warn2(`Unrecognized element <${tagName}>`); 35211 } 35212 }); 35213 }; 35214 const showWarningsForAttributes = (el, allowedAttributes) => { 35215 Array.from(el.attributes).forEach((attribute) => { 35216 if (allowedAttributes.indexOf(attribute.name) === -1) { 35217 warn2([`Unrecognized attribute "${attribute.name}" on <${el.tagName.toLowerCase()}>.`, `${allowedAttributes.length ? `Allowed attributes are: ${allowedAttributes.join(", ")}` : "To set the value, use HTML within the element."}`]); 35218 } 35219 }); 35220 }; 35221 const SHOW_CLASS_TIMEOUT = 10; 35222 const openPopup = (params) => { 35223 const container = getContainer(); 35224 const popup = getPopup(); 35225 if (typeof params.willOpen === "function") { 35226 params.willOpen(popup); 35227 } 35228 globalState.eventEmitter.emit("willOpen", popup); 35229 const bodyStyles = window.getComputedStyle(document.body); 35230 const initialBodyOverflow = bodyStyles.overflowY; 35231 addClasses2(container, popup, params); 35232 setTimeout(() => { 35233 setScrollingVisibility(container, popup); 35234 }, SHOW_CLASS_TIMEOUT); 35235 if (isModal()) { 35236 fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow); 35237 setAriaHidden(); 35238 } 35239 if (!isToast() && !globalState.previousActiveElement) { 35240 globalState.previousActiveElement = document.activeElement; 35241 } 35242 if (typeof params.didOpen === "function") { 35243 setTimeout(() => params.didOpen(popup)); 35244 } 35245 globalState.eventEmitter.emit("didOpen", popup); 35246 removeClass(container, swalClasses["no-transition"]); 35247 }; 35248 const swalOpenAnimationFinished = (event) => { 35249 const popup = getPopup(); 35250 if (event.target !== popup) { 35251 return; 35252 } 35253 const container = getContainer(); 35254 popup.removeEventListener("animationend", swalOpenAnimationFinished); 35255 popup.removeEventListener("transitionend", swalOpenAnimationFinished); 35256 container.style.overflowY = "auto"; 35257 }; 35258 const setScrollingVisibility = (container, popup) => { 35259 if (hasCssAnimation(popup)) { 35260 container.style.overflowY = "hidden"; 35261 popup.addEventListener("animationend", swalOpenAnimationFinished); 35262 popup.addEventListener("transitionend", swalOpenAnimationFinished); 35263 } else { 35264 container.style.overflowY = "auto"; 35265 } 35266 }; 35267 const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { 35268 iOSfix(); 35269 if (scrollbarPadding && initialBodyOverflow !== "hidden") { 35270 replaceScrollbarWithPadding(initialBodyOverflow); 35271 } 35272 setTimeout(() => { 35273 container.scrollTop = 0; 35274 }); 35275 }; 35276 const addClasses2 = (container, popup, params) => { 35277 addClass(container, params.showClass.backdrop); 35278 if (params.animation) { 35279 popup.style.setProperty("opacity", "0", "important"); 35280 show(popup, "grid"); 35281 setTimeout(() => { 35282 addClass(popup, params.showClass.popup); 35283 popup.style.removeProperty("opacity"); 35284 }, SHOW_CLASS_TIMEOUT); 35285 } else { 35286 show(popup, "grid"); 35287 } 35288 addClass([document.documentElement, document.body], swalClasses.shown); 35289 if (params.heightAuto && params.backdrop && !params.toast) { 35290 addClass([document.documentElement, document.body], swalClasses["height-auto"]); 35291 } 35292 }; 35293 var defaultInputValidators = { 35294 /** 35295 * @param {string} string 35296 * @param {string} [validationMessage] 35297 * @returns {Promise<string | void>} 35298 */ 35299 email: (string, validationMessage) => { 35300 return /^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || "Invalid email address"); 35301 }, 35302 /** 35303 * @param {string} string 35304 * @param {string} [validationMessage] 35305 * @returns {Promise<string | void>} 35306 */ 35307 url: (string, validationMessage) => { 35308 return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || "Invalid URL"); 35309 } 35310 }; 35311 function setDefaultInputValidators(params) { 35312 if (params.inputValidator) { 35313 return; 35314 } 35315 if (params.input === "email") { 35316 params.inputValidator = defaultInputValidators["email"]; 35317 } 35318 if (params.input === "url") { 35319 params.inputValidator = defaultInputValidators["url"]; 35320 } 35321 } 35322 function validateCustomTargetElement(params) { 35323 if (!params.target || typeof params.target === "string" && !document.querySelector(params.target) || typeof params.target !== "string" && !params.target.appendChild) {
35324 warn2('Target parameter is not valid, defaulting to "body"'); 35325 params.target = "body"; 35326 } 35327 } 35328 function setParameters(params) { 35329 setDefaultInputValidators(params); 35330 if (params.showLoaderOnConfirm && !params.preConfirm) { 35331 warn2("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"); 35332 } 35333 validateCustomTargetElement(params); 35334 if (typeof params.title === "string") { 35335 params.title = params.title.split("\n").join("<br />"); 35336 } 35337 init(params); 35338 } 35339 let currentInstance2; 35340 var _promise = /* @__PURE__ */ new WeakMap(); 35341 class SweetAlert { 35342 /** 35343 * @param {...any} args 35344 * @this {SweetAlert} 35345 */ 35346 constructor(...args) { 35347 _classPrivateFieldInitSpec(this, _promise, void 0); 35348 if (typeof window === "undefined") { 35349 return; 35350 } 35351 currentInstance2 = this; 35352 const outerParams = Object.freeze(this.constructor.argsToParams(args)); 35353 this.params = outerParams; 35354 this.isAwaitingPromise = false; 35355 _classPrivateFieldSet2(_promise, this, this._main(currentInstance2.params)); 35356 } 35357 _main(userParams, mixinParams = {}) { 35358 showWarningsForParams(Object.assign({}, mixinParams, userParams)); 35359 if (globalState.currentInstance) { 35360 const swalPromiseResolve = privateMethods.swalPromiseResolve.get(globalState.currentInstance); 35361 const { 35362 isAwaitingPromise 35363 } = globalState.currentInstance; 35364 globalState.currentInstance._destroy(); 35365 if (!isAwaitingPromise) { 35366 swalPromiseResolve({ 35367 isDismissed: true 35368 }); 35369 } 35370 if (isModal()) { 35371 unsetAriaHidden(); 35372 } 35373 } 35374 globalState.currentInstance = currentInstance2; 35375 const innerParams = prepareParams(userParams, mixinParams); 35376 setParameters(innerParams); 35377 Object.freeze(innerParams); 35378 if (globalState.timeout) { 35379 globalState.timeout.stop(); 35380 delete globalState.timeout; 35381 } 35382 clearTimeout(globalState.restoreFocusTimeout); 35383 const domCache = populateDomCache(currentInstance2); 35384 render2(currentInstance2, innerParams); 35385 privateProps.innerParams.set(currentInstance2, innerParams); 35386 return swalPromise(currentInstance2, domCache, innerParams); 35387 } 35388 // `catch` cannot be the name of a module export, so we define our thenable methods here instead 35389 then(onFulfilled) { 35390 return _classPrivateFieldGet2(_promise, this).then(onFulfilled); 35391 } 35392 finally(onFinally) { 35393 return _classPrivateFieldGet2(_promise, this).finally(onFinally); 35394 } 35395 } 35396 const swalPromise = (instance, domCache, innerParams) => { 35397 return new Promise((resolve2, reject) => { 35398 const dismissWith = (dismiss) => { 35399 instance.close({ 35400 isDismissed: true, 35401 dismiss 35402 }); 35403 }; 35404 privateMethods.swalPromiseResolve.set(instance, resolve2); 35405 privateMethods.swalPromiseReject.set(instance, reject); 35406 domCache.confirmButton.onclick = () => { 35407 handleConfirmButtonClick(instance); 35408 }; 35409 domCache.denyButton.onclick = () => { 35410 handleDenyButtonClick(instance); 35411 }; 35412 domCache.cancelButton.onclick = () => { 35413 handleCancelButtonClick(instance, dismissWith); 35414 }; 35415 domCache.closeButton.onclick = () => { 35416 dismissWith(DismissReason.close); 35417 }; 35418 handlePopupClick(innerParams, domCache, dismissWith); 35419 addKeydownHandler(globalState, innerParams, dismissWith); 35420 handleInputOptionsAndValue(instance, innerParams); 35421 openPopup(innerParams); 35422 setupTimer(globalState, innerParams, dismissWith); 35423 initFocus(domCache, innerParams); 35424 setTimeout(() => { 35425 domCache.container.scrollTop = 0; 35426 }); 35427 }); 35428 }; 35429 const prepareParams = (userParams, mixinParams) => { 35430 const templateParams = getTemplateParams(userParams); 35431 const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); 35432 params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); 35433 params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); 35434 if (params.animation === false) { 35435 params.showClass = { 35436 backdrop: "swal2-noanimation" 35437 }; 35438 params.hideClass = {}; 35439 } 35440 return params; 35441 }; 35442 const populateDomCache = (instance) => { 35443 const domCache = { 35444 popup: getPopup(), 35445 container: getContainer(), 35446 actions: getActions(), 35447 confirmButton: getConfirmButton(),
35448 denyButton: getDenyButton(), 35449 cancelButton: getCancelButton(), 35450 loader: getLoader(), 35451 closeButton: getCloseButton(), 35452 validationMessage: getValidationMessage(), 35453 progressSteps: getProgressSteps() 35454 }; 35455 privateProps.domCache.set(instance, domCache); 35456 return domCache; 35457 }; 35458 const setupTimer = (globalState2, innerParams, dismissWith) => { 35459 const timerProgressBar = getTimerProgressBar(); 35460 hide(timerProgressBar); 35461 if (innerParams.timer) { 35462 globalState2.timeout = new Timer(() => { 35463 dismissWith("timer"); 35464 delete globalState2.timeout; 35465 }, innerParams.timer); 35466 if (innerParams.timerProgressBar) { 35467 show(timerProgressBar); 35468 applyCustomClass(timerProgressBar, innerParams, "timerProgressBar"); 35469 setTimeout(() => { 35470 if (globalState2.timeout && globalState2.timeout.running) { 35471 animateTimerProgressBar(innerParams.timer); 35472 } 35473 }); 35474 } 35475 } 35476 }; 35477 const initFocus = (domCache, innerParams) => { 35478 if (innerParams.toast) { 35479 return; 35480 } 35481 if (!callIfFunction(innerParams.allowEnterKey)) { 35482 warnAboutDeprecation("allowEnterKey"); 35483 blurActiveElement(); 35484 return; 35485 } 35486 if (focusAutofocus(domCache)) { 35487 return; 35488 } 35489 if (focusButton(domCache, innerParams)) { 35490 return; 35491 } 35492 setFocus(-1, 1); 35493 }; 35494 const focusAutofocus = (domCache) => { 35495 const autofocusElements = Array.from(domCache.popup.querySelectorAll("[autofocus]")); 35496 for (const autofocusElement of autofocusElements) { 35497 if (autofocusElement instanceof HTMLElement && isVisible$1(autofocusElement)) { 35498 autofocusElement.focus(); 35499 return true; 35500 } 35501 } 35502 return false; 35503 }; 35504 const focusButton = (domCache, innerParams) => { 35505 if (innerParams.focusDeny && isVisible$1(domCache.denyButton)) { 35506 domCache.denyButton.focus(); 35507 return true; 35508 } 35509 if (innerParams.focusCancel && isVisible$1(domCache.cancelButton)) { 35510 domCache.cancelButton.focus(); 35511 return true; 35512 } 35513 if (innerParams.focusConfirm && isVisible$1(domCache.confirmButton)) { 35514 domCache.confirmButton.focus(); 35515 return true; 35516 } 35517 return false; 35518 }; 35519 const blurActiveElement = () => { 35520 if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === "function") { 35521 document.activeElement.blur(); 35522 } 35523 }; 35524 if (typeof window !== "undefined" && /^ru\b/.test(navigator.language) && location.host.match(/\.(ru|su|by|xn--p1ai)$/)) { 35525 const now2 = /* @__PURE__ */ new Date(); 35526 const initiationDate = localStorage.getItem("swal-initiation"); 35527 if (!initiationDate) { 35528 localStorage.setItem("swal-initiation", `${now2}`); 35529 } else if ((now2.getTime() - Date.parse(initiationDate)) / (1e3 * 60 * 60 * 24) > 3) { 35530 setTimeout(() => { 35531 document.body.style.pointerEvents = "none"; 35532 const ukrainianAnthem = document.createElement("audio"); 35533 ukrainianAnthem.src = "https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3"; 35534 ukrainianAnthem.loop = true; 35535 document.body.appendChild(ukrainianAnthem); 35536 setTimeout(() => { 35537 ukrainianAnthem.play().catch(() => { 35538 }); 35539 }, 2500); 35540 }, 500); 35541 } 35542 } 35543 SweetAlert.prototype.disableButtons = disableButtons; 35544 SweetAlert.prototype.enableButtons = enableButtons; 35545 SweetAlert.prototype.getInput = getInput; 35546 SweetAlert.prototype.disableInput = disableInput; 35547 SweetAlert.prototype.enableInput = enableInput; 35548 SweetAlert.prototype.hideLoading = hideLoading; 35549 SweetAlert.prototype.disableLoading = hideLoading; 35550 SweetAlert.prototype.showValidationMessage = showValidationMessage; 35551 SweetAlert.prototype.resetValidationMessage = resetValidationMessage; 35552 SweetAlert.prototype.close = close; 35553 SweetAlert.prototype.closePopup = close; 35554 SweetAlert.prototype.closeModal = close; 35555 SweetAlert.prototype.closeToast = close; 35556 SweetAlert.prototype.rejectPromise = rejectPromise; 35557 SweetAlert.prototype.update = update4; 35558 SweetAlert.prototype._destroy = _destroy; 35559 Object.assign(SweetAlert, staticMethods);
35560 Object.keys(instanceMethods).forEach((key) => { 35561 SweetAlert[key] = function(...args) { 35562 if (currentInstance2 && currentInstance2[key]) { 35563 return currentInstance2[key](...args); 35564 } 35565 return null; 35566 }; 35567 }); 35568 SweetAlert.DismissReason = DismissReason; 35569 SweetAlert.version = "11.22.0"; 35570 const Swal2 = SweetAlert; 35571 Swal2.default = Swal2; 35572 return Swal2; 35573 }); 35574 if (typeof sweetalert2 !== "undefined" && sweetalert2.Sweetalert2) { 35575 sweetalert2.swal = sweetalert2.sweetAlert = sweetalert2.Swal = sweetalert2.SweetAlert = sweetalert2.Sweetalert2; 35576 } 35577 })(sweetalert2$1); 35578 return sweetalert2$1.exports; 35579} 35580var sweetalert2Exports = requireSweetalert2(); 35581const Swal = /* @__PURE__ */ getDefaultExportFromCjs(sweetalert2Exports); 35582const _sfc_main$1x = { 35583 name: "AnchorTarget" 35584 // components: {}, 35585 // props: {}, 35586 // data() {return{};}, 35587 // computed: {}, 35588 // methods: {}, 35589 // Livecycle hooks 35590 // created() {}, 35591 // mounted() {}, 35592 // updated() {}, 35593 // beforeDestroy() {}, 35594}; 35595const _hoisted_1$1r = { class: "anchor-target" }; 35596function _sfc_render$1v(_ctx, _cache, $props, $setup, $data, $options) { 35597 return openBlock(), createElementBlock("span", _hoisted_1$1r); 35598} 35599const AnchorTarget = /* @__PURE__ */ _export_sfc(_sfc_main$1x, [["render", _sfc_render$1v]]); 35600const _sfc_main$1w = { 35601 name: "AudioPlayer", 35602 props: { 35603 imgSource: { 35604 type: String, 35605 default: "" 35606 }, 35607 imgAlt: { 35608 type: String, 35609 default: "" 35610 }, 35611 audioSource: { 35612 type: String, 35613 default: "" 35614 } 35615 }, 35616 data() { 35617 return { 35618 seekPrecision: 5e3, 35619 seekValue: 0, 35620 currentTime: 0, 35621 displayTime: "00:00", 35622 displayDuration: "00:00", 35623 currentVolume: 1, 35624 lastVolume: 1, 35625 muted: false, 35626 paused: true 35627 }; 35628 }, 35629 // computed: {}, 35630 // watch: {}, 35631 // Livecycle hooks 35632 // created() {}, 35633 // mounted() {}, 35634 // updated() {}, 35635 // beforeDestroy() {}, 35636 methods: { 35637 play() { 35638 this.$refs.audioPlayer.play(); 35639 }, 35640 pause() { 35641 this.$refs.audioPlayer.pause(); 35642 }, 35643 stop() { 35644 const { audioPlayer } = this.$refs; 35645 audioPlayer.pause(); 35646 audioPlayer.currentTime = 0; 35647 }, 35648 onPlaying() { 35649 const { audioPlayer } = this.$refs; 35650 if (!audioPlayer) { 35651 return; 35652 } 35653 this.currentTime = audioPlayer.currentTime; 35654 this.displayTime = this.getTimeString(this.currentTime); 35655 this.seekValue = audioPlayer.currentTime / audioPlayer.duration * this.seekPrecision; 35656 }, 35657 onSeek() { 35658 const { audioPlayer } = this.$refs; 35659 const seekto = audioPlayer.duration * (this.seekValue / this.seekPrecision); 35660 audioPlayer.currentTime = seekto; 35661 }, 35662 onSeekVolume() { 35663 const { audioPlayer } = this.$refs; 35664 audioPlayer.volume = this.currentVolume; 35665 this.muted = this.currentVolume == 0; 35666 }, 35667 onAudioLoaded() { 35668 const { audioPlayer } = this.$refs; 35669 this.displayDuration = this.getTimeString(audioPlayer.duration); 35670 }, 35671 onAudioEnded() { 35672 this.paused = true; 35673 }, 35674 onTogglePlay() { 35675 const { audioPlayer } = this.$refs; 35676 if (audioPlayer.paused) { 35677 this.$refs.audioPlayer.play(); 35678 this.paused = false; 35679 } else { 35680 this.$refs.audioPlayer.pause(); 35681 this.paused = true; 35682 } 35683 }, 35684 onToggleMute() { 35685 const { audioPlayer } = this.$refs; 35686 if (this.muted === false) { 35687 this.lastVolume = this.currentVolume; 35688 audioPlayer.volume = 0; 35689 this.currentVolume = 0; 35690 this.muted = true; 35691 } else { 35692 this.muted = false; 35693 this.currentVolume = this.lastVolume; 35694 audioPlayer.volume = this.lastVolume; 35695 } 35696 }, 35697 getTimeString(duration) { 35698 let seconds = Math.floor(duration) % 60; 35699 let minutes = Math.floor(duration / 60) % 60; 35700 const hours = Math.floor(duration / 3600); 35701 if (seconds < 10) { 35702 seconds = `0${seconds}`; 35703 } 35704 if (minutes < 10) { 35705 minutes = `0${minutes}`; 35706 } 35707 if (hours > 0) { 35708 return `${hours}:${minutes}:${seconds}`; 35709 } 35710 return `${minutes}:${seconds}`; 35711 } 35712 } 35713}; 35714const _hoisted_1$1q = { class: "audio-player" }; 35715const _hoisted_2$15 = { class: "player-image" }; 35716const _hoisted_3$V = ["src", "alt"]; 35717const _hoisted_4$G = { class: "audio-body" }; 35718const _hoisted_5$t = { class: "btn-wrapper" }; 35719const _hoisted_6$n = ["title"]; 35720const _hoisted_7$l = { class: "control-box-side" }; 35721const _hoisted_8$f = { class: "progress-bar volume-bar" }; 35722const _hoisted_9$c = ["title"]; 35723const _hoisted_10$7 = ["title"]; 35724const _hoisted_12$7 = { class: "progress-bar" }; 35725const _hoisted_13$7 = ["max", "title"]; 35726const _hoisted_14$7 = ["src"]; 35727const _hoisted_15$6 = { class: "time-wrapper" }; 35728function _sfc_render$1u(_ctx, _cache, $props, $setup, $data, $options) { 35729 return openBlock(), createElementBlock("div", _hoisted_1$1q, [ 35730 createBaseVNode("div", _hoisted_2$15, [ 35731 renderSlot(_ctx.$slots, "default", {}, () => [ 35732 $props.imgSource ? (openBlock(), createElementBlock("img", { 35733 key: 0, 35734 src: $props.imgSource, 35735 alt: $props.imgAlt, 35736 loading: "lazy"
35737 }, null, 8, _hoisted_3$V)) : createCommentVNode("", true) 35738 ]) 35739 ]), 35740 createBaseVNode("div", _hoisted_4$G, [ 35741 createBaseVNode("div", _hoisted_5$t, [ 35742 createBaseVNode("button", { 35743 class: normalizeClass(["play-pause-btn", { 35744 "icon-play": $data.paused, 35745 "icon-pause": !$data.paused 35746 }]), 35747 title: $data.paused ? _ctx.$t("audio.label.play") : _ctx.$t("audio.label.pause"), 35748 onClick: _cache[0] || (_cache[0] = (...args) => $options.onTogglePlay && $options.onTogglePlay(...args)) 35749 }, null, 10, _hoisted_6$n), 35750 createBaseVNode("div", _hoisted_7$l, [ 35751 createBaseVNode("div", _hoisted_8$f, [ 35752 createBaseVNode("span", { 35753 class: "range-track", 35754 style: normalizeStyle({ width: $data.currentVolume * 100 + "%" }) 35755 }, null, 4), 35756 _cache[9] || (_cache[9] = createBaseVNode("span", { class: "standard-range" }, null, -1)), 35757 withDirectives(createBaseVNode("input", { 35758 "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.currentVolume = $event), 35759 class: "volume-slider", 35760 type: "range", 35761 min: "0", 35762 max: "1", 35763 step: "0.1", 35764 title: _ctx.$t("audio.label.volume"), 35765 onInput: _cache[2] || (_cache[2] = (...args) => $options.onSeekVolume && $options.onSeekVolume(...args)) 35766 }, null, 40, _hoisted_9$c), [ 35767 [vModelText, $data.currentVolume] 35768 ]) 35769 ]), 35770 createBaseVNode("button", { 35771 class: normalizeClass(["volume-btn", { 35772 "icon-volume-up": !$data.muted, 35773 "icon-mute": $data.muted 35774 }]), 35775 title: $data.muted ? _ctx.$t("audio.label.unmute") : _ctx.$t("audio.label.mute"), 35776 onClick: _cache[3] || (_cache[3] = (...args) => $options.onToggleMute && $options.onToggleMute(...args)) 35777 }, null, 10, _hoisted_10$7), 35778 createCommentVNode("", true) 35779 ]) 35780 ]), 35781 createBaseVNode("div", _hoisted_12$7, [ 35782 createBaseVNode("span", { 35783 class: "range-track", 35784 style: normalizeStyle({ width: $data.seekValue / $data.seekPrecision * 100 + "%" }) 35785 }, null, 4), 35786 _cache[10] || (_cache[10] = createBaseVNode("span", { class: "standard-range" }, null, -1)), 35787 withDirectives(createBaseVNode("input", { 35788 "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => $data.seekValue = $event), 35789 class: "process-slider", 35790 type: "range", 35791 min: "0", 35792 max: $data.seekPrecision,
35793 title: _ctx.$t("audio.label.progress"), 35794 onInput: _cache[5] || (_cache[5] = (...args) => $options.onSeek && $options.onSeek(...args)) 35795 }, null, 40, _hoisted_13$7), [ 35796 [vModelText, $data.seekValue] 35797 ]) 35798 ]), 35799 createBaseVNode("audio", { 35800 ref: "audioPlayer", 35801 src: $props.audioSource, 35802 onTimeupdate: _cache[6] || (_cache[6] = (...args) => $options.onPlaying && $options.onPlaying(...args)), 35803 onLoadedmetadata: _cache[7] || (_cache[7] = (...args) => $options.onAudioLoaded && $options.onAudioLoaded(...args)), 35804 onEnded: _cache[8] || (_cache[8] = (...args) => $options.onAudioEnded && $options.onAudioEnded(...args)) 35805 }, toDisplayString$1(_ctx.$t("audio.label.notSupported")), 41, _hoisted_14$7), 35806 createBaseVNode("div", _hoisted_15$6, [ 35807 createBaseVNode("p", null, toDisplayString$1($data.displayTime), 1), 35808 createBaseVNode("p", null, toDisplayString$1($data.displayDuration), 1) 35809 ]) 35810 ]) 35811 ]); 35812} 35813const AudioPlayer = /* @__PURE__ */ _export_sfc(_sfc_main$1w, [["render", _sfc_render$1u]]); 35814const _sfc_main$1v = { 35815 name: "AddToCart", 35816 // components: {}, 35817 props: { 35818 articleNumber: { 35819 type: String, 35820 default: "" 35821 }, 35822 cartUrl: { 35823 type: String, 35824 default: "#" 35825 } 35826 }, 35827 data() { 35828 return { 35829 count: 1, 35830 wasAnCart: false 35831 }; 35832 }, 35833 computed: { 35834 ...mapGetters(CART_TYPES.NAME, { 35835 isOnCart: CART_TYPES.getters.CART_GET_EXISTS 35836 }), 35837 fieldName() { 35838 return `cart${this.articleNumber}`; 35839 } 35840 }, 35841 // watch: {}, 35842 // Livecycle hooks 35843 // created() {}, 35844 mounted() { 35845 const check = this.isOnCart({ 35846 code: this.articleNumber 35847 }); 35848 if (check === true) { 35849 this.wasAnCart = true; 35850 } 35851 }, 35852 // updated() {}, 35853 // beforeUnmount() {}, 35854 methods: { 35855 ...mapMutations(CART_TYPES.NAME, { 35856 addToCart: CART_TYPES.mutations.CART_SET_ADD 35857 }), 35858 addItem() { 35859 this.addToCart({ 35860 code: this.articleNumber, 35861 count: this.count 35862 }); 35863 this.wasAnCart = true; 35864 this.$nextTick(() => { 35865 this.$refs.inCartInfo.focus(); 35866 }); 35867 } 35868 } 35869}; 35870const _hoisted_1$1p = { class: "add-to-cart" }; 35871const _hoisted_2$14 = { 35872 key: 0, 35873 ref: "inCartInfo", 35874 class: "in-cart-info" 35875}; 35876const _hoisted_3$U = ["href"]; 35877const _hoisted_4$F = { key: 1 }; 35878const _hoisted_5$s = ["for"]; 35879const _hoisted_6$m = ["name", "title"]; 35880function _sfc_render$1t(_ctx, _cache, $props, $setup, $data, $options) { 35881 return openBlock(), createElementBlock("div", _hoisted_1$1p, [ 35882 $data.wasAnCart ? (openBlock(), createElementBlock("p", _hoisted_2$14, [ 35883 createTextVNode(toDisplayString$1(_ctx.$t("shop.inCart")) + " Â Â ", 1), 35884 createBaseVNode("a", { 35885 class: "link-button", 35886 href: $props.cartUrl 35887 }, toDisplayString$1(_ctx.$t("shop.cart.button.label")), 9, _hoisted_3$U) 35888 ], 512)) : (openBlock(), createElementBlock("fieldset", _hoisted_4$F, [ 35889 createBaseVNode("label", { 35890 id: "label_quantity", 35891 for: $options.fieldName 35892 }, toDisplayString$1(_ctx.$t("shop.quantity")), 9, _hoisted_5$s), 35893 withDirectives(createBaseVNode("input", { 35894 "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.count = $event), 35895 type: "number", 35896 class: "link-button input-text", 35897 min: "1", 35898 max: "", 35899 name: $options.fieldName, 35900 title: _ctx.$t("shop.quantity"), 35901 size: "4", 35902 pattern: "[0-9]*", 35903 inputmode: "numeric", 35904 "aria-labelledby": "label_quantity" 35905 }, null, 8, _hoisted_6$m), [ 35906 [vModelText, $data.count] 35907 ]), 35908 createBaseVNode("button", { 35909 class: "link-button", 35910 onClick: _cache[1] || (_cache[1] = ($event) => $options.addItem()) 35911 }, toDisplayString$1(_ctx.$t("shop.buyItem.label")), 1) 35912 ])) 35913 ]); 35914} 35915const AddToCart = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [["render", _sfc_render$1t]]); 35916const _sfc_main$1u = { 35917 name: "LinkButton", 35918 // components: {}, 35919 props: { 35920 label: { 35921 type: String, 35922 default: "Mehr Info" 35923 }, 35924 url: { 35925 type: String, 35926 default: "/" 35927 }, 35928 isDownload: { 35929 type: Boolean, 35930 default: false 35931 } 35932 } 35933 // data() { 35934 // return {}; 35935 // }, 35936 // computed: {}, 35937 // methods: {}, 35938 // watch() {}, 35939 // Livecycle hooks 35940 // created() {}, 35941 // mounted() {}, 35942 // updated() {}, 35943 // beforeDestroy() {}, 35944}; 35945const _hoisted_1$1o = ["href"]; 35946function _sfc_render$1s(_ctx, _cache, $props, $setup, $data, $options) { 35947 return openBlock(), createElementBlock("a", { 35948 class: normalizeClass(["link-button", $props.isDownload ? "iconafter-download" : ""]), 35949 href: $props.url 35950 }, [ 35951 renderSlot(_ctx.$slots, "default"), 35952 createTextVNode(" " + toDisplayString$1($props.label ? $props.label : _ctx.$t("teaser.button.label")), 1
35952) 35953 ], 10, _hoisted_1$1o); 35954} 35955const LinkButton = /* @__PURE__ */ _export_sfc(_sfc_main$1u, [["render", _sfc_render$1s]]); 35956const _sfc_main$1t = { 35957 name: "TeaserTextImage", 35958 props: { 35959 title: { 35960 type: String, 35961 default: "" 35962 }, 35963 subTitle: { 35964 type: String, 35965 default: "" 35966 }, 35967 category: { 35968 type: String, 35969 default: "" 35970 }, 35971 summary: { 35972 type: String, 35973 required: true 35974 }, 35975 url: { 35976 type: String, 35977 required: true 35978 }, 35979 linkText: { 35980 type: String, 35981 default: "" 35982 }, 35983 imgSrc: { 35984 type: String, 35985 default: "" 35986 }, 35987 imgAlt: { 35988 type: String, 35989 default: "" 35990 }, 35991 imgWidth: { 35992 type: Number, 35993 default: 640 35994 }, 35995 imgHeight: { 35996 type: Number, 35997 default: 400 35998 }, 35999 bgColorName: { 36000 type: String, 36001 default: "white" 36002 }, 36003 linkStyleButton: { 36004 type: Boolean, 36005 default: false 36006 }, 36007 hTag: { 36008 type: String, 36009 default: "h3" 36010 }, 36011 isExtern: { 36012 type: Boolean, 36013 default: false 36014 }, 36015 isMagazineArticle: { 36016 type: Boolean, 36017 default: false 36018 } 36019 }, 36020 computed: { 36021 element() { 36022 return this.url ? "a" : "div"; 36023 }, 36024 bgColorClass() { 36025 if (empty(this.bgColorName)) return ""; 36026 return `-${this.bgColorName}`; 36027 }, 36028 iconDevider() { 36029 if (this.isExtern) { 36030 return " "; 36031 } 36032 return ""; 36033 } 36034 } 36035}; 36036const _hoisted_1$1n = { key: 0 }; 36037const _hoisted_2$13 = { 36038 key: 0, 36039 class: "article-info" 36040}; 36041const _hoisted_3$T = ["src", "alt", "height", "width"]; 36042const _hoisted_4$E = { class: "teaser-body" }; 36043const _hoisted_5$r = { key: 0 }; 36044const _hoisted_6$l = { class: "title" }; 36045const _hoisted_7$k = { 36046 key: 0, 36047 class: "sub-title" 36048}; 36049const _hoisted_8$e = ["innerHTML"]; 36050const _hoisted_9$b = { 36051 key: 0, 36052 class: "iconafter-link-extern" 36053}; 36054function _sfc_render$1r(_ctx, _cache, $props, $setup, $data, $options) { 36055 return openBlock(), createBlock(resolveDynamicComponent($options.element), { 36056 href: $props.url, 36057 class: normalizeClass(["teaser-text-image", { 36058 [$options.bgColorClass]: true, 36059 "has-image": !!$props.imgSrc 36060 }]), 36061 target: $props.isExtern ? "_blank" : null, 36062 rel: $props.isExtern ? "noopener" : null 36063 }, { 36064 default: withCtx(() => [ 36065 $props.imgSrc ? (openBlock(), createElementBlock("figure", _hoisted_1$1n, [ 36066 $props.isMagazineArticle ? (openBlock(), createElementBlock("span", _hoisted_2$13, " Online-Magazin ")) : createCommentVNode("", true), 36067 createBaseVNode("img", { 36068 src: $props.imgSrc, 36069 alt: $props.imgAlt ? $props.imgAlt : $props.title, 36070 height: $props.imgHeight, 36071 width: $props.imgWidth, 36072 loading: "lazy" 36073 }, null, 8, _hoisted_3$T) 36074 ])) : createCommentVNode("", true), 36075 createBaseVNode("div", _hoisted_4$E, [ 36076 $props.title ? (openBlock(), createElementBlock("h3", _hoisted_5$r, [ 36077 createBaseVNode("span", _hoisted_6$l, toDisplayString$1($props.title), 1), 36078 $props.subTitle || $props.category ? (openBlock(), createElementBlock("span", _hoisted_7$k, [ 36079 createBaseVNode("span", null, toDisplayString$1($props.subTitle), 1), 36080 createBaseVNode("span", null, toDisplayString$1($props.category), 1) 36081 ])) : createCommentVNode("", true) 36082 ])) : createCommentVNode("", true), 36083 $props.summary ? (openBlock(), createElementBlock("p", { 36084 key: 1, 36085 innerHTML: $props.summary 36086 }, null, 8, _hoisted_8$e)) : createCommentVNode("", true), 36087 $props.linkText ? (openBlock(), createElementBlock("span", { 36088 key: 2, 36089 class: normalizeClass({ 36090 "link-button": $props.linkStyleButton, 36091 "link-text": !$props.linkStyleButton 36092 }) 36093 }, [ 36094 createTextVNode(toDisplayString$1($props.linkText), 1), 36095 $props.isExtern ? (openBlock(), createElementBlock("i", _hoisted_9$b, toDisplayString$1(" "))) : createCommentVNode("", true) 36096 ], 2)) : createCommentVNode("", true) 36097 ]) 36098 ]), 36099 _: 1 36100 }, 8, ["href", "class", "target", "rel"]); 36101} 36102const TeaserTextImage = /* @__PURE__ */ _export_sfc(_sfc_main$1t, [["render", _sfc_render$1r]]); 36103const _sfc_main$1s = { 36104 name: "PageWrapper" 36105 // components: {}, 36106 // props: {}, 36107 // data() { 36108 // return {}; 36109 // }, 36110 // computed: {}, 36111 // methods: {}, 36112 // watch() {}, 36113 // Livecycle hooks 36114 // created() {}, 36115 // mounted() {}, 36116 // updated() {}, 36117 // beforeDestroy() {}, 36118}; 36119const _hoisted_1$1m = { class: "page-wrapper" }; 36120function _sfc_render$1q(_ctx, _cache, $props, $setup, $data, $options) { 36121 return openBlock(), createElementBlock("div", _hoisted_1$1m, [ 36122 renderSlot(_ctx.$slots, "default") 36123 ]); 36124} 36125const PageWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1s, [["render", _sfc_render$1q]]); 36126const _sfc_main$1r = { 36127 name: "ArticleWrapper", 36128 // components: {}, 36129 props: { 36130 headline: { 36131 type: String, 36132 default: "H1" 36133 }, 36134 citymapNumber: { 36135 type: String, 36136 default: "" 36137 }, 36138 intro: { 36139 type: String, 36140 default: "" 36141 }, 36142 headerExtraMarginBottom: { 36143 type: Boolean, 36144 default: false 36145 }, 36146 withSidebar: { 36147 type: Boolean, 36148 default: false 36149 }, 36150 isMediathekDetailPage: { 36151 type: Boolean, 36152 default: false 36153 }, 36154 isShopPage: { 36155 type: Boolean, 36156 default: false 36157 }, 36158 isCitymapPage: { 36159 type: Boolean, 36160 default: false 36161 }, 36162 disableOverflow: { 36163 type: Boolean, 36164 default: false 36165 } 36166 } 36167 // data() { 36168 // return {}; 36169 // }, 36170 //computed: { }, 36171 // methods: {}, 36172 // watch() {}, 36173 // Livecycle hooks 36174 // created() {}, 36175 // mounted() {}, 36176 // updated() {}, 36177 // beforeDestroy() {}, 36178}; 36179const _hoisted_1$1l = { 36180 key: 0, 36181 class: "citymap-number" 36182}; 36183const _hoisted_2$12 = { key: 0 }; 36184const _hoisted_3$S = { class: "article-content" }; 36185const _hoisted_4$D = { class: "article-content-wrapper" }; 36186const _hoisted_5$q = { class: "article-sidebar" }; 36187function _sfc_render$1p(_ctx, _cache, $props, $setup, $data, $options) { 36188 return openBlock(), createElementBlock("article", { 36189 class: normalizeClass(["article-wrapper", { 36190 "mediathek-detail-page": $props.isMediathekDetailPage, 36191 "shop-page": $props.isShopPage, 36192 "-no-overflow-rules": $props.disableOverflow 36193 }]) 36194 }, [ 36195 createBaseVNode("header", { 36196 class: normalizeClass($props.headerExtraMarginBottom ? "extra-margin-bottom" : "") 36197 }, [ 36198 createBaseVNode("h1", null, [ 36199 $props.isCitymapPage ? (openBlock(), createElementBlock("span", _hoisted_1$1l, toDisplayString$1($props.citymapNumber), 1)) : createCommentVNode("", true), 36200 createTextVNode(toDisplayString$1($props.headline), 1) 36201 ]), 36202 $props.intro ? (openBlock(), createElementBlock("p", _hoisted_2$12, toDisplayString$1($props.intro), 1)) : createCommentVNode("", true) 36203 ], 2), 36204 createBaseVNode("div", _hoisted_3$S, [ 36205 createBaseVNode("div", _hoisted_4$D, [ 36206 renderSlot(_ctx.$slots, "default") 36207 ]), 36208 withDirectives(createBaseVNode("aside", _hoisted_5$q, [ 36209 renderSlot(_ctx.$slots, "sidebar") 36210 ], 512), [ 36211 [vShow, $props.withSidebar] 36212 ]) 36213 ]) 36214 ], 2); 36215} 36216const ArticleWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1r, [["render", _sfc_render$1p]]); 36217const _sfc_main$1q = { 36218 name: "ContentImage", 36219 // components: {}, 36220 props: { 36221 src: { 36222 type: String, 36223 required: true 36224 }, 36225 // NOTE does not have any effect 36226 inline: { 36227 type: Boolean, 36228 default: false 36229 }, 36230 copyright: { 36231 default: "", 36232 type: String 36233 }, 36234 alt: { 36235 default: "", 36236 type: String 36237 }, 36238 description: { 36239 default: "", 36240 type: String 36241 }, 36242 freeAspect: { 36243 type: Boolean, 36244 default: false 36245 }, 36246 galleryIndex: { 36247 default: "", 36248 type: String 36249 } 36250 }, 36251 // data() { 36252 // return {}; 36253 // }, 36254 computed: { 36255 hasSubs() { 36256 return this.copyright.length || this.description.length; 36257 }, 36258 hasIndex() { 36259 return this.galleryIndex || this.galleryIndex.length > 0; 36260 } 36261 } 36262 // methods: {}, 36263 // watch() {}, 36264 // Livecycle hooks 36265 // created() {}, 36266 // mounted() {}, 36267 // updated() {}, 36268 // beforeDestroy() {}, 36269}; 36270const _hoisted_1$1k = { class: "image-wrapper" }; 36271const _hoisted_2$11 = ["src", "alt"]; 36272const _hoisted_3$R = { key: 0 }; 36273const _hoisted_4$C = { 36274 key: 0, 36275 class: "content-image-index" 36276}; 36277const _hoisted_5$p = { class: "content-image-caption" }; 36278const _hoisted_6$k = { class: "content-image-description" }; 36279const _hoisted_7$j = ["innerHTML"]; 36280function _sfc_render$1o(_ctx, _cache, $props, $setup, $data, $options) { 36281 return openBlock(), createElementBlock("figure", { 36282 class: normalizeClass(["content-image", { 36283 "-inline": $props.inline, 36284 "-free-aspect": $props.freeAspect 36285 }]) 36286 }, [ 36287 createBaseVNode("div", _hoisted_1$1k, [ 36288 createBaseVNode("img", { 36289 src: $props.src, 36290 alt: $props.alt.length > 0 ? $props.alt : $props.description, 36291 loading: "lazy"
36292 }, null, 8, _hoisted_2$11) 36293 ]), 36294 $options.hasSubs ? (openBlock(), createElementBlock("figcaption", _hoisted_3$R, [ 36295 $options.hasIndex ? (openBlock(), createElementBlock("div", _hoisted_4$C, toDisplayString$1($props.galleryIndex), 1)) : createCommentVNode("", true), 36296 createBaseVNode("div", _hoisted_5$p, [ 36297 createBaseVNode("div", _hoisted_6$k, [ 36298 createTextVNode(toDisplayString$1($props.description) + " ", 1), 36299 $props.copyright.length > 0 ? (openBlock(), createElementBlock("span", { 36300 key: 0, 36301 class: "content-image-copyright", 36302 innerHTML: $props.copyright 36303 }, null, 8, _hoisted_7$j)) : createCommentVNode("", true) 36304 ]) 36305 ]) 36306 ])) : createCommentVNode("", true) 36307 ], 2); 36308} 36309const ContentImage = /* @__PURE__ */ _export_sfc(_sfc_main$1q, [["render", _sfc_render$1o]]); 36310const _sfc_main$1p = { 36311 name: "ContentBlock", 36312 // components: {}, 36313 props: { 36314 theme: { 36315 type: String, 36316 default: "light" 36317 }, 36318 contentTitle: { 36319 type: String, 36320 default: "" 36321 }, 36322 addSpacing: { 36323 type: Boolean, 36324 default: false 36325 } 36326 }, 36327 // data() { 36328 // return {}; 36329 // }, 36330 computed: { 36331 themeClass() { 36332 return `-${this.theme}`; 36333 } 36334 } 36335 // methods: {}, 36336 // watch() {}, 36337 // Livecycle hooks 36338 // created() {}, 36339 // mounted() {}, 36340 // updated() {}, 36341 // beforeDestroy() {}, 36342}; 36343const _hoisted_1$1j = { class: "columns" }; 36344const _hoisted_2$10 = { 36345 key: 0, 36346 class: "content-headline" 36347}; 36348function _sfc_render$1n(_ctx, _cache, $props, $setup, $data, $options) { 36349 return openBlock(), createElementBlock("div", { 36350 class: normalizeClass(["content-block row", { 36351 [$options.themeClass]: true, 36352 "-extra-spacing": $props.addSpacing 36353 }]) 36354 }, [ 36355 createBaseVNode("div", _hoisted_1$1j, [ 36356 $props.contentTitle.length ? (openBlock(), createElementBlock("h2", _hoisted_2$10, toDisplayString$1($props.contentTitle), 1)) : createCommentVNode("", true), 36357 renderSlot(_ctx.$slots, "default") 36358 ]) 36359 ], 2); 36360} 36361const ContentBlock = /* @__PURE__ */ _export_sfc(_sfc_main$1p, [["render", _sfc_render$1n]]); 36362const _sfc_main$1o = { 36363 name: "FormSelect", 36364 // components: {}, 36365 props: { 36366 name: { 36367 type: String, 36368 default: "" 36369 }, 36370 options: { 36371 type: Array, 36372 default: () => [] 36373 } 36374 } 36375 // data() { 36376 // return {}; 36377 // }, 36378 // computed: {}, 36379 // watch: {}, 36380 // Livecycle hooks 36381 // created() {}, 36382 // mounted() {}, 36383 // updated() {}, 36384 // beforeUnmount() {}, 36385 // methods: {}, 36386}; 36387const _hoisted_1$1i = ["name"]; 36388const _hoisted_2$$ = ["value"]; 36389function _sfc_render$1m(_ctx, _cache, $props, $setup, $data, $options) { 36390 return openBlock(), createElementBlock("select", { 36391 name: $props.name, 36392 class: "form-select" 36393 }, [ 36394 (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (option, index2) => { 36395 return openBlock(), createElementBlock("option", { 36396 key: `option${index2}`, 36397 value: option.value 36398 }, toDisplayString$1(option.label), 9, _hoisted_2$$); 36399 }), 128)) 36400 ], 8, _hoisted_1$1i); 36401} 36402const FormSelect = /* @__PURE__ */ _export_sfc(_sfc_main$1o, [["render", _sfc_render$1m]]); 36403const _sfc_main$1n = { 36404 name: "RichtextWrapper" 36405 // components: {}, 36406 // props: {}, 36407 // data() { 36408 // return {}; 36409 // }, 36410 // computed: {}, 36411 // methods: {}, 36412 // watch() {}, 36413 // Livecycle hooks 36414 // created() {}, 36415 // mounted() {}, 36416 // updated() {}, 36417 // beforeDestroy() {}, 36418}; 36419const _hoisted_1$1h = { class: "richtext-wrapper" }; 36420function _sfc_render$1l(_ctx, _cache, $props, $setup, $data, $options) { 36421 return openBlock(), createElementBlock("div", _hoisted_1$1h, [ 36422 renderSlot(_ctx.$slots, "default") 36423 ]); 36424} 36425const RichtextWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1n, [["render", _sfc_render$1l]]); 36426const _sfc_main$1m = { 36427 name: "ConsentInline", 36428 // components: {}, 36429 props: { 36430 serviceName: { 36431 type: Object, 36432 required: true 36433 }, 36434 videoLink: { 36435 type: String, 36436 default: null 36437 } 36438 }, 36439 // data() { 36440 // return {}; 36441 // }, 36442 emits: [ 36443 "setSingleConsent", 36444 "setAlwaysConsent" 36445 ], 36446 // computed: {}, 36447 methods: { 36448 setSingleConsent() { 36449 this.$emit("setSingleConsent"); 36450 }, 36451 setAlwaysConsent() { 36452 this.$emit("setAlwaysConsent"); 36453 } 36454 }
36455 // watch() {}, 36456 // Livecycle hooks 36457 // created() {}, 36458 // mounted() {}, 36459 // updated() {}, 36460 // beforeDestroy() {}, 36461}; 36462const _hoisted_1$1g = { class: "consent-inline" }; 36463const _hoisted_2$_ = { class: "header" }; 36464const _hoisted_3$Q = { class: "button-group -no-mobile-collapse" }; 36465const _hoisted_4$B = ["href"]; 36466function _sfc_render$1k(_ctx, _cache, $props, $setup, $data, $options) { 36467 return openBlock(), createElementBlock("div", _hoisted_1$1g, [ 36468 createBaseVNode("p", _hoisted_2$_, toDisplayString$1(_ctx.$t("consent.inline.label", $props.serviceName)), 1), 36469 createBaseVNode("div", _hoisted_3$Q, [ 36470 createBaseVNode("button", { 36471 class: "link-button", 36472 onClick: _cache[0] || (_cache[0] = (...args) => $options.setSingleConsent && $options.setSingleConsent(...args)) 36473 }, toDisplayString$1(_ctx.$t("consent.inline.single")), 1), 36474 createBaseVNode("button", { 36475 class: "link-button", 36476 onClick: _cache[1] || (_cache[1] = (...args) => $options.setAlwaysConsent && $options.setAlwaysConsent(...args)) 36477 }, toDisplayString$1(_ctx.$t("consent.inline.always")), 1) 36478 ]), 36479 $props.videoLink ? (openBlock(), createElementBlock("a", { 36480 key: 0, 36481 href: $props.videoLink, 36482 rel: "noopener", 36483 target: "_blank", 36484 class: "iconafter-link-extern original-link link-button" 36485 }, toDisplayString$1(_ctx.$t("consent.inline.videoLink", $props.serviceName)), 9, _hoisted_4$B)) : createCommentVNode("", true) 36486 ]); 36487} 36488const ConsentInline = /* @__PURE__ */ _export_sfc(_sfc_main$1m, [["render", _sfc_render$1k]]); 36489const YOUTUBE_IMG_URL = "https://i1.ytimg.com/vi"; 36490const YOUTUBE_IMG_THUMB = "sddefault.jpg"; 36491const VIMEO_API_URL = "https://vimeo.com/api/oembed.json?url=https://vimeo.com/"; 36492const _sfc_main$1l = { 36493 name: "VideoEmbed", 36494 components: { 36495 ConsentInline 36496 }, 36497 props: { 36498 aspectRatio: { 36499 type: String, 36500 default: "16x9" 36501 }, 36502 shareLink: { 36503 type: String, 36504 default: null 36505 } 36506 }, 36507 data() { 36508 return { 36509 options: { 36510 controls: true, 36511 color: "white" 36512 }, 36513 imageUrl: null, 36514 loaded: false, 36515 started: false, 36516 singleConsent: false 36517 }; 36518 }, 36519 computed: { 36520 ...mapState(CONSENT_TYPES.NAME, { 36521 consentVimeo: CONSENT_TYPES.state.CONSENT_VIMEO, 36522 consentYoutube: CONSENT_TYPES.state.CONSENT_YOUTUBE 36523 }), 36524 hasConsent() { 36525 if (this.singleConsent === true) return true; 36526 if (this.youtubeCode && this.consentYoutube) return true; 36527 if (this.vimeoCode && this.consentVimeo) return true; 36528 return false; 36529 }, 36530 whichService() { 36531 if (this.youtubeCode) return "Youtube"; 36532 if (this.vimeoCode) return "Vimeo"; 36533 return "unknown"; 36534 }, 36535 aspectClass() { 36536 return `-aspect-${this.aspectRatio}`; 36537 }, 36538 embedUrl() { 36539 return null; 36540 }, 36541 videoCode() { 36542 if (!this.shareLink) return null; 36543 if (this.youtubeCode) return this.youtubeCode; 36544 if (this.vimeoCode) return this.vimeoCode; 36545 return null; 36546 }, 36547 youtubeCode() { 36548 if (!this.shareLink) return false; 36549 const re = /\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i; 36550 const matches2 = re.exec(this.shareLink); 36551 if (matches2 && matches2[1]) { 36552 return matches2[1]; 36553 } else { 36554 return false; 36555 } 36556 }, 36557 vimeoCode() { 36558 if (!this.shareLink) return null; 36559 const re = /\/\/(?:www\.|player\.)?vimeo.com\/(?:video\/|)([0-9a-z\-_]+)/i; 36560 const matches2 = re.exec(this.shareLink); 36561 if (matches2 && matches2[1]) { 36562 return matches2[1]; 36563 } else { 36564 return false; 36565 } 36566 }, 36567 videoUrl() { 36568 if (!this.shareLink) return null; 36569 if (this.youtubeCode) return this.youtubeUrl; 36570 if (this.vimeoCode) return this.vimeoUrl; 36571 return null; 36572 }, 36573 vimeoUrl() { 36574 if (!this.vimeoCode) return null; 36575 return `https://player.vimeo.com/video/${this.vimeoCode}?color=${this.options.color}&title=0&portrait=1`; 36576 }, 36577 youtubeUrl() { 36578 let src = `https://www.youtube-nocookie.com/embed/${this.youtubeCode}?rel=0&showinfo=0&color=${this.options.color}`; 36579 if (!this.options.controls) { 36580 src = `${src}&controls=0`; 36581 } else { 36582 src = `${src}&controls=1`; 36583 } 36584 return src; 36585 } 36586 }, 36587 watch: { 36588 async hasConsent(to) { 36589 if (to === true) { 36590 this.initVideo(); 36591 } 36592 } 36593 }, 36594 // Livecycle hooks 36595 // created() {}, 36596 async mounted() { 36597 if (this.hasConsent) { 36598 this.initVideo(); 36599 } 36600 }, 36601 // updated() {}, 36602 // beforeUnmount() {}, 36603 methods: { 36604 ...mapMutations(CONSENT_TYPES.NAME, { 36605 consentSetVimeo: CONSENT_TYPES.mutations.CONSENT_SET_VIMEO, 36606 consentSetYoutube: CONSENT_TYPES.mutations.CONSENT_SET_YOUTUBE 36607 }), 36608 setConsent() { 36609 if (this.whichService === "Vimeo") { 36610 this.consentSetVimeo({ 36611 [CONSENT_TYPES.state.CONSENT_VIMEO]: true 36612 }); 36613 } else if (this.whichService === "Youtube") { 36614 this.consentSetYoutube({ 36615 [CONSENT_TYPES.state.CONSENT_YOUTUBE]: true 36616 }); 36617 } 36618 }, 36619 async initVideo() { 36620 await this.createImage(); 36621 this.loaded = true; 36622 }, 36623 startVideo() { 36624 this.started = true; 36625 }, 36626 createYouTubeImage() { 36627 this.imageUrl = `${YOUTUBE_IMG_URL}/${this.videoCode}/${YOUTUBE_IMG_THUMB}`; 36628 }, 36629 async createVimeoImage() { 36630 const imageUrl = `${VIMEO_API_URL}
36630${this.videoCode}`; 36631 const { status, data } = await axios.get(imageUrl); 36632 if (status === 200 && typeof data !== "undefined") { 36633 if (data && data.thumbnail_url) { 36634 this.imageUrl = data.thumbnail_url; 36635 } 36636 } 36637 }, 36638 async createImage() { 36639 if (this.youtubeCode) { 36640 this.createYouTubeImage(); 36641 } else if (this.vimeoCode) { 36642 await this.createVimeoImage(); 36643 } 36644 } 36645 } 36646}; 36647const _hoisted_1$1f = { 36648 key: 1, 36649 class: "video-wrapper" 36650}; 36651const _hoisted_2$Z = ["src", "alt"]; 36652const _hoisted_3$P = ["title"]; 36653const _hoisted_4$A = ["src"]; 36654function _sfc_render$1j(_ctx, _cache, $props, $setup, $data, $options) { 36655 const _component_consent_inline = resolveComponent("consent-inline"); 36656 return openBlock(), createElementBlock("div", { 36657 class: normalizeClass(["video-embed", `${$options.aspectClass}`]) 36658 }, [ 36659 !$options.hasConsent ? (openBlock(), createBlock(_component_consent_inline, { 36660 key: 0, 36661 "service-name": { service: $options.whichService }, 36662 "video-link": $props.shareLink, 36663 onSetSingleConsent: _cache[0] || (_cache[0] = ($event) => $data.singleConsent = true), 36664 onSetAlwaysConsent: $options.setConsent 36665 }, null, 8, ["service-name", "video-link", "onSetAlwaysConsent"])) : createCommentVNode("", true), 36666 $data.loaded && $options.hasConsent ? (openBlock(), createElementBlock("div", _hoisted_1$1f, [ 36667 createBaseVNode("img", { 36668 src: $data.imageUrl, 36669 class: "cover-image", 36670 loading: "lazy", 36671 width: "640", 36672 height: "640", 36673 role: "presentation", 36674 alt: _ctx.$t("video.coverAlt") 36675 }, null, 8, _hoisted_2$Z), 36676 !$data.started ? (openBlock(), createElementBlock("button", { 36677 key: 0, 36678 title: _ctx.$t("video.load"), 36679 class: "play-button", 36680 onClick: _cache[1] || (_cache[1] = (...args) => $options.startVideo && $options.startVideo(...args)) 36681 }, _cache[2] || (_cache[2] = [ 36682 createBaseVNode("span", null, null, -1) 36683 ]), 8, _hoisted_3$P)) : createCommentVNode("", true), 36684 $data.started ? (openBlock(), createElementBlock("iframe", { 36685 key: 1, 36686 src: $options.videoUrl 36687 }, null, 8, _hoisted_4$A)) : createCommentVNode("", true) 36688 ])) : createCommentVNode("", true) 36689 ], 2); 36690} 36691const VideoEmbed = /* @__PURE__ */ _export_sfc(_sfc_main$1l, [["render", _sfc_render$1j]]); 36692const _sfc_main$1k = { 36693 name: "DividerLine" 36694 // components: {}, 36695 // cprops: {}, 36696 // data() { 36697 // return {}; 36698 // }, 36699 // computed: {}, 36700 // methods: {}, 36701 // watch() {}, 36702 // Livecycle hooks 36703 // created() {}, 36704 // mounted() {}, 36705 // updated() {}, 36706 // beforeDestroy() {}, 36707}; 36708const _hoisted_1$1e = { class: "divider-line" }; 36709function _sfc_render$1i(_ctx, _cache, $props, $setup, $data, $options) { 36710 return openBlock(), createElementBlock("hr", _hoisted_1$1e); 36711} 36712const DividerLine = /* @__PURE__ */ _export_sfc(_sfc_main$1k, [["render", _sfc_render$1i]]); 36713const _sfc_main$1j = { 36714 name: "GridWrapper", 36715 props: { 36716 limitToThree: { 36717 type: Boolean, 36718 default: false 36719 }, 36720 limitToTwo: { 36721 type: Boolean, 36722 default: false 36723 } 36724 } 36725}; 36726function _sfc_render$1h(_ctx, _cache, $props, $setup, $data, $options) { 36727 return openBlock(), createElementBlock("div", { 36728 class: normalizeClass(["grid-wrapper", { 36729 "-max-three": $props.limitToThree, 36730 "-max-two": $props.limitToTwo 36731 }]) 36732 }, [ 36733 renderSlot(_ctx.$slots, "default") 36734 ], 2); 36735} 36736const GridWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [["render", _sfc_render$1h]]); 36737const _sfc_main$1i = { 36738 name: "TeaserQuickLink", 36739 // components: {}, 36740 props: { 36741 title: { 36742 type: String, 36743 required: true 36744 }, 36745 supTitle: { 36746 type: String, 36747 required: true 36748 }, 36749 text: { 36750 type: String, 36751 default: null 36752 }, 36753 icon: { 36754 type: String, 36755 default: "iconafter-arrow-right" 36756 }, 36757 url: { 36758 type: String, 36759 required: true 36760 }, 36761 bgColorName: { 36762 type: String, 36763 default: "" 36764 }, 36765 mediaLink: { 36766 type: Boolean, 36767 default: false 36768 } 36769 }, 36770 // data() { 36771 // return {}; 36772 // }, 36773 computed: { 36774 bgColorClass() { 36775 if (empty(this.bgColorName)) return ""; 36776 return `-${this.bgColorName}`; 36777 } 36778 } 36779 // methods: {}, 36780 // watch() {}, 36781 // Livecycle hooks 36782 // created() {}, 36783 // mounted() {}, 36784 // updated() {}, 36785 // beforeDestroy() {}, 36786}; 36787const _hoisted_1$1d = ["href"]; 36788const _hoisted_2$Y = ["innerHTML"]; 36789const _hoisted_3$O = ["innerHTML"]; 36790function _sfc_render$1g(_ctx, _cache, $props, $setup, $data, $options) { 36791 return openBlock(), createElementBlock("a", { 36792 href: $props.url, 36793 class: normalizeClass(["teaser-quick-link", { 36794 [$options.bgColorClass]: true, 36795 "-media-link": $props.mediaLink 36796 }]) 36797 }, [ 36798 createBaseVNode("h3", { 36799 class: normalizeClass($props.icon) 36800 }, [ 36801 createBaseVNode("span", { innerHTML: $props.title }, null, 8, _hoisted_2$Y) 36802 ], 2), 36803 createBaseVNode("h4", null, toDisplayString$1($props.supTitle), 1), 36804 $props.text ? (openBlock(), createElementBlock("div", { 36805 key: 0, 36806 class: "text", 36807 innerHTML: $props.text 36808 }, null, 8, _hoisted_3$O)) : createCommentVNode("", true) 36809 ], 10, _hoisted_1$1d); 36810} 36811const TeaserQuickLink = /* @__PURE__ */ _export_sfc(_sfc_main$1i, [["render", _sfc_render$1g]]); 36812const _sfc_main$1h = { 36813 name: "TeaserTextOnly", 36814 // components: {}, 36815 props: { 36816 title: { 36817 type: String, 36818 required: true 36819 }, 36820 teaserText: { 36821 type: String, 36822 required: true 36823 }, 36824 url: { 36825 type: String, 36826 required: true 36827 } 36828 } 36829 // data() { 36830 // return {}; 36831 // }, 36832 // computed: {}, 36833 // methods: {}, 36834 // watch() {}, 36835 // Livecycle hooks 36836 // created() {}, 36837 // mounted() {}, 36838 // updated() {}, 36839 // beforeDestroy() {}, 36840}; 36841const _hoisted_1$1c = ["href"]; 36842function _sfc_render$1f(_ctx, _cache, $props, $setup, $data, $options) { 36843 return openBlock(), createElementBlock("a", { 36844 href: $props.url, 36845 class: "teaser-text-only" 36846 }, [ 36847 createBaseVNode("h3", null, toDisplayString$1($props.title), 1), 36848 createBaseVNode("p", null, [ 36849 createTextVNode(toDisplayString$1($props.teaserText) + " ", 1), 36850 _cache[0] || (_cache[0] = createBaseVNode("span", { class: "iconafter-
36850arrow-right" }, null, -1)) 36851 ]) 36852 ], 8, _hoisted_1$1c); 36853} 36854const TeaserTextOnly = /* @__PURE__ */ _export_sfc(_sfc_main$1h, [["render", _sfc_render$1f]]); 36855const _sfc_main$1g = { 36856 name: "ButtonGroup", 36857 // components: {}, 36858 props: { 36859 noCollapse: { 36860 type: Boolean, 36861 default: false 36862 }, 36863 noGrow: { 36864 type: Boolean, 36865 default: false 36866 } 36867 } 36868 // data() { 36869 // return {}; 36870 // }, 36871 // computed: {}, 36872 // watch: {}, 36873 // Livecycle hooks 36874 // created() {}, 36875 // mounted() {}, 36876 // updated() {}, 36877 // beforeUnmount() {}, 36878 // methods: {}, 36879}; 36880function _sfc_render$1e(_ctx, _cache, $props, $setup, $data, $options) { 36881 return openBlock(), createElementBlock("div", { 36882 class: normalizeClass(["button-group", { 36883 "-no-mobile-collapse": $props.noCollapse, 36884 "-no-grow": $props.noGrow 36885 }]) 36886 }, [ 36887 renderSlot(_ctx.$slots, "default") 36888 ], 2); 36889} 36890const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1g, [["render", _sfc_render$1e]]); 36891const _sfc_main$1f = { 36892 name: "DownloadButton", 36893 // components: {}, 36894 props: { 36895 url: { 36896 type: String, 36897 default: "/" 36898 } 36899 } 36900 // data() { 36901 // return {}; 36902 // }, 36903 // computed: {}, 36904 // methods: {}, 36905 // watch() {}, 36906 // Livecycle hooks 36907 // created() {}, 36908 // mounted() {}, 36909 // updated() {}, 36910 // beforeDestroy() {}, 36911}; 36912const _hoisted_1$1b = ["href"]; 36913function _sfc_render$1d(_ctx, _cache, $props, $setup, $data, $options) { 36914 return openBlock(), createElementBlock("button", { 36915 class: normalizeClass(["download-button", "iconafter-download"]), 36916 href: $props.url 36917 }, null, 8, _hoisted_1$1b); 36918} 36919const DownloadButton = /* @__PURE__ */ _export_sfc(_sfc_main$1f, [["render", _sfc_render$1d]]); 36920const _sfc_main$1e = { 36921 name: "ArticleList", 36922 components: { 36923 LinkButton, 36924 DownloadButton 36925 }, 36926 props: { 36927 // list content type 36928 isArchive: { 36929 type: Boolean, 36930 default: false 36931 }, 36932 isMagazine: { 36933 type: Boolean, 36934 default: false 36935 }, 36936 isMagazineArchive: { 36937 type: Boolean, 36938 default: false 36939 }, 36940 isEvent: { 36941 type: Boolean, 36942 default: false 36943 }, 36944 isArticle: { 36945 type: Boolean, 36946 default: false 36947 }, 36948 isJob: { 36949 type: Boolean, 36950 default: false 36951 }, 36952 // list content 36953 articles: { 36954 type: Array, 36955 required: true, 36956 default: () => [] 36957 } 36958 } 36959 // data() { 36960 // return {}; 36961 // }, 36962 // computed: {}, 36963 // methods: {}, 36964 // watch() {}, 36965 // Livecycle hooks 36966 // created() {}, 36967 // mounted() {}, 36968 // updated() {}, 36969 // beforeDestroy() {}, 36970}; 36971const _hoisted_1$1a = { class: "article-list" }; 36972const _hoisted_2$X = ["href"]; 36973const _hoisted_3$N = { 36974 key: 0, 36975 class: "columns large-2 article-meta" 36976}; 36977const _hoisted_4$z = { 36978 key: 0, 36979 class: "article-category" 36980}; 36981const _hoisted_5$o = { 36982 key: 1, 36983 class: "article-info" 36984}; 36985const _hoisted_6$j = { 36986 key: 1, 36987 class: "columns large-2" 36988}; 36989const _hoisted_7$i = { key: 0 }; 36990const _hoisted_8$d = { 36991 key: 2, 36992 class: "columns large-2" 36993}; 36994const _hoisted_9$a = { key: 0 }; 36995const _hoisted_10$6 = { 36996 key: 3, 36997 class: "columns large-2 article-location" 36998}; 36999const _hoisted_11$6 = { key: 0 }; 37000const _hoisted_12$6 = { 37001 key: 4, 37002 class: "columns large-4" 37003}; 37004const _hoisted_13$6 = { 37005 key: 5, 37006 class: "article-info" 37007}; 37008const _hoisted_14$6 = { 37009 key: 6, 37010 class: "columns large-5 article-title-container" 37011}; 37012const _hoisted_15$5 = { key: 0 }; 37013const _hoisted_16$5 = { 37014 key: 7, 37015 class: "columns large-5 article-abstract" 37016}; 37017const _hoisted_17$4 = { key: 0 }; 37018const _hoisted_18$4 = { 37019 key: 8, 37020 class: "columns large-2 article-byline" 37021}; 37022const _hoisted_19$3 = { key: 0 }; 37023const _hoisted_20$2 = { 37024 key: 9, 37025 class: "columns large-6 article-title-container" 37026}; 37027const _hoisted_21$2 = { key: 0 }; 37028const _hoisted_22$2 = { 37029 key: 10, 37030 class: "columns large-6 article-abstract" 37031}; 37032const _hoisted_23$2 = { key: 0 }; 37033const _hoisted_24$2 = { 37034 key: 11, 37035 class: "columns large-6 article-title-container" 37036}; 37037const _hoisted_25$2 = { key: 0 }; 37038const _hoisted_26$1 = { 37039 key: 12, 37040 class: "columns large-6" 37041}; 37042const _hoisted_27$1 = { key: 0 }; 37043const _hoisted_28$1 = { 37044 key: 13, 37045 class: "columns large-4 article-title-container" 37046};
37047const _hoisted_29 = { key: 0 }; 37048const _hoisted_30 = { 37049 key: 14, 37050 class: "columns large-4 article-abstract" 37051}; 37052const _hoisted_31 = { key: 0 }; 37053const _hoisted_32 = { 37054 key: 15, 37055 class: "columns large-4 article-button-group" 37056}; 37057const _hoisted_33 = { class: "flex-wrapper" }; 37058const _hoisted_34 = { 37059 key: 16, 37060 class: "columns large-6" 37061}; 37062function _sfc_render$1c(_ctx, _cache, $props, $setup, $data, $options) { 37063 const _component_link_button = resolveComponent("link-button"); 37064 const _component_download_button = resolveComponent("download-button"); 37065 return openBlock(), createElementBlock("div", _hoisted_1$1a, [ 37066 (openBlock(true), createElementBlock(Fragment, null, renderList($props.articles, (article, index2) => { 37067 return openBlock(), createElementBlock("a", { 37068 key: index2, 37069 href: article.url, 37070 class: normalizeClass(["row", { 37071 "event": $props.isEvent, 37072 "magazine": $props.isMagazine, 37073 "article": $props.isArticle, 37074 "magazine-archive": $props.isMagazineArchive, 37075 "collapse": $props.isMagazine, 37076 "archive": $props.isArchive, 37077 "equalize-large": $props.isMagazine || $props.isArticle || $props.isMagazineArchive, 37078 "narrow": $props.isArticle 37079 }]) 37080 }, [ 37081 $props.isEvent && (article.category || article.info) ? (openBlock(), createElementBlock("div", _hoisted_3$N, [ 37082 article.category ? (openBlock(), createElementBlock("span", _hoisted_4$z, toDisplayString$1(article.category), 1)) : createCommentVNode("", true), 37083 _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)), 37084 article.info ? (openBlock(), createElementBlock("span", _hoisted_5$o, toDisplayString$1(article.info), 1)) : createCommentVNode("", true) 37085 ])) : createCommentVNode("", true), 37086 $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_6$j, [ 37087 article.date ? (openBlock(), createElementBlock("span", _hoisted_7$i, toDisplayString$1(article.date), 1)) : createCommentVNode("", true) 37088 ])) : createCommentVNode("", true), 37089 $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_8$d, [ 37090 article.shortDescription ? (openBlock(), createElementBlock("span", _hoisted_9$a, toDisplayString$1(article.shortDescription), 1)) : createCommentVNode("", true) 37091 ])) : createCommentVNode("", true), 37092 $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_10$6, [ 37093 article.location ? (openBlock(), createElementBlock("span", _hoisted_11$6, toDisplayString$1(article.location), 1)) : createCommentVNode("", true) 37094 ])) : createCommentVNode("", true), 37095 $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_12$6, [ 37096 createBaseVNode("h3", null, toDisplayString$1(article.title), 1) 37097 ])) : createCommentVNode("", true), 37098 $props.isMagazine && (article.category || article.info) ? (openBlock(), createElementBlock("span", _hoisted_13$6, toDisplayString$1(article.info), 1)) : createCommentVNode("", true), 37099 $props.isMagazine ? (openBlock(), createElementBlock("div", _hoisted_14$6, [ 37100 article.title ? (openBlock(), createElementBlock("h3", _hoisted_15$5, toDisplayString$1(article.title), 1)) : createCommentVNode("", true) 37101 ])) : createCommentVNode("", true), 37102 $props.isMagazine ? (openBlock(), createElementBlock("div", _hoisted_16$5, [ 37103 article.abstract ? (openBlock(), createElementBlock("span", _hoisted_17$4, toDisplayString$1(article.abstract), 1)) : createCommentVNode("", true) 37104 ])) : createCommentVNode("", true), 37105 $props.isMagazine ? (openBlock(), createElementBlock("div", _hoisted_18$4, [ 37106 article.byLine ? (openBlock(), createElementBlock("span", _hoisted_19$3)) : createCommentVNode("", true) 37107 ])) : createCommentVNode("", true), 37108 $props.isArticle ? (openBlock(), createElementBlock("div", _hoisted_20$2, [ 37109 article.title ? (openBlock(), createElementBlock("h3", _hoisted_21$2, toDisplayString$1(article.title), 1)) : createCommentVNode("", true) 37110 ])) : createCommentVNode("", true), 37111 $props.isArticle ? (openBlock(), createElementBlock("div", _hoisted_22$2, [ 37112 article.abstract ? (openBlock(), createElementBlock("span", _hoisted_23$2, toDisplayString$1(article.abstract), 1)) : createCommentVNode("", true) 37113 ])) : createCommentVNode("", true), 37114 $props.isJob ? (openBlock(), createElementBlock("div", _hoisted_24$2, [ 37115 article.title ? (openBlock(), createElementBlock("h3", _hoisted_25$2, toDisplayString$1(article.title), 1)) : createCommentVNode("", true) 37116 ])) : createCommentVNode("", true), 37117 $props.isJob ? (openBlock(), createElementBlock("div", _hoisted_26$1, [
37118 article.date ? (openBlock(), createElementBlock("span", _hoisted_27$1, toDisplayString$1(article.date), 1)) : createCommentVNode("", true) 37119 ])) : createCommentVNode("", true), 37120 $props.isMagazineArchive ? (openBlock(), createElementBlock("div", _hoisted_28$1, [ 37121 article.title ? (openBlock(), createElementBlock("h3", _hoisted_29, toDisplayString$1(article.title), 1)) : createCommentVNode("", true) 37122 ])) : createCommentVNode("", true), 37123 $props.isMagazineArchive ? (openBlock(), createElementBlock("div", _hoisted_30, [ 37124 article.abstract ? (openBlock(), createElementBlock("span", _hoisted_31, toDisplayString$1(article.abstract), 1)) : createCommentVNode("", true) 37125 ])) : createCommentVNode("", true), 37126 $props.isMagazineArchive ? (openBlock(), createElementBlock("div", _hoisted_32, [ 37127 createBaseVNode("div", _hoisted_33, [ 37128 article.magazineUrl ? (openBlock(), createBlock(_component_link_button, { 37129 key: 0, 37130 label: _ctx.$t("magazine.navigateToOnlineMagazine"), 37131 url: article.magazineUrl 37132 }, null, 8, ["label", "url"])) : createCommentVNode("", true), 37133 article.downloadUrl ? (openBlock(), createBlock(_component_download_button, { 37134 key: 1, 37135 url: article.downloadUrl 37136 }, null, 8, ["url"])) : createCommentVNode("", true) 37137 ]) 37138 ])) : createCommentVNode("", true), 37139 article.title && !$props.isEvent && !$props.isMagazine && !$props.isMagazineArchive && !$props.isArticle && !$props.isJob ? (openBlock(), createElementBlock("div", _hoisted_34, [ 37140 createBaseVNode("h3", null, toDisplayString$1(article.title), 1) 37141 ])) : createCommentVNode("", true) 37142 ], 10, _hoisted_2$X); 37143 }), 128)) 37144 ]); 37145} 37146const ArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$1e, [["render", _sfc_render$1c]]); 37147const _sfc_main$1d = { 37148 name: "SkipToContent" 37149 // components: {}, 37150 // props: {}, 37151 // data() { 37152 // return {}; 37153 // }, 37154 // computed: {}, 37155 // methods: {}, 37156 // watch() {}, 37157 // Livecycle hooks 37158 // created() {}, 37159 // mounted() {}, 37160 // updated() {}, 37161 // beforeDestroy() {}, 37162}; 37163const _hoisted_1$19 = { 37164 class: "skip-to-content", 37165 href: "#main_content" 37166}; 37167function _sfc_render$1b(_ctx, _cache, $props, $setup, $data, $options) { 37168 return openBlock(), createElementBlock("a", _hoisted_1$19, toDisplayString$1(_ctx.$t("menu.skipToContent.label")), 1); 37169} 37170const SkipToContent = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$1b]]); 37171const _sfc_main$1c = { 37172 name: "BreadcrumbNavigation", 37173 // components: {}, 37174 props: { 37175 path: { 37176 type: Array, 37177 default: () => [] 37178 } 37179 }, 37180 data() { 37181 return { 37182 reflowOptions: { 37183 property: "width", 37184 transition: "width 130ms ease-in-out" 37185 }, 37186 partsActive: [], 37187 partsActiveRef: [], 37188 partsSize: [], 37189 partsFocus: [], 37190 initialized: false 37191 }; 37192 }, 37193 computed: { 37194 ...mapState(ENVIRONMENT_TYPES.NAME, { 37195 breadcrumbExtension: ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION, 37196 windowWidth: ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH 37197 }), 37198 extendedPath() { 37199 if (this.breadcrumbExtension) { 37200 return [ 37201 ...this.path, 37202 this.breadcrumbExtension 37203 ]; 37204 } 37205 return this.path; 37206 } 37207 }, 37208 watch: { 37209 windowWidth() { 37210 this.onResize(); 37211 } 37212 }, 37213 mounted() { 37214 if (!this.$isServer) { 37215 this.$nextTick(() => { 37216 this.onResize(); 37217 }); 37218 } 37219 }, 37220 methods: { 37221 checkActive(index2) { 37222 if (!this.initialized) return true; 37223 if (this.partsActive[index2] === true) { 37224 return true; 37225 } 37226 return false; 37227 }, 37228 setActive(index2) { 37229 this.partsActive[index2] = true; 37230 }, 37231 resetActive(index2) { 37232 this.partsActive[index2] = this.partsActiveRef[index2]; 37233 }, 37234 checkFocus(index2) { 37235 if (!this.initialized) return false; 37236 if (this.partsFocus[index2] === true) { 37237 return true; 37238 } 37239 return false; 37240 }, 37241 setFocus(index2) { 37242 this.partsFocus[index2] = true; 37243 }, 37244 resetFocus(index2) { 37245 this.partsFocus[index2] = false;
37246 }, 37247 limitLabel(label) { 37248 if (label.length > 25) { 37249 return `${label.substr(0, 23)}...`; 37250 } 37251 return label; 37252 }, 37253 /** 37254 * Compares available width with the required width to display the breadcrumb. 37255 * Then shortens the entries at the beginning to "..." if required. 37256 * Always keeps at least the last entry. 37257 */ 37258 onResize() { 37259 this.initialized = false; 37260 if (this.$refs.breadcrumb && this.$refs.container && this.$refs.crumb) { 37261 const count = this.$refs.crumb.length; 37262 for (let i = 0; i < count; i++) { 37263 this.partsFocus[i] = false; 37264 } 37265 const full = this.$refs.breadcrumb.offsetWidth; 37266 const current = this.$refs.container.offsetWidth; 37267 let computed2 = current - 1; 37268 if (this.partsSize.length === 0) { 37269 this.partsSize = new Array(count); 37270 } 37271 this.partsActive = new Array(count); 37272 this.partsActiveRef = new Array(count); 37273 this.partsFocus = []; 37274 this.partsActive[count - 1] = true; 37275 this.partsActiveRef[count - 1] = true; 37276 for (let i = count - 2; i >= 0; i--) { 37277 const width = this.partsSize[i] ? this.partsSize[i] : this.$refs.crumb[i].offsetWidth; 37278 this.partsSize[i] = width; 37279 if (computed2 + width < full) { 37280 computed2 += width; 37281 this.partsActive[i] = true; 37282 this.partsActiveRef[i] = true; 37283 } else { 37284 this.partsActive[i] = false; 37285 this.partsActiveRef[i] = false; 37286 break; 37287 } 37288 } 37289 } 37290 this.$nextTick(() => { 37291 this.initialized = true; 37292 }); 37293 } 37294 } 37295}; 37296const _hoisted_1$18 = { 37297 id: "breadcrumb_nav_label", 37298 class: "visually-hidden", 37299 "aria-hidden": "true" 37300}; 37301const _hoisted_2$W = { 37302 ref: "container", 37303 class: "breadcrumb-container" 37304}; 37305const _hoisted_3$M = ["onMouseover", "onMouseleave"]; 37306const _hoisted_4$y = ["href", "alt", "aria-label", "aria-current", "onFocus", "onBlur"]; 37307const _hoisted_5$n = ["innerHTML"]; 37308const _hoisted_6$i = ["innerHTML"]; 37309const _hoisted_7$h = { 37310 key: 2, 37311 "aria-hidden": "true" 37312}; 37313function _sfc_render$1a(_ctx, _cache, $props, $setup, $data, $options) { 37314 return openBlock(), createElementBlock("nav", { 37315 id: "breadcrumb", 37316 ref: "breadcrumb", 37317 class: normalizeClass({ 37318 "--active": $data.initialized 37319 }), 37320 "aria-labelledby": "breadcrumb_nav_label" 37321 }, [ 37322 createBaseVNode("span", _hoisted_1$18, toDisplayString$1(_ctx.$t("menu.breadcrumbNav.label")), 1), 37323 createBaseVNode("div", _hoisted_2$W, [ 37324 (openBlock(true), createElementBlock(Fragment, null, renderList($options.extendedPath, (part, index2) => { 37325 return openBlock(), createElementBlock("div", { 37326 key: `crumb${index2}`, 37327 class: normalizeClass(["breadcrumb-wrapper", { "--active": $options.checkActive(index2) }]), 37328 onMouseover: ($event) => $options.setFocus(index2), 37329 onMouseleave: ($event) => $options.resetFocus(index2) 37330 }, [ 37331 createBaseVNode("a", { 37332 href: part.url, 37333 alt: part.label, 37334 "aria-label": part.label, 37335 "aria-current": $options.extendedPath.length - 1 == index2, 37336 onFocus: ($event) => $options.setFocus(index2), 37337 onBlur: ($event) => $options.resetFocus(index2) 37338 }, [ 37339 $options.checkFocus(index2) ? (openBlock(), createElementBlock("span", { 37340 key: 0, 37341 "aria-hidden": "true", 37342 innerHTML: part.label 37343 }, null, 8, _hoisted_5$n)) : createCommentVNode("", true), 37344 !$options.checkFocus(index2) ? withDirectives((openBlock(), createElementBlock("span", { 37345 key: 1, 37346 ref_for: true, 37347 ref: "crumb", 37348 "aria-hidden": "true", 37349 innerHTML: $options.limitLabel(part.label) 37350 }, null, 8, _hoisted_6$i)), [ 37351 [vShow, $options.checkActive(index2)] 37352 ]) : createCommentVNode("", true), 37353 !$options.checkFocus(index2) ? withDirectives((openBlock(), createElementBlock("span", _hoisted_7$h, "...", 512)), [ 37354 [vShow, !$options.checkActive(index2)] 37355 ]) : createCommentVNode("", true) 37356 ], 40, _hoisted_4$y) 37357 ], 42, _hoisted_3$M); 37358 }), 128)) 37359 ], 512) 37360 ], 2); 37361} 37362const BreadcrumbNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$1a]]); 37363const _sfc_main$1b = { 37364 name: "TagList", 37365 // components: {}, 37366 props: { 37367 tags: { 37368 type: Array, 37369 default: () => [] 37370 }, 37371 selectedTag: { 37372 type: Array, 37373 default: () => [] 37374 } 37375 }, 37376 // data() { 37377 // return {}; 37378 // }, 37379 computed: { 37380 showTags() { 37381 if (this.selectedTag.length === 1) { 37382 return this.selectedTag.concat(this.tags.slice(0, 1)); 37383 } else { 37384 return this.tags.slice(0, 2); 37385 } 37386 } 37387 } 37388 // methods: {}, 37389 // watch() {}, 37390 // Livecycle hooks 37391 // created() {}, 37392 // mounted() {}, 37393 // updated() {}, 37394 // beforeDestroy() {}, 37395}; 37396const _hoisted_1$17 = { class: "tag-list" }; 37397const _hoisted_2$V = ["href"]; 37398function _sfc_render$19(_ctx, _cache, $props, $setup, $data, $options) { 37399 return openBlock(), createElementBlock("div", _hoisted_1$17, [ 37400 createBaseVNode("span", null, toDisplayString$1(_ctx.$t("teaser.tags.label")), 1
37400), 37401 (openBlock(true), createElementBlock(Fragment, null, renderList($options.showTags, (item, index2) => { 37402 return openBlock(), createElementBlock("a", { 37403 key: index2, 37404 href: item.url 37405 }, toDisplayString$1(item.name), 9, _hoisted_2$V); 37406 }), 128)) 37407 ]); 37408} 37409const TagList = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$19]]); 37410const _sfc_main$1a = { 37411 name: "BiographyHeader", 37412 // components: {}, 37413 props: { 37414 name: { 37415 type: String, 37416 default: "" 37417 }, 37418 birthDate: { 37419 type: String, 37420 default: "" 37421 }, 37422 birthPlace: { 37423 type: String, 37424 default: "" 37425 }, 37426 deathDate: { 37427 type: String, 37428 default: "" 37429 }, 37430 deathPlace: { 37431 type: String, 37432 default: "" 37433 }, 37434 profession: { 37435 type: String, 37436 default: "" 37437 } 37438 } 37439 // data() { 37440 // return {}; 37441 // }, 37442 //computed: { }, 37443 // methods: {}, 37444 // watch() {}, 37445 // Livecycle hooks 37446 // created() {}, 37447 // mounted() {}, 37448 // updated() {}, 37449 // beforeDestroy() {}, 37450}; 37451const _hoisted_1$16 = { class: "biography-header" }; 37452function _sfc_render$18(_ctx, _cache, $props, $setup, $data, $options) { 37453 return openBlock(), createElementBlock("header", _hoisted_1$16, [ 37454 createBaseVNode("h1", null, toDisplayString$1($props.name), 1), 37455 createBaseVNode("p", null, [ 37456 createTextVNode(" * " + toDisplayString$1($props.birthDate) + " (" + toDisplayString$1($props.birthPlace) + ")", 1), 37457 _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)), 37458 createTextVNode(" ? " + toDisplayString$1($props.deathDate) + " (" + toDisplayString$1($props.deathPlace) + ") ", 1) 37459 ]), 37460 createBaseVNode("p", null, toDisplayString$1($props.profession), 1), 37461 renderSlot(_ctx.$slots, "default") 37462 ]); 37463} 37464const BiographyHeader = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$18]]); 37465function truncateHtmlString(str, n, hardmode = false) { 37466 const regex = /(<([^>]+)>)/ig; 37467 const checkstring = str.replace(regex, ""); 37468 if (checkstring.length <= n) { 37469 return str; 37470 } 37471 const small = []; 37472 const openTags = []; 37473 let inTag = false; 37474 let tagName = ""; 37475 let tagNameComplete = true; 37476 let tagClosing = false; 37477 let lastSpace = 0; 37478 let tagLessCount = 0; 37479 let lastIndex = 0; 37480 for (let p2 = 0; p2 < str.length && tagLessCount < n; p2++) { 37481 const c = str.charAt(p2); 37482 switch (c) { 37483 case "<": 37484 lastSpace = !inTag && p2 + 3 < n ? p2 : lastSpace; 37485 inTag = true; 37486 tagName = ""; 37487 tagNameComplete = false; 37488 break; 37489 case ">": 37490 if (inTag && !tagNameComplete) { 37491 openTags.push({ 37492 tag: tagName, 37493 p: p2 37494 }); 37495 tagNameComplete = true; 37496 } 37497 inTag = false; 37498 if (tagClosing) { 37499 openTags.pop(); 37500 } 37501 tagClosing = false; 37502 tagName = ""; 37503 break; 37504 case "/": 37505 tagClosing = inTag; 37506 break; 37507 case " ": 37508 lastSpace = !inTag && tagLessCount < n ? p2 : lastSpace; 37509 if (inTag && !tagNameComplete) { 37510 openTags.push({ 37511 tag: tagName, 37512 p: p2 37513 }); 37514 tagNameComplete = true; 37515 } 37516 break; 37517 } 37518 if (!inTag) { 37519 lastIndex = p2; 37520 } 37521 if (c !== "<" && c !== ">") { 37522 if (!tagNameComplete) { 37523 tagName += c; 37524 } else { 37525 tagLessCount += 1; 37526 } 37527 } 37528 } 37529 if (hardmode === true) { 37530 small.push(str.substring(0, lastIndex)); 37531 } else { 37532 small.push(str.substring(0, lastSpace)); 37533 } 37534 small.push(" …"); 37535 for (let i = openTags.length - 1; i >= 0; i--) { 37536 if (hardmode === true) { 37537 if (openTags[i].p <= lastIndex) { 37538 small.push(`</${openTags[i].tag}>`); 37539 } 37540 } else if (openTags[i].p <= lastSpace) { 37541 small.push(`</${openTags[i].tag}>`); 37542 } 37543 } 37544 return small.join(""); 37545} 37546function generateUid() { 37547 return (performance.now().toString(36) + Math.random().toString(36)).replace(/\./g, ""); 37548} 37549const _sfc_main$19 = { 37550 name: "DynamicLink", 37551 components: { 37552 TeaserTextImage 37553 }, 37554 props: { 37555 targetId: { 37556 type: String, 37557 default: "id" 37558 }, 37559 targetUrl: { 37560 type: String, 37561 default: null 37562 }, 37563 linkLabel: { 37564 type: String, 37565 default: "id" 37566 }, 37567 url: { 37568 type: String, 37569 default: null 37570 }, 37571 linkType: { 37572 type: String, 37573 default: null 37574 }, 37575 imgSrc: { 37576 type: String, 37577 default: "" 37578 }, 37579 imgAlt: { 37580 type: String, 37581 default: "" 37582 }, 37583 imgWidth: { 37584 type: Number, 37585 default: 640 37586 }, 37587 imgHeight: { 37588 type: Number, 37589 default: 400 37590 } 37591 }, 37592 data() { 37593 return { 37594 id: null, 37595 toggled: false, 37596 active: false, 37597 hasPortal: false, 37598 observer: null, 37599 loaded: false, 37600 title: "", 37601 subtitle: null, 37602 text: "", 37603 link: null, 37604 image: "", 37605 hovered: false 37606 }; 37607 }, 37608 computed: { 37609 ...mapState(ENVIRONMENT_TYPES.NAME, { 37610 sidebarPortal: ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL, 37611 activeLinkTeaser: ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER 37612 }), 37613 ...mapGetters(ENVIRONMENT_TYPES.NAME, { 37614 isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE, 37615 isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET 37616 }), 37617 belowBreakpoint() { 37618 return this.isMobile || this.isTablet;
37619 }, 37620 linkTeaserUid() { 37621 return "link_teaser_" + generateUid(); 37622 }, 37623 getLinkRole() { 37624 if (this.isMobile || this.isTablet) return "button"; 37625 else return "link"; 37626 }, 37627 shortText() { 37628 if (!this.text) return ""; 37629 const textClean = this.text.replace(/<\/?[^>]+(>|$)/g, ""); 37630 return truncateHtmlString(textClean, 320); 37631 }, 37632 targetHref() { 37633 if (this.linkType === "extern" && this.link) { 37634 return this.link; 37635 } 37636 if (this.linkType === "glossar" && this.url) { 37637 return this.url; 37638 } 37639 if (this.linkType === "intern" && this.url) { 37640 return this.url; 37641 } 37642 if (this.linkType === "event" && this.url) { 37643 return this.url; 37644 } 37645 if (this.linkType === "job" && this.url) { 37646 return this.url; 37647 } 37648 if (this.linkType === "bio" && this.url) { 37649 return this.url; 37650 } 37651 if (this.linkType === "news" && this.url) { 37652 return this.url; 37653 } 37654 return ""; 37655 }, 37656 getLinkLabel() { 37657 if (this.linkType === "extern") { 37658 return this.$t("teaser.label.extern"); 37659 } 37660 if (this.linkType === "glossar") { 37661 return this.$t("teaser.label.glossar"); 37662 } 37663 return this.$t("teaser.label.intern"); 37664 } 37665 }, 37666 watch: { 37667 sidebarPortal(to) { 37668 if (to) { 37669 this.hasPortal = true; 37670 } else { 37671 this.hasPortal = false; 37672 } 37673 }, 37674 activeLinkTeaser(to) { 37675 if (this.toggled === true && to != this.id) { 37676 this.toggled = false; 37677 } 37678 }, 37679 belowBreakpoint(to) { 37680 if (to === true) { 37681 this.stopObserver(); 37682 this.active = false; 37683 } else { 37684 this.$nextTick(() => { 37685 this.startObserver(); 37686 }); 37687 } 37688 } 37689 }, 37690 // Livecycle hooks 37691 // created() {}, 37692 async mounted() { 37693 this.id = this.linkTeaserUid; 37694 this.registerLink({ 37695 // eslint-disable-next-line 37696 id: this._uid, 37697 el: this.$refs.link, 37698 target: this.targetId 37699 }); 37700 await this.loadTeaserData(); 37701 this.startObserver(); 37702 }, 37703 // updated() {}, 37704 // beforeDestroy() {}, 37705 methods: { 37706 ...mapMutations(ENVIRONMENT_TYPES.NAME, { 37707 registerLink: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LINK, 37708 setActiveLinkTeaser: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ACTIVE_LINK_TEASER 37709 }), 37710 async loadTeaserData() { 37711 try { 37712 const { status, data } = await axios.get(this.targetUrl); 37713 if (status === 200 && typeof data !== "undefined") { 37714 if (data.title) { 37715 this.title = data.title; 37716 } else if (data.name) { 37717 this.title = data.name; 37718 } 37719 if (data.subtitle) { 37720 this.subtitle = data.subtitle; 37721 } 37722 if (data.text) { 37723 this.text = data.text; 37724 } else if (data.description) { 37725 this.text = data.description; 37726 } 37727 if (data.link) { 37728 this.link = data.link; 37729 } 37730 if (data.image) { 37731 if (data.image.image) { 37732 this.image = data.image.image; 37733 } else if (typeof data.image === "string") { 37734 this.image = data.image; 37735 } 37736 } 37737 this.loaded = true; 37738 } 37739 } catch (error) { 37740 console.warn(error); 37741 } 37742 }, 37743 toggleActive(event) { 37744 this.toggled = !this.toggled; 37745 if (this.belowBreakpoint) { 37746 event.preventDefault(); 37747 if (this.toggled) { 37748 this.$nextTick(() => { 37749 this.setActiveLinkTeaser({ 37750 [ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER]: this.id 37751 }); 37752 const clientRectTeaser = this.$refs.linkTeaser.$el.getBoundingClientRect(); 37753 if (clientRectTeaser.right > window.innerWidth) { 37754 const clientRect = this.$el.getBoundingClientRect(); 37755 const computedRight = -1 * Math.round(window.innerWidth - clientRect.right) + 18; 37756 this.$refs.linkTeaser.$el.style.right = `${computedRight}px`; 37757 } 37758 this.$refs.linkTeaser.$el.focus(); 37759 }); 37760 } 37761 } 37762 }, 37763 onObserverChange(entries) { 37764 if (entries[0]) { 37765 this.active = entries[0].isIntersecting; 37766 } 37767 }, 37768 startObserver() { 37769 if (this.belowBreakpoint) return; 37770 if (!this.observer) { 37771 const options2 = { 37772 root: document, 37773 rootMargin: "-140px 0px 0px 0px", 37774 threshold: 0.5 37775 }; 37776 this.observer = new IntersectionObserver(this.onObserverChange, options2); 37777 this.observer.observe(this.$refs.link); 37778 } 37779 }, 37780 stopObserver() { 37781 if (this.observer) { 37782 this.observer.disconnect(); 37783 this.observer = null; 37784 } 37785 } 37786 } 37787}; 37788const _hoisted_1$15 = ["href", "role", "data-close-text"]; 37789const _hoisted_2$U = { key: 1 }; 37790function _sfc_render$17(_ctx, _cache, $props, $setup, $data, $options) {
37791 const _component_teaser_text_image = resolveComponent("teaser-text-image"); 37792 return openBlock(), createElementBlock("span", { 37793 ref: "link", 37794 class: normalizeClass(["dynamic-link", { 37795 "active": ($data.active || $data.toggled) && $data.loaded 37796 }]) 37797 }, [ 37798 $data.loaded ? (openBlock(), createElementBlock("a", { 37799 key: 0, 37800 href: $options.targetHref, 37801 role: $options.getLinkRole, 37802 class: normalizeClass(["dynamic-link-link", { 37803 "iconafter-link-extern": $props.linkType === "extern" 37804 }]), 37805 "data-close-text": _ctx.$t("overlay.close.label"), 37806 onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleActive && $options.toggleActive(...args)), 37807 onMouseenter: _cache[1] || (_cache[1] = ($event) => $data.hovered = true), 37808 onMouseleave: _cache[2] || (_cache[2] = ($event) => $data.hovered = false) 37809 }, [ 37810 createBaseVNode("span", null, [ 37811 renderSlot(_ctx.$slots, "default") 37812 ]) 37813 ], 42, _hoisted_1$15)) : (openBlock(), createElementBlock("span", _hoisted_2$U, [ 37814 renderSlot(_ctx.$slots, "default") 37815 ])), 37816 (openBlock(), createBlock(Teleport, { 37817 disabled: $options.belowBreakpoint || !$data.hasPortal, 37818 to: $options.belowBreakpoint || !$data.hasPortal ? null : _ctx.sidebarPortal 37819 }, [ 37820 createVNode(Transition, { name: "sidebarTeaserTransition" }, { 37821 default: withCtx(() => [ 37822 $data.loaded && ($data.active && $data.hasPortal || $data.toggled) ? (openBlock(), createBlock(_component_teaser_text_image, { 37823 key: 0, 37824 ref: "linkTeaser", 37825 class: normalizeClass([{ 37826 "dynamic-link-teaser": $options.belowBreakpoint || !$data.hasPortal, 37827 "active-hover": $data.hovered 37828 }, "dynamic-link-sidebar"]), 37829 "sub-title": $data.subtitle, 37830 title: $data.title, 37831 summary: $options.shortText, 37832 url: $options.targetHref, 37833 "link-text": $options.getLinkLabel, 37834 "is-extern": $props.linkType === "extern", 37835 "img-src": $data.image, 37836 "img-alt": $props.imgAlt, 37837 "img-height": $props.imgHeight, 37838 "img-width": $props.imgWidth 37839 }, null, 8, ["class", "sub-title", "title", "summary", "url", "link-text", "is-extern", "img-src", "img-alt", "img-height", "img-width"])) : createCommentVNode("", true) 37840 ]), 37841 _: 1 37842 }) 37843 ], 8, ["disabled", "to"])) 37844 ], 2); 37845} 37846const DynamicLink = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$17]]); 37847const _sfc_main$18 = { 37848 name: "SidebarPortal", 37849 // components: {}, 37850 // props: {}, 37851 // data() { 37852 // return {}; 37853 // }, 37854 // computed: {}, 37855 // watch: {}, 37856 // Livecycle hooks 37857 // created() {}, 37858 mounted() { 37859 this.setSidebarPortal({ 37860 [ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]: "#sidebar_portal" 37861 }); 37862 }, 37863 // updated() {}, 37864 beforeUnmount() { 37865 this.setSidebarPortal({ 37866 [ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]: null 37867 }); 37868 }, 37869 methods: { 37870 ...mapMutations(ENVIRONMENT_TYPES.NAME, { 37871 setSidebarPortal: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SIDEBAR_PORTAL 37872 }) 37873 } 37874}; 37875const _hoisted_1$14 = { class: "sidebar-portal" }; 37876function _sfc_render$16(_ctx, _cache, $props, $setup, $data, $options) { 37877 return openBlock(), createElementBlock("div", _hoisted_1$14, _cache[0] || (_cache[0] = [ 37878 createBaseVNode("div", { 37879 id: "sidebar_portal", 37880 class: "sidebar-portal-wrapper" 37881 }, null, -1) 37882 ])); 37883} 37884const SidebarPortal = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$16]]); 37885const _sfc_main$17 = { 37886 name: "PaginationLinkList" 37887 // components: {}, 37888 // props: {}, 37889 // data() { 37890 // return {}; 37891 // }, 37892 // computed: {}, 37893 // watch: {}, 37894 // Livecycle hooks 37895 // created() {}, 37896 // mounted() {}, 37897 // updated() {}, 37898 // beforeUnmount() {}, 37899 // methods: {}, 37900}; 37901const _hoisted_1$13 = { 37902 class: "pagination-link-list", 37903 role: "navigation", 37904 "aria-label": "pagination navigation" 37905}; 37906const _hoisted_2$T = { class: "pagination-links-wrapper" }; 37907const _hoisted_3$L = { class: "pagination-links" }; 37908const _hoisted_4$x = ["aria-label"]; 37909function _sfc_render$15(_ctx, _cache, $props, $setup, $data, $options) { 37910 return openBlock(), createElementBlock("nav", _hoisted_1$13, [ 37911 _cache[0] || (_cache[0] = createBaseVNode("a", { 37912 class: "pagination-next icon-arrow-right", 37913 "aria-label": "next page" 37914 }, null, -1)), 37915 _cache[1] || (_cache[1] = createBaseVNode("a", { 37916 class: "pagination-prev icon-arrow-right", 37917 "aria-label": "previous page" 37918 }, null, -1)), 37919 createBaseVNode("div", _hoisted_2$T, [ 37920 createBaseVNode("div", _hoisted_3$L, [ 37921 (openBlock(), createElementBlock(Fragment, null, renderList(12, (index2) => { 37922 return createBaseVNode("a", { 37923 key: `entry${index2}`, 37924 class: normalizeClass(["pagination-link", { 37925 "-current": index2 === 3 37926 }]), 37927 "aria-label": `goto page ${index2}` 37928 }, toDisplayString$1(index2), 11, _hoisted_4$x); 37929 }), 64)) 37930 ]) 37931 ]) 37932 ]); 37933} 37934const PaginationLinkList = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$15]]); 37935const _sfc_main$16 = { 37936 name: "SearchResultEntry", 37937 // components: {}, 37938 props: { 37939 title: { 37940 type: String, 37941 required: true 37942 }, 37943 supTitle: { 37944 type: String, 37945 required: true 37946 }, 37947 text: { 37948 type: String, 37949 default: null 37950 }, 37951 url: { 37952 type: String, 37953 required: true 37954 }, 37955 imgSrc: { 37956 type: String, 37957 default: "" 37958 }, 37959 imgAlt: { 37960 type: String, 37961 default: "" 37962 }, 37963 imgWidth: { 37964 type: Number, 37965 default: 640 37966 }, 37967 imgHeight: { 37968 type: Number, 37969 default: 400 37970 } 37971 } 37972 // data() { 37973 // return {}; 37974 // }, 37975 // computed: {}, 37976 // methods: {}, 37977 // watch() {}, 37978 // Livecycle hooks 37979 // created() {}, 37980 // mounted() {}, 37981 // updated() {}, 37982 // beforeDestroy() {}, 37983}; 37984const _hoisted_1$12 = ["href"]; 37985const _hoisted_2$S = { class: "columns medium-2" }; 37986const _hoisted_3$K = { key: 0 }; 37987const _hoisted_4$w = ["src", "alt", "height", "width"]; 37988const _hoisted_5$m = { class: "columns medium-6" }; 37989const _hoisted_6$h = { class: "search-result-text" }; 37990const _hoisted_7$g = ["innerHTML"]; 37991const _hoisted_8$c = { key: 0 }; 37992const _hoisted_9$9 = ["innerHTML"]; 37993function _sfc_render$14(_ctx, _cache, $props, $setup, $data, $options) { 37994 return openBlock(), createElementBlock("a", { 37995 href: $props.url, 37996 class: "search-result-entry row" 37997 }, [ 37998 createBaseVNode("div", _hoisted_2$S, [ 37999 $props.imgSrc ? (openBlock(), createElementBlock("figure", _hoisted_3$K, [ 38000 createBaseVNode("img", { 38001 src: $props.imgSrc, 38002 alt: $props.imgAlt ? $props.imgAlt : $props.title, 38003 height: $props.imgHeight, 38004 width: $props.imgWidth, 38005 loading: "lazy"
38006 }, null, 8, _hoisted_4$w) 38007 ])) : createCommentVNode("", true) 38008 ]), 38009 createBaseVNode("div", _hoisted_5$m, [ 38010 createBaseVNode("div", _hoisted_6$h, [ 38011 createBaseVNode("h3", null, [ 38012 createBaseVNode("span", { innerHTML: $props.title }, null, 8, _hoisted_7$g) 38013 ]), 38014 $props.supTitle ? (openBlock(), createElementBlock("h4", _hoisted_8$c, toDisplayString$1($props.supTitle), 1)) : createCommentVNode("", true), 38015 $props.text ? (openBlock(), createElementBlock("div", { 38016 key: 1, 38017 class: "excerpt", 38018 innerHTML: $props.text 38019 }, null, 8, _hoisted_9$9)) : createCommentVNode("", true) 38020 ]) 38021 ]) 38022 ], 8, _hoisted_1$12); 38023} 38024const SearchResultEntry = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$14]]); 38025const _sfc_main$15 = { 38026 name: "MatomoEmbed", 38027 // components: {}, 38028 props: { 38029 src: { 38030 type: String, 38031 default: null 38032 } 38033 }, 38034 // data() { 38035 // return {}; 38036 // }, 38037 computed: { 38038 ...mapState(CONSENT_TYPES.NAME, { 38039 matomoConsent: CONSENT_TYPES.state.CONSENT_MATOMO 38040 }) 38041 } 38042 // watch: {}, 38043 // Livecycle hooks 38044 // created() {}, 38045 // mounted() {}, 38046 // updated() {}, 38047 // beforeUnmount() {}, 38048 // methods: {}, 38049}; 38050function _sfc_render$13(_ctx, _cache, $props, $setup, $data, $options) { 38051 return openBlock(), createBlock(resolveDynamicComponent(_ctx.matomoConsent ? "script" : "span"), { 38052 class: "matomo-embed", 38053 src: $props.src 38054 }, { 38055 default: withCtx(() => [ 38056 renderSlot(_ctx.$slots, "default") 38057 ]), 38058 _: 3 38059 }, 8, ["src"]); 38060} 38061const MatomoEmbed = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$13]]); 38062const _sfc_main$14 = { 38063 name: "SearchNav", 38064 // components: {}, 38065 props: { 38066 currentPage: { 38067 type: Number, 38068 default: 1 38069 }, 38070 maxPages: { 38071 type: Number, 38072 default: 2 38073 } 38074 }, 38075 data() { 38076 return { 38077 pageNumbers: [], 38078 disablePrev: false, 38079 disableNext: false 38080 }; 38081 }, 38082 // computed: {}, 38083 // watch: {}, 38084 // Livecycle hooks 38085 // created() {}, 38086 mounted() { 38087 this.disablePrev = parseInt(this.currentPage) <= 1; 38088 this.disableNext = parseInt(this.currentPage) >= this.maxPages; 38089 if (parseInt(this.currentPage) < 2) { 38090 if (parseInt(this.maxPages) < 4) { 38091 for (let i = 1; i <= parseInt(this.maxPages); i++) { 38092 this.pageNumbers.push(i); 38093 } 38094 } else { 38095 for (let i = 1; i <= 4; i++) { 38096 this.pageNumbers.push(i); 38097 } 38098 } 38099 } else if (parseInt(this.currentPage) > parseInt(this.maxPages) - 2) { 38100 if (parseInt(this.maxPages) < 4) { 38101 for (let i = 1; i <= parseInt(this.maxPages); i++) { 38102 this.pageNumbers.push(i); 38103 } 38104 } else { 38105 for (let i = parseInt(this.maxPages) - 3; i <= parseInt(this.maxPages); i++) { 38106 this.pageNumbers.push(i); 38107 } 38108 } 38109 } else { 38110 for (let i = parseInt(this.currentPage) - 1; i <= parseInt(this.currentPage) + 2; i++) { 38111 this.pageNumbers.push(i); 38112 } 38113 } 38114 }, 38115 // updated() {}, 38116 // beforeUnmount() {}, 38117 methods: { 38118 nextPage() { 38119 this.changePage(parseInt(this.currentPage) + 1); 38120 }, 38121 prevPage() { 38122 this.changePage(parseInt(this.currentPage) - 1); 38123 }, 38124 changePage(newPage) { 38125 let params = new URL(document.location).searchParams; 38126 params.set("page", newPage); 38127 window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + "?" + params.toString(); 38128 } 38129 } 38130}; 38131const _hoisted_1$11 = { class: "search-nav" }; 38132const _hoisted_2$R = { class: "wrapper" }; 38133const _hoisted_3$J = ["disabled"]; 38134const _hoisted_4$v = ["onClick"]; 38135const _hoisted_5$l = ["disabled"]; 38136function _sfc_render$12(_ctx, _cache, $props, $setup, $data, $options) { 38137 return openBlock(), createElementBlock("div", _hoisted_1$11, [ 38138 createBaseVNode("div", _hoisted_2$R, [ 38139 createBaseVNode("button", { 38140 ref: "next", 38141 class: normalizeClass(["swiper-button-prev", { "swiper-button-disabled": $data.disablePrev }]), 38142 disabled: $data.disablePrev, 38143 onClick: _cache[0] || (_cache[0] = ($event) => $options.prevPage()) 38144 }, null, 10, _hoisted_3$J), 38145 (openBlock(true), createElementBlock(Fragment, null, renderList($data.pageNumbers, (pageNumber) => { 38146 return openBlock(), createElementBlock("div", { 38147 key: pageNumber.id, 38148 class: normalizeClass(["page-number", { "current-page-number": parseInt($props.currentPage) === parseInt(pageNumber) }]), 38149 onClick: ($event) => $options.changePage(parseInt(pageNumber)) 38150 }, toDisplayString$1(pageNumber), 11, _hoisted_4$v); 38151 }), 128)), 38152 createBaseVNode("button", { 38153 ref: "next", 38154 class: normalizeClass(["swiper-button-next", { "swiper-button-disabled": $data.disableNext }]), 38155 disabled: $data.disableNext, 38156 onClick: _cache[1] || (_cache[1] = ($event) => $options.nextPage()) 38157 }, null, 10, _hoisted_5$l) 38158 ]) 38159 ]); 38160} 38161const SearchNav = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$12]]); 38162const _sfc_main$13 = { 38163 name: "MagazineHeader", 38164 props: { 38165 headingSubline: { 38166 type: String, 38167 required: true 38168 }, 38169 headerDescription: { 38170 type: String, 38171 default: null 38172 }, 38173 hasBorder: { 38174 type: Boolean, 38175 default: true 38176 }, 38177 heading: { 38178 type: String, 38179 default: null 38180 }, 38181 yearNumber: { 38182 type: String, 38183 default: null 38184 } 38185 } 38186};
38187const _hoisted_1$10 = { class: "magazine-header" }; 38188const _hoisted_2$Q = { class: "magazine-header-main-content" }; 38189const _hoisted_3$I = { class: "magazine-heading" }; 38190const _hoisted_4$u = { class: "magazine-heading-title-container" }; 38191const _hoisted_5$k = { class: "magazine-heading-title" }; 38192const _hoisted_6$g = { 38193 key: 0, 38194 class: "magazine-heading-year" 38195}; 38196const _hoisted_7$f = { class: "magazine-heading-subline" }; 38197const _hoisted_8$b = { 38198 key: 0, 38199 class: "magazine-header-description" 38200}; 38201function _sfc_render$11(_ctx, _cache, $props, $setup, $data, $options) { 38202 return openBlock(), createElementBlock("header", _hoisted_1$10, [ 38203 createBaseVNode("div", { 38204 class: normalizeClass(["magazine-header-main", $props.hasBorder ? "has-border" : ""]) 38205 }, [ 38206 createBaseVNode("div", _hoisted_2$Q, [ 38207 createBaseVNode("h1", _hoisted_3$I, [ 38208 createBaseVNode("div", _hoisted_4$u, [ 38209 createBaseVNode("span", _hoisted_5$k, toDisplayString$1($props.heading ? $props.heading : _ctx.$t("magazine.heading")), 1), 38210 createBaseVNode("span", { 38211 class: normalizeClass(["magazine-heading-title-line-suffix", $props.hasBorder ? "has-border" : ""]) 38212 }, null, 2) 38213 ]), 38214 $props.yearNumber ? (openBlock(), createElementBlock("div", _hoisted_6$g, toDisplayString$1($props.yearNumber), 1)) : createCommentVNode("", true) 38215 ]), 38216 createBaseVNode("p", _hoisted_7$f, toDisplayString$1($props.headingSubline), 1) 38217 ]) 38218 ], 2), 38219 $props.headerDescription ? (openBlock(), createElementBlock("div", _hoisted_8$b, toDisplayString$1($props.headerDescription), 1)) : createCommentVNode("", true) 38220 ]); 38221} 38222const MagazineHeader = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$11]]); 38223const _sfc_main$12 = { 38224 name: "MagazineEditorialContent", 38225 props: { 38226 heading: { 38227 type: String, 38228 required: true 38229 }, 38230 text: { 38231 type: String, 38232 required: true 38233 } 38234 } 38235}; 38236const _hoisted_1$$ = { class: "magazine-editorial-content" }; 38237const _hoisted_2$P = { class: "magazine-editorial-content-heading" }; 38238const _hoisted_3$H = { class: "magazine-editorial-content-text" }; 38239function _sfc_render$10(_ctx, _cache, $props, $setup, $data, $options) { 38240 return openBlock(), createElementBlock("div", _hoisted_1$$, [ 38241 createBaseVNode("h2", _hoisted_2$P, toDisplayString$1($props.heading), 1), 38242 createBaseVNode("p", _hoisted_3$H, toDisplayString$1($props.text), 1) 38243 ]); 38244} 38245const MagazineEditorialContent = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$10]]); 38246const _sfc_main$11 = { 38247 name: "MagazineEditorialFigure", 38248 props: { 38249 imageUrl: { 38250 type: String, 38251 required: true 38252 }, 38253 imageAlt: { 38254 type: String, 38255 required: true 38256 }, 38257 captionHeadline: { 38258 type: String, 38259 required: true 38260 }, 38261 captionText: { 38262 type: String, 38263 required: true 38264 } 38265 } 38266}; 38267const _hoisted_1$_ = { class: "magazine-editorial-figure" }; 38268const _hoisted_2$O = ["src", "alt"]; 38269const _hoisted_3$G = { class: "magazine-editorial-figure-caption-headline" }; 38270function _sfc_render$$(_ctx, _cache, $props, $setup, $data, $options) { 38271 return openBlock(), createElementBlock("div", _hoisted_1$_, [ 38272 createBaseVNode("div", null, [ 38273 createBaseVNode("figure", null, [ 38274 createBaseVNode("img", { 38275 src: $props.imageUrl, 38276 alt: $props.imageAlt 38277 }, null, 8, _hoisted_2$O), 38278 createBaseVNode("figcaption", null, [ 38279 createBaseVNode("p", _hoisted_3$G, toDisplayString$1($props.captionHeadline), 1), 38280 createBaseVNode("p", null, toDisplayString$1($props.captionText), 1) 38281 ]) 38282 ]) 38283 ]) 38284 ]); 38285} 38286const MagazineEditorialFigure = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$$]]); 38287const _sfc_main$10 = { 38288 name: "MagazineFilter", 38289 // components: {}, 38290 props: { 38291 label: { 38292 type: String, 38293 required: true 38294 }, 38295 isSelected: { 38296 type: Boolean, 38297 default: false 38298 } 38299 } 38300 // data() { 38301 // return {} 38302 // }, 38303 // computed: {} 38304 // methods: {}, 38305 // Livecycle hooks 38306 // created() {}, 38307 // mounted() {}, 38308 // updated() {}, 38309 // beforeDestroy() {}, 38310};
38311function _sfc_render$_(_ctx, _cache, $props, $setup, $data, $options) { 38312 return openBlock(), createElementBlock("a", { 38313 class: normalizeClass(["magazine-filter link-button", { "selected": $props.isSelected }]) 38314 }, toDisplayString$1($props.label), 3); 38315} 38316const MagazineFilter = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$_]]); 38317var __defProp = Object.defineProperty; 38318var __defProps = Object.defineProperties; 38319var __getOwnPropDescs = Object.getOwnPropertyDescriptors; 38320var __getOwnPropSymbols = Object.getOwnPropertySymbols; 38321var __hasOwnProp = Object.prototype.hasOwnProperty; 38322var __propIsEnum = Object.prototype.propertyIsEnumerable; 38323var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; 38324var __spreadValues = (a, b) => { 38325 for (var prop in b || (b = {})) 38326 if (__hasOwnProp.call(b, prop)) 38327 __defNormalProp(a, prop, b[prop]); 38328 if (__getOwnPropSymbols) 38329 for (var prop of __getOwnPropSymbols(b)) { 38330 if (__propIsEnum.call(b, prop)) 38331 __defNormalProp(a, prop, b[prop]); 38332 } 38333 return a; 38334}; 38335var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); 38336var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
38337var FUNC_ERROR_TEXT$1 = "Expected a function"; 38338var NAN$1 = 0 / 0; 38339var symbolTag$1 = "[object Symbol]"; 38340var reTrim$1 = /^\s+|\s+$/g; 38341var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i; 38342var reIsBinary$1 = /^0b[01]+$/i; 38343var reIsOctal$1 = /^0o[0-7]+$/i; 38344var freeParseInt$1 = parseInt; 38345var freeGlobal$1 = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; 38346var freeSelf$1 = typeof self == "object" && self && self.Object === Object && self; 38347var root$1 = freeGlobal$1 || freeSelf$1 || Function("return this")(); 38348var objectProto$1 = Object.prototype; 38349var objectToString$1 = objectProto$1.toString; 38350var nativeMax$1 = Math.max, nativeMin$1 = Math.min; 38351var now$1 = function() { 38352 return root$1.Date.now(); 38353}; 38354function debounce$1(func, wait, options2) { 38355 var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; 38356 if (typeof func != "function") { 38357 throw new TypeError(FUNC_ERROR_TEXT$1); 38358 } 38359 wait = toNumber$1(wait) || 0; 38360 if (isObject$1(options2)) { 38361 leading = !!options2.leading; 38362 maxing = "maxWait" in options2; 38363 maxWait = maxing ? nativeMax$1(toNumber$1(options2.maxWait) || 0, wait) : maxWait; 38364 trailing = "trailing" in options2 ? !!options2.trailing : trailing; 38365 } 38366 function invokeFunc(time) { 38367 var args = lastArgs, thisArg = lastThis; 38368 lastArgs = lastThis = void 0; 38369 lastInvokeTime = time; 38370 result = func.apply(thisArg, args); 38371 return result; 38372 } 38373 function leadingEdge(time) { 38374 lastInvokeTime = time; 38375 timerId = setTimeout(timerExpired, wait); 38376 return leading ? invokeFunc(time) : result; 38377 } 38378 function remainingWait(time) { 38379 var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall; 38380 return maxing ? nativeMin$1(result2, maxWait - timeSinceLastInvoke) : result2; 38381 } 38382 function shouldInvoke(time) { 38383 var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; 38384 return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; 38385 } 38386 function timerExpired() { 38387 var time = now$1(); 38388 if (shouldInvoke(time)) { 38389 return trailingEdge(time); 38390 } 38391 timerId = setTimeout(timerExpired, remainingWait(time)); 38392 } 38393 function trailingEdge(time) { 38394 timerId = void 0; 38395 if (trailing && lastArgs) { 38396 return invokeFunc(time); 38397 } 38398 lastArgs = lastThis = void 0; 38399 return result; 38400 } 38401 function cancel() { 38402 if (timerId !== void 0) { 38403 clearTimeout(timerId); 38404 } 38405 lastInvokeTime = 0; 38406 lastArgs = lastCallTime = lastThis = timerId = void 0; 38407 } 38408 function flush() { 38409 return timerId === void 0 ? result : trailingEdge(now$1()); 38410 } 38411 function debounced() { 38412 var time = now$1(), isInvoking = shouldInvoke(time); 38413 lastArgs = arguments; 38414 lastThis = this; 38415 lastCallTime = time; 38416 if (isInvoking) { 38417 if (timerId === void 0) { 38418 return leadingEdge(lastCallTime); 38419 } 38420 if (maxing) { 38421 timerId = setTimeout(timerExpired, wait); 38422 return invokeFunc(lastCallTime); 38423 } 38424 } 38425 if (timerId === void 0) { 38426 timerId = setTimeout(timerExpired, wait); 38427 } 38428 return result; 38429 } 38430 debounced.cancel = cancel; 38431 debounced.flush = flush; 38432 return debounced; 38433} 38434function isObject$1(value) { 38435 var type = typeof value; 38436 return !!value && (type == "object" || type == "function"); 38437} 38438function isObjectLike$1(value) { 38439 return !!value && typeof value == "object"; 38440} 38441function isSymbol$1(value) { 38442 return typeof value == "symbol" || isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1; 38443} 38444function toNumber$1(value) { 38445 if (typeof value == "number") { 38446 return value; 38447 } 38448 if (isSymbol$1(value)) { 38449 return NAN$1; 38450 } 38451 if (isObject$1(value)) { 38452 var other = typeof value.valueOf == "function" ? value.valueOf() : value; 38453 value = isObject$1(other) ? other + "" : other; 38454 } 38455 if (typeof value != "string") { 38456 return value === 0 ? value : +value; 38457 } 38458 value = value.replace(reTrim$1, ""); 38459 var isBinary = reIsBinary$1.test(value); 38460 return isBinary || reIsOctal$1.test(value) ? freeParseInt$1(value.slice(2), isBinary ? 2 : 8) : reIsBadHex$1.test(value) ? NAN$1 : +value; 38461} 38462var lodash_debounce = debounce$1;
38463var FUNC_ERROR_TEXT = "Expected a function"; 38464var NAN = 0 / 0; 38465var symbolTag = "[object Symbol]"; 38466var reTrim = /^\s+|\s+$/g; 38467var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 38468var reIsBinary = /^0b[01]+$/i; 38469var reIsOctal = /^0o[0-7]+$/i; 38470var freeParseInt = parseInt; 38471var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; 38472var freeSelf = typeof self == "object" && self && self.Object === Object && self; 38473var root = freeGlobal || freeSelf || Function("return this")(); 38474var objectProto = Object.prototype; 38475var objectToString = objectProto.toString; 38476var nativeMax = Math.max, nativeMin = Math.min; 38477var now = function() { 38478 return root.Date.now(); 38479}; 38480function debounce(func, wait, options2) { 38481 var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; 38482 if (typeof func != "function") { 38483 throw new TypeError(FUNC_ERROR_TEXT); 38484 } 38485 wait = toNumber(wait) || 0; 38486 if (isObject(options2)) { 38487 leading = !!options2.leading; 38488 maxing = "maxWait" in options2; 38489 maxWait = maxing ? nativeMax(toNumber(options2.maxWait) || 0, wait) : maxWait; 38490 trailing = "trailing" in options2 ? !!options2.trailing : trailing; 38491 } 38492 function invokeFunc(time) { 38493 var args = lastArgs, thisArg = lastThis; 38494 lastArgs = lastThis = void 0; 38495 lastInvokeTime = time; 38496 result = func.apply(thisArg, args); 38497 return result; 38498 } 38499 function leadingEdge(time) { 38500 lastInvokeTime = time; 38501 timerId = setTimeout(timerExpired, wait); 38502 return leading ? invokeFunc(time) : result; 38503 } 38504 function remainingWait(time) { 38505 var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall; 38506 return maxing ? nativeMin(result2, maxWait - timeSinceLastInvoke) : result2; 38507 } 38508 function shouldInvoke(time) { 38509 var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; 38510 return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; 38511 } 38512 function timerExpired() { 38513 var time = now(); 38514 if (shouldInvoke(time)) { 38515 return trailingEdge(time); 38516 } 38517 timerId = setTimeout(timerExpired, remainingWait(time)); 38518 } 38519 function trailingEdge(time) { 38520 timerId = void 0; 38521 if (trailing && lastArgs) { 38522 return invokeFunc(time); 38523 } 38524 lastArgs = lastThis = void 0; 38525 return result; 38526 } 38527 function cancel() { 38528 if (timerId !== void 0) { 38529 clearTimeout(timerId); 38530 } 38531 lastInvokeTime = 0; 38532 lastArgs = lastCallTime = lastThis = timerId = void 0; 38533 } 38534 function flush() { 38535 return timerId === void 0 ? result : trailingEdge(now()); 38536 } 38537 function debounced() { 38538 var time = now(), isInvoking = shouldInvoke(time); 38539 lastArgs = arguments; 38540 lastThis = this; 38541 lastCallTime = time; 38542 if (isInvoking) { 38543 if (timerId === void 0) { 38544 return leadingEdge(lastCallTime); 38545 } 38546 if (maxing) { 38547 timerId = setTimeout(timerExpired, wait); 38548 return invokeFunc(lastCallTime); 38549 } 38550 } 38551 if (timerId === void 0) { 38552 timerId = setTimeout(timerExpired, wait); 38553 } 38554 return result; 38555 } 38556 debounced.cancel = cancel; 38557 debounced.flush = flush; 38558 return debounced; 38559} 38560function throttle(func, wait, options2) { 38561 var leading = true, trailing = true; 38562 if (typeof func != "function") { 38563 throw new TypeError(FUNC_ERROR_TEXT); 38564 } 38565 if (isObject(options2)) { 38566 leading = "leading" in options2 ? !!options2.leading : leading; 38567 trailing = "trailing" in options2 ? !!options2.trailing : trailing; 38568 } 38569 return debounce(func, wait, { 38570 "leading": leading, 38571 "maxWait": wait, 38572 "trailing": trailing 38573 }); 38574} 38575function isObject(value) { 38576 var type = typeof value; 38577 return !!value && (type == "object" || type == "function"); 38578} 38579function isObjectLike(value) { 38580 return !!value && typeof value == "object"; 38581} 38582function isSymbol(value) { 38583 return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; 38584} 38585function toNumber(value) { 38586 if (typeof value == "number") { 38587 return value; 38588 } 38589 if (isSymbol(value)) { 38590 return NAN; 38591 } 38592 if (isObject(value)) { 38593 var other = typeof value.valueOf == "function" ? value.valueOf() : value; 38594 value = isObject(other) ? other + "" : other; 38595 } 38596 if (typeof value != "string") { 38597 return value === 0 ? value : +value; 38598 } 38599 value = value.replace(reTrim, ""); 38600 var isBinary = reIsBinary.test(value); 38601 return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; 38602} 38603var lodash_throttle = throttle; 38604const _hoisted_1$Z = ["src"]; 38605const __default__ = { 38606 inheritAttrs: false 38607}; 38608const _sfc_main$$ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__), { 38609 props: { 38610 src: { default: "" }, 38611 width: { default: "100%" }, 38612 height: { default: "auto" }, 38613 className: { default: "" }, 38614 zoomImgSrc: { default: "" }, 38615 zoomFactor: { default: 1.5 }, 38616 mgWidth: { default: 150 },
38617 mgHeight: { default: 150 }, 38618 mgBorderWidth: { default: 2 }, 38619 mgShape: { default: "circle" }, 38620 mgShowOverflow: { type: Boolean, default: true }, 38621 mgMouseOffsetX: { default: 0 }, 38622 mgMouseOffsetY: { default: 0 }, 38623 mgTouchOffsetX: { default: () => -50 }, 38624 mgTouchOffsetY: { default: () => -50 }, 38625 mgShow: { type: Boolean, default: true }, 38626 mgCornerBgColor: { default: "#fff" } 38627 }, 38628 emits: ["image:load"], 38629 setup(__props, { emit: emit2 }) { 38630 const img = ref(); 38631 let imgBounds = ref(new DOMRect()); 38632 let showZoom = ref(false); 38633 let mgOffsetX = ref(0); 38634 let mgOffsetY = ref(0); 38635 let relX = ref(0); 38636 let relY = ref(0); 38637 const mgClasses = computed(() => { 38638 let classes2 = "vue-magnifier__magnifying-glass"; 38639 if (showZoom.value) 38640 classes2 += " vue-magnifier__visible"; 38641 if (__props.mgShape === "circle") 38642 classes2 += " vue-magnifier__circle"; 38643 return classes2; 38644 }); 38645 const mgWrapperStyle = computed(() => ({ 38646 width: __props.width, 38647 height: __props.height, 38648 overflow: __props.mgShowOverflow ? "visible" : "hidden" 38649 })); 38650 const mgImgStyle = computed(() => ({ 38651 cursor: __props.mgShow ? "none" : "", 38652 width: "100%", 38653 height: "100%" 38654 })); 38655 const mgStyle = computed(() => ({ 38656 width: `${__props.mgWidth}px`, 38657 height: `${__props.mgHeight}px`, 38658 left: `calc(${relX.value * 100}% - ${__props.mgWidth / 2}px + ${mgOffsetX.value}px - ${__props.mgBorderWidth}px)`, 38659 top: `calc(${relY.value * 100}% - ${__props.mgHeight / 2}px + ${mgOffsetY.value}px - ${__props.mgBorderWidth}px)`, 38660 backgroundImage: `url(${__props.zoomImgSrc || __props.src})`, 38661 backgroundPosition: `calc(${relX.value * 100}% + ${__props.mgWidth / 2}px - ${relX.value * __props.mgWidth}px) calc(${relY.value * 100}% + ${__props.mgHeight / 2}px - ${relY.value * __props.mgWidth}px)`, 38662 backgroundSize: `${__props.zoomFactor * imgBounds.value.width}% ${__props.zoomFactor * imgBounds.value.height}%`, 38663 borderWidth: `${__props.mgBorderWidth}px`, 38664 backgroundColor: __props.mgCornerBgColor 38665 })); 38666 const calcImgBounds = () => { 38667 if (img.value) { 38668 imgBounds.value = img.value.getBoundingClientRect(); 38669 } 38670 }; 38671 const onImageLoad = (event) => { 38672 emit2("image:load", event); 38673 calcImgBounds(); 38674 }; 38675 const onMouseEnter = () => { 38676 calcImgBounds(); 38677 }; 38678 let onMouseMove = (e) => { 38679 if (imgBounds.value) { 38680 const target = e.target; 38681 mgOffsetX.value = __props.mgMouseOffsetX; 38682 mgOffsetY.value = __props.mgMouseOffsetY; 38683 relX.value = (e.clientX - imgBounds.value.left) / target.clientWidth; 38684 relY.value = (e.clientY - imgBounds.value.top) / target.clientHeight; 38685 showZoom.value = true; 38686 } 38687 }; 38688 const onMouseOut = () => { 38689 showZoom.value = false; 38690 }; 38691 const onTouchStart2 = () => { 38692 calcImgBounds(); 38693 }; 38694 let onTouchMove2 = (e) => { 38695 if (imgBounds.value) { 38696 const target = e.target; 38697 const relXLocal = (e.targetTouches[0].clientX - imgBounds.value.left) / target.clientWidth; 38698 const relYLocal = (e.targetTouches[0].clientY - imgBounds.value.top) / target.clientHeight; 38699 if (relXLocal >= 0 && relYLocal >= 0 && relXLocal <= 1 && relYLocal <= 1) { 38700 mgOffsetX.value = __props.mgTouchOffsetX; 38701 mgOffsetY.value = __props.mgTouchOffsetY; 38702 relX.value = relXLocal; 38703 relY.value = relYLocal; 38704 showZoom.value = true; 38705 } else { 38706 showZoom.value = false; 38707 } 38708 } 38709 }; 38710 const onTouchEnd2 = () => { 38711 showZoom.value = false; 38712 }; 38713 const calcImgBoundsDebounced = lodash_debounce(calcImgBounds, 200); 38714 onMouseMove = lodash_throttle(onMouseMove, 20, { trailing: false }); 38715 onTouchMove2 = lodash_throttle(onTouchMove2, 20, { trailing: false }); 38716 const registerEventListeners = () => { 38717 window.addEventListener("resize", calcImgBoundsDebounced); 38718 window.addEventListener("scroll", calcImgBoundsDebounced, true); 38719 }; 38720 const unRegisterEventListeners = () => { 38721 window.removeEventListener("resize", calcImgBoundsDebounced); 38722 window.removeEventListener("scroll", calcImgBoundsDebounced, true); 38723 }; 38724 onMounted(() => { 38725 registerEventListeners(); 38726 }); 38727 onUnmounted(() => { 38728 unRegisterEventListeners(); 38729 }); 38730 return (_ctx, _cache) => { 38731 return openBlock(), createElementBlock("div", { 38732 class: normalizeClass(`vue-magnifier__magnifier ${__props.className}`), 38733 style: normalizeStyle(unref(mgWrapperStyle)) 38734 }, [ 38735 createBaseVNode("img", mergeProps({ 38736 ref_key: "img", 38737 ref: img, 38738 src: __props.src 38739 }, _ctx.$attrs, { 38740 class: "vue-magnifier__magnifier-image", 38741 style: unref(mgImgStyle), 38742 onLoad: _cache[0] || (_cache[0] = ($event) => onImageLoad($event)), 38743 onMouseenter: _cache[1] || (_cache[1] = ($event) => onMouseEnter()), 38744 onMousemove: _cache[2] || (_cache[2] = ($event) => unref(onMouseMove)($event)), 38745 onMouseout: _cache[3] || (_cache[3] = ($event) => onMouseOut()), 38746 onTouchstart: _cache[4] || (_cache[4] = withModifiers(($event) => onTouchStart2(), ["prevent"])), 38747 onTouchmove: _cache[5] || (_cache[5] = withModifiers(($event) => unref(onTouchMove2)($event), ["prevent"])), 38748 onTouchend: _cache[6] || (_cache[6] = ($event) => onTouchEnd2()) 38749 }), null, 16, _hoisted_1$Z), 38750 imgBounds.value && __props.mgShow ? (openBlock(), createElementBlock("div", { 38751 key: 0, 38752 class: normalizeClass(unref(mgClasses)), 38753 style: normalizeStyle(unref(mgStyle)) 38754 }, null, 6)) : createCommentVNode("", true)
38755 ], 6); 38756 }; 38757 } 38758})); 38759_sfc_main$$.install = (app2) => { 38760 app2.component("VueMagnifier", _sfc_main$$); 38761}; 38762const _sfc_main$_ = { 38763 name: "ImageMagnify", 38764 components: { VueMagnifier: _sfc_main$$ }, 38765 props: { 38766 src: { 38767 type: String, 38768 required: true 38769 }, 38770 alt: { 38771 type: String, 38772 required: true 38773 }, 38774 imageWidth: { 38775 type: Number, 38776 default: 1e3 38777 }, 38778 imageHeight: { 38779 type: Number, 38780 default: 1e3 38781 } 38782 }, 38783 data() { 38784 return { 38785 magnifierWidth: "100%", 38786 magnifierHeight: "100%", 38787 imgWidth: 0, 38788 imgHeight: 0, 38789 loaded: false 38790 }; 38791 }, 38792 computed: { 38793 ...mapState(ENVIRONMENT_TYPES.NAME, { 38794 windowWidth: ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH 38795 }) 38796 }, 38797 watch: { 38798 windowWidth() { 38799 this.actualizeSize(); 38800 } 38801 }, 38802 mounted() { 38803 this.actualizeSize(); 38804 }, 38805 methods: { 38806 actualizeSize: function() { 38807 if (!this.$refs.wrapper) return; 38808 const widthEl = this.$refs.wrapper.offsetWidth; 38809 const heightEl = this.$refs.wrapper.offsetHeight; 38810 const ratio = Math.min(widthEl / this.imageWidth, heightEl / this.imageHeight); 38811 this.magnifierWidth = `${this.imageWidth * ratio}px`; 38812 this.magnifierHeight = `${this.imageHeight * ratio}px`; 38813 this.loaded = true; 38814 } 38815 } 38816}; 38817const _hoisted_1$Y = { 38818 ref: "wrapper", 38819 class: "image-magnify-wrapper" 38820}; 38821function _sfc_render$Z(_ctx, _cache, $props, $setup, $data, $options) { 38822 const _component_VueMagnifier = resolveComponent("VueMagnifier"); 38823 return openBlock(), createElementBlock("div", _hoisted_1$Y, [ 38824 createVNode(_component_VueMagnifier, { 38825 src: $props.src, 38826 alt: $props.alt, 38827 "mg-shape": "circle", 38828 loading: "lazy", 38829 "zoom-factor": 1.2, 38830 "mg-touch-offset-x": 0, 38831 "mg-touch-offset-y": 0, 38832 width: $data.magnifierWidth, 38833 height: $data.magnifierHeight, 38834 "onImage:load": $options.actualizeSize 38835 }, null, 8, ["src", "alt", "width", "height", "onImage:load"]) 38836 ], 512); 38837} 38838const ImageMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$Z]]); 38839const _sfc_main$Z = { 38840 name: "CityMapPagesList", 38841 // components: {}, 38842 props: { 38843 // list content 38844 pages: { 38845 type: Array, 38846 required: true, 38847 default: () => [] 38848 } 38849 } 38850 // data() { 38851 // return {}; 38852 // }, 38853 // computed: {}, 38854 // methods: {}, 38855 // watch() {}, 38856 // Livecycle hooks 38857 // created() {}, 38858 // mounted() {}, 38859 // updated() {}, 38860 // beforeDestroy() {}, 38861}; 38862const _hoisted_1$X = { class: "citymap-pages-list" }; 38863const _hoisted_2$N = { class: "citymap-parent-page-title" }; 38864const _hoisted_3$F = { class: "citymap-pages" }; 38865const _hoisted_4$t = ["href"]; 38866const _hoisted_5$j = { class: "citymap-page-number" }; 38867function _sfc_render$Y(_ctx, _cache, $props, $setup, $data, $options) { 38868 return openBlock(), createElementBlock("div", _hoisted_1$X, [ 38869 (openBlock(true), createElementBlock(Fragment, null, renderList($props.pages, (page, pageIndex) => { 38870 return openBlock(), createElementBlock("div", { 38871 key: pageIndex, 38872 class: "citymap-parent-pages" 38873 }, [ 38874 createBaseVNode("h3", _hoisted_2$N, toDisplayString$1(page.title), 1), 38875 createBaseVNode("div", _hoisted_3$F, [ 38876 (openBlock(true), createElementBlock(Fragment, null, renderList(page.citymapPages, (citymapPage, citymapPageIndex) => { 38877 return openBlock(), createElementBlock("a", { 38878 key: `${citymapPage.title}-${citymapPageIndex}`, 38879 href: citymapPage.url, 38880 target: "_blank" 38881 }, [ 38882 createBaseVNode("span", _hoisted_5$j, toDisplayString$1(citymapPage.number), 1), 38883 createTextVNode(" " + toDisplayString$1(citymapPage.title), 1) 38884 ], 8, _hoisted_4$t); 38885 }), 128)) 38886 ]) 38887 ]); 38888 }), 128)) 38889 ]); 38890} 38891const CitymapPagesList = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$Y]]); 38892let $form; 38893const _sfc_main$Y = { 38894 name: "RecaptchaField", 38895 $form, 38896 components: { 38897 ConsentInline 38898 }, 38899 props: { 38900 captchaSiteKey: { 38901 type: String, 38902 default: "" 38903 } 38904 }, 38905 data() { 38906 return { 38907 token: "initial", 38908 error: false, 38909 singleConsent: false 38910 }; 38911 }, 38912 computed: { 38913 ...mapState(CONSENT_TYPES.NAME, { 38914 consentRecaptcha: CONSENT_TYPES.state.CONSENT_RECAPTCHA 38915 }), 38916 hasConsent() { 38917 if (this.singleConsent === true) return true; 38918 if (this.consentRecaptcha) return true; 38919 return false;
38920 } 38921 }, 38922 watch: { 38923 hasConsent(hasConsentNew) { 38924 if (hasConsentNew === true && !(this.captchaSiteKey.length === 0)) { 38925 this.embedScript(); 38926 } 38927 } 38928 }, 38929 mounted() { 38930 this.$form = this.$refs.captchaHiddenInput.closest("form"); 38931 this.$form.addEventListener("submit", (e) => this.onSubmit(e)); 38932 if (this.hasConsent && !(this.captchaSiteKey.length === 0)) { 38933 this.embedScript(); 38934 } 38935 }, 38936 methods: { 38937 ...mapMutations(CONSENT_TYPES.NAME, { 38938 consentSetRecaptcha: CONSENT_TYPES.mutations.CONSENT_SET_RECAPTCHA 38939 }), 38940 embedScript() { 38941 nextTick$1(() => { 38942 if (window && window.grecaptcha) return; 38943 let recaptchaScript = document.createElement("script"); 38944 recaptchaScript.setAttribute("src", "https://www.google.com/recaptcha/api.js?render=" + this.captchaSiteKey); 38945 document.head.appendChild(recaptchaScript); 38946 }); 38947 }, 38948 setConsent() { 38949 this.consentSetRecaptcha({ 38950 [CONSENT_TYPES.state.CONSENT_RECAPTCHA]: true 38951 }); 38952 }, 38953 async setToken() { 38954 try { 38955 this.error = false; 38956 this.token = await this.execute(); 38957 } catch (e) { 38958 this.error = true; 38959 throw new Error("Failed" + e); 38960 } 38961 }, 38962 async onSubmit(e) { 38963 e.preventDefault(); 38964 if (this.hasConsent) { 38965 await this.setToken(); 38966 this.$form.submit(); 38967 } else { 38968 const consentInline = document.getElementById("consentInline"); 38969 const scrollHeight = consentInline.offsetTop; 38970 if (scrollHeight) { 38971 window.scrollTo({ 38972 top: scrollHeight, 38973 behavior: "smooth" 38974 }); 38975 } 38976 } 38977 }, 38978 async execute() { 38979 return await window.grecaptcha.execute(this.captchaSiteKey, { action: "submit" }); 38980 } 38981 } 38982}; 38983const _hoisted_1$W = { class: "recaptcha-field" }; 38984const _hoisted_2$M = { class: "flex" }; 38985const _hoisted_3$E = ["value"]; 38986const _hoisted_4$s = { key: 1 }; 38987function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) { 38988 const _component_consent_inline = resolveComponent("consent-inline"); 38989 return openBlock(), createElementBlock("div", _hoisted_1$W, [ 38990 !$options.hasConsent ? (openBlock(), createBlock(_component_consent_inline, { 38991 key: 0, 38992 id: "consentInline", 38993 "service-name": { service: _ctx.$t("cookieConsent.config.recaptcha") }, 38994 onSetSingleConsent: _cache[0] || (_cache[0] = ($event) => $data.singleConsent = true), 38995 onSetAlwaysConsent: $options.setConsent 38996 }, null, 8, ["service-name", "onSetAlwaysConsent"])) : createCommentVNode("", true), 38997 createBaseVNode("div", _hoisted_2$M, [ 38998 createBaseVNode("input", { 38999 id: "reCaptcha", 39000 ref: "captchaHiddenInput", 39001 type: "hidden", 39002 value: $data.token, 39003 name: "reCaptcha" 39004 }, null, 8, _hoisted_3$E) 39005 ]), 39006 $data.error ? (openBlock(), createElementBlock("div", _hoisted_4$s, toDisplayString$1(_ctx.$t("captcha.error.text")), 1)) : createCommentVNode("", true) 39007 ]); 39008} 39009const RecaptchaField = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$X]]); 39010const _sfc_main$X = { 39011 name: "SliderScreenWrapper", 39012 props: { 39013 headline: { 39014 type: String, 39015 default: "Headline" 39016 }, 39017 footerline: { 39018 type: String, 39019 default: "Footerline" 39020 }, 39021 hasBgHighlight: { 39022 type: Boolean, 39023 default: false 39024 }, 39025 isStartPage: { 39026 type: Boolean, 39027 default: false 39028 }, 39029 isImageOnlyPage: { 39030 type: Boolean, 39031 default: false 39032 } 39033 } 39034}; 39035const _hoisted_1$V = { 39036 key: 0, 39037 class: "logo" 39038}; 39039const _hoisted_2$L = { 39040 key: 1, 39041 class: "slider-screen-content" 39042}; 39043function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) { 39044 return openBlock(), createElementBlock("div", { 39045 class: normalizeClass(["slider-screen-wrapper", { 39046 "-bg-highlight": $props.hasBgHighlight, 39047 "-start": $props.isStartPage, 39048 "-image-only": $props.isImageOnlyPage 39049 }]) 39050 }, [ 39051 $props.isStartPage ? (openBlock(), createElementBlock("div", _hoisted_1$V, _cache[0] || (_cache[0] = [ 39052 createBaseVNode("img", { 39053 src: `assets/img/Logo_Zwangsarbeit_black.svg`, 39054 alt: "Logo Museum für Zwangsarbeit" 39055 }, null, -1) 39056 ]))) : createCommentVNode("", true), 39057 !$props.isStartPage ? (openBlock(), createElementBlock("div", _hoisted_2$L, [ 39058 renderSlot(_ctx.$slots, "default") 39059 ])) : createCommentVNode("", true), 39060 createBaseVNode("footer", null, toDisplayString$1($props.footerline), 1) 39061 ], 2); 39062} 39063const SliderScreenWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$W]]); 39064const _sfc_main$W = { 39065 name: "LateEmbed", 39066 props: { 39067 dataSrc: { 39068 type: String, 39069 default: null 39070 } 39071 }, 39072 data() { 39073 return { 39074 isMounted: false 39075 }; 39076 }, 39077 mounted() { 39078 this.isMounted = true; 39079 } 39080}; 39081function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) { 39082 return openBlock(), createBlock(resolveDynamicComponent($data.isMounted ? "script" : "span"), { src: $props.dataSrc }, { 39083 default: withCtx(() => [ 39084 renderSlot(_ctx.$slots, "default") 39085 ]), 39086 _: 3 39087 }, 8, ["src"]); 39088} 39089const LateEmbed = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$V]]); 39090const _sfc_main$V = { 39091 name: "EventList", 39092 props: { 39093 // list content type 39094 isArchive: { 39095 type: Boolean, 39096 default: false 39097 }, 39098 // list content 39099 events: { 39100 type: Array, 39101 required: true, 39102 default: () => [] 39103 } 39104 } 39105 // data() { 39106 // return {}; 39107 // }, 39108 // computed: {}, 39109 // methods: {}, 39110 // watch() {}, 39111 // Livecycle hooks 39112 // created() {}, 39113 // mounted() {}, 39114 // updated() {}, 39115 // beforeDestroy() {}, 39116}; 39117const _hoisted_1$U = { class: "event-list" }; 39118const _hoisted_2$K = ["href"];
39119const _hoisted_3$D = { class: "event-image columns large-4" }; 39120const _hoisted_4$r = ["src", "alt"]; 39121const _hoisted_5$i = { class: "event-content columns row large-8" }; 39122const _hoisted_6$f = { 39123 key: 0, 39124 class: "columns large-12 event-meta" 39125}; 39126const _hoisted_7$e = { 39127 key: 0, 39128 class: "event-info" 39129}; 39130const _hoisted_8$a = { class: "event-date" }; 39131const _hoisted_9$8 = { key: 0 }; 39132const _hoisted_10$5 = { class: "event-categories" }; 39133const _hoisted_11$5 = { class: "event-location" }; 39134const _hoisted_12$5 = { key: 0 }; 39135const _hoisted_13$5 = { 39136 key: 0, 39137 class: "event-category" 39138}; 39139const _hoisted_14$5 = { class: "columns large-12 event-title" }; 39140const _hoisted_15$4 = { class: "title-prefix" }; 39141const _hoisted_16$4 = { class: "columns large-12" }; 39142const _hoisted_17$3 = { key: 0 }; 39143const _hoisted_18$3 = { class: "columns large-12 event-link" }; 39144function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) { 39145 return openBlock(), createElementBlock("div", _hoisted_1$U, [ 39146 (openBlock(true), createElementBlock(Fragment, null, renderList($props.events, (event, index2) => { 39147 return openBlock(), createElementBlock("a", { 39148 key: index2, 39149 href: event.url, 39150 class: normalizeClass(["row event", { 39151 "archive": $props.isArchive 39152 }]) 39153 }, [ 39154 createBaseVNode("div", _hoisted_3$D, [ 39155 event.image ? (openBlock(), createElementBlock("img", { 39156 key: 0, 39157 class: "event-image columns large-12", 39158 src: event.image.src, 39159 alt: event.image.alt 39160 }, null, 8, _hoisted_4$r)) : createCommentVNode("", true) 39161 ]), 39162 createBaseVNode("div", _hoisted_5$i, [ 39163 event.category || event.info ? (openBlock(), createElementBlock("div", _hoisted_6$f, [ 39164 event.info ? (openBlock(), createElementBlock("span", _hoisted_7$e, toDisplayString$1(event.info), 1)) : createCommentVNode("", true), 39165 createBaseVNode("div", _hoisted_8$a, [ 39166 event.date ? (openBlock(), createElementBlock("span", _hoisted_9$8, toDisplayString$1(event.date), 1)) : createCommentVNode("", true) 39167 ]), 39168 createBaseVNode("div", _hoisted_10$5, [ 39169 createBaseVNode("div", _hoisted_11$5, [ 39170 event.location ? (openBlock(), createElementBlock("span", _hoisted_12$5, toDisplayString$1(event.location), 1)) : createCommentVNode("", true) 39171 ]), 39172 event.category ? (openBlock(), createElementBlock("span", _hoisted_13$5, toDisplayString$1(event.category), 1)) : createCommentVNode("", true) 39173 ]) 39174 ])) : createCommentVNode("", true), 39175 createBaseVNode("div", _hoisted_14$5, [ 39176 createBaseVNode("span", _hoisted_15$4, toDisplayString$1(event.category), 1), 39177 createBaseVNode("h3", null, toDisplayString$1(event.title), 1) 39178 ]), 39179 createBaseVNode("div", _hoisted_16$4, [ 39180 event.shortDescription ? (openBlock(), createElementBlock("span", _hoisted_17$3, toDisplayString$1(event.shortDescription), 1)) : createCommentVNode("", true) 39181 ]), 39182 createBaseVNode("div", _hoisted_18$3, toDisplayString$1(_ctx.Details), 1) 39183 ]) 39184 ], 10, _hoisted_2$K); 39185 }), 128)) 39186 ]); 39187} 39188const EventList = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$U]]); 39189const _sfc_main$U = { 39190 name: "FilterSection", 39191 // components: {}, 39192 props: { 39193 initiallyOpen: { 39194 type: Boolean, 39195 default: false 39196 } 39197 }, 39198 data() { 39199 return { 39200 isOpen: this.initiallyOpen, 39201 contentId: `filter-section-${Math.random().toString(36).slice(2, 11)}` 39202 }; 39203 }, 39204 computed: {}, 39205 // watch: {}, 39206 // Livecycle hooks 39207 // created() {}, 39208 mounted() { 39209 }, 39210 // updated() {}, 39211 // beforeUnmount() {}, 39212 methods: { 39213 toggle() { 39214 this.isOpen = !this.isOpen; 39215 } 39216 } 39217}; 39218const _hoisted_1$T = { class: "filter-section" }; 39219const _hoisted_2$J = { class: "filter-section-header" }; 39220const _hoisted_3$C = ["aria-expanded", "aria-controls"]; 39221const _hoisted_4$q = ["id", "aria-hidden"]; 39222function _sfc_render$T(_ctx, _cache, $props, $setup, $data, $options) { 39223 return openBlock(), createElementBlock("div", _hoisted_1$T, [ 39224 createBaseVNode("div", _hoisted_2$J, [ 39225 createBaseVNode("button", { 39226 class: normalizeClass(["link-button iconafter-dach", { "is-open": $data.isOpen }]), 39227 type: "button", 39228 "aria-expanded": $data.isOpen.toString(), 39229 "aria-controls": $data.contentId, 39230 onClick: _cache[0] || (_cache[0] = (...args) => $options.toggle && $options.toggle(...args)) 39231 }, [ 39232 renderSlot(_ctx.$slots, "button", {}, () => [ 39233 createTextVNode(toDisplayString$1(_ctx.$t("buchenwald-base.events.filter.collapsableButton.label")), 1
39233) 39234 ]) 39235 ], 10, _hoisted_3$C), 39236 renderSlot(_ctx.$slots, "filter-display") 39237 ]), 39238 createBaseVNode("div", { 39239 id: $data.contentId, 39240 class: normalizeClass(["filter-section-wrapper", { "is-open": $data.isOpen }]), 39241 "aria-hidden": (!$data.isOpen).toString() 39242 }, [ 39243 renderSlot(_ctx.$slots, "content") 39244 ], 10, _hoisted_4$q) 39245 ]); 39246} 39247const FilterSection = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$T]]); 39248const _sfc_main$T = { 39249 name: "TeaserChronology", 39250 props: { 39251 title: { 39252 type: String, 39253 default: "" 39254 }, 39255 subTitle: { 39256 type: String, 39257 default: "" 39258 }, 39259 category: { 39260 type: String, 39261 default: "" 39262 }, 39263 summary: { 39264 type: String, 39265 required: true 39266 }, 39267 url: { 39268 type: String, 39269 required: true 39270 }, 39271 linkText: { 39272 type: String, 39273 default: "" 39274 }, 39275 imgSrc: { 39276 type: String, 39277 default: "" 39278 }, 39279 imgAlt: { 39280 type: String, 39281 default: "" 39282 }, 39283 imgWidth: { 39284 type: Number, 39285 default: 640 39286 }, 39287 imgHeight: { 39288 type: Number, 39289 default: 400 39290 }, 39291 bgColorName: { 39292 type: String, 39293 default: "white" 39294 }, 39295 linkStyleButton: { 39296 type: Boolean, 39297 default: false 39298 }, 39299 hTag: { 39300 type: String, 39301 default: "h3" 39302 }, 39303 isExtern: { 39304 type: Boolean, 39305 default: false 39306 }, 39307 isMagazineArticle: { 39308 type: Boolean, 39309 default: false 39310 } 39311 }, 39312 computed: { 39313 element() { 39314 return this.url ? "a" : "div"; 39315 }, 39316 bgColorClass() { 39317 if (empty(this.bgColorName)) return ""; 39318 return `-${this.bgColorName}`; 39319 } 39320 } 39321}; 39322const _hoisted_1$S = { key: 0 }; 39323const _hoisted_2$I = { 39324 key: 0, 39325 class: "article-info" 39326}; 39327const _hoisted_3$B = ["src", "alt", "height", "width"]; 39328const _hoisted_4$p = { class: "teaser-body" }; 39329const _hoisted_5$h = { 39330 key: 0, 39331 class: "sub-title" 39332}; 39333const _hoisted_6$e = { key: 1 }; 39334const _hoisted_7$d = { class: "title" }; 39335const _hoisted_8$9 = ["innerHTML"]; 39336const _hoisted_9$7 = { 39337 key: 0, 39338 class: "iconafter-link-extern" 39339}; 39340function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) { 39341 return openBlock(), createBlock(resolveDynamicComponent($options.element), { 39342 href: $props.url, 39343 class: normalizeClass(["teaser-chronology", { 39344 [$options.bgColorClass]: true, 39345 "has-image": !!$props.imgSrc 39346 }]), 39347 target: $props.isExtern ? "_blank" : null, 39348 rel: $props.isExtern ? "noopener" : null 39349 }, { 39350 default: withCtx(() => [ 39351 $props.imgSrc ? (openBlock(), createElementBlock("figure", _hoisted_1$S, [ 39352 $props.isMagazineArticle ? (openBlock(), createElementBlock("span", _hoisted_2$I, " Online-Magazin ")) : createCommentVNode("", true), 39353 createBaseVNode("img", { 39354 src: $props.imgSrc, 39355 alt: $props.imgAlt ? $props.imgAlt : $props.title, 39356 height: $props.imgHeight, 39357 width: $props.imgWidth, 39358 loading: "lazy" 39359 }, null, 8, _hoisted_3$B) 39360 ])) : createCommentVNode("", true), 39361 createBaseVNode("div", _hoisted_4$p, [ 39362 $props.subTitle ? (openBlock(), createElementBlock("span", _hoisted_5$h, [ 39363 createBaseVNode("span", null, toDisplayString$1($props.subTitle), 1) 39364 ])) : createCommentVNode("", true), 39365 $props.title ? (openBlock(), createElementBlock("h3", _hoisted_6$e, [ 39366 createBaseVNode("span", _hoisted_7$d, toDisplayString$1($props.title), 1) 39367 ])) : createCommentVNode("", true), 39368 $props.summary ? (openBlock(), createElementBlock("p", { 39369 key: 2, 39370 innerHTML: $props.summary 39371 }, null, 8, _hoisted_8$9)) : createCommentVNode("", true), 39372 $props.linkText ? (openBlock(), createElementBlock("span", { 39373 key: 3, 39374 class: normalizeClass({ 39375 "link-button": $props.linkStyleButton, 39376 "link-text": !$props.linkStyleButton 39377 }) 39378 }, [ 39379 createTextVNode(toDisplayString$1($props.linkText), 1), 39380 $props.isExtern ? (openBlock(), createElementBlock("i", _hoisted_9$7, toDisplayString$1(" "))) : createCommentVNode("", true) 39381 ], 2)) : createCommentVNode("", true) 39382 ]) 39383 ]), 39384 _: 1 39385 }, 8, ["href", "class", "target", "rel"]); 39386} 39387const TeaserChronology = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$S]]); 39388const _hoisted_1$R = { class: "chronology-wrapper" }; 39389const _hoisted_2$H = { class: "years" }; 39390const _hoisted_3$A = ["href"]; 39391const _sfc_main$S = { 39392 __name: "index", 39393 setup(__props) { 39394 const years = ref([]); 39395 const activeYear = ref(years.value[0] || ""); 39396 let observer; 39397 let fadeInObserver;
39398 let chronologyWrapperElements = []; 39399 const updateProgress2 = () => { 39400 chronologyWrapperElements.forEach((section) => { 39401 const rect = section.getBoundingClientRect(); 39402 const progressBar = section.querySelector(".progress-bar"); 39403 if (!progressBar) return; 39404 const windowHeight = window.innerHeight; 39405 const elementHeight = rect.height; 39406 const elementTop = rect.top; 39407 let progress = (windowHeight / 2 - elementTop) / elementHeight; 39408 progress = Math.max(0, Math.min(1, progress)) * 100; 39409 progressBar.style.height = `${progress}%`; 39410 }); 39411 }; 39412 onMounted(() => { 39413 chronologyWrapperElements = document.querySelectorAll(".chronology-year"); 39414 const yearIds = []; 39415 chronologyWrapperElements.forEach((element) => { 39416 const id = element.getAttribute("id"); 39417 if (id) { 39418 yearIds.push(id); 39419 } 39420 }); 39421 years.value = yearIds; 39422 observer = new IntersectionObserver((entries) => { 39423 entries.forEach((entry) => { 39424 if (entry.isIntersecting) { 39425 activeYear.value = entry.target.getAttribute("id"); 39426 } 39427 }); 39428 }, { threshold: 0.5 }); 39429 chronologyWrapperElements.forEach((element) => { 39430 observer.observe(element); 39431 }); 39432 const teaserElements = document.querySelectorAll(".teaser-chronology"); 39433 fadeInObserver = new IntersectionObserver((entries) => { 39434 entries.forEach((entry) => { 39435 if (entry.isIntersecting) { 39436 entry.target.classList.add("is-visible"); 39437 fadeInObserver.unobserve(entry.target); 39438 } 39439 }); 39440 }, { threshold: 0.5 }); 39441 teaserElements.forEach((element) => { 39442 fadeInObserver.observe(element); 39443 }); 39444 window.addEventListener("scroll", updateProgress2); 39445 updateProgress2(); 39446 }); 39447 onUnmounted(() => { 39448 observer.disconnect(); 39449 fadeInObserver.disconnect(); 39450 window.removeEventListener("scroll", updateProgress2); 39451 }); 39452 return (_ctx, _cache) => { 39453 return openBlock(), createElementBlock("div", _hoisted_1$R, [ 39454 createBaseVNode("ul", _hoisted_2$H, [ 39455 (openBlock(true), createElementBlock(Fragment, null, renderList(years.value, (year) => { 39456 return openBlock(), createElementBlock("li", { key: year }, [ 39457 createBaseVNode("a", { 39458 href: "#" + year, 39459 class: normalizeClass({ active: activeYear.value === year }) 39460 }, toDisplayString$1(year), 11, _hoisted_3$A) 39461 ]); 39462 }), 128)) 39463 ]), 39464 renderSlot(_ctx.$slots, "default") 39465 ]); 39466 }; 39467 } 39468}; 39469const _sfc_main$R = {}; 39470const _hoisted_1$Q = { class: "chronology-year" }; 39471const _hoisted_2$G = { class: "year-content" }; 39472function _sfc_render$R(_ctx, _cache) { 39473 return openBlock(), createElementBlock("div", _hoisted_1$Q, [ 39474 _cache[0] || (_cache[0] = createBaseVNode("div", { class: "vertical-line" }, [ 39475 createBaseVNode("div", { class: "progress-bar" }) 39476 ], -1)), 39477 createBaseVNode("h2", null, [ 39478 renderSlot(_ctx.$slots, "year") 39479 ]), 39480 createBaseVNode("div", _hoisted_2$G, [ 39481 renderSlot(_ctx.$slots, "default") 39482 ]) 39483 ]); 39484} 39485const ChronologyYear = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["render", _sfc_render$R]]); 39486const _sfc_main$Q = { 39487 name: "DetailAboutBox" 39488}; 39489const _hoisted_1$P = { class: "content-block row" }; 39490const _hoisted_2$F = { class: "columns" }; 39491const _hoisted_3$z = { class: "detail-about-box" }; 39492function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) { 39493 return openBlock(), createElementBlock("div", _hoisted_1$P, [ 39494 createBaseVNode("div", _hoisted_2$F, [ 39495 createBaseVNode("div", _hoisted_3$z, [ 39496 _cache[0] || (_cache[0] = createBaseVNode("img", { 39497 src: "/assets/img/swoosh_sand.jpg", 39498 role: "decoration" 39499 }, null, -1)), 39500 createBaseVNode("p", null, [ 39501 renderSlot(_ctx.$slots, "default") 39502 ]) 39503 ]) 39504 ]) 39505 ]); 39506} 39507const DetailAboutBox = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$Q]]); 39508function Keyboard(_ref) { 39509 let { 39510 swiper, 39511 extendParams, 39512 on, 39513 emit: emit2 39514 } = _ref; 39515 const document2 = getDocument(); 39516 const window2 = getWindow(); 39517 swiper.keyboard = { 39518 enabled: false 39519 }; 39520 extendParams({ 39521 keyboard: { 39522 enabled: false, 39523 onlyInViewport: true, 39524 pageUpDown: true 39525 } 39526 }); 39527 function handle(event) { 39528 if (!swiper.enabled) return; 39529 const { 39530 rtlTranslate: rtl 39531 } = swiper; 39532 let e = event; 39533 if (e.originalEvent) e = e.originalEvent;
39534 const kc = e.keyCode || e.charCode; 39535 const pageUpDown = swiper.params.keyboard.pageUpDown; 39536 const isPageUp = pageUpDown && kc === 33; 39537 const isPageDown = pageUpDown && kc === 34; 39538 const isArrowLeft = kc === 37; 39539 const isArrowRight = kc === 39; 39540 const isArrowUp = kc === 38; 39541 const isArrowDown = kc === 40; 39542 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 39543 return false; 39544 } 39545 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 39546 return false; 39547 } 39548 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 39549 return void 0; 39550 } 39551 if (document2.activeElement && document2.activeElement.nodeName && (document2.activeElement.nodeName.toLowerCase() === "input" || document2.activeElement.nodeName.toLowerCase() === "textarea")) { 39552 return void 0; 39553 } 39554 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 39555 let inView = false; 39556 if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { 39557 return void 0; 39558 } 39559 const el = swiper.el; 39560 const swiperWidth = el.clientWidth; 39561 const swiperHeight = el.clientHeight; 39562 const windowWidth = window2.innerWidth; 39563 const windowHeight = window2.innerHeight; 39564 const swiperOffset = elementOffset(el); 39565 if (rtl) swiperOffset.left -= el.scrollLeft; 39566 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 39567 for (let i = 0; i < swiperCoord.length; i += 1) { 39568 const point = swiperCoord[i]; 39569 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 39570 if (point[0] === 0 && point[1] === 0) continue; 39571 inView = true; 39572 } 39573 } 39574 if (!inView) return void 0; 39575 } 39576 if (swiper.isHorizontal()) { 39577 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 39578 if (e.preventDefault) e.preventDefault(); 39579 else e.returnValue = false; 39580 } 39581 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 39582 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 39583 } else { 39584 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 39585 if (e.preventDefault) e.preventDefault(); 39586 else e.returnValue = false; 39587 } 39588 if (isPageDown || isArrowDown) swiper.slideNext(); 39589 if (isPageUp || isArrowUp) swiper.slidePrev(); 39590 } 39591 emit2("keyPress", kc); 39592 return void 0; 39593 } 39594 function enable() { 39595 if (swiper.keyboard.enabled) return; 39596 document2.addEventListener("keydown", handle); 39597 swiper.keyboard.enabled = true; 39598 } 39599 function disable() { 39600 if (!swiper.keyboard.enabled) return; 39601 document2.removeEventListener("keydown", handle); 39602 swiper.keyboard.enabled = false; 39603 } 39604 on("init", () => { 39605 if (swiper.params.keyboard.enabled) { 39606 enable(); 39607 } 39608 }); 39609 on("destroy", () => { 39610 if (swiper.keyboard.enabled) { 39611 disable(); 39612 } 39613 }); 39614 Object.assign(swiper.keyboard, { 39615 enable, 39616 disable 39617 }); 39618} 39619function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 39620 if (swiper.params.createElements) { 39621 Object.keys(checkProps).forEach((key) => { 39622 if (!params[key] && params.auto === true) { 39623 let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; 39624 if (!element) { 39625 element = createElement("div", checkProps[key]); 39626 element.className = checkProps[key]; 39627 swiper.el.append(element); 39628 } 39629 params[key] = element; 39630 originalParams[key] = element; 39631 } 39632 }); 39633 } 39634 return params; 39635} 39636function Navigation(_ref) { 39637 let { 39638 swiper, 39639 extendParams, 39640 on, 39641 emit: emit2 39642 } = _ref; 39643 extendParams({ 39644 navigation: { 39645 nextEl: null, 39646 prevEl: null, 39647 hideOnClick: false, 39648 disabledClass: "swiper-button-disabled", 39649 hiddenClass: "swiper-button-hidden", 39650 lockClass: "swiper-button-lock", 39651 navigationDisabledClass: "swiper-navigation-disabled" 39652 } 39653 }); 39654 swiper.navigation = { 39655 nextEl: null, 39656 prevEl: null 39657 }; 39658 function getEl(el) { 39659 let res; 39660 if (el && typeof el === "string" && swiper.isElement) { 39661 res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); 39662 if (res) return res; 39663 } 39664 if (el) { 39665 if (typeof el === "string") res = [...document.querySelectorAll(el)]; 39666 if (swiper.params.uniqueNavElements && typeof el === "string" && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 39667 res = swiper.el.querySelector(el); 39668 } else if (res && res.length === 1) { 39669 res = res[0]; 39670 } 39671 } 39672 if (el && !res) return el; 39673 return res; 39674 } 39675 function toggleEl(el, disabled) { 39676 const params = swiper.params.navigation; 39677 el = makeElementsArray(el); 39678 el.forEach((subEl) => { 39679 if (subEl) { 39680 subEl.classList[disabled ? "add" : "remove"](...params.disabledClass.split(" ")); 39681 if (subEl.tagName === "BUTTON") subEl.disabled = disabled; 39682 if (swiper.params.watchOverflow && swiper.enabled) { 39683 subEl.classList[swiper.isLocked ? "add" : "remove"](params.lockClass); 39684 } 39685 } 39686 }); 39687 } 39688 function update4() { 39689 const { 39690 nextEl, 39691 prevEl 39692 } = swiper.navigation; 39693 if (swiper.params.loop) { 39694 toggleEl(prevEl, false); 39695 toggleEl(nextEl, false); 39696 return; 39697 } 39698 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 39699 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 39700 } 39701 function onPrevClick(e) { 39702 e.preventDefault(); 39703 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 39704 swiper.slidePrev(); 39705 emit2("navigationPrev"); 39706 } 39707 function onNextClick(e) { 39708 e.preventDefault(); 39709 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 39710 swiper.slideNext(); 39711 emit2("navigationNext"); 39712 }
39713 function init() { 39714 const params = swiper.params.navigation; 39715 swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 39716 nextEl: "swiper-button-next", 39717 prevEl: "swiper-button-prev" 39718 }); 39719 if (!(params.nextEl || params.prevEl)) return; 39720 let nextEl = getEl(params.nextEl); 39721 let prevEl = getEl(params.prevEl); 39722 Object.assign(swiper.navigation, { 39723 nextEl, 39724 prevEl 39725 }); 39726 nextEl = makeElementsArray(nextEl); 39727 prevEl = makeElementsArray(prevEl); 39728 const initButton = (el, dir) => { 39729 if (el) { 39730 el.addEventListener("click", dir === "next" ? onNextClick : onPrevClick); 39731 } 39732 if (!swiper.enabled && el) { 39733 el.classList.add(...params.lockClass.split(" ")); 39734 } 39735 }; 39736 nextEl.forEach((el) => initButton(el, "next")); 39737 prevEl.forEach((el) => initButton(el, "prev")); 39738 } 39739 function destroy() { 39740 let { 39741 nextEl, 39742 prevEl 39743 } = swiper.navigation; 39744 nextEl = makeElementsArray(nextEl); 39745 prevEl = makeElementsArray(prevEl); 39746 const destroyButton = (el, dir) => { 39747 el.removeEventListener("click", dir === "next" ? onNextClick : onPrevClick); 39748 el.classList.remove(...swiper.params.navigation.disabledClass.split(" ")); 39749 }; 39750 nextEl.forEach((el) => destroyButton(el, "next")); 39751 prevEl.forEach((el) => destroyButton(el, "prev")); 39752 } 39753 on("init", () => { 39754 if (swiper.params.navigation.enabled === false) { 39755 disable(); 39756 } else { 39757 init(); 39758 update4(); 39759 } 39760 }); 39761 on("toEdge fromEdge lock unlock", () => { 39762 update4(); 39763 }); 39764 on("destroy", () => { 39765 destroy(); 39766 }); 39767 on("enable disable", () => { 39768 let { 39769 nextEl, 39770 prevEl 39771 } = swiper.navigation; 39772 nextEl = makeElementsArray(nextEl); 39773 prevEl = makeElementsArray(prevEl); 39774 if (swiper.enabled) { 39775 update4(); 39776 return; 39777 } 39778 [...nextEl, ...prevEl].filter((el) => !!el).forEach((el) => el.classList.add(swiper.params.navigation.lockClass)); 39779 }); 39780 on("click", (_s, e) => { 39781 let { 39782 nextEl, 39783 prevEl 39784 } = swiper.navigation; 39785 nextEl = makeElementsArray(nextEl); 39786 prevEl = makeElementsArray(prevEl); 39787 const targetEl = e.target; 39788 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 39789 if (swiper.isElement && !targetIsButton) { 39790 const path = e.path || e.composedPath && e.composedPath(); 39791 if (path) { 39792 targetIsButton = path.find((pathEl) => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 39793 } 39794 } 39795 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 39796 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 39797 let isHidden; 39798 if (nextEl.length) { 39799 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 39800 } else if (prevEl.length) { 39801 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 39802 } 39803 if (isHidden === true) { 39804 emit2("navigationShow"); 39805 } else { 39806 emit2("navigationHide"); 39807 } 39808 [...nextEl, ...prevEl].filter((el) => !!el).forEach((el) => el.classList.toggle(swiper.params.navigation.hiddenClass)); 39809 } 39810 }); 39811 const enable = () => { 39812 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(" ")); 39813 init(); 39814 update4(); 39815 }; 39816 const disable = () => { 39817 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(" ")); 39818 destroy(); 39819 }; 39820 Object.assign(swiper.navigation, { 39821 enable, 39822 disable, 39823 update: update4, 39824 init, 39825 destroy 39826 }); 39827} 39828function classesToSelector(classes2) { 39829 if (classes2 === void 0) { 39830 classes2 = ""; 39831 } 39832 return `.${classes2.trim().replace(/([\.:!+\/])/g, "\\$1").replace(/ /g, ".")}`; 39833} 39834function Zoom(_ref) { 39835 let { 39836 swiper, 39837 extendParams, 39838 on, 39839 emit: emit2 39840 } = _ref; 39841 const window2 = getWindow(); 39842 extendParams({ 39843 zoom: { 39844 enabled: false, 39845 limitToOriginalSize: false, 39846 maxRatio: 3, 39847 minRatio: 1, 39848 panOnMouseMove: false, 39849 toggle: true, 39850 containerClass: "swiper-zoom-container", 39851 zoomedSlideClass: "swiper-slide-zoomed" 39852 } 39853 }); 39854 swiper.zoom = { 39855 enabled: false 39856 }; 39857 let currentScale = 1; 39858 let isScaling = false;
vendor: 19,656 bytes, lines 39859-40362
39859 let isPanningWithMouse = false; 39860 let mousePanStart = { 39861 x: 0, 39862 y: 0 39863 }; 39864 const mousePanSensitivity = -3; 39865 let fakeGestureTouched; 39866 let fakeGestureMoved; 39867 const evCache = []; 39868 const gesture = { 39869 originX: 0, 39870 originY: 0, 39871 slideEl: void 0, 39872 slideWidth: void 0, 39873 slideHeight: void 0, 39874 imageEl: void 0, 39875 imageWrapEl: void 0, 39876 maxRatio: 3 39877 }; 39878 const image = { 39879 isTouched: void 0, 39880 isMoved: void 0, 39881 currentX: void 0, 39882 currentY: void 0, 39883 minX: void 0, 39884 minY: void 0, 39885 maxX: void 0, 39886 maxY: void 0, 39887 width: void 0, 39888 height: void 0, 39889 startX: void 0, 39890 startY: void 0, 39891 touchesStart: {}, 39892 touchesCurrent: {} 39893 }; 39894 const velocity = { 39895 x: void 0, 39896 y: void 0, 39897 prevPositionX: void 0, 39898 prevPositionY: void 0, 39899 prevTime: void 0 39900 }; 39901 let scale = 1; 39902 Object.defineProperty(swiper.zoom, "scale", { 39903 get() { 39904 return scale; 39905 }, 39906 set(value) { 39907 if (scale !== value) { 39908 const imageEl = gesture.imageEl; 39909 const slideEl = gesture.slideEl; 39910 emit2("zoomChange", value, imageEl, slideEl); 39911 } 39912 scale = value; 39913 } 39914 }); 39915 function getDistanceBetweenTouches() { 39916 if (evCache.length < 2) return 1; 39917 const x1 = evCache[0].pageX; 39918 const y1 = evCache[0].pageY; 39919 const x2 = evCache[1].pageX; 39920 const y2 = evCache[1].pageY; 39921 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 39922 return distance; 39923 } 39924 function getMaxRatio() { 39925 const params = swiper.params.zoom; 39926 const maxRatio = gesture.imageWrapEl.getAttribute("data-swiper-zoom") || params.maxRatio; 39927 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 39928 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 39929 return Math.min(imageMaxRatio, maxRatio); 39930 } 39931 return maxRatio; 39932 } 39933 function getScaleOrigin() { 39934 if (evCache.length < 2) return { 39935 x: null, 39936 y: null 39937 }; 39938 const box = gesture.imageEl.getBoundingClientRect(); 39939 return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window2.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window2.scrollY) / currentScale]; 39940 } 39941 function getSlideSelector() { 39942 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 39943 } 39944 function eventWithinSlide(e) { 39945 const slideSelector = getSlideSelector(); 39946 if (e.target.matches(slideSelector)) return true; 39947 if (swiper.slides.filter((slideEl) => slideEl.contains(e.target)).length > 0) return true; 39948 return false; 39949 } 39950 function eventWithinZoomContainer(e) { 39951 const selector = `.${swiper.params.zoom.containerClass}`; 39952 if (e.target.matches(selector)) return true; 39953 if ([...swiper.hostEl.querySelectorAll(selector)].filter((containerEl) => containerEl.contains(e.target)).length > 0) return true; 39954 return false; 39955 } 39956 function onGestureStart(e) { 39957 if (e.pointerType === "mouse") { 39958 evCache.splice(0, evCache.length); 39959 } 39960 if (!eventWithinSlide(e)) return; 39961 const params = swiper.params.zoom; 39962 fakeGestureTouched = false; 39963 fakeGestureMoved = false; 39964 evCache.push(e); 39965 if (evCache.length < 2) { 39966 return; 39967 } 39968 fakeGestureTouched = true; 39969 gesture.scaleStart = getDistanceBetweenTouches(); 39970 if (!gesture.slideEl) { 39971 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 39972 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 39973 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 39974 if (imageEl) { 39975 imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]; 39976 } 39977 gesture.imageEl = imageEl; 39978 if (imageEl) { 39979 gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; 39980 } else { 39981 gesture.imageWrapEl = void 0; 39982 } 39983 if (!gesture.imageWrapEl) { 39984 gesture.imageEl = void 0; 39985 return; 39986 } 39987 gesture.maxRatio = getMaxRatio(); 39988 } 39989 if (gesture.imageEl) { 39990 const [originX, originY] = getScaleOrigin(); 39991 gesture.originX = originX; 39992 gesture.originY = originY; 39993 gesture.imageEl.style.transitionDuration = "0ms"; 39994 } 39995 isScaling = true; 39996 } 39997 function onGestureChange(e) { 39998 if (!eventWithinSlide(e)) return; 39999 const params = swiper.params.zoom; 40000 const zoom = swiper.zoom; 40001 const pointerIndex = evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId); 40002 if (pointerIndex >= 0) evCache[pointerIndex] = e; 40003 if (evCache.length < 2) { 40004 return; 40005 } 40006 fakeGestureMoved = true; 40007 gesture.scaleMove = getDistanceBetweenTouches(); 40008 if (!gesture.imageEl) { 40009 return; 40010 } 40011 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 40012 if (zoom.scale > gesture.maxRatio) { 40013 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 40014 } 40015 if (zoom.scale < params.minRatio) { 40016 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 40017 } 40018 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 40019 } 40020 function onGestureEnd(e) { 40021 if (!eventWithinSlide(e)) return; 40022 if (e.pointerType === "mouse" && e.type === "pointerout") return; 40023 const params = swiper.params.zoom; 40024 const zoom = swiper.zoom; 40025 const pointerIndex = evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId); 40026 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 40027 if (!fakeGestureTouched || !fakeGestureMoved) { 40028 return; 40029 } 40030 fakeGestureTouched = false; 40031 fakeGestureMoved = false; 40032 if (!gesture.imageEl) return; 40033 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 40034 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 40035 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 40036 currentScale = zoom.scale; 40037 isScaling = false; 40038 if (zoom.scale > 1 && gesture.slideEl) { 40039 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 40040 } else if (zoom.scale <= 1 && gesture.slideEl) { 40041 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 40042 } 40043 if (zoom.scale === 1) { 40044 gesture.originX = 0; 40045 gesture.originY = 0; 40046 gesture.slideEl = void 0; 40047 } 40048 } 40049 let allowTouchMoveTimeout; 40050 function allowTouchMove() { 40051 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 40052 } 40053 function preventTouchMove() { 40054 clearTimeout(allowTouchMoveTimeout); 40055 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 40056 allowTouchMoveTimeout = setTimeout(() => { 40057 if (swiper.destroyed) return; 40058 allowTouchMove(); 40059 }); 40060 } 40061 function onTouchStart2(e) { 40062 const device = swiper.device; 40063 if (!gesture.imageEl) return; 40064 if (image.isTouched) return; 40065 if (device.android && e.cancelable) e.preventDefault(); 40066 image.isTouched = true; 40067 const event = evCache.length > 0 ? evCache[0] : e; 40068 image.touchesStart.x = event.pageX; 40069 image.touchesStart.y = event.pageY; 40070 } 40071 function onTouchMove2(e) { 40072 const isMouseEvent = e.pointerType === "mouse"; 40073 const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; 40074 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 40075 return; 40076 } 40077 const zoom = swiper.zoom; 40078 if (!gesture.imageEl) { 40079 return; 40080 } 40081 if (!image.isTouched || !gesture.slideEl) { 40082 if (isMousePan) onMouseMove(e); 40083 return; 40084 } 40085 if (isMousePan) { 40086 onMouseMove(e); 40087 return; 40088 } 40089 if (!image.isMoved) { 40090 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 40091 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 40092 image.startX = getTranslate(gesture.imageWrapEl, "x") || 0; 40093 image.startY = getTranslate(gesture.imageWrapEl, "y") || 0; 40094 gesture.slideWidth = gesture.slideEl.offsetWidth; 40095 gesture.slideHeight = gesture.slideEl.offsetHeight; 40096 gesture.imageWrapEl.style.transitionDuration = "0ms"; 40097 } 40098 const scaledWidth = image.width * zoom.scale; 40099 const scaledHeight = image.height * zoom.scale; 40100 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 40101 image.maxX = -image.minX; 40102 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 40103 image.maxY = -image.minY; 40104 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 40105 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 40106 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 40107 if (touchesDiff > 5) { 40108 swiper.allowClick = false; 40109 } 40110 if (!image.isMoved && !isScaling) { 40111 if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { 40112 image.isTouched = false; 40113 allowTouchMove(); 40114 return; 40115 } 40116 if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { 40117 image.isTouched = false; 40118 allowTouchMove(); 40119 return; 40120 } 40121 } 40122 if (e.cancelable) { 40123 e.preventDefault(); 40124 } 40125 e.stopPropagation(); 40126 preventTouchMove(); 40127 image.isMoved = true; 40128 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 40129 const { 40130 originX, 40131 originY 40132 } = gesture; 40133 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 40134 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 40135 if (image.currentX < image.minX) { 40136 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 40137 } 40138 if (image.currentX > image.maxX) { 40139 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 40140 } 40141 if (image.currentY < image.minY) { 40142 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 40143 } 40144 if (image.currentY > image.maxY) { 40145 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 40146 } 40147 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 40148 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 40149 if (!velocity.prevTime) velocity.prevTime = Date.now(); 40150 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 40151 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 40152 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 40153 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 40154 velocity.prevPositionX = image.touchesCurrent.x; 40155 velocity.prevPositionY = image.touchesCurrent.y; 40156 velocity.prevTime = Date.now(); 40157 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 40158 } 40159 function onTouchEnd2() { 40160 const zoom = swiper.zoom; 40161 evCache.length = 0; 40162 if (!gesture.imageEl) return; 40163 if (!image.isTouched || !image.isMoved) { 40164 image.isTouched = false; 40165 image.isMoved = false; 40166 return; 40167 } 40168 image.isTouched = false; 40169 image.isMoved = false; 40170 let momentumDurationX = 300; 40171 let momentumDurationY = 300; 40172 const momentumDistanceX = velocity.x * momentumDurationX; 40173 const newPositionX = image.currentX + momentumDistanceX; 40174 const momentumDistanceY = velocity.y * momentumDurationY; 40175 const newPositionY = image.currentY + momentumDistanceY; 40176 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 40177 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 40178 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 40179 image.currentX = newPositionX; 40180 image.currentY = newPositionY; 40181 const scaledWidth = image.width * zoom.scale; 40182 const scaledHeight = image.height * zoom.scale; 40183 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 40184 image.maxX = -image.minX; 40185 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 40186 image.maxY = -image.minY; 40187 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 40188 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 40189 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 40190 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 40191 } 40192 function onTransitionEnd() { 40193 const zoom = swiper.zoom; 40194 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 40195 if (gesture.imageEl) { 40196 gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)"; 40197 } 40198 if (gesture.imageWrapEl) { 40199 gesture.imageWrapEl.style.transform = "translate3d(0,0,0)"; 40200 } 40201 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 40202 zoom.scale = 1; 40203 currentScale = 1; 40204 gesture.slideEl = void 0; 40205 gesture.imageEl = void 0; 40206 gesture.imageWrapEl = void 0; 40207 gesture.originX = 0; 40208 gesture.originY = 0; 40209 } 40210 } 40211 function onMouseMove(e) { 40212 if (currentScale <= 1 || !gesture.imageWrapEl) return; 40213 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; 40214 const currentTransform = window2.getComputedStyle(gesture.imageWrapEl).transform; 40215 const matrix = new window2.DOMMatrix(currentTransform); 40216 if (!isPanningWithMouse) { 40217 isPanningWithMouse = true; 40218 mousePanStart.x = e.clientX; 40219 mousePanStart.y = e.clientY; 40220 image.startX = matrix.e; 40221 image.startY = matrix.f; 40222 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 40223 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 40224 gesture.slideWidth = gesture.slideEl.offsetWidth; 40225 gesture.slideHeight = gesture.slideEl.offsetHeight; 40226 return; 40227 } 40228 const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; 40229 const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; 40230 const scaledWidth = image.width * currentScale; 40231 const scaledHeight = image.height * currentScale; 40232 const slideWidth = gesture.slideWidth; 40233 const slideHeight = gesture.slideHeight; 40234 const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 40235 const maxX = -minX; 40236 const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 40237 const maxY = -minY; 40238 const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); 40239 const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); 40240 gesture.imageWrapEl.style.transitionDuration = "0ms"; 40241 gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; 40242 mousePanStart.x = e.clientX; 40243 mousePanStart.y = e.clientY; 40244 image.startX = newX; 40245 image.startY = newY; 40246 image.currentX = newX; 40247 image.currentY = newY; 40248 } 40249 function zoomIn(e) { 40250 const zoom = swiper.zoom; 40251 const params = swiper.params.zoom; 40252 if (!gesture.slideEl) { 40253 if (e && e.target) { 40254 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 40255 } 40256 if (!gesture.slideEl) { 40257 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 40258 gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 40259 } else { 40260 gesture.slideEl = swiper.slides[swiper.activeIndex]; 40261 } 40262 } 40263 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 40264 if (imageEl) { 40265 imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]; 40266 } 40267 gesture.imageEl = imageEl; 40268 if (imageEl) { 40269 gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; 40270 } else { 40271 gesture.imageWrapEl = void 0; 40272 } 40273 } 40274 if (!gesture.imageEl || !gesture.imageWrapEl) return; 40275 if (swiper.params.cssMode) { 40276 swiper.wrapperEl.style.overflow = "hidden"; 40277 swiper.wrapperEl.style.touchAction = "none"; 40278 } 40279 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 40280 let touchX; 40281 let touchY; 40282 let offsetX; 40283 let offsetY; 40284 let diffX; 40285 let diffY; 40286 let translateX; 40287 let translateY; 40288 let imageWidth; 40289 let imageHeight; 40290 let scaledWidth; 40291 let scaledHeight; 40292 let translateMinX; 40293 let translateMinY; 40294 let translateMaxX; 40295 let translateMaxY; 40296 let slideWidth; 40297 let slideHeight; 40298 if (typeof image.touchesStart.x === "undefined" && e) { 40299 touchX = e.pageX; 40300 touchY = e.pageY; 40301 } else { 40302 touchX = image.touchesStart.x; 40303 touchY = image.touchesStart.y; 40304 } 40305 const prevScale = currentScale; 40306 const forceZoomRatio = typeof e === "number" ? e : null; 40307 if (currentScale === 1 && forceZoomRatio) { 40308 touchX = void 0; 40309 touchY = void 0; 40310 image.touchesStart.x = void 0; 40311 image.touchesStart.y = void 0; 40312 } 40313 const maxRatio = getMaxRatio(); 40314 zoom.scale = forceZoomRatio || maxRatio; 40315 currentScale = forceZoomRatio || maxRatio; 40316 if (e && !(currentScale === 1 && forceZoomRatio)) { 40317 slideWidth = gesture.slideEl.offsetWidth; 40318 slideHeight = gesture.slideEl.offsetHeight; 40319 offsetX = elementOffset(gesture.slideEl).left + window2.scrollX; 40320 offsetY = elementOffset(gesture.slideEl).top + window2.scrollY; 40321 diffX = offsetX + slideWidth / 2 - touchX; 40322 diffY = offsetY + slideHeight / 2 - touchY; 40323 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 40324 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 40325 scaledWidth = imageWidth * zoom.scale; 40326 scaledHeight = imageHeight * zoom.scale; 40327 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 40328 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 40329 translateMaxX = -translateMinX; 40330 translateMaxY = -translateMinY; 40331 if (prevScale > 0 && forceZoomRatio && typeof image.currentX === "number" && typeof image.currentY === "number") { 40332 translateX = image.currentX * zoom.scale / prevScale; 40333 translateY = image.currentY * zoom.scale / prevScale; 40334 } else { 40335 translateX = diffX * zoom.scale; 40336 translateY = diffY * zoom.scale; 40337 } 40338 if (translateX < translateMinX) { 40339 translateX = translateMinX; 40340 } 40341 if (translateX > translateMaxX) { 40342 translateX = translateMaxX; 40343 } 40344 if (translateY < translateMinY) { 40345 translateY = translateMinY; 40346 } 40347 if (translateY > translateMaxY) { 40348 translateY = translateMaxY; 40349 } 40350 } else { 40351 translateX = 0; 40352 translateY = 0; 40353 } 40354 if (forceZoomRatio && zoom.scale === 1) { 40355 gesture.originX = 0; 40356 gesture.originY = 0; 40357 } 40358 image.currentX = translateX; 40359 image.currentY = translateY; 40360 gesture.imageWrapEl.style.transitionDuration = "300ms"; 40361 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 40362 gesture.imageEl.style.transitionDuration = "300ms";
40363 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 40364 } 40365 function zoomOut() { 40366 const zoom = swiper.zoom; 40367 const params = swiper.params.zoom; 40368 if (!gesture.slideEl) { 40369 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 40370 gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 40371 } else { 40372 gesture.slideEl = swiper.slides[swiper.activeIndex]; 40373 } 40374 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 40375 if (imageEl) { 40376 imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]; 40377 } 40378 gesture.imageEl = imageEl; 40379 if (imageEl) { 40380 gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; 40381 } else { 40382 gesture.imageWrapEl = void 0; 40383 } 40384 } 40385 if (!gesture.imageEl || !gesture.imageWrapEl) return; 40386 if (swiper.params.cssMode) { 40387 swiper.wrapperEl.style.overflow = ""; 40388 swiper.wrapperEl.style.touchAction = ""; 40389 } 40390 zoom.scale = 1; 40391 currentScale = 1; 40392 image.currentX = void 0; 40393 image.currentY = void 0; 40394 image.touchesStart.x = void 0; 40395 image.touchesStart.y = void 0; 40396 gesture.imageWrapEl.style.transitionDuration = "300ms"; 40397 gesture.imageWrapEl.style.transform = "translate3d(0,0,0)"; 40398 gesture.imageEl.style.transitionDuration = "300ms"; 40399 gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)"; 40400 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 40401 gesture.slideEl = void 0; 40402 gesture.originX = 0; 40403 gesture.originY = 0; 40404 if (swiper.params.zoom.panOnMouseMove) { 40405 mousePanStart = { 40406 x: 0, 40407 y: 0 40408 }; 40409 if (isPanningWithMouse) { 40410 isPanningWithMouse = false; 40411 image.startX = 0; 40412 image.startY = 0; 40413 } 40414 } 40415 } 40416 function zoomToggle(e) { 40417 const zoom = swiper.zoom; 40418 if (zoom.scale && zoom.scale !== 1) { 40419 zoomOut(); 40420 } else { 40421 zoomIn(e); 40422 } 40423 } 40424 function getListeners() { 40425 const passiveListener = swiper.params.passiveListeners ? { 40426 passive: true, 40427 capture: false 40428 } : false; 40429 const activeListenerWithCapture = swiper.params.passiveListeners ? { 40430 passive: false, 40431 capture: true 40432 } : true; 40433 return { 40434 passiveListener, 40435 activeListenerWithCapture 40436 }; 40437 } 40438 function enable() { 40439 const zoom = swiper.zoom; 40440 if (zoom.enabled) return; 40441 zoom.enabled = true; 40442 const { 40443 passiveListener, 40444 activeListenerWithCapture 40445 } = getListeners(); 40446 swiper.wrapperEl.addEventListener("pointerdown", onGestureStart, passiveListener); 40447 swiper.wrapperEl.addEventListener("pointermove", onGestureChange, activeListenerWithCapture); 40448 ["pointerup", "pointercancel", "pointerout"].forEach((eventName) => { 40449 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 40450 }); 40451 swiper.wrapperEl.addEventListener("pointermove", onTouchMove2, activeListenerWithCapture); 40452 } 40453 function disable() { 40454 const zoom = swiper.zoom; 40455 if (!zoom.enabled) return; 40456 zoom.enabled = false; 40457 const { 40458 passiveListener, 40459 activeListenerWithCapture 40460 } = getListeners(); 40461 swiper.wrapperEl.removeEventListener("pointerdown", onGestureStart, passiveListener); 40462 swiper.wrapperEl.removeEventListener("pointermove", onGestureChange, activeListenerWithCapture); 40463 ["pointerup", "pointercancel", "pointerout"].forEach((eventName) => { 40464 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 40465 }); 40466 swiper.wrapperEl.removeEventListener("pointermove", onTouchMove2, activeListenerWithCapture); 40467 } 40468 on("init", () => { 40469 if (swiper.params.zoom.enabled) { 40470 enable(); 40471 } 40472 }); 40473 on("destroy", () => { 40474 disable(); 40475 }); 40476 on("touchStart", (_s, e) => { 40477 if (!swiper.zoom.enabled) return; 40478 onTouchStart2(e); 40479 }); 40480 on("touchEnd", (_s, e) => { 40481 if (!swiper.zoom.enabled) return; 40482 onTouchEnd2(); 40483 }); 40484 on("doubleTap", (_s, e) => { 40485 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 40486 zoomToggle(e); 40487 } 40488 }); 40489 on("transitionEnd", () => { 40490 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 40491 onTransitionEnd(); 40492 } 40493 }); 40494 on("slideChange", () => { 40495 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 40496 onTransitionEnd(); 40497 } 40498 }); 40499 Object.assign(swiper.zoom, { 40500 enable, 40501 disable, 40502 in: zoomIn, 40503 out: zoomOut, 40504 toggle: zoomToggle 40505 }); 40506} 40507function A11y(_ref) { 40508 let { 40509 swiper, 40510 extendParams, 40511 on 40512 } = _ref; 40513 extendParams({ 40514 a11y: { 40515 enabled: true, 40516 notificationClass: "swiper-notification", 40517 prevSlideMessage: "Previous slide", 40518 nextSlideMessage: "Next slide", 40519 firstSlideMessage: "This is the first slide", 40520 lastSlideMessage: "This is the last slide", 40521 paginationBulletMessage: "Go to slide {{index}}", 40522 slideLabelMessage: "{{index}} / {{slidesLength}}", 40523 containerMessage: null, 40524 containerRoleDescriptionMessage: null, 40525 containerRole: null, 40526 itemRoleDescriptionMessage: null, 40527 slideRole: "group", 40528 id: null, 40529 scrollOnFocus: true 40530 } 40531 }); 40532 swiper.a11y = {
vendor: 4,291 bytes, lines 40533-40676
40533 clicked: false 40534 }; 40535 let liveRegion = null; 40536 let preventFocusHandler; 40537 let focusTargetSlideEl; 40538 let visibilityChangedTimestamp = (/* @__PURE__ */ new Date()).getTime(); 40539 function notify(message) { 40540 const notification = liveRegion; 40541 if (notification.length === 0) return; 40542 setInnerHTML(notification, message); 40543 } 40544 function getRandomNumber(size) { 40545 const randomChar = () => Math.round(16 * Math.random()).toString(16); 40546 return "x".repeat(size).replace(/x/g, randomChar); 40547 } 40548 function makeElFocusable(el) { 40549 el = makeElementsArray(el); 40550 el.forEach((subEl) => { 40551 subEl.setAttribute("tabIndex", "0"); 40552 }); 40553 } 40554 function makeElNotFocusable(el) { 40555 el = makeElementsArray(el); 40556 el.forEach((subEl) => { 40557 subEl.setAttribute("tabIndex", "-1"); 40558 }); 40559 } 40560 function addElRole(el, role) { 40561 el = makeElementsArray(el); 40562 el.forEach((subEl) => { 40563 subEl.setAttribute("role", role); 40564 }); 40565 } 40566 function addElRoleDescription(el, description) { 40567 el = makeElementsArray(el); 40568 el.forEach((subEl) => { 40569 subEl.setAttribute("aria-roledescription", description); 40570 }); 40571 } 40572 function addElControls(el, controls) { 40573 el = makeElementsArray(el); 40574 el.forEach((subEl) => { 40575 subEl.setAttribute("aria-controls", controls); 40576 }); 40577 } 40578 function addElLabel(el, label) { 40579 el = makeElementsArray(el); 40580 el.forEach((subEl) => { 40581 subEl.setAttribute("aria-label", label); 40582 }); 40583 } 40584 function addElId(el, id) { 40585 el = makeElementsArray(el); 40586 el.forEach((subEl) => { 40587 subEl.setAttribute("id", id); 40588 }); 40589 } 40590 function addElLive(el, live) { 40591 el = makeElementsArray(el); 40592 el.forEach((subEl) => { 40593 subEl.setAttribute("aria-live", live); 40594 }); 40595 } 40596 function disableEl(el) { 40597 el = makeElementsArray(el); 40598 el.forEach((subEl) => { 40599 subEl.setAttribute("aria-disabled", true); 40600 }); 40601 } 40602 function enableEl(el) { 40603 el = makeElementsArray(el); 40604 el.forEach((subEl) => { 40605 subEl.setAttribute("aria-disabled", false); 40606 }); 40607 } 40608 function onEnterOrSpaceKey(e) { 40609 if (e.keyCode !== 13 && e.keyCode !== 32) return; 40610 const params = swiper.params.a11y; 40611 const targetEl = e.target; 40612 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 40613 if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; 40614 } 40615 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 40616 const prevEls = makeElementsArray(swiper.navigation.prevEl); 40617 const nextEls = makeElementsArray(swiper.navigation.nextEl); 40618 if (nextEls.includes(targetEl)) { 40619 if (!(swiper.isEnd && !swiper.params.loop)) { 40620 swiper.slideNext(); 40621 } 40622 if (swiper.isEnd) { 40623 notify(params.lastSlideMessage); 40624 } else { 40625 notify(params.nextSlideMessage); 40626 } 40627 } 40628 if (prevEls.includes(targetEl)) { 40629 if (!(swiper.isBeginning && !swiper.params.loop)) { 40630 swiper.slidePrev(); 40631 } 40632 if (swiper.isBeginning) { 40633 notify(params.firstSlideMessage); 40634 } else { 40635 notify(params.prevSlideMessage); 40636 } 40637 } 40638 } 40639 if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { 40640 targetEl.click(); 40641 } 40642 } 40643 function updateNavigation() { 40644 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 40645 const { 40646 nextEl, 40647 prevEl 40648 } = swiper.navigation; 40649 if (prevEl) { 40650 if (swiper.isBeginning) { 40651 disableEl(prevEl); 40652 makeElNotFocusable(prevEl); 40653 } else { 40654 enableEl(prevEl); 40655 makeElFocusable(prevEl); 40656 } 40657 } 40658 if (nextEl) { 40659 if (swiper.isEnd) { 40660 disableEl(nextEl); 40661 makeElNotFocusable(nextEl); 40662 } else { 40663 enableEl(nextEl); 40664 makeElFocusable(nextEl); 40665 } 40666 } 40667 } 40668 function hasPagination() { 40669 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 40670 } 40671 function hasClickablePagination() { 40672 return hasPagination() && swiper.params.pagination.clickable; 40673 } 40674 function updatePagination() { 40675 const params = swiper.params.a11y; 40676 if (!hasPagination()) return;
40677 swiper.pagination.bullets.forEach((bulletEl) => { 40678 if (swiper.params.pagination.clickable) { 40679 makeElFocusable(bulletEl); 40680 if (!swiper.params.pagination.renderBullet) { 40681 addElRole(bulletEl, "button"); 40682 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); 40683 } 40684 } 40685 if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { 40686 bulletEl.setAttribute("aria-current", "true"); 40687 } else { 40688 bulletEl.removeAttribute("aria-current"); 40689 } 40690 }); 40691 } 40692 const initNavEl = (el, wrapperId, message) => { 40693 makeElFocusable(el); 40694 if (el.tagName !== "BUTTON") { 40695 addElRole(el, "button"); 40696 el.addEventListener("keydown", onEnterOrSpaceKey); 40697 } 40698 addElLabel(el, message); 40699 addElControls(el, wrapperId); 40700 }; 40701 const handlePointerDown = (e) => { 40702 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 40703 preventFocusHandler = true; 40704 } 40705 swiper.a11y.clicked = true; 40706 }; 40707 const handlePointerUp = () => { 40708 preventFocusHandler = false; 40709 requestAnimationFrame(() => { 40710 requestAnimationFrame(() => { 40711 if (!swiper.destroyed) { 40712 swiper.a11y.clicked = false; 40713 } 40714 }); 40715 }); 40716 }; 40717 const onVisibilityChange = (e) => { 40718 visibilityChangedTimestamp = (/* @__PURE__ */ new Date()).getTime(); 40719 }; 40720 const handleFocus = (e) => { 40721 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 40722 if ((/* @__PURE__ */ new Date()).getTime() - visibilityChangedTimestamp < 100) return; 40723 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 40724 if (!slideEl || !swiper.slides.includes(slideEl)) return; 40725 focusTargetSlideEl = slideEl; 40726 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 40727 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 40728 if (isActive || isVisible) return; 40729 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 40730 if (swiper.isHorizontal()) { 40731 swiper.el.scrollLeft = 0; 40732 } else { 40733 swiper.el.scrollTop = 0; 40734 } 40735 requestAnimationFrame(() => { 40736 if (preventFocusHandler) return; 40737 if (swiper.params.loop) { 40738 swiper.slideToLoop(parseInt(slideEl.getAttribute("data-swiper-slide-index")), 0); 40739 } else { 40740 swiper.slideTo(swiper.slides.indexOf(slideEl), 0); 40741 } 40742 preventFocusHandler = false; 40743 }); 40744 }; 40745 const initSlides = () => { 40746 const params = swiper.params.a11y; 40747 if (params.itemRoleDescriptionMessage) { 40748 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 40749 } 40750 if (params.slideRole) { 40751 addElRole(swiper.slides, params.slideRole); 40752 } 40753 const slidesLength = swiper.slides.length; 40754 if (params.slideLabelMessage) { 40755 swiper.slides.forEach((slideEl, index2) => { 40756 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute("data-swiper-slide-index"), 10) : index2; 40757 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 40758 addElLabel(slideEl, ariaLabelMessage); 40759 }); 40760 } 40761 }; 40762 const init = () => { 40763 const params = swiper.params.a11y; 40764 swiper.el.append(liveRegion); 40765 const containerEl = swiper.el; 40766 if (params.containerRoleDescriptionMessage) { 40767 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 40768 } 40769 if (params.containerMessage) { 40770 addElLabel(containerEl, params.containerMessage); 40771 } 40772 if (params.containerRole) { 40773 addElRole(containerEl, params.containerRole); 40774 } 40775 const wrapperEl = swiper.wrapperEl; 40776 const wrapperId = params.id || wrapperEl.getAttribute("id") || `swiper-wrapper-${getRandomNumber(16)}`; 40777 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? "off" : "polite"; 40778 addElId(wrapperEl, wrapperId); 40779 addElLive(wrapperEl, live); 40780 initSlides(); 40781 let { 40782 nextEl, 40783 prevEl 40784 } = swiper.navigation ? swiper.navigation : {}; 40785 nextEl = makeElementsArray(nextEl); 40786 prevEl = makeElementsArray(prevEl); 40787 if (nextEl) { 40788 nextEl.forEach((el) => initNavEl(el, wrapperId, params.nextSlideMessage)); 40789 } 40790 if (prevEl) { 40791 prevEl.forEach((el) => initNavEl(el, wrapperId, params.prevSlideMessage)); 40792 } 40793 if (hasClickablePagination()) { 40794 const paginationEl = makeElementsArray(swiper.pagination.el); 40795 paginationEl.forEach((el) => { 40796 el.addEventListener("keydown", onEnterOrSpaceKey); 40797 }); 40798 } 40799 const document2 = getDocument(); 40800 document2.addEventListener("visibilitychange", onVisibilityChange); 40801 swiper.el.addEventListener("focus", handleFocus, true); 40802 swiper.el.addEventListener("focus", handleFocus, true); 40803 swiper.el.addEventListener("pointerdown", handlePointerDown, true); 40804 swiper.el.addEventListener("pointerup", handlePointerUp, true); 40805 }; 40806 function destroy() { 40807 if (liveRegion) liveRegion.remove(); 40808 let { 40809 nextEl, 40810 prevEl 40811 } = swiper.navigation ? swiper.navigation : {}; 40812 nextEl = makeElementsArray(nextEl); 40813 prevEl = makeElementsArray(prevEl); 40814 if (nextEl) { 40815 nextEl.forEach((el) => el.removeEventListener("keydown", onEnterOrSpaceKey)); 40816 } 40817 if (prevEl) { 40818 prevEl.forEach((el) => el.removeEventListener("keydown", onEnterOrSpaceKey)); 40819 } 40820 if (hasClickablePagination()) { 40821 const paginationEl = makeElementsArray(swiper.pagination.el); 40822 paginationEl.forEach((el) => { 40823 el.removeEventListener("keydown", onEnterOrSpaceKey); 40824 }); 40825 } 40826 const document2 = getDocument(); 40827 document2.removeEventListener("visibilitychange", onVisibilityChange); 40828 if (swiper.el && typeof swiper.el !== "string") { 40829 swiper.el.removeEventListener("focus", handleFocus, true); 40830 swiper.el.removeEventListener("pointerdown", handlePointerDown, true); 40831 swiper.el.removeEventListener("pointerup", handlePointerUp, true); 40832 } 40833 } 40834 on("beforeInit", () => { 40835 liveRegion = createElement("span", swiper.params.a11y.notificationClass); 40836 liveRegion.setAttribute("aria-live", "assertive"); 40837 liveRegion.setAttribute("aria-atomic", "true"); 40838 }); 40839 on("afterInit", () => { 40840 if (!swiper.params.a11y.enabled) return; 40841 init(); 40842 }); 40843 on("slidesLengthChange snapGridLengthChange slidesGridLengthChange", () => { 40844 if (!swiper.params.a11y.enabled) return; 40845 initSlides(); 40846 }); 40847 on("fromEdge toEdge afterInit lock unlock", () => { 40848 if (!swiper.params.a11y.enabled) return; 40849 updateNavigation(); 40850 }); 40851 on("paginationUpdate", () => { 40852 if (!swiper.params.a11y.enabled) return; 40853 updatePagination(); 40854 }); 40855 on("destroy", () => { 40856 if (!swiper.params.a11y.enabled) return; 40857 destroy(); 40858 }); 40859} 40860function HashNavigation(_ref) { 40861 let { 40862 swiper, 40863 extendParams, 40864 emit: emit2, 40865 on 40866 } = _ref; 40867 let initialized = false;
vendor: 4,690 bytes, lines 40868-41000
40868 const document2 = getDocument(); 40869 const window2 = getWindow(); 40870 extendParams({ 40871 hashNavigation: { 40872 enabled: false, 40873 replaceState: false, 40874 watchState: false, 40875 getSlideIndex(_s, hash) { 40876 if (swiper.virtual && swiper.params.virtual.enabled) { 40877 const slideWithHash = swiper.slides.find((slideEl) => slideEl.getAttribute("data-hash") === hash); 40878 if (!slideWithHash) return 0; 40879 const index2 = parseInt(slideWithHash.getAttribute("data-swiper-slide-index"), 10); 40880 return index2; 40881 } 40882 return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); 40883 } 40884 } 40885 }); 40886 const onHashChange = () => { 40887 emit2("hashChange"); 40888 const newHash = document2.location.hash.replace("#", ""); 40889 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 40890 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") : ""; 40891 if (newHash !== activeSlideHash) { 40892 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 40893 if (typeof newIndex === "undefined" || Number.isNaN(newIndex)) return; 40894 swiper.slideTo(newIndex); 40895 } 40896 }; 40897 const setHash = () => { 40898 if (!initialized || !swiper.params.hashNavigation.enabled) return; 40899 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 40900 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") || activeSlideEl.getAttribute("data-history") : ""; 40901 if (swiper.params.hashNavigation.replaceState && window2.history && window2.history.replaceState) { 40902 window2.history.replaceState(null, null, `#${activeSlideHash}` || ""); 40903 emit2("hashSet"); 40904 } else { 40905 document2.location.hash = activeSlideHash || ""; 40906 emit2("hashSet"); 40907 } 40908 }; 40909 const init = () => { 40910 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 40911 initialized = true; 40912 const hash = document2.location.hash.replace("#", ""); 40913 if (hash) { 40914 const speed = 0; 40915 const index2 = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 40916 swiper.slideTo(index2 || 0, speed, swiper.params.runCallbacksOnInit, true); 40917 } 40918 if (swiper.params.hashNavigation.watchState) { 40919 window2.addEventListener("hashchange", onHashChange); 40920 } 40921 }; 40922 const destroy = () => { 40923 if (swiper.params.hashNavigation.watchState) { 40924 window2.removeEventListener("hashchange", onHashChange); 40925 } 40926 }; 40927 on("init", () => { 40928 if (swiper.params.hashNavigation.enabled) { 40929 init(); 40930 } 40931 }); 40932 on("destroy", () => { 40933 if (swiper.params.hashNavigation.enabled) { 40934 destroy(); 40935 } 40936 }); 40937 on("transitionEnd _freeModeNoMomentumRelease", () => { 40938 if (initialized) { 40939 setHash(); 40940 } 40941 }); 40942 on("slideChange", () => { 40943 if (initialized && swiper.params.cssMode) { 40944 setHash(); 40945 } 40946 }); 40947} 40948function Autoplay(_ref) { 40949 let { 40950 swiper, 40951 extendParams, 40952 on, 40953 emit: emit2, 40954 params 40955 } = _ref; 40956 swiper.autoplay = { 40957 running: false, 40958 paused: false, 40959 timeLeft: 0 40960 }; 40961 extendParams({ 40962 autoplay: { 40963 enabled: false, 40964 delay: 3e3, 40965 waitForTransition: true, 40966 disableOnInteraction: false, 40967 stopOnLastSlide: false, 40968 reverseDirection: false, 40969 pauseOnMouseEnter: false 40970 } 40971 }); 40972 let timeout; 40973 let raf; 40974 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3e3; 40975 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3e3; 40976 let autoplayTimeLeft; 40977 let autoplayStartTime = (/* @__PURE__ */ new Date()).getTime(); 40978 let wasPaused; 40979 let isTouched; 40980 let pausedByTouch; 40981 let touchStartTimeout; 40982 let slideChanged; 40983 let pausedByInteraction; 40984 let pausedByPointerEnter; 40985 function onTransitionEnd(e) { 40986 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 40987 if (e.target !== swiper.wrapperEl) return; 40988 swiper.wrapperEl.removeEventListener("transitionend", onTransitionEnd); 40989 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 40990 return; 40991 } 40992 resume(); 40993 } 40994 const calcTimeLeft = () => { 40995 if (swiper.destroyed || !swiper.autoplay.running) return; 40996 if (swiper.autoplay.paused) { 40997 wasPaused = true; 40998 } else if (wasPaused) { 40999 autoplayDelayCurrent = autoplayTimeLeft; 41000 wasPaused = false;
vendor: 8,384 bytes, lines 41001-41263
41001 } 41002 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - (/* @__PURE__ */ new Date()).getTime(); 41003 swiper.autoplay.timeLeft = timeLeft; 41004 emit2("autoplayTimeLeft", timeLeft, timeLeft / autoplayDelayTotal); 41005 raf = requestAnimationFrame(() => { 41006 calcTimeLeft(); 41007 }); 41008 }; 41009 const getSlideDelay = () => { 41010 let activeSlideEl; 41011 if (swiper.virtual && swiper.params.virtual.enabled) { 41012 activeSlideEl = swiper.slides.find((slideEl) => slideEl.classList.contains("swiper-slide-active")); 41013 } else { 41014 activeSlideEl = swiper.slides[swiper.activeIndex]; 41015 } 41016 if (!activeSlideEl) return void 0; 41017 const currentSlideDelay = parseInt(activeSlideEl.getAttribute("data-swiper-autoplay"), 10); 41018 return currentSlideDelay; 41019 }; 41020 const run = (delayForce) => { 41021 if (swiper.destroyed || !swiper.autoplay.running) return; 41022 cancelAnimationFrame(raf); 41023 calcTimeLeft(); 41024 let delay = typeof delayForce === "undefined" ? swiper.params.autoplay.delay : delayForce; 41025 autoplayDelayTotal = swiper.params.autoplay.delay; 41026 autoplayDelayCurrent = swiper.params.autoplay.delay; 41027 const currentSlideDelay = getSlideDelay(); 41028 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === "undefined") { 41029 delay = currentSlideDelay; 41030 autoplayDelayTotal = currentSlideDelay; 41031 autoplayDelayCurrent = currentSlideDelay; 41032 } 41033 autoplayTimeLeft = delay; 41034 const speed = swiper.params.speed; 41035 const proceed = () => { 41036 if (!swiper || swiper.destroyed) return; 41037 if (swiper.params.autoplay.reverseDirection) { 41038 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 41039 swiper.slidePrev(speed, true, true); 41040 emit2("autoplay"); 41041 } else if (!swiper.params.autoplay.stopOnLastSlide) { 41042 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 41043 emit2("autoplay"); 41044 } 41045 } else { 41046 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 41047 swiper.slideNext(speed, true, true); 41048 emit2("autoplay"); 41049 } else if (!swiper.params.autoplay.stopOnLastSlide) { 41050 swiper.slideTo(0, speed, true, true); 41051 emit2("autoplay"); 41052 } 41053 } 41054 if (swiper.params.cssMode) { 41055 autoplayStartTime = (/* @__PURE__ */ new Date()).getTime(); 41056 requestAnimationFrame(() => { 41057 run(); 41058 }); 41059 } 41060 }; 41061 if (delay > 0) { 41062 clearTimeout(timeout); 41063 timeout = setTimeout(() => { 41064 proceed(); 41065 }, delay); 41066 } else { 41067 requestAnimationFrame(() => { 41068 proceed(); 41069 }); 41070 } 41071 return delay; 41072 }; 41073 const start = () => { 41074 autoplayStartTime = (/* @__PURE__ */ new Date()).getTime(); 41075 swiper.autoplay.running = true; 41076 run(); 41077 emit2("autoplayStart"); 41078 }; 41079 const stop2 = () => { 41080 swiper.autoplay.running = false; 41081 clearTimeout(timeout); 41082 cancelAnimationFrame(raf); 41083 emit2("autoplayStop"); 41084 }; 41085 const pause = (internal, reset2) => { 41086 if (swiper.destroyed || !swiper.autoplay.running) return; 41087 clearTimeout(timeout); 41088 if (!internal) { 41089 pausedByInteraction = true; 41090 } 41091 const proceed = () => { 41092 emit2("autoplayPause"); 41093 if (swiper.params.autoplay.waitForTransition) { 41094 swiper.wrapperEl.addEventListener("transitionend", onTransitionEnd); 41095 } else { 41096 resume(); 41097 } 41098 }; 41099 swiper.autoplay.paused = true; 41100 if (reset2) { 41101 if (slideChanged) { 41102 autoplayTimeLeft = swiper.params.autoplay.delay; 41103 } 41104 slideChanged = false; 41105 proceed(); 41106 return; 41107 } 41108 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 41109 autoplayTimeLeft = delay - ((/* @__PURE__ */ new Date()).getTime() - autoplayStartTime); 41110 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 41111 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 41112 proceed(); 41113 }; 41114 const resume = () => { 41115 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 41116 autoplayStartTime = (/* @__PURE__ */ new Date()).getTime(); 41117 if (pausedByInteraction) { 41118 pausedByInteraction = false; 41119 run(autoplayTimeLeft); 41120 } else { 41121 run(); 41122 } 41123 swiper.autoplay.paused = false; 41124 emit2("autoplayResume"); 41125 }; 41126 const onVisibilityChange = () => { 41127 if (swiper.destroyed || !swiper.autoplay.running) return; 41128 const document2 = getDocument(); 41129 if (document2.visibilityState === "hidden") { 41130 pausedByInteraction = true; 41131 pause(true); 41132 } 41133 if (document2.visibilityState === "visible") { 41134 resume(); 41135 } 41136 }; 41137 const onPointerEnter = (e) => { 41138 if (e.pointerType !== "mouse") return; 41139 pausedByInteraction = true; 41140 pausedByPointerEnter = true; 41141 if (swiper.animating || swiper.autoplay.paused) return; 41142 pause(true); 41143 }; 41144 const onPointerLeave = (e) => { 41145 if (e.pointerType !== "mouse") return; 41146 pausedByPointerEnter = false; 41147 if (swiper.autoplay.paused) { 41148 resume(); 41149 } 41150 }; 41151 const attachMouseEvents = () => { 41152 if (swiper.params.autoplay.pauseOnMouseEnter) { 41153 swiper.el.addEventListener("pointerenter", onPointerEnter); 41154 swiper.el.addEventListener("pointerleave", onPointerLeave); 41155 } 41156 }; 41157 const detachMouseEvents = () => { 41158 if (swiper.el && typeof swiper.el !== "string") { 41159 swiper.el.removeEventListener("pointerenter", onPointerEnter); 41160 swiper.el.removeEventListener("pointerleave", onPointerLeave); 41161 } 41162 }; 41163 const attachDocumentEvents = () => { 41164 const document2 = getDocument(); 41165 document2.addEventListener("visibilitychange", onVisibilityChange); 41166 }; 41167 const detachDocumentEvents = () => { 41168 const document2 = getDocument(); 41169 document2.removeEventListener("visibilitychange", onVisibilityChange); 41170 }; 41171 on("init", () => { 41172 if (swiper.params.autoplay.enabled) { 41173 attachMouseEvents(); 41174 attachDocumentEvents(); 41175 start(); 41176 } 41177 }); 41178 on("destroy", () => { 41179 detachMouseEvents(); 41180 detachDocumentEvents(); 41181 if (swiper.autoplay.running) { 41182 stop2(); 41183 } 41184 }); 41185 on("_freeModeStaticRelease", () => { 41186 if (pausedByTouch || pausedByInteraction) { 41187 resume(); 41188 } 41189 }); 41190 on("_freeModeNoMomentumRelease", () => { 41191 if (!swiper.params.autoplay.disableOnInteraction) { 41192 pause(true, true); 41193 } else { 41194 stop2(); 41195 } 41196 }); 41197 on("beforeTransitionStart", (_s, speed, internal) => { 41198 if (swiper.destroyed || !swiper.autoplay.running) return; 41199 if (internal || !swiper.params.autoplay.disableOnInteraction) { 41200 pause(true, true); 41201 } else { 41202 stop2(); 41203 } 41204 }); 41205 on("sliderFirstMove", () => { 41206 if (swiper.destroyed || !swiper.autoplay.running) return; 41207 if (swiper.params.autoplay.disableOnInteraction) { 41208 stop2(); 41209 return; 41210 } 41211 isTouched = true; 41212 pausedByTouch = false; 41213 pausedByInteraction = false; 41214 touchStartTimeout = setTimeout(() => { 41215 pausedByInteraction = true; 41216 pausedByTouch = true; 41217 pause(true); 41218 }, 200); 41219 }); 41220 on("touchEnd", () => { 41221 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 41222 clearTimeout(touchStartTimeout); 41223 clearTimeout(timeout); 41224 if (swiper.params.autoplay.disableOnInteraction) { 41225 pausedByTouch = false; 41226 isTouched = false; 41227 return; 41228 } 41229 if (pausedByTouch && swiper.params.cssMode) resume(); 41230 pausedByTouch = false; 41231 isTouched = false; 41232 }); 41233 on("slideChange", () => { 41234 if (swiper.destroyed || !swiper.autoplay.running) return; 41235 slideChanged = true; 41236 }); 41237 Object.assign(swiper.autoplay, { 41238 start, 41239 stop: stop2, 41240 pause, 41241 resume 41242 }); 41243} 41244function effectInit(params) { 41245 const { 41246 effect: effect2, 41247 swiper, 41248 on, 41249 setTranslate: setTranslate2, 41250 setTransition: setTransition2, 41251 overwriteParams, 41252 perspective, 41253 recreateShadows, 41254 getEffectParams 41255 } = params; 41256 on("beforeInit", () => { 41257 if (swiper.params.effect !== effect2) return; 41258 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect2}`); 41259 if (perspective && perspective()) { 41260 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 41261 } 41262 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 41263 Object.assign(swiper.params, overwriteParamsResult);
41264 Object.assign(swiper.originalParams, overwriteParamsResult); 41265 }); 41266 on("setTranslate _virtualUpdated", () => { 41267 if (swiper.params.effect !== effect2) return; 41268 setTranslate2(); 41269 }); 41270 on("setTransition", (_s, duration) => { 41271 if (swiper.params.effect !== effect2) return; 41272 setTransition2(duration); 41273 }); 41274 on("transitionEnd", () => { 41275 if (swiper.params.effect !== effect2) return; 41276 if (recreateShadows) { 41277 if (!getEffectParams || !getEffectParams().slideShadows) return; 41278 swiper.slides.forEach((slideEl) => { 41279 slideEl.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl) => shadowEl.remove()); 41280 }); 41281 recreateShadows(); 41282 } 41283 }); 41284 let requireUpdateOnVirtual; 41285 on("virtualUpdate", () => { 41286 if (swiper.params.effect !== effect2) return; 41287 if (!swiper.slides.length) { 41288 requireUpdateOnVirtual = true; 41289 } 41290 requestAnimationFrame(() => { 41291 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 41292 setTranslate2(); 41293 requireUpdateOnVirtual = false; 41294 } 41295 }); 41296 }); 41297} 41298function effectTarget(effectParams, slideEl) { 41299 const transformEl = getSlideTransformEl(slideEl); 41300 if (transformEl !== slideEl) { 41301 transformEl.style.backfaceVisibility = "hidden"; 41302 transformEl.style["-webkit-backface-visibility"] = "hidden"; 41303 } 41304 return transformEl; 41305} 41306function effectVirtualTransitionEnd(_ref) { 41307 let { 41308 swiper, 41309 duration, 41310 transformElements 41311 } = _ref; 41312 const { 41313 activeIndex 41314 } = swiper; 41315 if (swiper.params.virtualTranslate && duration !== 0) { 41316 let eventTriggered = false; 41317 let transitionEndTarget; 41318 { 41319 transitionEndTarget = transformElements; 41320 } 41321 transitionEndTarget.forEach((el) => { 41322 elementTransitionEnd(el, () => { 41323 if (eventTriggered) return; 41324 if (!swiper || swiper.destroyed) return; 41325 eventTriggered = true; 41326 swiper.animating = false; 41327 const evt = new window.CustomEvent("transitionend", { 41328 bubbles: true, 41329 cancelable: true 41330 }); 41331 swiper.wrapperEl.dispatchEvent(evt); 41332 }); 41333 }); 41334 } 41335} 41336function EffectFade(_ref) { 41337 let { 41338 swiper, 41339 extendParams, 41340 on 41341 } = _ref; 41342 extendParams({ 41343 fadeEffect: { 41344 crossFade: false 41345 } 41346 }); 41347 const setTranslate2 = () => { 41348 const { 41349 slides 41350 } = swiper; 41351 const params = swiper.params.fadeEffect; 41352 for (let i = 0; i < slides.length; i += 1) { 41353 const slideEl = swiper.slides[i]; 41354 const offset = slideEl.swiperSlideOffset; 41355 let tx = -offset; 41356 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 41357 let ty = 0; 41358 if (!swiper.isHorizontal()) { 41359 ty = tx; 41360 tx = 0; 41361 } 41362 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 41363 const targetEl = effectTarget(params, slideEl); 41364 targetEl.style.opacity = slideOpacity; 41365 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 41366 } 41367 }; 41368 const setTransition2 = (duration) => { 41369 const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl)); 41370 transformElements.forEach((el) => { 41371 el.style.transitionDuration = `${duration}ms`; 41372 }); 41373 effectVirtualTransitionEnd({ 41374 swiper, 41375 duration, 41376 transformElements 41377 }); 41378 }; 41379 effectInit({ 41380 effect: "fade", 41381 swiper, 41382 on, 41383 setTranslate: setTranslate2, 41384 setTransition: setTransition2, 41385 overwriteParams: () => ({ 41386 slidesPerView: 1, 41387 slidesPerGroup: 1, 41388 watchSlidesProgress: true, 41389 spaceBetween: 0, 41390 virtualTranslate: !swiper.params.cssMode 41391 }) 41392 }); 41393} 41394const _sfc_main$P = { 41395 name: "ImageGallery", 41396 components: { 41397 Swiper: Swiper2 41398 }, 41399 props: { 41400 alternateStyle: { 41401 type: Boolean, 41402 default: false 41403 }, 41404 heroStyle: { 41405 type: Boolean, 41406 default: false 41407 }, 41408 columnsStyle: { 41409 type: Boolean, 41410 default: false 41411 }, 41412 autoplay: { 41413 type: Boolean, 41414 default: false 41415 }, 41416 transitionTime: { 41417 type: Number, 41418 default: 300 41419 } 41420 }, 41421 data() { 41422 return { 41423 loaded: false, 41424 modules: [Keyboard, Navigation, Zoom, A11y, HashNavigation, EffectFade, Autoplay], 41425 swiper: null, 41426 reinit: false, 41427 slidesPerView: null 41428 }; 41429 }, 41430 computed: { 41431 ...mapGetters(ENVIRONMENT_TYPES.NAME, { 41432 isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE, 41433 isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET, 41434 isDesktop: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_DESKTOP 41435 }), 41436 navOptions() { 41437 return { 41438 nextEl: this.$refs.next, 41439 prevEl: this.$refs.prev 41440 }; 41441 }, 41442 autoplayOptions() { 41443 if (this.autoplay) { 41444 return { 41445 delay: 12e3, 41446 disableOnInteraction: false 41447 }; 41448 } else return false;
41449 }, 41450 breakPoints() { 41451 let slidesPerViewMobile = 1; 41452 let slidesPerViewTablet = 1; 41453 let slidesPerViewDesktop = 1; 41454 if (this.columnsStyle) { 41455 slidesPerViewMobile = 1; 41456 slidesPerViewTablet = 2; 41457 slidesPerViewDesktop = 3; 41458 } 41459 return { 41460 640: { 41461 slidesPerView: slidesPerViewMobile 41462 }, 41463 1024: { 41464 slidesPerView: slidesPerViewTablet 41465 }, 41466 1440: { 41467 slidesPerView: slidesPerViewDesktop 41468 } 41469 }; 41470 }, 41471 swiperEffect() { 41472 if (this.columnsStyle) return void 0; 41473 return "slide"; 41474 } 41475 }, 41476 // watch: {}, 41477 // Livecycle hooks 41478 // created() {}, 41479 mounted() { 41480 this.$nextTick(() => { 41481 this.loaded = true; 41482 }); 41483 }, 41484 // updated() {}, 41485 // beforeDestroy() {}, 41486 methods: { 41487 onSwiperReady(swiper) { 41488 this.swiper = swiper; 41489 } 41490 } 41491}; 41492const _hoisted_1$O = { class: "gallery-controls" }; 41493const _hoisted_2$E = { class: "gallery-controls-wrapper" }; 41494const _hoisted_3$y = { class: "swiper-button-next-wrapper" }; 41495const _hoisted_4$o = { 41496 ref: "next", 41497 class: "swiper-button-next" 41498}; 41499const _hoisted_5$g = { class: "swiper-button-prev-wrapper" }; 41500const _hoisted_6$d = { 41501 ref: "prev", 41502 class: "swiper-button-prev" 41503}; 41504function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) { 41505 const _component_swiper = resolveComponent("swiper"); 41506 return openBlock(), createElementBlock("div", { 41507 class: normalizeClass(["image-gallery", { 41508 "-alternate-style": $props.alternateStyle, 41509 "-hero-style": $props.heroStyle, 41510 "columns-style": $props.columnsStyle 41511 }]) 41512 }, [ 41513 createBaseVNode("div", _hoisted_1$O, [ 41514 createBaseVNode("div", _hoisted_2$E, [ 41515 createBaseVNode("div", _hoisted_3$y, [ 41516 createBaseVNode("button", _hoisted_4$o, null, 512) 41517 ]), 41518 createBaseVNode("div", _hoisted_5$g, [ 41519 createBaseVNode("button", _hoisted_6$d, null, 512) 41520 ]) 41521 ]) 41522 ]), 41523 $data.loaded && !$data.reinit ? (openBlock(), createBlock(_component_swiper, { 41524 key: 0, 41525 modules: $data.modules, 41526 "space-between": 50, 41527 navigation: $options.navOptions, 41528 keyboard: { enabled: true }, 41529 effect: $options.swiperEffect, 41530 breakpoints: $options.breakPoints, 41531 "slides-per-view": 1, 41532 autoplay: $options.autoplayOptions, 41533 speed: $props.transitionTime, 41534 threshold: 2, 41535 onSwiper: $options.onSwiperReady 41536 }, { 41537 default: withCtx(() => [ 41538 renderSlot(_ctx.$slots, "default") 41539 ]), 41540 _: 3 41541 }, 8, ["modules", "navigation", "effect", "breakpoints", "autoplay", "speed", "onSwiper"])) : createCommentVNode("", true) 41542 ], 2); 41543} 41544const ImageGallery = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$P]]); 41545const _sfc_main$O = { 41546 name: "InfoBox", 41547 // components: {}, 41548 props: { 41549 headline: { 41550 type: String, 41551 default: "" 41552 }, 41553 text: { 41554 type: String, 41555 default: "" 41556 }, 41557 imageSrc: { 41558 type: String, 41559 default: "" 41560 }, 41561 imageAlt: { 41562 type: String, 41563 default: "" 41564 } 41565 } 41566 // data() { 41567 // return {}; 41568 // }, 41569 // computed: {}, 41570 // methods: {}, 41571 // watch() {}, 41572 // Livecycle hooks 41573 // created() {}, 41574 // mounted() {}, 41575 // updated() {}, 41576 // beforeDestroy() {}, 41577}; 41578const _hoisted_1$N = { class: "info-box" }; 41579const _hoisted_2$D = { class: "body-wrapper" }; 41580const _hoisted_3$x = { class: "ib-headline" }; 41581function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) { 41582 return openBlock(), createElementBlock("div", _hoisted_1$N, [ 41583 createBaseVNode("div", _hoisted_2$D, [ 41584 createBaseVNode("h3", _hoisted_3$x, toDisplayString$1($props.headline), 1), 41585 createBaseVNode("p", null, toDisplayString$1($props.text), 1), 41586 _cache[0] || (_cache[0] = createBaseVNode("p", null, [ 41587 createBaseVNode("a", { href: "#" }, "Link to further info") 41588 ], -1)) 41589 ]) 41590 ]); 41591} 41592const InfoBox = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$O]]); 41593const _sfc_main$N = { 41594 name: "TeaserQuote", 41595 // components: {}, 41596 props: { 41597 teaserQuote: { 41598 type: String, 41599 default: "" 41600 }, 41601 quoteAuthor: { 41602 type: String, 41603 default: "" 41604 }, 41605 imgSrc: { 41606 type: String, 41607 default: "" 41608 }, 41609 link: { 41610 type: String, 41611 default: "" 41612 } 41613 } 41614 // data() { 41615 // return {}; 41616 // }, 41617 // computed: {}, 41618 // watch: {}, 41619 // Livecycle hooks 41620 // created() {}, 41621 // mounted() {}, 41622 // updated() {}, 41623 // beforeDestroy() {}, 41624 // methods: {}, 41625}; 41626const _hoisted_1$M = { 41627 class: "teaser-quote", 41628 "aria-label": "Zitat" 41629}; 41630const _hoisted_2$C = ["src"]; 41631const _hoisted_3$w = { 41632 key: 0, 41633 href: "#" 41634}; 41635function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) { 41636 return openBlock(), createElementBlock("div", _hoisted_1$M, [ 41637 createBaseVNode("img", { 41638 src: $props.imgSrc, 41639 loading: "lazy", 41640 role: "decoration" 41641 }, null, 8, _hoisted_2$C), 41642 createBaseVNode("figure", null, [ 41643 createBaseVNode("blockquote", null, toDisplayString$1($props.teaserQuote), 1), 41644 createBaseVNode("figcaption", null, toDisplayString$1($props.quoteAuthor), 1), 41645 $props.link ? (openBlock(), createElementBlock("a", _hoisted_3$w, "Zur Mediathek")) : createCommentVNode("", true) 41646 ]) 41647 ]); 41648} 41649const TeaserQuote = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$N]]); 41650const _sfc_main$M = { 41651 name: "TeaserMonoBlock", 41652 components: {} 41653 // props: {}, 41654 // data() { 41655 // return {}; 41656 // }, 41657 // computed: {}, 41658 // methods: {}, 41659 // watch() {}, 41660 // Livecycle hooks 41661 // created() {}, 41662 // mounted() {}, 41663 // updated() {}, 41664 // beforeDestroy() {}, 41665}; 41666const _hoisted_1$L = { class: "teaser-mono-block row" }; 41667const _hoisted_2$B = { class: "columns medium-9 medium-push-2" }; 41668function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) { 41669 return openBlock(), createElementBlock("div", _hoisted_1$L, [ 41670 createBaseVNode("div", _hoisted_2$B, [ 41671 renderSlot(_ctx.$slots, "default") 41672 ]) 41673 ]); 41674} 41675const TeaserMonoBlock = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$M]]); 41676const _sfc_main$L = { 41677 name: "TeaserDuoBlock", 41678 components: {} 41679 // props: {}, 41680 // data() { 41681 // return {}; 41682 // }, 41683 // computed: {}, 41684 // methods: {}, 41685 // watch() {}, 41686 // Livecycle hooks 41687 // created() {}, 41688 // mounted() {}, 41689 // updated() {}, 41690 // beforeDestroy() {}, 41691}; 41692const _hoisted_1$K = { class: "teaser-duo-block row equalize-medium" }; 41693const _hoisted_2$A = { class: "columns medium-7 teaser-1" }; 41694const _hoisted_3$v = { class: "columns medium-3 medium-push-1 teaser-2" }; 41695function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) { 41696 return openBlock(), createElementBlock("div", _hoisted_1$K, [ 41697 createBaseVNode("div", _hoisted_2$A, [ 41698 renderSlot(_ctx.$slots, "teaser1") 41699 ]), 41700 createBaseVNode("div", _hoisted_3$v, [ 41701 renderSlot(_ctx.$slots, "teaser2") 41702 ]) 41703 ]); 41704} 41705const TeaserDuoBlock = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$L]]); 41706const _sfc_main$K = { 41707 name: "TeaserColorBlock", 41708 components: {} 41709 // props: {}, 41710 // data() { 41711 // return {}; 41712 // }, 41713 // computed: {}, 41714 // methods: {}, 41715 // watch() {}, 41716 // Livecycle hooks 41717 // created() {}, 41718 // mounted() {}, 41719 // updated() {}, 41720 // beforeDestroy() {}, 41721}; 41722const _hoisted_1$J = { class: "content-block teaser-color-block row" }; 41723const _hoisted_2$z = { class: "columns large-6" }; 41724const _hoisted_3$u = { class: "columns large-6" }; 41725const _hoisted_4$n = { class: "columns large-6" }; 41726const _hoisted_5$f = { class: "columns large-6" }; 41727const _hoisted_6$c = { class: "columns large-6" }; 41728const _hoisted_7$c = { class: "columns large-6" }; 41729function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) { 41730 return openBlock(), createElementBlock("div", _hoisted_1$J, [ 41731 createBaseVNode("div", _hoisted_2$z, [ 41732 renderSlot(_ctx.$slots, "teaserMustard") 41733 ]), 41734 createBaseVNode("div", _hoisted_3$u, [ 41735 renderSlot(_ctx.$slots, "teaserBlue") 41736 ]), 41737 createBaseVNode("div", _hoisted_4$n, [ 41738 renderSlot(_ctx.$slots, "teaserOrange") 41739 ]), 41740 createBaseVNode("div", _hoisted_5$f, [ 41741 renderSlot(_ctx.$slots, "teaserPaleblue") 41742 ]), 41743 createBaseVNode("div", _hoisted_6$c, [ 41744 renderSlot(_ctx.$slots, "teaserLavender") 41745 ]), 41746 createBaseVNode("div", _hoisted_7$c, [ 41747 renderSlot(_ctx.$slots, "teaserOrchid") 41748 ]) 41749 ]); 41750} 41751const TeaserColorBlock = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$K]]); 41752const _sfc_main$J = { 41753 name: "TeaserHeroBlock" 41754 // components: {}, 41755 // props: {}, 41756 // data() { 41757 // return {}; 41758 // }, 41759 // computed: {}, 41760 // methods: {}, 41761 // watch() {}, 41762 // Livecycle hooks 41763 // created() {}, 41764 // mounted() {}, 41765 // updated() {}, 41766 // beforeDestroy() {}, 41767}; 41768const _hoisted_1$I = { class: "teaser-hero-block" }; 41769function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) { 41770 return openBlock(), createElementBlock("div", _hoisted_1$I, [ 41771 renderSlot(_ctx.$slots, "default") 41772 ]); 41773} 41774const TeaserHeroBlock = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$J]]); 41775const _sfc_main$I = { 41776 name: "LangSearchNavigation" 41777 // components: {}, 41778 // props: {}, 41779 // data() {}, 41780 // computed() {}, 41781 // methods: { }, 41782 // watch() {}, 41783 // Livecycle hooks 41784 // created() {}, 41785 // mounted() {}, 41786 // updated() {}, 41787 // beforeDestroy() {}, 41788}; 41789const _hoisted_1$H = { 41790 class: "lang-search-nav", 41791 "aria-label": "Sprachmenü und Suche" 41792}; 41793const _hoisted_2$y = { 41794 class: "icon-easy-to-read", 41795 href: "/" 41796}; 41797const _hoisted_3$t = { 41798 class: "icon-sign-language", 41799 href: "/" 41800}; 41801const _hoisted_4$m = { 41802 class: "link-search icon-search", 41803 href: "/" 41804}; 41805function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) { 41806 return openBlock(), createElementBlock("section", _hoisted_1$H, [ 41807 createBaseVNode("a", _hoisted_2$y, toDisplayString$1(_ctx.$t("menu.langSearchNav.easyToRead")), 1), 41808 createBaseVNode("a", _hoisted_3$t, toDisplayString$1(_ctx.$t("menu.langSearchNav.signLanguage")), 1
41808), 41809 _cache[0] || (_cache[0] = createStaticVNode('<div class="lang-nav"><a href="/" class="active">DE</a><a href="/">FR</a><a href="/">EN</a><a href="/">RU</a></div>', 1)), 41810 createBaseVNode("a", _hoisted_4$m, toDisplayString$1(_ctx.$t("menu.langSearchNav.search")), 1) 41811 ]); 41812} 41813const LangSearchNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$I]]); 41814const _sfc_main$H = { 41815 name: "SoMeFollow", 41816 // components: {}, 41817 props: { 41818 datenschutzUrl: { 41819 type: String, 41820 required: true 41821 }, 41822 urlTwitter: { 41823 type: String, 41824 default: null 41825 }, 41826 urlFacebook: { 41827 type: String, 41828 default: null 41829 }, 41830 urlInstagram: { 41831 type: String, 41832 default: null 41833 }, 41834 urlYoutube: { 41835 type: String, 41836 default: null 41837 }, 41838 newsletterActive: { 41839 type: Boolean, 41840 default: true 41841 }, 41842 newsletterOptInConfirmText: { 41843 type: String, 41844 default: "Bitte hier akzeptieren." 41845 } 41846 }, 41847 data() { 41848 return { 41849 optInChecked: false, 41850 mailInputErrorActive: false, 41851 newsletterMail: "", 41852 newsletterSignOnSent: false 41853 }; 41854 }, 41855 computed: { 41856 hasButtons() { 41857 return !!(this.urlFacebook || this.urlInstagram || this.urlTwitter || this.urlYoutube); 41858 } 41859 }, 41860 methods: { 41861 submitNewsletterSignOn() { 41862 if (!this.isValidNewsletterMail()) { 41863 return; 41864 } 41865 const options2 = { 41866 method: "POST", 41867 headers: { 41868 accept: "application/json", 41869 "content-type": "application/json", 41870 "api-key": void 0 41871 }, 41872 body: JSON.stringify({ 41873 updateEnabled: false, 41874 email: this.newsletterMail 41875 }) 41876 }; 41877 fetch("https://api.sendinblue.com/v3/contacts", options2).then((response) => response.json()).then((response) => { 41878 if (200 === response.status) { 41879 this.newsletterMail = ""; 41880 this.newsletterSignOnSent = true; 41881 } 41882 }).catch((err) => { 41883 console.error(err); 41884 }); 41885 }, 41886 isValidNewsletterMail() { 41887 if (this.newsletterMail && "" !== this.newsletterMail.trim().replace(" ", "") && // eslint-disable-next-line 41888 /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(this.newsletterMail)) { 41889 this.mailInputErrorActive = false; 41890 this.newsletterMail = ""; 41891 return true; 41892 } 41893 this.mailInputErrorActive = true; 41894 return false; 41895 } 41896 } 41897 // watch() {}, 41898 // Livecycle hooks 41899 // created() {}, 41900 // mounted() {}, 41901 // updated() {}, 41902 // beforeDestroy() {}, 41903}; 41904const _hoisted_1$G = { class: "so-me-follow" }; 41905const _hoisted_2$x = { 41906 key: 0, 41907 class: "social-wrapper" 41908}; 41909const _hoisted_3$s = { class: "button-group" }; 41910const _hoisted_4$l = ["href"]; 41911const _hoisted_5$e = ["href"]; 41912const _hoisted_6$b = ["href"]; 41913const _hoisted_7$b = ["href"]; 41914const _hoisted_8$8 = { 41915 key: 1, 41916 class: "nwl-wrapper" 41917}; 41918const _hoisted_9$6 = { 41919 key: 0, 41920 class: "success-message-container" 41921}; 41922const _hoisted_10$4 = { 41923 key: 1, 41924 class: "nwl-form-container" 41925}; 41926const _hoisted_11$4 = { 41927 key: 1, 41928 class: "newsletter-opt-in" 41929}; 41930const _hoisted_12$4 = { class: "newsletter-opt-in--info" }; 41931const _hoisted_13$4 = { class: "nwl-form-label-container" }; 41932const _hoisted_14$4 = { class: "nwl-mail-error" }; 41933const _hoisted_15$3 = { class: "so-me-disclaimer" }; 41934const _hoisted_16$3 = ["href"]; 41935function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) { 41936 return openBlock(), createElementBlock("div", _hoisted_1$G, [ 41937 $options.hasButtons ? (openBlock(), createElementBlock("div", _hoisted_2$x, [ 41938 _cache[4] || (_cache[4] = createBaseVNode("h2", { class: "so-me-title" }, " Folgen sie uns ", -1)), 41939 createBaseVNode("div", _hoisted_3$s, [ 41940 $props.urlTwitter ? (openBlock(), createElementBlock("a", { 41941 key: 0, 41942 class: "link-button", 41943 href: $props.urlTwitter 41944 }, " Twitter ", 8, _hoisted_4$l)) : createCommentVNode("", true), 41945 $props.urlFacebook ? (openBlock(), createElementBlock("a", { 41946 key: 1, 41947 class: "link-button", 41948 href: $props.urlFacebook 41949 }, " Facebook ", 8, _hoisted_5$e)) : createCommentVNode("", true), 41950 $props.urlInstagram ? (openBlock(), createElementBlock("a", { 41951 key: 2, 41952 class: "link-button", 41953 href: $props.urlInstagram 41954 }, " Instagram ", 8, _hoisted_6$b)) : createCommentVNode("", true), 41955 $props.urlYoutube ? (openBlock(), createElementBlock("a", { 41956 key: 3, 41957 class: "link-button", 41958 href: $props.urlYoutube 41959 }, " Youtube ", 8, _hoisted_7$b)) : createCommentVNode("", true) 41960 ]) 41961 ])) : createCommentVNode("", true), 41962 $props.newsletterActive ? (openBlock(), createElementBlock("div", _hoisted_8$8, [ 41963 _cache[6] || (_cache[6] = createBaseVNode("h2", { class: "so-me-title" }, " Newsletter ", -1)), 41964 $data.newsletterSignOnSent ? (openBlock(), createElementBlock("div", _hoisted_9$6, _cache[5] || (_cache[5] = [ 41965 createBaseVNode("p", null, " Danke für ihre Anmeldung. ", -1) 41966 ]))) : (openBlock(), createElementBlock("div", _hoisted_10$4, [ 41967 withDirectives(createBaseVNode("input", { 41968 "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.newsletterMail = $event), 41969 type: "text", 41970 class: normalizeClass(["nwls-text", $data.mailInputErrorActive ? "error-active" : ""]), 41971 placeholder: "E-Mail-Adresse eingeben", 41972 onKeyup: _cache[1] || (_cache[1] = ($event) => $data.mailInputErrorActive = false) 41973 }, null, 34), [ 41974 [vModelText, $data.newsletterMail] 41975 ]), 41976 $data.optInChecked ? (openBlock(), createElementBlock("p", { 41977 key: 0, 41978 class: "nwls-btn", 41979 onClick: _cache[2] || (_cache[2] = ($event) => $options.submitNewsletterSignOn()) 41980 }, " Anmelden ")) : (openBlock(), createElementBlock("div", _hoisted_11$4, [ 41981 createBaseVNode("p", _hoisted_12$4, toDisplayString$1($props.newsletterOptInConfirmText), 1), 41982 withDirectives(createBaseVNode("input", { 41983 id: "newsletterOptInCheckbox", 41984 "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.optInChecked = $event), 41985 type: "checkbox", 41986 name: "newsletterOptInCheckbox" 41987 }, null, 512), [ 41988 [vModelCheckbox, $data.optInChecked] 41989 ]) 41990 ])) 41991 ])), 41992 createBaseVNode("div", _hoisted_13$4, [ 41993 withDirectives(createBaseVNode("p", _hoisted_14$4, " Ãberprüfen Sie die Eingabe ", 512), [ 41994 [vShow, $data.mailInputErrorActive] 41995 ]), 41996 createBaseVNode("p", _hoisted_15$3, [ 41997 createBaseVNode("a", { href: $props.datenschutzUrl }, "Datenschutzerklärung", 8, _hoisted_16$3) 41998 ]) 41999 ]) 42000 ])) : createCommentVNode("", true) 42001 ]); 42002} 42003const SoMeFollow = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$H]]); 42004const _sfc_main$G = { 42005 name: "TextImage", 42006 // components: {}, 42007 props: { 42008 headline: { 42009 type: String, 42010 default: null 42011 }, 42012 category: { 42013 type: String, 42014 default: null 42015 } 42016 } 42017 // data() { 42018 // return {}; 42019 // }, 42020 // computed: {}, 42021 // watch: {}, 42022 // Livecycle hooks 42023 // created() {}, 42024 // mounted() {}, 42025 // updated() {}, 42026 // beforeUnmount() {}, 42027 // methods: {}, 42028}; 42029const _hoisted_1$F = { class: "text-image row" }; 42030const _hoisted_2$w = { class: "columns medium-5 large-4" }; 42031const _hoisted_3$r = { class: "columns medium-7 large-6" }; 42032const _hoisted_4$k = { class: "header" }; 42033const _hoisted_5$d = { 42034 key: 0, 42035 class: "headline" 42036}; 42037const _hoisted_6$a = { 42038 key: 1, 42039 class: "category" 42040}; 42041const _hoisted_7$a = { class: "richtext-wrapper -small" }; 42042const _hoisted_8$7 = { class: "button-group" }; 42043function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) { 42044 return openBlock(), createElementBlock("div", _hoisted_1$F, [ 42045 createBaseVNode("div", _hoisted_2$w, [ 42046 renderSlot(_ctx.$slots, "image") 42047 ]), 42048 createBaseVNode("div", _hoisted_3$r, [ 42049 createBaseVNode("div", _hoisted_4$k, [ 42050 $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_5$d, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true), 42051 $props.category ? (openBlock(), createElementBlock("p", _hoisted_6$a, toDisplayString$1($props.category), 1)) : createCommentVNode("", true) 42052 ]), 42053 createBaseVNode("div", _hoisted_7$a, [ 42054 renderSlot(_ctx.$slots, "default") 42055 ]), 42056 createBaseVNode("div", _hoisted_8$7, [ 42057 renderSlot(_ctx.$slots, "buttons") 42058 ]) 42059 ]) 42060 ]); 42061} 42062const TextImage = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$G]]); 42063const _sfc_main$F = { 42064 name: "TextImageEasyLanguage" 42065 // components: {}, 42066 //props: {}, 42067 // data() { 42068 // return {}; 42069 // }, 42070 // computed: {}, 42071 // watch: {}, 42072 // Livecycle hooks 42073 // created() {}, 42074 // mounted() {}, 42075 // updated() {}, 42076 // beforeUnmount() {}, 42077 // methods: {}, 42078}; 42079const _hoisted_1$E = { class: "text-image-easy-language row" }; 42080const _hoisted_2$v = { class: "columns medium-5 large-4" }; 42081const _hoisted_3$q = { class: "columns medium-7 large-6" }; 42082const _hoisted_4$j = { class: "richtext-wrapper" }; 42083function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) { 42084 return openBlock(), createElementBlock("div", _hoisted_1$E, [ 42085 createBaseVNode("div", _hoisted_2$v, [ 42086 renderSlot(_ctx.$slots, "image") 42087 ]), 42088 createBaseVNode("div", _hoisted_3$q, [ 42089 createBaseVNode("div", _hoisted_4$j, [ 42090 renderSlot(_ctx.$slots, "default") 42091 ]) 42092 ]) 42093 ]); 42094} 42095const TextImageEasyLanguage = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$F]]); 42096const _sfc_main$E = { 42097 name: "TextImageList" 42098 // components: {}, 42099 // props: {}, 42100 // data() { 42101 // return {}; 42102 // }, 42103 // computed: {}, 42104 // watch: {}, 42105 // Livecycle hooks 42106 // created() {}, 42107 // mounted() {}, 42108 // updated() {}, 42109 // beforeUnmount() {}, 42110 // methods: {}, 42111}; 42112const _hoisted_1$D = { class: "text-image-list" }; 42113function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) { 42114 return openBlock(), createElementBlock("div", _hoisted_1$D, [ 42115 renderSlot(_ctx.$slots, "default") 42116 ]); 42117} 42118const TextImageList = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$E]]); 42119const _sfc_main$D = { 42120 name: "VisitNavigation", 42121 // components: {}, 42122 props: { 42123 visitNavItems: { 42124 type: Array, 42125 required: true, 42126 default: () => [] 42127 } 42128 }, 42129 data() { 42130 return { 42131 isOpenVisitNav: false 42132 }; 42133 }, 42134 computed: { 42135 ...mapGetters(ENVIRONMENT_TYPES.NAME, { 42136 isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET, 42137 isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE 42138 }), 42139 belowBreakpoint() { 42140 return this.isMobile || this.isTablet;
42141 } 42142 }, 42143 methods: { 42144 toggleVisitNav() { 42145 this.isOpenVisitNav = !this.isOpenVisitNav; 42146 this.$nextTick(() => { 42147 if (this.isOpenVisitNav) { 42148 if (this.$refs.linkList.children.length > 0) { 42149 this.$refs.linkList.children[0].focus(); 42150 } 42151 } else { 42152 this.$refs.visitNavToggle.focus(); 42153 } 42154 }); 42155 }, 42156 handleEsc() { 42157 if (this.isOpenVisitNav) { 42158 this.toggleVisitNav(); 42159 } 42160 }, 42161 handleFirstItem(index2, event) { 42162 if (index2 === 0) { 42163 event.preventDefault(); 42164 this.handleEsc(); 42165 } 42166 }, 42167 handleLastItem() { 42168 this.handleEsc(); 42169 } 42170 } 42171 // watch() {}, 42172 // Livecycle hooks 42173 // created() {}, 42174 // mounted() {}, 42175 // updated() {}, 42176 // beforeDestroy() {}, 42177}; 42178const _hoisted_1$C = { 42179 id: "visit_nav_label", 42180 class: "visually-hidden", 42181 "aria-hidden": "true" 42182}; 42183const _hoisted_2$u = { 42184 ref: "linkList", 42185 class: "visit-nav" 42186}; 42187const _hoisted_3$p = ["onKeydown"]; 42188const _hoisted_4$i = ["aria-expanded"]; 42189const _hoisted_5$c = { 42190 id: "visit_nav_toggle_label", 42191 class: "visually-hidden", 42192 "aria-hidden": "true" 42193}; 42194function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) { 42195 return openBlock(), createElementBlock("nav", { 42196 class: normalizeClass(["visit-navigation", { 42197 "is-open": $data.isOpenVisitNav 42198 }]), 42199 "aria-labelledby": "visit_nav_label", 42200 onKeyup: _cache[2] || (_cache[2] = withKeys((...args) => $options.handleEsc && $options.handleEsc(...args), ["esc"])) 42201 }, [ 42202 createBaseVNode("span", _hoisted_1$C, toDisplayString$1(_ctx.$t("menu.visitNav.label")), 1), 42203 createBaseVNode("div", _hoisted_2$u, [ 42204 (openBlock(true), createElementBlock(Fragment, null, renderList($props.visitNavItems, (item, index2) => { 42205 return openBlock(), createElementBlock("a", { 42206 key: item.id, 42207 ref_for: true, 42208 ref: "visitNavItem", 42209 class: "icon-link-extern", 42210 href: "item.url", 42211 onKeydown: withKeys(withModifiers(($event) => $options.handleFirstItem(index2, $event), ["shift"]), ["tab"]) 42212 }, toDisplayString$1(item.name), 41, _hoisted_3$p); 42213 }), 128)), 42214 renderSlot(_ctx.$slots, "default") 42215 ], 512), 42216 $options.belowBreakpoint ? (openBlock(), createElementBlock("button", { 42217 key: 0, 42218 ref: "visitNavToggle", 42219 class: "visit-nav-toggle icon-dach", 42220 "aria-expanded": $data.isOpenVisitNav, 42221 "aria-labelledby": "visit_nav_toggle_label", 42222 onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleVisitNav && $options.toggleVisitNav(...args)), 42223 onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => $options.handleLastItem(), ["exact"]), ["tab"])) 42224 }, [ 42225 createBaseVNode("span", _hoisted_5$c, toDisplayString$1(_ctx.$t("menu.visitNav.label")) + " " + toDisplayString$1($data.isOpenVisitNav ? _ctx.$t("menu.toggle.label.off") : _ctx.$t("menu.toggle.label.on")), 1) 42226 ], 40, _hoisted_4$i)) : createCommentVNode("", true) 42227 ], 34); 42228} 42229const VisitNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$D]]); 42230const _sfc_main$C = { 42231 name: "MainFooter" 42232}; 42233const _hoisted_1$B = { class: "main-footer" }; 42234function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) { 42235 return openBlock(), createElementBlock("footer", _hoisted_1$B, _cache[0] || (_cache[0] = [ 42236 createStaticVNode('<nav aria-label="Footer Navigation"><div class="footer-row"><div class="f-link-container"><a href="#" class="f-menu-home-btn"> Home </a><h2 class="footer-title"> Besuch </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div><div class="f-link-container"><h2 class="footer-title"> Museum </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div><div class="f-link-container"><h2 class="footer-title"> Vermittlung </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div><div class="f-link-container"><h2 class="footer-title"> Netzwerk </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div></div><div class="footer-row line-skip"><div class="f-link-container"><a href="#" class="footer-title"> Glossar </a></div><div class="f-link-container"><a href="#" class="footer-title"> Newsroom </a></div><div class="f-link-container"><a href="#" class="footer-title"> Ansprechpartner:innen </a><a href="#" class="footer-title"> Stellenangebote </a></div><div class="f-link-container"><a href="#" class="footer-title"> Spenden </a><a href="#" class="footer-title"> Engagement </a></div></div></nav><div class="footer-row"><div class="f-link-container"><h2 class="footer-title"> Kontakt </h2><p class="line-skip"> Museum <br> Zwangsarbeit im Nationalsozialismus <br> MusterstraÃe 12 <br> 12345 Weimar </p><p> T +49 12 234567 12 <br><a href="mailto:[email protected]" class="mail">[email protected]</a></p></div><div class="f-link-container"><h2 class="footer-title"> Ãffnungszeiten </h2><p>
42236 Dienstag bis Sonntag 10 Uhr bis 18 Uhr <br> Montag geschlossen </p></div><div class="f-link-container"><h2 class="footer-title"> Weitere Hinweise </h2><a href="#">Datenschutz</a><a href="#">Impressum</a><a href="#">Erklärung zur Barrierefreiheit</a></div><div class="f-link-container"><h2 class="footer-title"> Dem Museum folgen </h2><a href="#">Twitter</a><a href="#">Instagram</a><a class="line-skip" href="#">Facebook</a><a href="#">Newsletter</a></div></div>', 2) 42237 ])); 42238} 42239const MainFooter = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$C]]); 42240const _sfc_main$B = { 42241 name: "GlossaryBlock", 42242 components: {}, 42243 props: { 42244 letters: { 42245 type: Array, 42246 required: true, 42247 default: () => [ 42248 "A", 42249 "B", 42250 "C", 42251 "D", 42252 "E", 42253 "F", 42254 "G", 42255 "H", 42256 "I", 42257 "J", 42258 "K", 42259 "L", 42260 "M", 42261 "N", 42262 "O", 42263 "P", 42264 "Q", 42265 "R", 42266 "S", 42267 "T", 42268 "U", 42269 "V", 42270 "W", 42271 "X", 42272 "Y", 42273 "Z" 42274 ] 42275 }, 42276 glossaryTerms: { 42277 type: Array, 42278 required: true, 42279 default: () => [] 42280 }, 42281 initialItem: { 42282 type: String, 42283 default: null 42284 } 42285 }, 42286 data() { 42287 return { 42288 selectedTerm: null, 42289 isOpenDescription: false 42290 }; 42291 }, 42292 computed: { 42293 ...mapState(ENVIRONMENT_TYPES.NAME, { 42294 siteName: ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME 42295 }), 42296 /** only show items assigned to current site or not assign to a specific site */
42297 siteList() { 42298 if (empty(this.glossaryTerms)) return []; 42299 if (empty(this.siteName)) return this.glossaryTerms; 42300 return this.glossaryTerms.filter((entry) => { 42301 if (empty(entry.useForSite)) return true; 42302 if (entry.useForSite.indexOf(this.siteName) >= 0) return true; 42303 return false; 42304 }); 42305 }, 42306 /** convert flat unsorted term list to sorted list per letter */ 42307 sortedList() { 42308 if (empty(this.siteList)) return []; 42309 const list = []; 42310 this.letters.forEach((letter) => { 42311 const collect = { 42312 letter, 42313 terms: [] 42314 }; 42315 collect.terms = this.siteList.filter((term) => { 42316 if (empty(term.title)) return false; 42317 let title = term.title.toLowerCase(); 42318 title = title.replace(/\u00e4/g, "a").replace(/\u00f6/g, "o").replace(/\u00fc/g, "u"); 42319 return title[0] === letter.toLowerCase(); 42320 }); 42321 if (collect.terms.length > 0) { 42322 collect.terms.sort((a, b) => a.title > b.title ? 1 : b.title > a.title ? -1 : 0); 42323 list.push(collect); 42324 } 42325 }); 42326 return list; 42327 } 42328 }, 42329 // Livecycle hooks 42330 // created() {}, 42331 mounted() { 42332 if (!empty(this.initialItem)) { 42333 this.toggleDescription(this.initialItem, true); 42334 } 42335 this.$window.onpopstate = this.onPopState; 42336 }, 42337 beforeUnmount() { 42338 this.$window.onpopstate = null; 42339 }, 42340 // updated() {}, 42341 // beforeDestroy() {}, 42342 methods: { 42343 onPopState(e) { 42344 if (empty(e.state) || empty(e.state.id)) { 42345 if (!empty(this.selectedTerm)) { 42346 this.toggleDescription(this.selectedTerm, true); 42347 } 42348 } else { 42349 this.toggleDescription(e.state.id, true); 42350 } 42351 }, 42352 toggleDescription(id, initial = false) { 42353 const urlPath = window.location.pathname; 42354 if (this.selectedTerm == id) { 42355 const newPath = urlPath.replace(`/${this.selectedTerm}`, ""); 42356 this.isOpenDescription = false; 42357 this.selectedTerm = null; 42358 if (!initial) { 42359 history.pushState({ id: null }, null, newPath); 42360 } 42361 } else { 42362 const newPath = empty(this.selectedTerm) ? `${urlPath}/${id}` : urlPath.replace(`/${this.selectedTerm}`, `/${id}`); 42363 this.selectedTerm = id; 42364 this.isOpenDescription = true; 42365 if (!initial) { 42366 history.pushState({ id: this.selectedTerm }, null, newPath); 42367 } 42368 } 42369 }, 42370 hasTerms(letter) { 42371 let found = this.sortedList.findIndex(function(item) { 42372 if (item.letter == letter) return true; 42373 }); 42374 if (found != -1) return true; 42375 else return false; 42376 } 42377 } 42378 // watch() {}, 42379}; 42380const _hoisted_1$A = { class: "glossary-block" }; 42381const _hoisted_2$t = { class: "alphabet-wrapper" }; 42382const _hoisted_3$o = { 42383 class: "alphabet", 42384 "aria-label": "Buchstaben Liste" 42385}; 42386const _hoisted_4$h = ["href", "aria-disabled"]; 42387const _hoisted_5$b = { class: "glossary-wrapper" }; 42388const _hoisted_6$9 = { 42389 class: "glossary-terms", 42390 "aria-label": "Glossar Begriffe" 42391}; 42392const _hoisted_7$9 = ["id"]; 42393const _hoisted_8$6 = { class: "terms" }; 42394const _hoisted_9$5 = ["aria-expanded"]; 42395const _hoisted_10$3 = ["onClick"]; 42396const _hoisted_11$3 = { key: 0 }; 42397const _hoisted_12$3 = { class: "term-wrapper" }; 42398const _hoisted_13$3 = ["innerHTML"]; 42399const _hoisted_14$3 = ["onClick"]; 42400function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) { 42401 return openBlock(), createElementBlock("div", _hoisted_1$A, [ 42402 createBaseVNode("div", _hoisted_2$t, [ 42403 createBaseVNode("ol", _hoisted_3$o, [ 42404 (openBlock(true), createElementBlock(Fragment, null, renderList($props.letters, (letter) => { 42405 return openBlock(), createElementBlock("li", { key: letter }, [ 42406 createBaseVNode("a", { 42407 class: normalizeClass($options.hasTerms(letter) ? "" : "no-terms"), 42408 href: $options.hasTerms(letter) ? `#letter_${letter}` : "", 42409 "aria-disabled": $options.hasTerms(letter) ? "false" : "true" 42410 }, toDisplayString$1(letter), 11, _hoisted_4$h) 42411 ]); 42412 }), 128)) 42413 ]) 42414 ]), 42415 createBaseVNode("div", _hoisted_5$b, [ 42416 createBaseVNode("dl", _hoisted_6$9, [ 42417 (openBlock(true), createElementBlock(Fragment, null, renderList($options.sortedList, (item) => { 42418 return openBlock(), createElementBlock("div", { 42419 key: item.letter, 42420 class: "letter-section" 42421 }, [ 42422 createBaseVNode("div", { 42423 id: `letter_${item.letter}`, 42424 class: "letter" 42425 }, toDisplayString$1(item.letter), 9, _hoisted_7$9), 42426 createBaseVNode("div", _hoisted_8$6, [ 42427 (openBlock(true), createElementBlock(Fragment, null, renderList(item.terms, (term, index2) => { 42428 return openBlock(), createElementBlock("div", { 42429 key: item.letter + index2, 42430 class: normalizeClass([{ 42431 "active": $data.selectedTerm == term["@name"] 42432 }, "term"]), 42433 "aria-expanded": $data.selectedTerm == term["@name"] 42434 }, [ 42435 createBaseVNode("dt", null, [ 42436 createBaseVNode("button", { 42437 onClick: ($event) => $options.toggleDescription(term["@name"]) 42438 }, [ 42439 createBaseVNode("span", null, toDisplayString$1(term.title), 1) 42440 ], 8, _hoisted_10$3) 42441 ]), 42442 $data.isOpenDescription ? (openBlock(), createElementBlock("dd", _hoisted_11$3, [ 42443 createBaseVNode("div", _hoisted_12$3, [ 42444 createBaseVNode("h2", null, toDisplayString$1(term.title), 1), 42445 createBaseVNode("div", { 42446 innerHTML: term.text 42447 }, null, 8, _hoisted_13$3), 42448 createBaseVNode("button", { 42449 ref_for: true, 42450 ref: "btnClose", 42451 class: "description-close", 42452 onClick: ($event) => $options.toggleDescription(item.letter + index2) 42453 }, toDisplayString$1(_ctx.$t("menu.subNav.back")), 9, _hoisted_14$3) 42454 ]) 42455 ])) : createCommentVNode("", true) 42456 ], 10, _hoisted_9$5); 42457 }), 128)) 42458 ]) 42459 ]); 42460 }), 128)) 42461 ]) 42462 ]) 42463 ]); 42464} 42465const GlossaryBlock = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$B]]); 42466const _sfc_main$A = { 42467 name: "MapHistoricSites", 42468 components: { 42469 ConsentInline 42470 }, 42471 props: { 42472 center: { 42473 type: Object, 42474 required: true 42475 }, 42476 zoom: { 42477 type: Number, 42478 default: 12 42479 }, 42480 satellite: { 42481 type: Boolean, 42482 default: false 42483 }, 42484 showMoreDetails: { 42485 type: Boolean, 42486 default: false 42487 }, 42488 filterShowAll: { 42489 type: Boolean, 42490 default: false 42491 }, 42492 imageUrl: { 42493 type: String, 42494 default: "" 42495 }, 42496 imageBounds: { 42497 type: Object, 42498 default: () => ({}) 42499 }, 42500 mapMarkerImageTerrain: { 42501 type: String, 42502 default: "" 42503 }, 42504 mapMarkerImageSatellite: { 42505 type: String, 42506 default: "" 42507 }, 42508 mapClusterImageTerrain: { 42509 type: String, 42510 default: "" 42511 }, 42512 mapClusterImageSatellite: { 42513 type: String, 42514 default: "" 42515 }, 42516 mapMarkerColor1ImageTerrain: { 42517 type: String, 42518 default: "" 42519 }, 42520 mapMarkerColor1ImageSatellite: { 42521 type: String, 42522 default: "" 42523 }, 42524 mapClusterColor1ImageTerrain: { 42525 type: String, 42526 default: "" 42527 }, 42528 mapClusterColor1ImageSatellite: { 42529 type: String, 42530 default: "" 42531 }, 42532 mapMarkerColor2ImageTerrain: { 42533 type: String, 42534 default: "" 42535 }, 42536 mapMarkerColor2ImageSatellite: { 42537 type: String, 42538 default: "" 42539 }, 42540 mapClusterColor2ImageTerrain: { 42541 type: String, 42542 default: "" 42543 }, 42544 mapClusterColor2ImageSatellite: { 42545 type: String, 42546 default: "" 42547 }, 42548 mapMarkerColor3ImageTerrain: { 42549 type: String, 42550 default: "" 42551 }, 42552 mapMarkerColor3ImageSatellite: { 42553 type: String, 42554 default: "" 42555 }, 42556 mapClusterColor3ImageTerrain: { 42557 type: String, 42558 default: "" 42559 }, 42560 mapClusterColor3ImageSatellite: { 42561 type: String, 42562 default: "" 42563 }, 42564 categories: { 42565 type: Array, 42566 default: () => [] 42567 }, 42568 markers: { 42569 type: Object, 42570 required: true 42571 }, 42572 icon: { 42573 type: String, 42574 default: null 42575 }, 42576 categoryOverlays: { 42577 type: Array, 42578 default: () => [] 42579 }, 42580 shouldBeRendered: { 42581 type: Boolean, 42582 default: true 42583 }, 42584 isInsideOverlay: { 42585 type: Boolean, 42586 default: true 42587 } 42588 }, 42589 data() { 42590 return { 42591 loaded: false, 42592 singleConsent: false, 42593 filterActive: false, 42594 filterActiveLabel: "", 42595 filterActiveColor: "", 42596 currentMapMarkerImageTerrain: "", 42597 currentMapMarkerImageSatellite: "", 42598 currentMapClusterImageTerrain: "", 42599 currentMapClusterImageSatellite: "", 42600 openedMarkerID: null, 42601 selectedMarker: null, 42602 currentZoom: 10,
42603 hasDefaultOverlay: false, 42604 overlays: [], 42605 mapStyles: [ 42606 { 42607 featureType: "transit", 42608 stylers: [ 42609 { 42610 visibility: "off" 42611 } 42612 ] 42613 } 42614 /* 42615 // if needed, make all streets gray to provide more contrast to the light gray background 42616 { 42617 featureType: "road", 42618 elementType: "geometry", 42619 stylers: [ 42620 { 42621 color: "#d6d6d6", 42622 }, 42623 ], 42624 }, 42625 */ 42626 ], 42627 mapStylesMinimalistic: [ 42628 { 42629 featureType: "poi", 42630 stylers: [ 42631 { 42632 visibility: "off" 42633 } 42634 ] 42635 }, 42636 { 42637 featureType: "transit", 42638 stylers: [ 42639 { 42640 visibility: "off" 42641 } 42642 ] 42643 }, 42644 { 42645 featureType: "road", 42646 stylers: [ 42647 { 42648 visibility: "simplified" 42649 } 42650 ] 42651 }, 42652 { 42653 featureType: "road", 42654 elementType: "labels", 42655 stylers: [ 42656 { 42657 visibility: "off" 42658 } 42659 ] 42660 }, 42661 { 42662 featureType: "administrative.land_parcel", 42663 stylers: [ 42664 { 42665 visibility: "off" 42666 } 42667 ] 42668 }, 42669 { 42670 featureType: "administrative.neighborhood", 42671 stylers: [ 42672 { 42673 visibility: "off" 42674 } 42675 ] 42676 } 42677 ], 42678 showMarkerLabels: true, 42679 showLabelZoom: 15 42680 }; 42681 }, 42682 computed: { 42683 ...mapGetters(ENVIRONMENT_TYPES.NAME, { 42684 isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET, 42685 isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE, 42686 assetsUrl: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_ASSETS_URL 42687 }), 42688 ...mapState(CONSENT_TYPES.NAME, { 42689 consentGoogleMaps: CONSENT_TYPES.state.CONSENT_GOOGLEMAPS 42690 }), 42691 gestureHandling() { 42692 if (!this.isInsideOverlay && !this.isMobile && !this.isTablet) return "cooperative"; 42693 else return "greedy"; 42694 }, 42695 hasFilter() { 42696 if (this.categories && this.categories.length > 0) { 42697 return true; 42698 } 42699 return false; 42700 }, 42701 hasConsent() { 42702 if (this.singleConsent === true) return true; 42703 if (this.consentGoogleMaps === true) return true; 42704 return false; 42705 }, 42706 currentMarkers() { 42707 if (this.filterActive) { 42708 return this.markers.filter((item) => { 42709 return item.filter === this.filterActive; 42710 }); 42711 } 42712 if (this.loaded) { 42713 return this.markers; 42714 } 42715 return null; 42716 }, 42717 mapCenter() { 42718 if (!this.currentMap) return; 42719 return { 42720 lat: this.currentMap.center.lat(), 42721 lng: this.currentMap.center.lng() 42722 }; 42723 } 42724 }, 42725 watch: { 42726 hasConsent(to) { 42727 if (to === true && this.shouldBeRendered === true) { 42728 this.$nextTick(() => { 42729 this.initGoogleMaps(); 42730 }); 42731 } 42732 }, 42733 shouldBeRendered(to) { 42734 if (to === true && this.hasConsent === true) { 42735 this.$nextTick(() => { 42736 this.initGoogleMaps(); 42737 }); 42738 } 42739 }, 42740 currentZoom(to) { 42741 if (to > this.showLabelZoom) { 42742 this.showMarkerLabels = true; 42743 } else { 42744 this.showMarkerLabels = false; 42745 } 42746 }, 42747 selectedMarker(to) { 42748 if (!to || !this.currentMap) return; 42749 else if (to.id) { 42750 this.openMarker(to.id); 42751 this.currentMap.panTo({ 42752 lat: to.latitude, 42753 lng: to.longitude 42754 }); 42755 this.currentMap.setZoom(17); 42756 } else { 42757 this.setFilter(to); 42758 } 42759 } 42760 }, 42761 // Livecycle hooks 42762 // created() {}, 42763 mounted() { 42764 this.$nextTick(() => { 42765 this.loaded = true; 42766 }); 42767 this.currentZoom = this.zoom; 42768 if (this.hasConsent && this.shouldBeRendered) { 42769 this.initGoogleMaps(); 42770 } 42771 if (this.categories && this.categories.length > 0) { 42772 const firstCategoryId = this.categories[0].id; 42773 this.setFilter(firstCategoryId); 42774 } 42775 this.currentMapMarkerImageTerrain = this.mapMarkerImageTerrain; 42776 this.currentMapMarkerImageSatellite = this.mapMarkerImageSatellite; 42777 this.currentMapClusterImageTerrain = this.mapClusterImageTerrain; 42778 this.currentMapClusterImageSatellite = this.mapClusterImageSatellite; 42779 if (this.currentZoom > this.showLabelZoom) { 42780 this.showMarkerLabels = true; 42781 } else { 42782 this.showMarkerLabels = false;
42783 } 42784 }, 42785 // updated() {}, 42786 // beforeDestroy() {}, 42787 methods: { 42788 ...mapMutations(CONSENT_TYPES.NAME, { 42789 consentSetGoogleMaps: CONSENT_TYPES.mutations.CONSENT_SET_GOOGLEMAPS 42790 }), 42791 setAlwaysConsent() { 42792 this.consentSetGoogleMaps({ 42793 [CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]: true 42794 }); 42795 }, 42796 initGoogleMaps() { 42797 this.$refs.mapRef.$mapPromise.then((map) => { 42798 this.currentMap = map; 42799 this.google = window.google; 42800 if (this.imageUrl && this.imageBounds) { 42801 this.initOverlay(this.imageUrl, this.imageBounds, "default"); 42802 this.hasDefaultOverlay = true; 42803 } 42804 this.categoryOverlays.forEach((overlay) => { 42805 this.initOverlay(overlay.imageUrl, overlay.imageBounds, overlay.category); 42806 }); 42807 this.setOverlay(); 42808 window.google.maps.event.addListener(map, "zoom_changed", () => { 42809 this.currentZoom = map.getZoom(); 42810 }); 42811 }); 42812 }, 42813 setOverlay() { 42814 let overlay = null; 42815 if (this.filterActive) { 42816 overlay = this.overlays.find((o) => o.id === this.filterActive); 42817 } 42818 if (!overlay && this.hasDefaultOverlay) { 42819 overlay = this.overlays.find((o) => o.id === "default"); 42820 } 42821 this.overlays.forEach((overlay2) => { 42822 overlay2.overlay.setMap(null); 42823 }); 42824 if (overlay) { 42825 overlay.overlay.setMap(this.currentMap); 42826 } 42827 }, 42828 initOverlay(imageUrl, imageBounds, id) { 42829 const overlay = new this.google.maps.GroundOverlay( 42830 imageUrl, 42831 imageBounds, 42832 { 42833 clickable: false 42834 } 42835 ); 42836 this.overlays.push({ 42837 id, 42838 overlay 42839 }); 42840 }, 42841 openMarker(id) { 42842 this.openedMarkerID = id; 42843 }, 42844 setFilter(id) { 42845 this.selectedMarker = null; 42846 this.openMarker(null); 42847 if (this.currentMap) { 42848 this.currentMap.setZoom(this.zoom); 42849 this.currentMap.panTo(this.mapCenter); 42850 } 42851 this.filterActive = id; 42852 if (id != 0) { 42853 let selectedCategory = this.categories.find((item) => item.id === id); 42854 this.filterActiveLabel = selectedCategory.label; 42855 this.filterActiveColor = selectedCategory.color; 42856 if (this.filterActiveColor == "color1") { 42857 if (this.mapMarkerColor1ImageTerrain) { 42858 this.currentMapMarkerImageTerrain = this.mapMarkerColor1ImageTerrain; 42859 } 42860 if (this.mapMarkerColor1ImageSatellite) { 42861 this.currentMapMarkerImageSatellite = this.mapMarkerColor1ImageSatellite; 42862 } 42863 if (this.mapClusterColor1ImageTerrain) { 42864 this.currentMapClusterImageTerrain = this.mapClusterColor1ImageTerrain; 42865 } 42866 if (this.mapClusterColor1ImageSatellite) { 42867 this.currentMapClusterImageSatellite = this.mapClusterColor1ImageSatellite; 42868 } 42869 } 42870 if (this.filterActiveColor == "color2") { 42871 if (this.mapMarkerColor2ImageTerrain) { 42872 this.currentMapMarkerImageTerrain = this.mapMarkerColor2ImageTerrain; 42873 } 42874 if (this.mapMarkerColor2ImageSatellite) { 42875 this.currentMapMarkerImageSatellite = this.mapMarkerColor2ImageSatellite; 42876 } 42877 if (this.mapClusterColor2ImageTerrain) { 42878 this.currentMapClusterImageTerrain = this.mapClusterColor2ImageTerrain; 42879 } 42880 if (this.mapClusterColor2ImageSatellite) { 42881 this.currentMapClusterImageSatellite = this.mapClusterColor2ImageSatellite; 42882 } 42883 } 42884 if (this.filterActiveColor == "color3") { 42885 if (this.mapMarkerColor3ImageTerrain) { 42886 this.currentMapMarkerImageTerrain = this.mapMarkerColor3ImageTerrain; 42887 } 42888 if (this.mapMarkerColor3ImageSatellite) { 42889 this.currentMapMarkerImageSatellite = this.mapMarkerColor3ImageSatellite; 42890 } 42891 if (this.mapClusterColor3ImageTerrain) { 42892 this.currentMapClusterImageTerrain = this.mapClusterColor3ImageTerrain; 42893 } 42894 if (this.mapClusterColor3ImageSatellite) { 42895 this.currentMapClusterImageSatellite = this.mapClusterColor3ImageSatellite; 42896 } 42897 } 42898 this.setOverlay(); 42899 } 42900 }, 42901 zoomIn() { 42902 this.currentMap.setZoom(this.currentMap.getZoom() + 1); 42903 }, 42904 zoomOut() { 42905 this.currentMap.setZoom(this.currentMap.getZoom() - 1); 42906 }, 42907 getMarkerIcon(marker) { 42908 let markerIconUrl = this.currentMapMarkerImageTerrain; 42909 if (this.satellite) { 42910 markerIconUrl = this.currentMapMarkerImageSatellite; 42911 } 42912 if (marker.icon && marker.icon !== "none") { 42913 markerIconUrl = this.assetsUrl + "/img/" + marker.icon + "_black.svg"; 42914 if (this.satellite) markerIconUrl = this.assetsUrl + "/img/" + marker.icon + "_white.svg"; 42915 } 42916 if (this.openedMarkerID === marker.id) { 42917 return { 42918 url: `${markerIconUrl}`, 42919 scaledSize: { width: 40, height: 40 }, 42920 labelOrigin: { x: 25, y: 50 } 42921 }; 42922 } else { 42923 return { 42924 url: `${markerIconUrl}`, 42925 scaledSize: { width: 30, height: 30 }, 42926 labelOrigin: { x: 20, y: 40 } 42927 }; 42928 } 42929 }, 42930 removeHtmlEntities(text) { 42931 const HTML_ENTITY_MAP = { 42932 "&": "&", 42933 "<": "<", 42934 ">": ">", 42935 """: '"', 42936 "'": "'", 42937 "©": "©", 42938 "®": "®", 42939 "€": "â¬" 42940 }; 42941 return text.replace(/&[a-z]+;/gi, (match) => { 42942 return HTML_ENTITY_MAP[match.toLowerCase()] || match; 42943 }); 42944 }, 42945 getMarkerLabel(marker) { 42946 if (marker.title) return this.removeHtmlEntities(marker.title); 42947 else return this.$t("map.iconLabel." + marker.icon); 42948 }, 42949 getMarkerLabelText(marker) { 42950 let markerTitle = this.removeHtmlEntities(marker.title); 42951 if (marker.type && marker.type == "citymap") { 42952 markerTitle = markerTitle.split(" "); 42953 markerTitle = markerTitle[0]; 42954 } 42955 return markerTitle; 42956 }, 42957 getMarkerLabelGhost(marker) { 42958 if (!marker.type || marker.type != "citymap") return; 42959 let markerTitle = marker.title; 42960 markerTitle = this.removeHtmlEntities(markerTitle); 42961 markerTitle = markerTitle.split(" "); 42962 const firstLetterIsNumber = !isNaN(Number(markerTitle[0])); 42963 if (firstLetterIsNumber && markerTitle.length < 2) return; 42964 if (firstLetterIsNumber) { 42965 markerTitle.shift(); 42966 } 42967 markerTitle = markerTitle.join(" "); 42968 return markerTitle; 42969 }, 42970 getMarkerLabelClass(marker) { 42971 let markerLabelClass = "marker-label"; 42972 if (this.satellite) { 42973 markerLabelClass += " marker-label-white"; 42974 } 42975 if (marker.type && marker.type == "citymap") { 42976 markerLabelClass += " marker-label-citymap"; 42977 } 42978 if (this.openedMarkerID === marker.id) { 42979 markerLabelClass += " marker-active"; 42980 } 42981 return markerLabelClass; 42982 }, 42983 clusterRenderer({ count, position }) { 42984 return new google.maps.Marker({ 42985 icon: { 42986 url: this.satellite ? this.currentMapClusterImageSatellite : this.currentMapClusterImageTerrain, 42987 // eslint-disable-next-line 42988 scaledSize: new google.maps.Size(41, 41) 42989 }, 42990 label: { 42991 text: String(count), 42992 color: "black", 42993 className: count > 9 ? "cluster-marker-label -small" : "cluster-marker-label" 42994 }, 42995 position, 42996 // eslint-disable-next-line 42997 zIndex: Number(google.maps.Marker.MAX_ZINDEX) + count 42998 }); 42999 } 43000 } 43001}; 43002const _hoisted_1$z = { 43003 key: 0, 43004 class: "map-historic-sites" 43005}; 43006const _hoisted_2$s = { 43007 key: 1, 43008 class: "tools-bar" 43009}; 43010const _hoisted_3$n = { class: "filter-bar" }; 43011const _hoisted_4$g = { 43012 key: 0, 43013 class: "filter-buttons" 43014}; 43015const _hoisted_5$a = ["id", "onClick"]; 43016const _hoisted_6$8 = { 43017 key: 1, 43018 class: "camp-select" 43019}; 43020const _hoisted_7$8 = { 43021 for: "campSelect", 43022 class: "visually-hidden" 43023}; 43024const _hoisted_8$5 = { value: null }; 43025const _hoisted_9$4 = ["value"]; 43026const _hoisted_10$2 = { 43027 key: 2, 43028 class: "camp-select" 43029}; 43030const _hoisted_11$2 = { 43031 for: "campSelect", 43032 class: "visually-hidden" 43033}; 43034const _hoisted_12$2 = { value: null }; 43035const _hoisted_13$2 = ["label"]; 43036const _hoisted_14$2 = ["value"]; 43037const _hoisted_15$2 = ["label"]; 43038const _hoisted_16$2 = ["value"]; 43039const _hoisted_17$2 = { class: "zoom-bar" }; 43040const _hoisted_18$2 = ["src"]; 43041const _hoisted_19$2 = ["src"]; 43042const _hoisted_20$1 = ["src"]; 43043const _hoisted_21$1 = { key: 1 }; 43044const _hoisted_22$1 = ["href"]; 43045const _hoisted_23$1 = { 43046 key: 0, 43047 class: "marker-info" 43048}; 43049const _hoisted_24$1 = { class: "visually-hidden" }; 43050const _hoisted_25$1 = ["src"]; 43051const _hoisted_26 = ["innerHTML"]; 43052const _hoisted_27 = { key: 1 }; 43053const _hoisted_28 = ["href"]; 43054function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
43055 const _component_consent_inline = resolveComponent("consent-inline"); 43056 const _component_GMapInfoWindow = resolveComponent("GMapInfoWindow"); 43057 const _component_GMapMarker = resolveComponent("GMapMarker"); 43058 const _component_GMapCluster = resolveComponent("GMapCluster"); 43059 const _component_GMapMap = resolveComponent("GMapMap"); 43060 return $props.shouldBeRendered ? (openBlock(), createElementBlock("div", _hoisted_1$z, [ 43061 !$options.hasConsent ? (openBlock(), createBlock(_component_consent_inline, { 43062 key: 0, 43063 "service-name": { service: "Google Maps" }, 43064 onSetSingleConsent: _cache[0] || (_cache[0] = ($event) => $data.singleConsent = true), 43065 onSetAlwaysConsent: $options.setAlwaysConsent 43066 }, null, 8, ["onSetAlwaysConsent"])) : createCommentVNode("", true), 43067 $options.hasConsent ? (openBlock(), createElementBlock("div", _hoisted_2$s, [ 43068 createBaseVNode("div", _hoisted_3$n, [ 43069 $options.hasFilter && !_ctx.isTablet && !_ctx.isMobile ? (openBlock(), createElementBlock("div", _hoisted_4$g, [ 43070 (openBlock(true), createElementBlock(Fragment, null, renderList($props.categories, (c, index2) => { 43071 return openBlock(), createElementBlock("button", { 43072 id: c.id, 43073 key: index2, 43074 class: normalizeClass(["link-button map-filter", ($data.filterActive == c.id ? " active" : "") + " color-" + c.color]), 43075 onClick: ($event) => $options.setFilter(c.id) 43076 }, toDisplayString$1(c.label), 11, _hoisted_5$a); 43077 }), 128)), 43078 $props.filterShowAll ? (openBlock(), createElementBlock("button", { 43079 key: 0, 43080 id: "0", 43081 class: normalizeClass(["link-button map-filter", $data.filterActive == 0 ? "active" : ""]), 43082 onClick: _cache[1] || (_cache[1] = ($event) => $options.setFilter(0)) 43083 }, toDisplayString$1(_ctx.$t("map.toolbar.showAll")), 3)) : createCommentVNode("", true) 43084 ])) : createCommentVNode("", true), 43085 $options.currentMarkers && ($options.hasFilter && !_ctx.isTablet && !_ctx.isMobile || !$options.hasFilter) ? (openBlock(), createElementBlock("div", _hoisted_6$8, [ 43086 createBaseVNode("label", _hoisted_7$8, toDisplayString$1(_ctx.$t("map.toolbar.selectDefault")), 1), 43087 withDirectives(createBaseVNode("select", { 43088 id: "campSelect", 43089 "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $data.selectedMarker = $event), 43090 name: "campSelect", 43091 class: normalizeClass("color-" + $data.filterActiveColor) 43092 }, [ 43093 createBaseVNode("option", _hoisted_8$5, toDisplayString$1(_ctx.$t("map.toolbar.selectDefault")), 1), 43094 (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (marker) => { 43095 return openBlock(), createElementBlock("option", { 43096 key: marker.id, 43097 value: marker 43098 }, toDisplayString$1($options.getMarkerLabel(marker)), 9, _hoisted_9$4); 43099 }), 128)) 43100 ], 2), [ 43101 [vModelSelect, $data.selectedMarker] 43102 ]) 43103 ])) : createCommentVNode("", true), 43104 $options.hasFilter && (_ctx.isTablet || _ctx.isMobile) ? (openBlock(), createElementBlock("div", _hoisted_10$2, [ 43105 createBaseVNode("label", _hoisted_11$2, toDisplayString$1(_ctx.$t("map.toolbar.showAll")), 1), 43106 withDirectives(createBaseVNode("select", { 43107 id: "campSelect", 43108 "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.selectedMarker = $event), 43109 name: "campSelect", 43110 class: normalizeClass("color-" + $data.filterActiveColor) 43111 }, [ 43112 createBaseVNode("option", _hoisted_12$2, toDisplayString$1(_ctx.$t("map.toolbar.showAll")), 1), 43113 createBaseVNode("optgroup", { 43114 label: _ctx.$t("map.toolbar.selectFilter") 43115 }, [ 43116 (openBlock(true), createElementBlock(Fragment, null, renderList($props.categories, (c, index2) => { 43117 return openBlock(), createElementBlock("option", { 43118 key: index2, 43119 value: c.id, 43120 class: normalizeClass($data.filterActive == c.id ? "active" : "") 43121 }, toDisplayString$1(c.label), 11, _hoisted_14$2); 43122 }), 128)) 43123 ], 8, _hoisted_13$2), 43124 $options.currentMarkers ? (openBlock(), createElementBlock("optgroup", { 43125 key: 0, 43126 label: _ctx.$t("map.toolbar.selectCamp") + " " + $data.filterActiveLabel 43127 }, [ 43128 (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (marker) => { 43129 return openBlock(), createElementBlock("option", { 43130 key: marker.id, 43131 value: marker 43132 }, toDisplayString$1($options.getMarkerLabel(marker)), 9, _hoisted_16$2); 43133 }), 128)) 43134 ], 8, _hoisted_15$2)) : createCommentVNode("", true) 43135 ], 2), [ 43136 [vModelSelect, $data.selectedMarker] 43137 ]) 43138 ])) : createCommentVNode("", true) 43139 ]), 43140 createBaseVNode("div", _hoisted_17$2, [ 43141 createBaseVNode("button", { 43142 class: "link-button zoom-in", 43143 onClick: _cache[4] || (_cache[4] = (...args) => $options.zoomIn && $options.zoomIn(...args)) 43144 }, [ 43145 createBaseVNode("img", { 43146 src: `${_ctx.assetsUrl}/img/zoom-in.svg`, 43147 alt: "+" 43148 }, null, 8, _hoisted_18$2) 43149 ]), 43150 createBaseVNode("button", { 43151 class: "link-button zoom-out", 43152 onClick: _cache[5] || (_cache[5] = (...args) => $options.zoomOut && $options.zoomOut(...args)) 43153 }, [ 43154 createBaseVNode("img", { 43155 src: `${_ctx.assetsUrl}/img/zoom-out.svg`, 43156 alt: "-" 43157 }, null, 8, _hoisted_19$2) 43158 ]) 43159 ]) 43160 ])) : createCommentVNode("", true), 43161 $options.hasConsent ? (openBlock(), createBlock(_component_GMapMap, { 43162 key: 2, 43163 ref: "mapRef", 43164 center: $props.center, 43165 zoom: $props.zoom, 43166 "map-type-id": $props.satellite ? "hybrid" : $props.showMoreDetails ? "roadmap" : "terrain", 43167 class: normalizeClass($props.satellite ? "map-satellite" : "map-terrain"), 43168 options: { 43169 zoomControl: false, 43170 mapTypeControl: false, 43171 scaleControl: false, 43172 streetViewControl: false, 43173 rotateControl: false, 43174 fullscreenControl: false, 43175 disableDefaultUi: false, 43176 styles: $props.showMoreDetails ? $data.mapStyles : $data.mapStylesMinimalistic, 43177 draggableCursor: "grab", 43178 gestureHandling: $options.gestureHandling 43179 } 43180 }, {
43181 default: withCtx(() => [ 43182 createVNode(_component_GMapCluster, { 43183 renderer: { render: $options.clusterRenderer } 43184 }, { 43185 default: withCtx(() => [ 43186 (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (m) => { 43187 return openBlock(), createBlock(_component_GMapMarker, { 43188 key: `m${m.id}`, 43189 position: { 43190 lat: m.latitude, 43191 lng: m.longitude 43192 }, 43193 clickable: m.showInfo, 43194 cursor: m.showInfo ? "pointer" : "grab", 43195 draggable: false, 43196 label: $data.showMarkerLabels && m.title ? { 43197 text: $options.getMarkerLabelText(m), 43198 className: $options.getMarkerLabelClass(m) 43199 } : null, 43200 icon: $options.getMarkerIcon(m), 43201 onClick: ($event) => $options.openMarker(m.id) 43202 }, { 43203 default: withCtx(() => [ 43204 m.showInfo ? (openBlock(), createBlock(_component_GMapInfoWindow, { 43205 key: 0, 43206 options: { 43207 pixelOffset: { 43208 width: 0, 43209 height: 0 43210 }, 43211 maxWidth: 400, 43212 maxHeight: 400 43213 }, 43214 closeclick: true, 43215 opened: false, 43216 onCloseclick: _cache[6] || (_cache[6] = ($event) => $options.openMarker(null)) 43217 }, { 43218 default: withCtx(() => [ 43219 m.image ? (openBlock(), createElementBlock("img", { 43220 key: 0, 43221 src: m.image, 43222 role: "decoration", 43223 loading: "lazy", 43224 width: "400", 43225 height: "250" 43226 }, null, 8, _hoisted_20$1)) : createCommentVNode("", true), 43227 createBaseVNode("h3", null, toDisplayString$1(m.title), 1), 43228 m.text ? (openBlock(), createElementBlock("p", _hoisted_21$1, toDisplayString$1(m.text), 1)) : createCommentVNode("", true), 43229 m.detailPage ? (openBlock(), createElementBlock("a", { 43230 key: 2, 43231 href: m.detailPage, 43232 target: "_blank" 43233 }, toDisplayString$1(_ctx.$t("map.infoWindow.readMore")), 9, _hoisted_22$1)) : createCommentVNode("", true) 43234 ]), 43235 _: 2 43236 }, 1024)) : createCommentVNode("", true) 43237 ]), 43238 _: 2 43239 }, 1032, ["position", "clickable", "cursor", "label", "icon", "onClick"]); 43240 }), 128)), 43241 (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (m) => { 43242 return openBlock(), createElementBlock(Fragment, { 43243 key: `m${m.id}` 43244 }, [ 43245 m.showTitle ? (openBlock(), createBlock(_component_GMapMarker, { 43246 key: 0, 43247 position: { 43248 lat: m.latitude, 43249 lng: m.longitude 43250 }, 43251 draggable: false, 43252 icon: { 43253 path: "M 0,0", 43254 scale: 0 43255 }, 43256 label: $data.showMarkerLabels && m.title ? { 43257 text: $options.getMarkerLabelGhost(m), 43258 className: "marker-label-ghost" 43259 } : null 43260 }, null, 8, ["position", "label"])) : createCommentVNode("", true) 43261 ], 64); 43262 }), 128)) 43263 ]), 43264 _: 1 43265 }, 8, ["renderer"]) 43266 ]), 43267 _: 1 43268 }, 8, ["center", "zoom", "map-type-id", "class", "options"])) : createCommentVNode("", true), 43269 (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (m) => { 43270 return openBlock(), createElementBlock("div", { 43271 key: `minfo${m.id}` 43272 }, [ 43273 m.showInfo && $data.openedMarkerID === m.id ? (openBlock(), createElementBlock("div", _hoisted_23$1, [ 43274 createBaseVNode("button", { 43275 ref_for: true, 43276 ref: "closeMarkerInfo", 43277 class: "link-button icon-close-menu-mobile", 43278 onClick: _cache[7] || (_cache[7] = ($event) => $options.openMarker(null)) 43279 }, [ 43280 createBaseVNode("span", _hoisted_24$1, toDisplayString$1(_ctx.$t("overlay.close.label")), 1
43280) 43281 ], 512), 43282 m.image ? (openBlock(), createElementBlock("img", { 43283 key: 0, 43284 src: m.image, 43285 role: "decoration", 43286 loading: "lazy", 43287 width: "400", 43288 height: "250" 43289 }, null, 8, _hoisted_25$1)) : createCommentVNode("", true), 43290 createBaseVNode("h3", { 43291 innerHTML: m.infoboxTitle || m.title 43292 }, null, 8, _hoisted_26), 43293 m.text ? (openBlock(), createElementBlock("p", _hoisted_27, toDisplayString$1(m.text), 1)) : createCommentVNode("", true), 43294 m.detailPage ? (openBlock(), createElementBlock("a", { 43295 key: 2, 43296 href: m.detailPage, 43297 target: "_blank" 43298 }, toDisplayString$1(_ctx.$t("map.infoWindow.readMore")), 9, _hoisted_28)) : createCommentVNode("", true) 43299 ])) : createCommentVNode("", true) 43300 ]); 43301 }), 128)) 43302 ])) : createCommentVNode("", true); 43303} 43304const MapHistoricSites = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$A]]); 43305const _sfc_main$z = { 43306 name: "ShopItemHeader", 43307 components: { 43308 AddToCart 43309 }, 43310 props: { 43311 title: { 43312 type: String, 43313 default: "" 43314 }, 43315 summary: { 43316 type: String, 43317 default: "" 43318 }, 43319 author: { 43320 type: String, 43321 default: "" 43322 }, 43323 price: { 43324 type: String, 43325 default: "" 43326 }, 43327 publisher: { 43328 type: String, 43329 default: "" 43330 }, 43331 publicationDate: { 43332 type: String, 43333 default: "" 43334 }, 43335 pages: { 43336 type: String, 43337 default: "" 43338 }, 43339 duration: { 43340 type: String, 43341 default: "" 43342 }, 43343 articleNumber: { 43344 type: String, 43345 default: "" 43346 } 43347 } 43348 // data() { 43349 // return {}; 43350 // }, 43351 //computed: { }, 43352 // methods: {}, 43353 // watch() {}, 43354 // Livecycle hooks 43355 // created() {}, 43356 // mounted() {}, 43357 // updated() {}, 43358 // beforeDestroy() {}, 43359}; 43360const _hoisted_1$y = { class: "shop-item-header" }; 43361const _hoisted_2$r = { class: "content-block row collapse" }; 43362const _hoisted_3$m = { class: "columns large-5" }; 43363const _hoisted_4$f = { class: "columns large-5 large-push-1" }; 43364const _hoisted_5$9 = { class: "richtext-wrapper -small" }; 43365const _hoisted_6$7 = { class: "richtext-wrapper -small" }; 43366const _hoisted_7$7 = { class: "price" }; 43367const _hoisted_8$4 = { class: "richtext-wrapper -small shop-item-meta" }; 43368function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) { 43369 const _component_add_to_cart = resolveComponent("add-to-cart"); 43370 return openBlock(), createElementBlock("header", _hoisted_1$y, [ 43371 createBaseVNode("div", _hoisted_2$r, [ 43372 createBaseVNode("div", _hoisted_3$m, [ 43373 renderSlot(_ctx.$slots, "image") 43374 ]), 43375 createBaseVNode("div", _hoisted_4$f, [ 43376 createBaseVNode("h1", null, toDisplayString$1($props.title), 1), 43377 createBaseVNode("h2", _hoisted_5$9, toDisplayString$1($props.summary), 1), 43378 createBaseVNode("h3", _hoisted_6$7, [ 43379 createTextVNode(toDisplayString$1($props.author), 1), 43380 _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)), 43381 createBaseVNode("span", _hoisted_7$7, toDisplayString$1($props.price), 1) 43382 ]), 43383 createVNode(_component_add_to_cart, { "article-number": $props.articleNumber }, null, 8, ["article-number"]), 43384 createBaseVNode("div", _hoisted_8$4, [ 43385 createTextVNode(toDisplayString$1($props.publisher), 1), 43386 _cache[1] || (_cache[1] = createBaseVNode("br", null, null, -1)), 43387 createTextVNode(" " + toDisplayString$1($props.publicationDate), 1), 43388 _cache[2] || (_cache[2] = createBaseVNode("br", null, null, -1)), 43389 createTextVNode(" " + toDisplayString$1($props.pages) + toDisplayString$1($props.duration), 1), 43390 _cache[3] || (_cache[3] = createBaseVNode("br", null, null, -1)), 43391 createTextVNode(" " + toDisplayString$1(_ctx.$t("shop.article.prefix.short")) + " " + toDisplayString$1($props.articleNumber), 1) 43392 ]), 43393 renderSlot(_ctx.$slots, "tags") 43394 ]) 43395 ]) 43396 ]); 43397} 43398const ShopItemHeader = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$z]]); 43399const _sfc_main$y = { 43400 name: "FormBlock", 43401 // components: {}, 43402 props: { 43403 headline: { 43404 type: String, 43405 default: "" 43406 }, 43407 text: { 43408 type: String, 43409 default: "" 43410 }, 43411 imageSrc: { 43412 type: String, 43413 default: "" 43414 }, 43415 imageAlt: { 43416 type: String, 43417 default: "" 43418 } 43419 } 43420 // data() { 43421 // return {}; 43422 // }, 43423 // computed: {}, 43424 // methods: {}, 43425 // watch() {}, 43426 // Livecycle hooks 43427 // created() {}, 43428 // mounted() {}, 43429 // updated() {}, 43430 // beforeDestroy() {}, 43431}; 43432const _hoisted_1$x = { class: "form form-block" }; 43433function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) { 43434 return openBlock(), createElementBlock("form", _hoisted_1$x, _cache[0] || (_cache[0] = [ 43435 createStaticVNode('<div class="form-errors"><h2>Fehler</h2><ul><li><a href="#">Error Text</a></li><li><a href="#">Error Text</a></li></ul></div><p class="required"><span>Die mit <span>*</span> markierten Felder müssen ausgefüllt werden.</span></p><fieldset><legend>Ansprechpartner:innen</legend><div class="form-item large error"><label for="field09"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field09" name="" type="text" value="" class="" required></div><div class="form-item medium"><label for="field08"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field08" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field07"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field07" name="" type="text" value="" class=""></div></fieldset><fieldset><legend>Angaben zur Gruppe</legend><div class="form-item medium"><label for="field06"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field06" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field05"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field05" name="" type="text" value="" class=""></div><div class="form-item large"><p class="label"><span> Dolmetscher ist bei der Gruppe * </span></p><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field04" type="radio" name="field1" value="val 1" checked><label for="field04"><span>val 1</span></label></div><div class="radiocheck"><input id="field03" type="radio" name="field1" value="val 2"><label for="field03"><span>val 2</span></label></div></div></div><div class="form-item medium error"><p class="label"> Der Besuch findet statt im Rahmen von </p><div class="radiocheck-wrapper"><div class="radiocheck">
43435<input id="field02" type="checkbox" name="field1" value="val 1"><label for="field02"><span>Projekttagen</span></label></div><div class="radiocheck"><input id="field01" type="checkbox" name="field1" value="val 2" checked><label for="field01"><span>Unterricht</span></label></div><div class="radiocheck"><input id="field30" type="checkbox" name="field1" value="val 2"><label for="field30"><span>Klassenfahrt</span></label></div></div></div><div class="form-item medium"><label for="field29"><span> Oder </span></label><input id="field29" name="" type="text" value="" class=""></div></fieldset><fieldset><legend>Welche Angebote der Gedenkstätte möchten Sie nutzen? *</legend><div class="form-item large error"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field28" type="radio" name="field1" value="val 1" checked><label for="field28"><span>Ãberblicksführungen</span></label></div><div class="radiocheck"><input id="field27" type="radio" name="field1" value="val 2"><label for="field27"><span>Ausführliche Geländeführungen</span></label></div><div class="radiocheck"><input id="field26" type="radio" name="field1" value="val 2"><label for="field26"><span> Ausführliche Geländeführungen können zu verschiedenen Themenschwerpunkten der KZ-Geschichte (z.B. Gedenkweg Buchenwaldbahn, Zwangsarbeit, Täterbereich u.a.m.) sowie zum Mahnmal und Umgang mit der Erinnerung vereinbart werden. </span></label></div></div></div><div class="form-item large"><p class="info-text"><strong>Ãberblicksführungen (2 Stunden - beim Erstbesuch empfohlen):</strong><span> Diese Führung, beginnend im Bereich der Besucherinformation, wird über den Carachoweg und das Lagertor zum ehemaligen Appellplatz fortgesetzt, schlieÃt einen Vortrag zur Lagergeschichte an einem Modell ein, und endet nach der betreuten Besichtigung des Krematoriums.<br> Für Schulklassen empfehlen wir vorher den Einführungsfilm der Gedenkstätte (30 Minuten) und anschlieÃend eine angeleitete Vertiefung in der Dauerausstellung zur Geschichte des Konzentrationslagers (ca. 1 Stunde). </span></p><p class="info-text"><strong>Ausführliche Geländeführungen (3 Stunden):</strong><br><span> Ausführliche Geländeführungen können zu verschiedenen Themenschwerpunkten der KZ-Geschichte (z.B. Gedenkweg Buchenwaldbahn, Zwangsarbeit, Täterbereich u.a.m.) sowie zum Mahnmal und Umgang mit der Erinnerung vereinbart werden.<br> Nähere Informationen erteilt die Besucherinformation. </span></p><p class="info-text"><strong>iPod touch/iPod (2 Stunden):</strong><br><span> Für einen individuellen Rundgang durch die Gedenkstätte haben Sie die Möglichkeit, mittels eines iPod, wahlweise auch mit Einblendung von historischen Aufnahmen, zusätzliche Informationen zur Geschichte des Ortes zu erhalten. Der iPod ist in folgenden Sprachen erhältlich: deutsch, englisch, französisch, italienisch, spanisch, japanisch, russisch, niederländisch; der iPod touch ist erhältlich in: deutsch, englisch, französisch, italienisch, spanisch, niederländisch. </span></p></div></fieldset><fieldset><legend>Terminwunsch/Aufenthaltsdauer</legend><div class="form-item large"><label for="field25"><span> Datum a) <dfn title="required">*</dfn></span></label><input id="field25" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field24"><span> Uhrzeit von <dfn title="required">*</dfn></span></label><input id="field24" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field23"><span> Uhrzeit bis <dfn title="required">*</dfn></span></label><input id="field23" name="" type="text" value="" class=""></div><div class="form-item large"><label for="field22"><span> Datum b) </span></label><input id="field22" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field21"><span> Uhrzeit von </span></label><input id="field21" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field20"><span> Uhrzeit bis </span></label><input id="field20" name="" type="text" value="" class=""></div><div class="form-item large"><label for="field19"><span>
43435 Datum c) </span></label><input id="field19" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field18"><span> Uhrzeit von </span></label><input id="field18" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field17"><span> Uhrzeit bis </span></label><input id="field17" name="" type="text" value="" class=""></div></fieldset><fieldset><legend>Gründe für den Besuch der Gedenkstätte Buchenwald</legend><div class="form-item large"><p class="info-text"><span> Je genauer Sie uns informieren, desto besser können wir Ihre Betreuung vorbereiten und an die Fragen und das Wissen der Schülerinnen und Schüler anknüpfen. </span></p></div><div class="form-item medium"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field16" type="checkbox" name="field1" value="val 2"><label for="field16">Ergänzung zum Schulstoff im Fach</label></div></div></div><div class="form-item medium label-hidden"><label for="field15"><span> Fachname </span></label><input id="field15" name="" type="text" value="" class=""></div><div class="form-item large"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field14" type="checkbox" name="field1" value="val 2"><label for="field14">Diskussionen in der Klasse/Gruppe über die NS-Zeit und aktuelle Situationen</label></div></div></div><div class="form-item medium"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field13" type="checkbox" name="field1" value="val 2"><label for="field13">andere Anlässe</label></div></div></div><div class="form-item medium label-hidden"><label for="field12"><span> Anlässe </span></label><input id="field12" name="" type="text" value="" class=""></div><div class="form-item large"><label for="field11"><span> Wie erfolgte die Vorbereitung der Gruppe? Wie wird die Nachbereitung erfolgen? <dfn title="required">*</dfn></span></label><textarea id="field11" name="" rows="10" value=""></textarea></div><div class="form-submit"><button type="submit" class="link-button"> Absenden </button></div></fieldset>', 7) 43436 ])); 43437} 43438const FormBlock = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$y]]); 43439const _sfc_main$x = { 43440 name: "SearchField", 43441 components: { 43442 DividerLine 43443 }, 43444 props: { 43445 label: { 43446 type: String, 43447 default: "Mehr Info" 43448 }, 43449 url: { 43450 type: String, 43451 default: "/" 43452 }, 43453 isDownload: { 43454 type: Boolean, 43455 default: false 43456 } 43457 }, 43458 data() { 43459 return { 43460 searchWord: "" 43461 }; 43462 }, 43463 // return {}; 43464 // }, 43465 // computed: {}, 43466 methods: { 43467 printToConsole() { 43468 console.log(this.searchWord); 43469 } 43470 } 43471 // watch() {}, 43472 // Livecycle hooks 43473 // created() {}, 43474 // mounted() {}, 43475 // updated() {}, 43476 // beforeDestroy() {}, 43477}; 43478const _hoisted_1$w = { class: "search-field" }; 43479const _hoisted_2$q = { class: "search-field-wrapper" }; 43480const _hoisted_3$l = ["placeholder", "aria-label"]; 43481const _hoisted_4$e = { 43482 class: "search-button", 43483 type: "submit" 43484}; 43485function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) { 43486 const _component_divider_line = resolveComponent("divider-line"); 43487 return openBlock(), createElementBlock("div", _hoisted_1$w, [ 43488 createBaseVNode("div", _hoisted_2$q, [ 43489 createBaseVNode("form", { 43490 id: "search_form", 43491 role: "search", 43492 onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.printToConsole && $options.printToConsole(...args), ["prevent"])) 43493 }, [ 43494 withDirectives(createBaseVNode("input", { 43495 id: "search", 43496 "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.searchWord = $event), 43497 type: "search", 43498 name: "search", 43499 class: "search-input", 43500 placeholder: _ctx.$t("search.field.placeholder"), 43501 autofocus: "", 43502 "aria-label": _ctx.$t("search.field.label") 43503 }, null, 8, _hoisted_3$l), [ 43504 [vModelText, $data.searchWord] 43505 ]), 43506 createBaseVNode("button", _hoisted_4$e, toDisplayString$1(_ctx.$t("search.button.label")), 1) 43507 ], 32) 43508 ]), 43509 createVNode(_component_divider_line), 43510 _cache[2] || (_cache[2] = createBaseVNode("div", { class: "search-result-count" }, " (4 Treffer) ", -1)) 43511 ]); 43512} 43513const SearchField = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$x]]); 43514const _sfc_main$w = { 43515 name: "SupporterLogoArea", 43516 // components: {}, 43517 props: { 43518 text: { 43519 type: Object, 43520 required: true 43521 }, 43522 mainAreaStyling: { 43523 type: Boolean, 43524 default: false 43525 } 43526 } 43527 // data() { 43528 // return {}; 43529 // }, 43530 // computed: {}, 43531 // watch: {}, 43532 // Livecycle hooks 43533 // created() {}, 43534 // mounted() {}, 43535 // updated() {}, 43536 // beforeUnmount() {}, 43537 // methods: {}, 43538}; 43539const _hoisted_1$v = { class: "text" }; 43540const _hoisted_2$p = { class: "container" }; 43541function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) { 43542 return openBlock(), createElementBlock("div", { 43543 class: normalizeClass(["supporter-logo-area", { "main-area-styling": $props.mainAreaStyling }]) 43544 }, [ 43545 createBaseVNode("p", _hoisted_1$v, toDisplayString$1($props.text), 1), 43546 createBaseVNode("div", _hoisted_2$p, [ 43547 renderSlot(_ctx.$slots, "default") 43548 ]) 43549 ], 2); 43550} 43551const SupporterLogoArea = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$w]]); 43552const _sfc_main$v = { 43553 name: "NewsletterRegistration", 43554 // components: {}, 43555 props: { 43556 labels: { 43557 type: Object, 43558 required: true 43559 }, 43560 sendinblueListIds: { 43561 type: Object, 43562 required: true 43563 } 43564 }, 43565 data() { 43566 return { 43567 email: "", 43568 firstName: "", 43569 lastName: "", 43570 organization: "", 43571 emailInvalid: false, 43572 firstNameInvalid: false, 43573 lastNameInvalid: false, 43574 organizationInvalid: false, 43575 privacyInvalid: false, 43576 isBuchenwald: false, 43577 isDora: false, 43578 isMuseum: false, 43579 isStiftung: false,
43580 privacyIsChecked: false, 43581 buchenwaldChecked: false, 43582 doraChecked: false, 43583 stiftungChecked: false, 43584 museumChecked: false 43585 }; 43586 }, 43587 computed: { 43588 ...mapState(ENVIRONMENT_TYPES.NAME, { 43589 siteName: ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME 43590 }) 43591 }, 43592 // watch: {}, 43593 // Livecycle hooks 43594 created() { 43595 switch (this.siteName) { 43596 case "buchenwald": 43597 this.isBuchenwald = true; 43598 break; 43599 case "dora": 43600 this.isDora = true; 43601 break; 43602 case "stiftung-gedenkstaetten": 43603 this.isStiftung = true; 43604 break; 43605 case "museum-zwangsarbeit": 43606 this.isMuseum = true; 43607 break; 43608 } 43609 }, 43610 mounted() { 43611 }, 43612 // updated() {}, 43613 // beforeUnmount() {}, 43614 methods: { 43615 submitNewsletterSignOn() { 43616 if (this.validate()) { 43617 return; 43618 } 43619 let ids = this.sendinblueIdMapping(); 43620 const options2 = { 43621 method: "POST", 43622 headers: { 43623 accept: "application/json", 43624 "content-type": "application/json", 43625 "api-key": "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" 43626 }, 43627 body: JSON.stringify({ 43628 updateEnabled: false, 43629 email: this.email, 43630 attributes: { "VORNAME": this.firstName, "NACHNAME": this.lastName, "ORGANISATION": this.organization }, 43631 listIds: ids 43632 }) 43633 }; 43634 fetch("https://api.sendinblue.com/v3/contacts", options2).then((response) => response.json()).then((response) => { 43635 if (200 === response.status) { 43636 this.newsletterMail = ""; 43637 this.newsletterSignOnSent = true; 43638 } 43639 }).catch((err) => { 43640 console.error(err); 43641 }); 43642 }, 43643 validate() { 43644 let error = false; 43645 if (this.firstName === "") { 43646 error = true; 43647 this.firstNameInvalid = true; 43648 } else { 43649 this.firstNameInvalid = false; 43650 } 43651 if (this.lastName === "") { 43652 error = true; 43653 this.lastNameInvalid = true; 43654 } else { 43655 this.lastNameInvalid = false; 43656 } 43657 if (this.organization === "") { 43658 error = true; 43659 this.organizationInvalid = true; 43660 } else { 43661 this.organizationInvalid = false; 43662 } 43663 if (!this.isValidEmail()) { 43664 error = true; 43665 this.emailInvalid = true; 43666 } else { 43667 this.emailInvalid = false; 43668 } 43669 if (!this.privacyIsChecked) { 43670 error = true; 43671 this.privacyInvalid = true; 43672 } else { 43673 this.privacyInvalid = false; 43674 } 43675 return error; 43676 }, 43677 isValidEmail() { 43678 return !!(this.email && "" !== this.email.trim().replace(" ", "") && // eslint-disable-next-line 43679 /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(this.email)); 43680 }, 43681 sendinblueIdMapping() { 43682 let ids = []; 43683 if (this.isBuchenwald) { 43684 ids.push(this.sendinblueListIds["buchenwald"]); 43685 } else if (this.isDora) { 43686 ids.push(this.sendinblueListIds["dora"]); 43687 } else if (this.isMuseum) { 43688 ids.push(this.sendinblueListIds["museum"]); 43689 } else if (this.isStiftung) { 43690 ids.push(this.sendinblueListIds["stiftung"]); 43691 } 43692 if (this.buchenwaldChecked) { 43693 const id = this.sendinblueListIds["buchenwald"]; 43694 ids.indexOf(id) === -1 ? ids.push(id) : {}; 43695 } 43696 if (this.doraChecked) { 43697 const id = this.sendinblueListIds["dora"]; 43698 ids.indexOf(id) === -1 ? ids.push(id) : {}; 43699 } 43700 if (this.museumChecked) { 43701 const id = this.sendinblueListIds["museum"]; 43702 ids.indexOf(id) === -1 ? ids.push(id) : {}; 43703 } 43704 if (this.stiftungChecked) { 43705 const id = this.sendinblueListIds["stiftung"]; 43706 ids.indexOf(id) === -1 ? ids.push(id) : {}; 43707 } 43708 return ids; 43709 } 43710 } 43711}; 43712const _hoisted_1$u = { class: "newsletter-registration" }; 43713const _hoisted_2$o = { class: "container" }; 43714const _hoisted_3$k = { class: "headline" }; 43715const _hoisted_4$d = { class: "info-text" }; 43716const _hoisted_5$8 = { class: "input-container" }; 43717const _hoisted_6$6 = { class: "input-text" }; 43718const _hoisted_7$6 = { 43719 key: 0, 43720 class: "error-message" 43721}; 43722const _hoisted_8$3 = { class: "input-container" }; 43723const _hoisted_9$3 = { class: "input-text" }; 43724const _hoisted_10$1 = { 43725 key: 0, 43726 class: "error-message" 43727}; 43728const _hoisted_11$1 = { class: "input-container" }; 43729const _hoisted_12$1 = { class: "input-text" }; 43730const _hoisted_13$1 = { 43731 key: 0, 43732 class: "error-message" 43733}; 43734const _hoisted_14$1 = { class: "input-container" }; 43735const _hoisted_15$1 = { class: "input-text" }; 43736const _hoisted_16$1 = { 43737 key: 0, 43738 class: "error-message" 43739}; 43740const _hoisted_17$1 = { class: "other-text" }; 43741const _hoisted_18$1 = { 43742 key: 0, 43743 class: "checkbox-container-other-newsletter" 43744}; 43745const _hoisted_19$1 = { 43746 key: 1, 43747 class: "checkbox-container-other-newsletter" 43748}; 43749const _hoisted_20 = { 43750 key: 2, 43751 class: "checkbox-container-other-newsletter" 43752}; 43753const _hoisted_21 = { 43754 key: 3, 43755 class: "checkbox-container-other-newsletter" 43756}; 43757const _hoisted_22 = { class: "" }; 43758const _hoisted_23 = { for: "privacy" }; 43759const _hoisted_24 = { 43760 key: 0, 43761 class: "error-message" 43762}; 43763const _hoisted_25 = { class: "privacy-info" }; 43764function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) { 43765 return openBlock(), createElementBlock("div", _hoisted_1$u, [ 43766 createBaseVNode("div", _hoisted_2$o, [ 43767 createBaseVNode("p", _hoisted_3$k, toDisplayString$1($props.labels.headline), 1), 43768 createBaseVNode("p", _hoisted_4$d, toDisplayString$1($props.labels.info), 1), 43769 createBaseVNode("div", _hoisted_5$8, [ 43770 createBaseVNode("p", _hoisted_6$6, toDisplayString$1(_ctx.$t("newsletterRegistration.label.email")), 1), 43771 withDirectives(createBaseVNode("input", { 43772 "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.email = $event), 43773 placeholder: "EMAIL" 43774 }, null, 512), [ 43775 [vModelText, $data.email] 43776 ]), 43777 $data.emailInvalid ? (openBlock(), createElementBlock("p", _hoisted_7$6, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.email")), 1)) : createCommentVNode("", true) 43778 ]), 43779 createBaseVNode("div", _hoisted_8$3, [ 43780 createBaseVNode("p", _hoisted_9$3, toDisplayString$1(_ctx.$t("newsletterRegistration.label.firstName")), 1), 43781 withDirectives(createBaseVNode("input", { 43782 "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.firstName = $event), 43783 placeholder: "VORNAME" 43784 }, null, 512), [ 43785 [vModelText, $data.firstName] 43786 ]), 43787 $data.firstNameInvalid ? (openBlock(), createElementBlock("p", _hoisted_10$1, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.firstName")), 1)) : createCommentVNode("", true) 43788 ]), 43789 createBaseVNode("div", _hoisted_11$1, [ 43790 createBaseVNode("p", _hoisted_12$1, toDisplayString$1(_ctx.$t("newsletterRegistration.label.lastName")), 1), 43791 withDirectives(createBaseVNode("input", { 43792 "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $data.lastName = $event), 43793 placeholder: "NAME" 43794 }, null, 512), [ 43795 [vModelText, $data.lastName] 43796 ]), 43797 $data.lastNameInvalid ? (openBlock(), createElementBlock("p", _hoisted_13$1, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.lastName")), 1)) : createCommentVNode("", true) 43798 ]), 43799 createBaseVNode("div", _hoisted_14$1, [ 43800 createBaseVNode("p", _hoisted_15$1, toDisplayString$1(_ctx.$t("newsletterRegistration.label.organization")), 1), 43801 withDirectives(createBaseVNode("input", { 43802 "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.organization = $event), 43803 placeholder: "ORGANISATION" 43804 }, null, 512), [ 43805 [vModelText, $data.organization] 43806 ]), 43807 $data.organizationInvalid ? (openBlock(), createElementBlock("p", _hoisted_16$1, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.organization")), 1)) : createCommentVNode("", true) 43808 ]), 43809 createBaseVNode("p", _hoisted_17$1, toDisplayString$1($props.labels.otherText), 1), 43810 !$data.isBuchenwald ? (openBlock(), createElementBlock("div", _hoisted_18$1, [ 43811 withDirectives(createBaseVNode("input", { 43812 "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => $data.buchenwaldChecked = $event), 43813 type: "checkbox" 43814 }, null, 512), [ 43815 [vModelCheckbox, $data.buchenwaldChecked] 43816 ]), 43817 _cache[10] || (_cache[10] = createBaseVNode("label", { for: "buchenwald" }, "Newsletter Buchenwald", -1)) 43818 ])) : createCommentVNode("", true), 43819 !$data.isDora ? (openBlock(), createElementBlock("div", _hoisted_19$1, [ 43820 withDirectives(createBaseVNode("input", { 43821 "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => $data.doraChecked = $event), 43822 type: "checkbox" 43823 }, null, 512), [ 43824 [vModelCheckbox, $data.doraChecked] 43825 ]), 43826 _cache[11] || (_cache[11] = createBaseVNode("label", { for: "dora" }, "Newsletter Mittelbau-Dora", -1)) 43827 ])) : createCommentVNode("", true), 43828 !$data.isStiftung ? (openBlock(), createElementBlock("div", _hoisted_20, [ 43829 withDirectives(createBaseVNode("input", { 43830 "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => $data.stiftungChecked = $event), 43831 type: "checkbox" 43832 }, null, 512), [ 43833 [vModelCheckbox, $data.stiftungChecked] 43834 ]), 43835 _cache[12] || (_cache[12] = createBaseVNode("label", { for: "stiftung" }, "Newsletter Stiftung", -1)) 43836 ])) : createCommentVNode("", true), 43837 !$data.isMuseum ? (openBlock(), createElementBlock("div", _hoisted_21, [ 43838 withDirectives(createBaseVNode("input", { 43839 "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => $data.museumChecked = $event), 43840 type: "checkbox" 43841 }, null, 512), [ 43842 [vModelCheckbox, $data.museumChecked] 43843 ]), 43844 _cache[13] || (_cache[13] = createBaseVNode("label", { for: "museum" }, "Newsletter Museum", -1)) 43845 ])) : createCommentVNode("", true), 43846 _cache[14] || (_cache[14] = createBaseVNode("div", { class: "divider" }, null, -1)), 43847 createBaseVNode("div", _hoisted_22, [ 43848 withDirectives(createBaseVNode("input", { 43849 "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => $data.privacyIsChecked = $event), 43850 type: "checkbox" 43851 }, null, 512), [ 43852 [vModelCheckbox, $data.privacyIsChecked] 43853 ]), 43854 createBaseVNode("label", _hoisted_23, toDisplayString$1($props.labels.privacyCheckboxText), 1), 43855 $data.privacyInvalid ? (openBlock(), createElementBlock("p", _hoisted_24, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.privacy")), 1)) : createCommentVNode("", true) 43856 ]), 43857 createBaseVNode("p", _hoisted_25, toDisplayString$1($props.labels.privacyInfo), 1), 43858 createBaseVNode("p", null, toDisplayString$1($props.labels.privacyLinkText), 1), 43859 createBaseVNode("div", { 43860 class: "link-button", 43861 onClick: _cache[9] || (_cache[9] = ($event) => $options.submitNewsletterSignOn()) 43862 }, toDisplayString$1(_ctx.$t("newsletterRegistration.label.registerButton")), 1) 43863 ]) 43864 ]); 43865} 43866const NewsletterRegistration = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$v]]); 43867const _sfc_main$u = { 43868 name: "MagazineFurtherReadingBox", 43869 components: { 43870 LinkButton 43871 }, 43872 props: { 43873 title: { 43874 type: String, 43875 required: true 43876 }, 43877 links: { 43878 type: Array, 43879 required: true 43880 }, 43881 buttonLabel: { 43882 type: String, 43883 required: true 43884 }, 43885 buttonUrl: { 43886 type: String, 43887 required: true 43888 },
43889 sandBackground: { 43890 type: Boolean, 43891 default: false 43892 } 43893 } 43894 // data() { 43895 // return {}; 43896 // }, 43897 // computed: {}, 43898 // watch: {}, 43899 // Livecycle hooks 43900 // created() {}, 43901 // mounted() {}, 43902 // updated() {}, 43903 // beforeUnmount() {}, 43904 // methods: {}, 43905}; 43906const _hoisted_1$t = { class: "link-list" }; 43907const _hoisted_2$n = ["href"]; 43908const _hoisted_3$j = { class: "link-button-container" }; 43909function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) { 43910 const _component_link_button = resolveComponent("link-button"); 43911 return openBlock(), createElementBlock("div", { 43912 class: normalizeClass(["magazine-further-reading-box", { 43913 "sand-background": $props.sandBackground 43914 }]) 43915 }, [ 43916 createBaseVNode("h2", null, toDisplayString$1($props.title), 1), 43917 createBaseVNode("ul", _hoisted_1$t, [ 43918 (openBlock(true), createElementBlock(Fragment, null, renderList($props.links, (link) => { 43919 return openBlock(), createElementBlock("li", { 43920 key: link.text 43921 }, [ 43922 createBaseVNode("a", { 43923 href: link.url 43924 }, toDisplayString$1(link.text), 9, _hoisted_2$n) 43925 ]); 43926 }), 128)) 43927 ]), 43928 createBaseVNode("div", _hoisted_3$j, [ 43929 createVNode(_component_link_button, { 43930 label: $props.buttonLabel, 43931 url: $props.buttonUrl 43932 }, null, 8, ["label", "url"]) 43933 ]) 43934 ], 2); 43935} 43936const MagazineFurtherReadingBox = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$u]]); 43937const _sfc_main$t = { 43938 name: "MagazineArticleAboutBox" 43939}; 43940const _hoisted_1$s = { class: "content-block row" }; 43941const _hoisted_2$m = { class: "columns" }; 43942const _hoisted_3$i = { class: "magazine-article-about-box" }; 43943function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) { 43944 return openBlock(), createElementBlock("div", _hoisted_1$s, [ 43945 createBaseVNode("div", _hoisted_2$m, [ 43946 createBaseVNode("div", _hoisted_3$i, [ 43947 _cache[0] || (_cache[0] = createBaseVNode("img", { 43948 src: "/assets/img/swoosh_sand.jpg", 43949 loading: "lazy", 43950 role: "decoration" 43951 }, null, -1)), 43952 createBaseVNode("p", null, [ 43953 renderSlot(_ctx.$slots, "default") 43954 ]) 43955 ]) 43956 ]) 43957 ]); 43958} 43959const MagazineArticleAboutBox = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$t]]); 43960const _sfc_main$s = { 43961 name: "MagazineArticleFigure", 43962 props: { 43963 src: { 43964 type: String, 43965 required: true 43966 }, 43967 alt: { 43968 type: String, 43969 required: true 43970 }, 43971 caption: { 43972 type: String, 43973 default: null 43974 }, 43975 alignment: { 43976 type: String, 43977 default: "full" 43978 } 43979 } 43980}; 43981const _hoisted_1$r = { class: "content-block row" }; 43982const _hoisted_2$l = ["src", "alt"]; 43983function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) { 43984 return openBlock(), createElementBlock("div", _hoisted_1$r, [ 43985 createBaseVNode("div", { 43986 class: normalizeClass(["magazine-article-figure columns", { 43987 "large-9 left-aligned": $props.alignment === "left", 43988 "large-9 large-push-3 right-aligned": $props.alignment === "right", 43989 "large-9 large-push-2 center-aligned": $props.alignment === "center" 43990 }]) 43991 }, [ 43992 createBaseVNode("figure", null, [ 43993 createBaseVNode("img", { 43994 src: $props.src, 43995 alt: $props.alt 43996 }, null, 8, _hoisted_2$l), 43997 createBaseVNode("figcaption", null, toDisplayString$1($props.caption), 1) 43998 ]) 43999 ], 2) 44000 ]); 44001} 44002const MagazineArticleFigure = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$s]]); 44003const _sfc_main$r = { 44004 name: "MagazineArticleHeader", 44005 props: { 44006 themeName: { 44007 type: String, 44008 required: true 44009 }, 44010 themeSwooshUrl: { 44011 type: String, 44012 required: true 44013 }, 44014 headline: { 44015 type: String, 44016 required: true 44017 }, 44018 subline: { 44019 type: String, 44020 required: true 44021 }, 44022 byline1: { 44023 type: String, 44024 default: null 44025 }, 44026 byline2: { 44027 type: String, 44028 default: null 44029 } 44030 }, 44031 computed: { 44032 swooshUrl() { 44033 return `url(${this.themeSwooshUrl})`; 44034 } 44035 } 44036}; 44037const __injectCSSVars__$1 = () => { 44038 useCssVars((_ctx) => ({ 44039 "b26d4ee0": _ctx.swooshUrl 44040 })); 44041}; 44042const __setup__$1 = _sfc_main$r.setup; 44043_sfc_main$r.setup = __setup__$1 ? (props2, ctx) => { 44044 __injectCSSVars__$1(); 44045 return __setup__$1(props2, ctx); 44046} : __injectCSSVars__$1; 44047const _hoisted_1$q = { class: "magazine-article-header" }; 44048const _hoisted_2$k = { class: "magazine-article-header-theme" }; 44049const _hoisted_3$h = { class: "slide-transform-wrapper" }; 44050const _hoisted_4$c = { class: "slide-transform-wrapper" }; 44051const _hoisted_5$7 = { class: "magazine-article-header-subline" }; 44052const _hoisted_6$5 = { 44053 key: 0, 44054 class: "magazine-article-header-byline" 44055}; 44056const _hoisted_7$5 = { 44057 key: 0, 44058 class: "magazine-article-header-byline" 44059}; 44060function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) { 44061 return openBlock(), createElementBlock("header", _hoisted_1$q, [ 44062 createVNode(Transition, { 44063 appear: "", 44064 name: "fadeInDelayed" 44065 }, {
44066 default: withCtx(() => [ 44067 createBaseVNode("p", _hoisted_2$k, toDisplayString$1($props.themeName), 1) 44068 ]), 44069 _: 1 44070 }), 44071 createBaseVNode("div", _hoisted_3$h, [ 44072 createVNode(Transition, { 44073 appear: "", 44074 name: "fadeInTextFromBelow" 44075 }, { 44076 default: withCtx(() => [ 44077 createBaseVNode("h1", null, toDisplayString$1($props.headline), 1) 44078 ]), 44079 _: 1 44080 }) 44081 ]), 44082 createBaseVNode("div", _hoisted_4$c, [ 44083 createVNode(Transition, { 44084 appear: "", 44085 name: "fadeInTextFromBelow" 44086 }, { 44087 default: withCtx(() => [ 44088 createBaseVNode("p", _hoisted_5$7, toDisplayString$1($props.subline), 1) 44089 ]), 44090 _: 1 44091 }) 44092 ]), 44093 createVNode(Transition, { 44094 appear: "", 44095 name: "fadeInDelayed" 44096 }, { 44097 default: withCtx(() => [ 44098 $props.byline1 ? (openBlock(), createElementBlock("p", _hoisted_6$5, toDisplayString$1($props.byline1), 1)) : createCommentVNode("", true) 44099 ]), 44100 _: 1 44101 }), 44102 createVNode(Transition, { 44103 appear: "", 44104 name: "fadeInDelayed" 44105 }, { 44106 default: withCtx(() => [ 44107 $props.byline2 ? (openBlock(), createElementBlock("p", _hoisted_7$5, toDisplayString$1($props.byline2), 1)) : createCommentVNode("", true) 44108 ]), 44109 _: 1 44110 }) 44111 ]); 44112} 44113const MagazineArticleHeader = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$r]]); 44114const _sfc_main$q = { 44115 name: "MagazineArticleIntro", 44116 props: { 44117 text: { 44118 type: String, 44119 required: true 44120 } 44121 } 44122}; 44123const _hoisted_1$p = { class: "magazine-article-intro columns" }; 44124function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) { 44125 return openBlock(), createElementBlock("div", _hoisted_1$p, [ 44126 createBaseVNode("p", null, toDisplayString$1($props.text), 1) 44127 ]); 44128} 44129const MagazineArticleIntro = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$q]]); 44130const _sfc_main$p = { 44131 name: "MagazineArticleList", 44132 components: { 44133 ArticleList 44134 }, 44135 props: { 44136 title: { 44137 type: String, 44138 required: true 44139 }, 44140 articles: { 44141 type: Array, 44142 required: true 44143 } 44144 } 44145 // data() { 44146 // return {}; 44147 // }, 44148 // computed: {}, 44149 // watch: {}, 44150 // Livecycle hooks 44151 // created() {}, 44152 // mounted() {}, 44153 // updated() {}, 44154 // beforeUnmount() {}, 44155 // methods: {}, 44156}; 44157const _hoisted_1$o = { class: "magazine-article-list" }; 44158function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) { 44159 const _component_article_list = resolveComponent("article-list"); 44160 return openBlock(), createElementBlock("div", _hoisted_1$o, [ 44161 createBaseVNode("h2", null, toDisplayString$1($props.title), 1), 44162 createVNode(_component_article_list, { 44163 "is-magazine": "", 44164 articles: $props.articles 44165 }, null, 8, ["articles"]) 44166 ]); 44167} 44168const MagazineArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$p]]); 44169const _sfc_main$o = { 44170 name: "MagazineArticleMediaIntro", 44171 props: { 44172 text: { 44173 type: String, 44174 required: true 44175 }, 44176 imageUrl: { 44177 type: String, 44178 required: true 44179 }, 44180 imageAlt: { 44181 type: String, 44182 required: true 44183 }, 44184 imageCaption: { 44185 type: String, 44186 default: null 44187 } 44188 } 44189}; 44190const _hoisted_1$n = { class: "magazine-article-media-intro" }; 44191const _hoisted_2$j = { class: "columns large-4" }; 44192const _hoisted_3$g = ["src", "alt"]; 44193const _hoisted_4$b = { key: 0 }; 44194const _hoisted_5$6 = { class: "columns large-8" }; 44195function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) { 44196 return openBlock(), createElementBlock("div", _hoisted_1$n, [ 44197 createBaseVNode("figure", _hoisted_2$j, [ 44198 createBaseVNode("img", { 44199 src: $props.imageUrl, 44200 alt: $props.imageAlt 44201 }, null, 8, _hoisted_3$g), 44202 $props.imageCaption ? (openBlock(), createElementBlock("figcaption", _hoisted_4$b, toDisplayString$1($props.imageCaption), 1)) : createCommentVNode("", true) 44203 ]), 44204 createBaseVNode("p", _hoisted_5$6, toDisplayString$1($props.text), 1) 44205 ]); 44206} 44207const MagazineArticleMediaIntro = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$o]]); 44208const _sfc_main$n = { 44209 name: "MagazineArticleTextBlock", 44210 // components: {}, 44211 props: { 44212 headline: { 44213 type: String, 44214 default: null 44215 },
44216 alignment: { 44217 type: String, 44218 default: "full" 44219 } 44220 }, 44221 data() { 44222 return { 44223 throttleHandleScroll: null 44224 }; 44225 }, 44226 // computed: {}, 44227 // watch: {}, 44228 // Livecycle hooks 44229 created() { 44230 this.throttleHandleScroll = throttle$1(this.handleScroll, 50); 44231 window.addEventListener("scroll", this.throttleHandleScroll); 44232 }, 44233 // updated() {}, 44234 beforeUnmount() { 44235 window.removeEventListener("scroll", this.throttleHandleScroll); 44236 }, 44237 methods: { 44238 handleScroll() { 44239 const windowHeight = window.innerHeight; 44240 const scrolledDistance = window.scrollY || document.documentElement.scrollTop; 44241 const positionOfTheElement = this.$refs.magazineArticleTextBlock.getBoundingClientRect().top + scrolledDistance; 44242 const bottomOfTheElement = this.$refs.magazineArticleTextBlock.getBoundingClientRect().bottom + scrolledDistance; 44243 const buffer2 = windowHeight / 3.25; 44244 let visibilityPercent = 0; 44245 const posToHit = positionOfTheElement - windowHeight + buffer2; 44246 const posToStop = bottomOfTheElement - windowHeight + buffer2; 44247 if (posToHit < scrolledDistance) { 44248 visibilityPercent = 100 * (scrolledDistance - posToHit) / (posToStop - posToHit); 44249 if (visibilityPercent > 100) { 44250 visibilityPercent = 100; 44251 } 44252 } 44253 this.$refs.readingLine.style.height = `${visibilityPercent}%`; 44254 } 44255 } 44256}; 44257const _hoisted_1$m = { 44258 ref: "magazineArticleTextBlock", 44259 class: "magazine-article-text-block" 44260}; 44261const _hoisted_2$i = ["v-if"]; 44262const _hoisted_3$f = { class: "magazine-article-text-block-content" }; 44263const _hoisted_4$a = { 44264 ref: "readingLine", 44265 class: "reading-line" 44266}; 44267function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) { 44268 return openBlock(), createElementBlock("div", _hoisted_1$m, [ 44269 createBaseVNode("h2", { 44270 "v-if": $props.headline, 44271 class: "magazine-article-text-block-headline" 44272 }, toDisplayString$1($props.headline), 9, _hoisted_2$i), 44273 createBaseVNode("div", _hoisted_3$f, [ 44274 createBaseVNode("div", _hoisted_4$a, null, 512), 44275 renderSlot(_ctx.$slots, "default") 44276 ]) 44277 ], 512); 44278} 44279const MagazineArticleTextBlock = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$n]]); 44280const _sfc_main$m = { 44281 name: "MagazineEditorial" 44282}; 44283const _hoisted_1$l = { 44284 href: "#", 44285 class: "magazine-editorial" 44286}; 44287const _hoisted_2$h = { class: "magazine-editorial-content-container" }; 44288const _hoisted_3$e = { class: "magazine-editorial-figure-container" }; 44289function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) { 44290 return openBlock(), createElementBlock("a", _hoisted_1$l, [ 44291 createBaseVNode("div", _hoisted_2$h, [ 44292 renderSlot(_ctx.$slots, "content") 44293 ]), 44294 createBaseVNode("div", _hoisted_3$e, [ 44295 renderSlot(_ctx.$slots, "figure") 44296 ]) 44297 ]); 44298} 44299const MagazineEditorial = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$m]]); 44300const _sfc_main$l = { 44301 name: "MagazineQuote", 44302 props: { 44303 content: { 44304 type: String, 44305 required: true 44306 }, 44307 author: { 44308 type: String, 44309 required: true 44310 }, 44311 authorDescription: { 44312 type: String, 44313 default: null 44314 }, 44315 themeSwooshUrl: { 44316 type: String, 44317 required: true 44318 } 44319 }, 44320 computed: { 44321 swooshUrl() { 44322 return `url(${this.themeSwooshUrl})`; 44323 } 44324 } 44325}; 44326const __injectCSSVars__ = () => { 44327 useCssVars((_ctx) => ({ 44328 "119e0cf9": _ctx.swooshUrl 44329 })); 44330}; 44331const __setup__ = _sfc_main$l.setup; 44332_sfc_main$l.setup = __setup__ ? (props2, ctx) => { 44333 __injectCSSVars__(); 44334 return __setup__(props2, ctx); 44335} : __injectCSSVars__; 44336const _hoisted_1$k = { class: "magazine-quote" }; 44337const _hoisted_2$g = { class: "columns large-4 large-push-8" }; 44338const _hoisted_3$d = { class: "magazine-quote-author" }; 44339const _hoisted_4$9 = { 44340 key: 0, 44341 class: "magazine-quote-author-description" 44342}; 44343function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) { 44344 return openBlock(), createElementBlock("div", _hoisted_1$k, [ 44345 createBaseVNode("figure", null, [ 44346 createBaseVNode("blockquote", null, toDisplayString$1($props.content), 1), 44347 createBaseVNode("figcaption", _hoisted_2$g, [ 44348 createBaseVNode("p", _hoisted_3$d, toDisplayString$1($props.author), 1), 44349 $props.authorDescription ? (openBlock(), createElementBlock("p", _hoisted_4$9, toDisplayString$1($props.authorDescription), 1)) : createCommentVNode("", true) 44350 ]) 44351 ]) 44352 ]); 44353} 44354const MagazineQuote = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$l]]); 44355const _sfc_main$k = { 44356 name: "MagazineTopicGroup", 44357 props: { 44358 title: { 44359 type: String, 44360 required: true 44361 }, 44362 articles: { 44363 type: Array, 44364 required: true 44365 } 44366 } 44367}; 44368const _hoisted_1$j = { class: "magazine-topic-group" }; 44369const _hoisted_2$f = ["href"]; 44370function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) { 44371 return openBlock(), createElementBlock("div", _hoisted_1$j, [ 44372 createBaseVNode("h3", null, toDisplayString$1($props.title), 1), 44373 createBaseVNode("ul", null, [ 44374 (openBlock(true), createElementBlock(Fragment, null, renderList($props.articles, (article) => { 44375 return openBlock(), createElementBlock("li", {
44376 key: article.id 44377 }, [ 44378 createBaseVNode("a", { 44379 href: article.url 44380 }, toDisplayString$1(article.title), 9, _hoisted_2$f) 44381 ]); 44382 }), 128)) 44383 ]) 44384 ]); 44385} 44386const MagazineTopicGroup = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$k]]); 44387const _sfc_main$j = { 44388 name: "MagazinesArticleList", 44389 components: { 44390 ArticleList 44391 }, 44392 props: { 44393 magazinesWithArticles: { 44394 type: Array, 44395 required: true 44396 } 44397 } 44398 // data() { 44399 // return {}; 44400 // }, 44401 // computed: {}, 44402 // watch: {}, 44403 // Livecycle hooks 44404 // created() {}, 44405 // mounted() {}, 44406 // updated() {}, 44407 // beforeUnmount() {}, 44408 // methods: {}, 44409}; 44410const _hoisted_1$i = { class: "magazines-article-list" }; 44411function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) { 44412 const _component_article_list = resolveComponent("article-list"); 44413 return openBlock(), createElementBlock("div", _hoisted_1$i, [ 44414 (openBlock(true), createElementBlock(Fragment, null, renderList($props.magazinesWithArticles, (magazine, index2) => { 44415 return openBlock(), createElementBlock("div", { 44416 key: index2, 44417 class: "magazine-articled-wrapper" 44418 }, [ 44419 createBaseVNode("h2", null, toDisplayString$1(magazine.title), 1), 44420 createVNode(_component_article_list, { 44421 "is-article": "", 44422 articles: magazine.articleList 44423 }, null, 8, ["articles"]) 44424 ]); 44425 }), 128)) 44426 ]); 44427} 44428const MagazinesArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$j]]); 44429const _sfc_main$i = { 44430 name: "MagazineFilterList", 44431 components: { 44432 MagazineFilter 44433 }, 44434 props: { 44435 heading: { 44436 type: String, 44437 default: null 44438 }, 44439 filters: { 44440 type: Array, 44441 default: () => [] 44442 } 44443 }, 44444 data() { 44445 return { 44446 selectedFilter: null 44447 }; 44448 }, 44449 // computed: {}, 44450 methods: { 44451 selectFilter(filterValue) { 44452 if (filterValue === this.selectedFilter) { 44453 this.selectedFilter = null; 44454 } else { 44455 this.selectedFilter = filterValue; 44456 } 44457 } 44458 } 44459 // watch() {}, 44460 // Livecycle hooks 44461 // created() {}, 44462 // mounted() {}, 44463 // updated() {}, 44464 // beforeDestroy() {}, 44465}; 44466const _hoisted_1$h = { class: "magazine-filter-list" }; 44467const _hoisted_2$e = { 44468 key: 0, 44469 class: "heading" 44470}; 44471const _hoisted_3$c = { class: "filter-list-wrapper" }; 44472function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) { 44473 const _component_magazine_filter = resolveComponent("magazine-filter"); 44474 return openBlock(), createElementBlock("div", _hoisted_1$h, [ 44475 $props.heading ? (openBlock(), createElementBlock("h2", _hoisted_2$e, toDisplayString$1($props.heading), 1)) : createCommentVNode("", true), 44476 createBaseVNode("div", _hoisted_3$c, [ 44477 (openBlock(true), createElementBlock(Fragment, null, renderList($props.filters, (filter2, index2) => { 44478 return openBlock(), createBlock(_component_magazine_filter, { 44479 key: index2, 44480 "is-selected": $data.selectedFilter === filter2.value ? true : false, 44481 label: filter2.label, 44482 onClick: ($event) => $options.selectFilter(filter2.value) 44483 }, null, 8, ["is-selected", "label", "onClick"]); 44484 }), 128)) 44485 ]) 44486 ]); 44487} 44488const MagazineFilterList = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$i]]); 44489const _sfc_main$h = { 44490 name: "TextFootnote" 44491 // components: {}, 44492 // props: {}, 44493 // data() { 44494 // return {}; 44495 // }, 44496 // computed: {}, 44497 // watch: {}, 44498 // Livecycle hooks 44499 // created() {}, 44500 // mounted() {}, 44501 // updated() {}, 44502 // beforeUnmount() {}, 44503 // methods: {}, 44504}; 44505const _hoisted_1$g = { class: "text-footnote content-block row" }; 44506const _hoisted_2$d = { class: "columns" }; 44507const _hoisted_3$b = { class: "richtext-wrapper" }; 44508function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) { 44509 return openBlock(), createElementBlock("div", _hoisted_1$g, [ 44510 createBaseVNode("div", _hoisted_2$d, [ 44511 createBaseVNode("div", _hoisted_3$b, [ 44512 renderSlot(_ctx.$slots, "default") 44513 ]) 44514 ]) 44515 ]); 44516} 44517const TextFootnote = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$h]]); 44518const _sfc_main$g = { 44519 name: "OverlayContainer", 44520 // components: {}, 44521 // props: {}, 44522 data() { 44523 return { 44524 swalOpen: false, 44525 captionOpen: false 44526 }; 44527 }, 44528 // computed: {}, 44529 // watch: {}, 44530 // Livecycle hooks 44531 // created() {}, 44532 // mounted() {}, 44533 updated() { 44534 this.showCaptionToggleButton(); 44535 }, 44536 // beforeUnmount() {}, 44537 methods: { 44538 openOverlay() { 44539 this.$Swal.fire({ 44540 html: this.$refs.swalWrapperRef, 44541 showClass: { 44542 backdrop: "swal2-noanimation", 44543 // disable backdrop animation 44544 popup: "swal2-noanimation", 44545 // disable popup animation 44546 icon: "swal2-noanimation" 44547 // disable icon animation 44548 }, 44549 customClass: { 44550 container: "overlay-content", 44551 popup: "overlay-popup", 44552 closeButton: "overlay-close-button icon-close-menu-mobile" 44553 }, 44554 backdrop: `hsla(0,0%,100%, 1.00) `, 44555 buttonsStyling: false,
44556 showConfirmButton: false, 44557 allowOutsideClick: true, 44558 allowEscapeKey: true, 44559 showCloseButton: true, 44560 closeButtonAriaLabel: "SchlieÃen", 44561 didRender: () => { 44562 this.showCaptionToggleButton(); 44563 } 44564 }); 44565 this.swalOpen = true; 44566 }, 44567 closeOverlay() { 44568 this.$Swal.close(); 44569 this.swalOpen = false; 44570 }, 44571 showCaptionToggleButton() { 44572 const contentImages = document.querySelectorAll(".swal-wrapper .content-image"); 44573 contentImages.forEach((contentImage) => { 44574 const figcaption = contentImage.querySelector("figcaption"); 44575 if (figcaption) { 44576 const contentImageDescription = figcaption.querySelector(".content-image-description"); 44577 if (contentImageDescription) { 44578 const isOverflowing = this.isTextOverflowing(contentImageDescription); 44579 if (isOverflowing) { 44580 const toggleButton = contentImage.querySelector(".caption-toggle-button"); 44581 toggleButton.classList.add("show"); 44582 toggleButton.addEventListener("click", () => this.toggleCaption(contentImage)); 44583 } 44584 } 44585 } 44586 }); 44587 }, 44588 // Modified toggle caption to work with multiple images 44589 toggleCaption(specificContentImage = null) { 44590 const targetFigcaption = specificContentImage ? specificContentImage.querySelector("figcaption") : document.querySelector(".swal-wrapper figcaption"); 44591 if (targetFigcaption) { 44592 targetFigcaption.classList.toggle("caption-open"); 44593 const toggleButton = targetFigcaption.querySelector(".caption-toggle-button"); 44594 if (toggleButton) { 44595 toggleButton.textContent = targetFigcaption.classList.contains("caption-open") ? "SchlieÃen" : "Weiterlesen"; 44596 } 44597 } 44598 }, 44599 // Method to check if text is overflowing 44600 isTextOverflowing(element) { 44601 if (!element) return false; 44602 const computedStyle = window.getComputedStyle(element); 44603 const lineClamp = computedStyle.getPropertyValue("-webkit-line-clamp"); 44604 const lineHeight = parseFloat(computedStyle.lineHeight); 44605 const maxHeight = lineClamp ? lineHeight * parseInt(lineClamp, 10) : null; 44606 return maxHeight ? element.scrollHeight > maxHeight : element.scrollHeight > element.clientHeight; 44607 } 44608 } 44609}; 44610const _hoisted_1$f = { class: "overlay-container" }; 44611const _hoisted_2$c = { 44612 ref: "swalWrapperRef", 44613 class: "swal-wrapper" 44614}; 44615function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) { 44616 return openBlock(), createElementBlock("div", _hoisted_1$f, [ 44617 createBaseVNode("button", { 44618 class: "overlay-open-button", 44619 onClick: _cache[0] || (_cache[0] = ($event) => $options.openOverlay()) 44620 }, [ 44621 renderSlot(_ctx.$slots, "overlay-open-button-content", {}, () => [ 44622 _cache[1] || (_cache[1] = createTextVNode(" This is Fallback for Overlay Button ")) 44623 ]) 44624 ]), 44625 withDirectives(createBaseVNode("div", null, [ 44626 createBaseVNode("div", _hoisted_2$c, [ 44627 renderSlot(_ctx.$slots, "overlay-container-content", { shouldBeRendered: $data.swalOpen }, () => [ 44628 _cache[2] || (_cache[2] = createTextVNode(" This is Fallback for Overlay Content ")) 44629 ]) 44630 ], 512) 44631 ], 512), [ 44632 [vShow, false] 44633 ]) 44634 ]); 44635} 44636const OverlayContainer = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$g]]); 44637const _sfc_main$f = { 44638 name: "CampList", 44639 // components: {}, 44640 props: { 44641 markers: { 44642 type: Array, 44643 default: () => [] 44644 } 44645 }, 44646 emits: ["openMarker"], 44647 computed: { 44648 alphabeticalOrderedCampList() { 44649 let list = {}; 44650 for (const marker of this.markers) { 44651 if (!marker.title || typeof marker.title !== "string") continue; 44652 const beginningLetter = marker.title[0].toLowerCase(); 44653 if (list[beginningLetter] === void 0) { 44654 list[beginningLetter] = []; 44655 } 44656 list[beginningLetter].push(marker); 44657 } 44658 const sortedKeys = Object.keys(list).sort((a, b) => a.localeCompare(b, "de")); 44659 const orderedList = {}; 44660 sortedKeys.forEach((key) => { 44661 orderedList[key] = this.sortLetterListByTitle(list[key]); 44662 }); 44663 return orderedList; 44664 } 44665 }, 44666 methods: { 44667 sortLetterListByTitle(letterList) { 44668 return letterList.sort(function(a, b) { 44669 const titleA = a.title.toLowerCase(); 44670 const titleB = b.title.toLowerCase(); 44671 return titleA.localeCompare(titleB, "de"); 44672 }); 44673 } 44674 } 44675 // updated() {}, 44676 // beforeDestroy() {}, 44677}; 44678const _hoisted_1$e = { class: "camp-list" }; 44679const _hoisted_2$b = { class: "initial-letter" }; 44680const _hoisted_3$a = { class: "names" }; 44681const _hoisted_4$8 = ["href"]; 44682function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) { 44683 return openBlock(), createElementBlock("div", _hoisted_1$e, [ 44684 (openBlock(true), createElementBlock(Fragment, null, renderList($options.alphabeticalOrderedCampList, (campsForLetter, letterIndex) => { 44685 return openBlock(), createElementBlock("div", { 44686 key: letterIndex, 44687 class: "letter-container" 44688 }, [ 44689 createBaseVNode("span", _hoisted_2$b, toDisplayString$1(letterIndex.toUpperCase()), 1), 44690 createBaseVNode("div", _hoisted_3$a, [ 44691 (openBlock(true), createElementBlock(Fragment, null, renderList(campsForLetter, (camp, campIndex) => { 44692 return openBlock(), createElementBlock("a", { 44693 key: `${camp.title}-${campIndex}`, 44694 href: camp.detailPage, 44695 target: "_blank" 44696 }, toDisplayString$1(camp.title), 9, _hoisted_4$8); 44697 }), 128)) 44698 ]) 44699 ]); 44700 }), 128)) 44701 ]); 44702} 44703const CampList = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$f]]); 44704const _sfc_main$e = { 44705 name: "TeaserDuoMagnify", 44706 components: {} 44707 // props: {}, 44708 // data() { 44709 // return {}; 44710 // }, 44711 // computed: {}, 44712 // methods: {}, 44713 // watch() {}, 44714 // Livecycle hooks 44715 // created() {}, 44716 // mounted() {}, 44717 // updated() {}, 44718 // beforeDestroy() {}, 44719}; 44720const _hoisted_1$d = { class: "teaser-duo-magnify row equalize-medium" }; 44721const _hoisted_2$a = { class: "columns medium-7 teaser-1" }; 44722const _hoisted_3$9 = { class: "columns medium-4 medium-push-1 teaser-2" }; 44723function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) { 44724 return openBlock(), createElementBlock("div", _hoisted_1$d, [ 44725 createBaseVNode("div", _hoisted_2$a, [ 44726 renderSlot(_ctx.$slots, "teaser1") 44727 ]), 44728 createBaseVNode("div", _hoisted_3$9, [ 44729 renderSlot(_ctx.$slots, "teaser2") 44730 ]) 44731 ]); 44732} 44733const TeaserDuoMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$e]]); 44734const _sfc_main$d = { 44735 name: "TextOverlayImage", 44736 // components: {}, 44737 props: { 44738 headline: { 44739 type: String, 44740 default: null 44741 } 44742 } 44743 // data() { 44744 // return {}; 44745 // }, 44746 // computed: {}, 44747 // watch: {}, 44748 // Livecycle hooks 44749 // created() {}, 44750 // mounted() {}, 44751 // updated() {}, 44752 // beforeUnmount() {}, 44753 // methods: {}, 44754}; 44755const _hoisted_1$c = { class: "text-overlay-image row equalize-medium" }; 44756const _hoisted_2$9 = { class: "columns medium-5 large-4" }; 44757const _hoisted_3$8 = { class: "overlay-image-wrapper" }; 44758const _hoisted_4$7 = { class: "columns medium-7 medium-push-1 large-6" }; 44759const _hoisted_5$5 = { class: "header" }; 44760const _hoisted_6$4 = { 44761 key: 0, 44762 class: "headline" 44763}; 44764const _hoisted_7$4 = { class: "richtext-wrapper" }; 44765function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) { 44766 return openBlock(), createElementBlock("div", _hoisted_1$c, [ 44767 createBaseVNode("div", _hoisted_2$9, [ 44768 createBaseVNode("div", _hoisted_3$8, [ 44769 renderSlot(_ctx.$slots, "image1"), 44770 renderSlot(_ctx.$slots, "image2") 44771 ]) 44772 ]), 44773 createBaseVNode("div", _hoisted_4$7, [ 44774 createBaseVNode("div", _hoisted_5$5, [ 44775 $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_6$4, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true) 44776 ]), 44777 createBaseVNode("div", _hoisted_7$4, [ 44778 renderSlot(_ctx.$slots, "default") 44779 ]) 44780 ]) 44781 ]); 44782} 44783const TextOverlayImage = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d]]); 44784const _sfc_main$c = { 44785 name: "TextOffset", 44786 // components: {}, 44787 props: { 44788 headline: { 44789 type: String, 44790 default: null 44791 } 44792 } 44793 // data() { 44794 // return {}; 44795 // }, 44796 // computed: {}, 44797 // watch: {}, 44798 // Livecycle hooks 44799 // created() {}, 44800 // mounted() {}, 44801 // updated() {}, 44802 // beforeUnmount() {}, 44803 // methods: {}, 44804}; 44805const _hoisted_1$b = { class: "text-offset row" }; 44806const _hoisted_2$8 = { class: "columns medium-10 large-9" }; 44807const _hoisted_3$7 = { class: "header" }; 44808const _hoisted_4$6 = { 44809 key: 0, 44810 class: "headline" 44811}; 44812function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) { 44813 return openBlock(), createElementBlock("div", _hoisted_1$b, [ 44814 createBaseVNode("div", _hoisted_2$8, [ 44815 createBaseVNode("div", _hoisted_3$7, [ 44816 $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_4$6, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true) 44817 ]), 44818 renderSlot(_ctx.$slots, "default") 44819 ]) 44820 ]); 44821} 44822const TextOffset = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c]]); 44823const _sfc_main$b = { 44824 name: "CitymapArticlesNavigation", 44825 components: { 44826 LinkButton 44827 }, 44828 props: { 44829 previousArticleUrl: { 44830 type: String, 44831 default: null 44832 }, 44833 nextArticleUrl: { 44834 type: String, 44835 default: null 44836 }, 44837 backToOverviewUrl: { 44838 type: String, 44839 required: true 44840 } 44841 } 44842}; 44843const _hoisted_1$a = { class: "citymap-articles-navigation" }; 44844function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
44845 const _component_link_button = resolveComponent("link-button"); 44846 return openBlock(), createElementBlock("div", _hoisted_1$a, [ 44847 createVNode(_component_link_button, { 44848 label: _ctx.$t("citymap.previousArticle"), 44849 url: $props.previousArticleUrl 44850 }, null, 8, ["label", "url"]), 44851 createVNode(_component_link_button, { 44852 label: _ctx.$t("citymap.backToOverview"), 44853 url: $props.backToOverviewUrl, 44854 class: "icon-arrow-back" 44855 }, { 44856 default: withCtx(() => _cache[0] || (_cache[0] = [ 44857 createBaseVNode("span", { class: "visually-hidden" }, " $t('citymap.backToOverview') ", -1) 44858 ])), 44859 _: 1, 44860 __: [0] 44861 }, 8, ["label", "url"]), 44862 createVNode(_component_link_button, { 44863 label: _ctx.$t("citymap.nextArticle"), 44864 url: $props.nextArticleUrl 44865 }, null, 8, ["label", "url"]) 44866 ]); 44867} 44868const CitymapArticlesNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b]]); 44869const _sfc_main$a = { 44870 name: "TextVideoList" 44871 // components: {}, 44872 // props: {}, 44873 // data() { 44874 // return {}; 44875 // }, 44876 // computed: {}, 44877 // watch: {}, 44878 // Livecycle hooks 44879 // created() {}, 44880 // mounted() {}, 44881 // updated() {}, 44882 // beforeUnmount() {}, 44883 // methods: {}, 44884}; 44885const _hoisted_1$9 = { class: "text-video-list" }; 44886function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) { 44887 return openBlock(), createElementBlock("div", _hoisted_1$9, [ 44888 renderSlot(_ctx.$slots, "default") 44889 ]); 44890} 44891const TextVideoList = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a]]); 44892const _sfc_main$9 = { 44893 name: "TextVideo", 44894 props: { 44895 headline: { 44896 type: String, 44897 default: null 44898 }, 44899 category: { 44900 type: String, 44901 default: null 44902 }, 44903 videoUrl: { 44904 type: String, 44905 default: null 44906 } 44907 } 44908}; 44909const _hoisted_1$8 = { class: "text-video row" }; 44910const _hoisted_2$7 = { class: "columns medium-5 large-4" }; 44911const _hoisted_3$6 = { class: "video-url-wrapper" }; 44912const _hoisted_4$5 = { 44913 key: 0, 44914 class: "video-url" 44915}; 44916const _hoisted_5$4 = { class: "columns medium-7 large-6" }; 44917const _hoisted_6$3 = { class: "header" }; 44918const _hoisted_7$3 = { 44919 key: 0, 44920 class: "headline" 44921}; 44922const _hoisted_8$2 = { 44923 key: 1, 44924 class: "category" 44925}; 44926const _hoisted_9$2 = { class: "richtext-wrapper -small" }; 44927function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { 44928 return openBlock(), createElementBlock("div", _hoisted_1$8, [ 44929 createBaseVNode("div", _hoisted_2$7, [ 44930 createBaseVNode("div", _hoisted_3$6, [ 44931 $props.videoUrl ? (openBlock(), createElementBlock("p", _hoisted_4$5, toDisplayString$1($props.videoUrl), 1)) : createCommentVNode("", true) 44932 ]) 44933 ]), 44934 createBaseVNode("div", _hoisted_5$4, [ 44935 createBaseVNode("div", _hoisted_6$3, [ 44936 $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_7$3, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true), 44937 $props.category ? (openBlock(), createElementBlock("p", _hoisted_8$2, toDisplayString$1($props.category), 1)) : createCommentVNode("", true) 44938 ]), 44939 createBaseVNode("div", _hoisted_9$2, [ 44940 renderSlot(_ctx.$slots, "default") 44941 ]), 44942 renderSlot(_ctx.$slots, "buttons") 44943 ]) 44944 ]); 44945} 44946const TextVideo = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9]]); 44947const readParams = () => { 44948 const queryString = window.location.search; 44949 const urlParams = new URLSearchParams(queryString); 44950 return urlParams; 44951}; 44952const UrlParamsRepository = { 44953 // returns value for a param or false if param does not exist 44954 get(param) { 44955 const urlParams = readParams(); 44956 if (urlParams.has(param) === true) { 44957 if (urlParams.getAll(param).length > 1) { 44958 return urlParams.getAll(param); 44959 } 44960 return urlParams.get(param); 44961 } 44962 return false; 44963 }, 44964 // returns value(s) for a param as array or an empty array 44965 getAll(param) { 44966 const urlParams = readParams(); 44967 if (urlParams.has(param) === true) { 44968 return urlParams.getAll(param); 44969 } 44970 return false; 44971 }, 44972 // set value for a query param 44973 set(param, value, replace = false, data = {}) {
44974 const urlParams = readParams(); 44975 urlParams.set(param, value); 44976 if (replace === true) { 44977 window.history.replaceState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`)); 44978 } else { 44979 window.history.pushState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`)); 44980 } 44981 }, 44982 // check if param exists 44983 has(param) { 44984 const urlParams = readParams(); 44985 return urlParams.has(param); 44986 }, 44987 // delete param from url query string 44988 delete(param, replace = false, data = {}) { 44989 const urlParams = readParams(); 44990 if (urlParams.has(param) === true) { 44991 urlParams.delete(param); 44992 if (replace === true) { 44993 window.history.replaceState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`)); 44994 } else { 44995 window.history.pushState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`)); 44996 } 44997 } 44998 } 44999}; 45000const baseURL = window.location.origin; 45001const Repository = axios.create({ 45002 baseURL 45003}); 45004const MagnoliaShopItemRepository = { 45005 get(articleNumbers = []) { 45006 const baseUrl = store.state[ENVIRONMENT_TYPES.NAME][`${ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL}`]; 45007 const language = store.state[ENVIRONMENT_TYPES.NAME][`${ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE}`]; 45008 return Repository.get( 45009 `${baseUrl}/.rest/shop/getShopItems?articleNumber=${articleNumbers.join(",")}&locale=${language}` 45010 ); 45011 } 45012}; 45013const repositories = { 45014 UrlParamsRepository, 45015 MagnoliaShopItemRepository 45016}; 45017const RepositoryFactory = { 45018 get: (name) => repositories[name] 45019}; 45020const _sfc_main$8 = { 45021 name: "RemoveFromCart", 45022 // components: {}, 45023 props: { 45024 articleNumber: { 45025 type: String, 45026 default: "" 45027 } 45028 }, 45029 // data() {}, 45030 // computed: {}, 45031 // watch: {}, 45032 // Livecycle hooks 45033 // created() {}, 45034 // mounted() {}, 45035 // updated() {}, 45036 // beforeUnmount() {}, 45037 methods: { 45038 ...mapMutations(CART_TYPES.NAME, { 45039 removeFromCart: CART_TYPES.mutations.CART_SET_REMOVE 45040 }), 45041 removeItem() { 45042 this.removeFromCart({ 45043 code: this.articleNumber 45044 }); 45045 } 45046 } 45047}; 45048function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { 45049 return openBlock(), createElementBlock("button", { 45050 class: "link-button remove-from-cart", 45051 onClick: _cache[0] || (_cache[0] = withModifiers((...args) => $options.removeItem && $options.removeItem(...args), ["prevent"])) 45052 }, toDisplayString$1(_ctx.$t("shop.removeItem.label")), 1); 45053} 45054const RemoveFromCart = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8]]); 45055const _sfc_main$7 = { 45056 name: "CartItem", 45057 components: { 45058 TextImage, 45059 RemoveFromCart 45060 }, 45061 props: { 45062 articleNumber: { 45063 type: String, 45064 required: true 45065 }, 45066 articleCount: { 45067 type: Number, 45068 default: 1 45069 }, 45070 condensed: { 45071 type: Boolean, 45072 default: false 45073 }, 45074 title: { 45075 type: String, 45076 default: "" 45077 }, 45078 price: { 45079 type: Number, 45080 default: 0 45081 }, 45082 imageSrc: { 45083 type: String, 45084 default: "" 45085 }, 45086 link: { 45087 type: String, 45088 default: "" 45089 } 45090 }, 45091 data() { 45092 return { 45093 count: 1 45094 }; 45095 }, 45096 computed: { 45097 displayPrice() { 45098 const roundedPrice = (parseFloat(this.price) * this.count).toFixed(2); 45099 const priceString = roundedPrice.toString().replace(".", ","); 45100 return priceString; 45101 } 45102 }, 45103 watch: { 45104 articleCount(to) { 45105 this.count = to; 45106 } 45107 }, 45108 // Livecycle hooks 45109 // created() {}, 45110 mounted() { 45111 this.count = this.articleCount; 45112 }, 45113 // updated() {}, 45114 // beforeUnmount() {}, 45115 methods: { 45116 ...mapMutations(CART_TYPES.NAME, { 45117 addToCart: CART_TYPES.mutations.CART_SET_ADD 45118 }), 45119 updateArticle() { 45120 this.addToCart({ 45121 code: this.articleNumber, 45122 count: this.count 45123 }); 45124 } 45125 } 45126}; 45127const _hoisted_1$7 = { class: "cart-item" }; 45128const _hoisted_2$6 = { key: 0 }; 45129const _hoisted_3$5 = ["href"]; 45130const _hoisted_4$4 = ["href"]; 45131const _hoisted_5$3 = { class: "image-wrapper" }; 45132const _hoisted_6$2 = ["src"]; 45133const _hoisted_7$2 = { class: "cart-quantity" }; 45134const _hoisted_8$1 = ["title"]; 45135const _hoisted_9$1 = ["value"]; 45136function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
45137 const _component_remove_from_cart = resolveComponent("remove-from-cart"); 45138 const _component_text_image = resolveComponent("text-image"); 45139 return openBlock(), createElementBlock("div", _hoisted_1$7, [ 45140 $props.condensed ? (openBlock(), createElementBlock("p", _hoisted_2$6, [ 45141 createBaseVNode("span", null, [ 45142 createTextVNode(toDisplayString$1($data.count) + " x ", 1), 45143 createBaseVNode("a", { href: $props.link }, toDisplayString$1($props.title), 9, _hoisted_3$5), 45144 createTextVNode(" (" + toDisplayString$1($props.articleNumber) + ") ", 1) 45145 ]), 45146 createBaseVNode("span", null, toDisplayString$1($options.displayPrice) + "⬠", 1) 45147 ])) : (openBlock(), createBlock(_component_text_image, { 45148 key: 1, 45149 headline: $props.title 45150 }, { 45151 image: withCtx(() => [ 45152 createBaseVNode("a", { href: $props.link }, [ 45153 createBaseVNode("div", _hoisted_5$3, [ 45154 createBaseVNode("img", { src: $props.imageSrc }, null, 8, _hoisted_6$2) 45155 ]) 45156 ], 8, _hoisted_4$4) 45157 ]), 45158 buttons: withCtx(() => [ 45159 createVNode(_component_remove_from_cart, { "article-number": $props.articleNumber }, null, 8, ["article-number"]) 45160 ]), 45161 default: withCtx(() => [ 45162 createBaseVNode("p", null, toDisplayString$1(_ctx.$t("shop.article.prefix.short")) + " " + toDisplayString$1($props.articleNumber), 1), 45163 createBaseVNode("p", _hoisted_7$2, [ 45164 createBaseVNode("label", null, [ 45165 createTextVNode(toDisplayString$1(_ctx.$t("shop.quantity")) + ": ", 1), 45166 withDirectives(createBaseVNode("input", { 45167 "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.count = $event), 45168 type: "number", 45169 class: "", 45170 min: "1", 45171 max: "", 45172 title: _ctx.$t("shop.quantity"), 45173 size: "4", 45174 pattern: "[0-9]*", 45175 inputmode: "numeric", 45176 "aria-labelledby": "label_quantity", 45177 onInput: _cache[1] || (_cache[1] = (...args) => $options.updateArticle && $options.updateArticle(...args)) 45178 }, null, 40, _hoisted_8$1), [ 45179 [vModelText, $data.count] 45180 ]) 45181 ]) 45182 ]), 45183 createBaseVNode("p", null, toDisplayString$1($options.displayPrice) + " â¬", 1) 45184 ]), 45185 _: 1 45186 }, 8, ["headline"])), 45187 createBaseVNode("input", { 45188 type: "hidden", 45189 value: `${$data.count}x${$props.articleNumber}`, 45190 name: "articles[]" 45191 }, null, 8, _hoisted_9$1) 45192 ]); 45193} 45194const CartItem = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7]]); 45195const ShopItemRepository = RepositoryFactory.get("MagnoliaShopItemRepository"); 45196const _sfc_main$6 = { 45197 name: "CartList", 45198 components: { 45199 CartItem 45200 }, 45201 props: { 45202 shopLink: { 45203 type: String, 45204 default: "" 45205 }, 45206 cartLink: { 45207 type: String, 45208 default: "" 45209 }, 45210 checkoutLink: { 45211 type: String, 45212 default: "" 45213 }, 45214 checkoutMode: { 45215 type: Boolean, 45216 default: false 45217 } 45218 }, 45219 data() { 45220 return { 45221 data: [], 45222 loading: true 45223 }; 45224 }, 45225 computed: { 45226 ...mapState(CART_TYPES.NAME, { 45227 cartList: CART_TYPES.state.CART_LIST 45228 }), 45229 canCheckout() { 45230 return this.checkoutMode === false && this.mergedList.length > 0; 45231 }, 45232 codeList() { 45233 if (this.cartList.length > 0) { 45234 return this.cartList.map((entry) => entry.code); 45235 } 45236 return []; 45237 }, 45238 mergedList() { 45239 const cleanList = this.data.filter((entry) => { 45240 const cartEntry = this.cartList.find((item) => item.code === entry.articleNumber); 45241 return !empty(cartEntry); 45242 }); 45243 return cleanList.map((entry) => { 45244 const cartEntry = this.cartList.find((item) => item.code === entry.articleNumber); 45245 if (!empty(cartEntry)) { 45246 const { count } = cartEntry; 45247 return { 45248 ...entry, 45249 count 45250 }; 45251 } 45252 return { 45253 ...entry, 45254 count: 2 45255 }; 45256 }); 45257 }, 45258 totalPrice() { 45259 let total = 0; 45260 for (let i = 0; i < this.mergedList.length; i++) { 45261 total += this.mergedList[i].price * this.mergedList[i].count; 45262 } 45263 total = total.toFixed(2).toString().replace(".", ","); 45264 return total; 45265 } 45266 }, 45267 // watch: {}, 45268 // Livecycle hooks 45269 // created() {}, 45270 mounted() { 45271 this.loadItemData(); 45272 }, 45273 // updated() {}, 45274 // beforeUnmount() {}, 45275 methods: { 45276 async loadItemData() { 45277 if (this.codeList.length > 0) { 45278 try { 45279 const response = await ShopItemRepository.get(this.codeList); 45280 if (response.status === 200 && response.data) { 45281 this.data = response.data; 45282 } 45283 } catch (error) { 45284 console.warn(error); 45285 } 45286 } 45287 this.loading = false;
45288 } 45289 } 45290}; 45291const _hoisted_1$6 = { 45292 key: 0, 45293 class: "cart-empty-message" 45294}; 45295const _hoisted_2$5 = { class: "cart-list-summary" }; 45296const _hoisted_3$4 = { class: "total-price" }; 45297const _hoisted_4$3 = ["href"]; 45298const _hoisted_5$2 = ["href"]; 45299function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { 45300 const _component_cart_item = resolveComponent("cart-item"); 45301 return openBlock(), createElementBlock("fieldset", { 45302 class: normalizeClass(["cart-list", { 45303 "-condensed": $props.checkoutMode 45304 }]) 45305 }, [ 45306 (openBlock(true), createElementBlock(Fragment, null, renderList($options.mergedList, (entry) => { 45307 return openBlock(), createBlock(_component_cart_item, { 45308 key: `cart${entry.code}`, 45309 "article-number": entry.articleNumber, 45310 "article-count": entry.count, 45311 "image-src": entry.image, 45312 title: entry.title, 45313 price: entry.price, 45314 condensed: $props.checkoutMode, 45315 link: `${$props.shopLink}${entry.itemPath}` 45316 }, null, 8, ["article-number", "article-count", "image-src", "title", "price", "condensed", "link"]); 45317 }), 128)), 45318 $options.mergedList.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_1$6, toDisplayString$1(_ctx.$t("shop.cart.empty.message")), 1)) : createCommentVNode("", true), 45319 createBaseVNode("div", _hoisted_2$5, [ 45320 createBaseVNode("p", _hoisted_3$4, [ 45321 createTextVNode(toDisplayString$1(_ctx.$t("shop.cart.totalPrice")) + ": ", 1), 45322 createBaseVNode("span", null, toDisplayString$1($options.totalPrice) + " â¬", 1) 45323 ]), 45324 !$props.checkoutMode ? (openBlock(), createElementBlock("a", { 45325 key: 0, 45326 class: "link-button shop-link", 45327 href: $props.shopLink 45328 }, toDisplayString$1(_ctx.$t("shop.continueShopping")), 9, _hoisted_4$3)) : createCommentVNode("", true), 45329 $options.canCheckout ? (openBlock(), createElementBlock("a", { 45330 key: 1, 45331 class: "link-button", 45332 href: $props.checkoutLink 45333 }, toDisplayString$1(_ctx.$t("shop.proceedToOrder")), 9, _hoisted_5$2)) : createCommentVNode("", true) 45334 ]) 45335 ], 2); 45336} 45337const CartList = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6]]); 45338const _sfc_main$5 = { 45339 name: "SubNavigation", 45340 // components: {}, 45341 props: { 45342 subNavItems: { 45343 type: Array, 45344 required: true, 45345 default: () => [] 45346 }, 45347 isOpen: { 45348 type: Boolean, 45349 default: false 45350 } 45351 }, 45352 emits: ["closeSubNav"], 45353 data() { 45354 return { 45355 currentPath: "" 45356 }; 45357 }, 45358 computed: { 45359 ...mapGetters(ENVIRONMENT_TYPES.NAME, { 45360 isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET, 45361 isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE 45362 }), 45363 belowBreakpoint() { 45364 return this.isMobile || this.isTablet; 45365 } 45366 }, 45367 mounted() { 45368 setTimeout(() => { 45369 window.requestAnimationFrame(() => { 45370 this.focusFirstItem(); 45371 }); 45372 }, 420); 45373 }, 45374 methods: { 45375 focusFirstItem() { 45376 if (this.isOpen) { 45377 this.$refs.subNavItem[0].focus(); 45378 } 45379 }, 45380 closeSubNav() { 45381 this.$emit("closeSubNav"); 45382 }, 45383 focusBackButton() { 45384 this.$refs.btnClose.focus(); 45385 }, 45386 handleFirstItem(index2, event) { 45387 if (index2 === 0) { 45388 event.preventDefault(); 45389 if (this.belowBreakpoint) { 45390 this.focusBackButton(); 45391 } else { 45392 this.$emit("closeSubNav"); 45393 } 45394 } 45395 }, 45396 handleLastItem(event) { 45397 if (this.belowBreakpoint) { 45398 event.preventDefault(); 45399 this.focusFirstItem(); 45400 } 45401 } 45402 }, 45403 // watch() {}, 45404 // Livecycle hooks 45405 created() { 45406 if (typeof window !== "undefined") { 45407 this.currentPath = window.location.pathname; 45408 } 45409 } 45410 // updated() {}, 45411 // beforeDestroy() {}, 45412}; 45413const _hoisted_1$5 = ["aria-label"]; 45414const _hoisted_2$4 = ["href", "onKeydown", "innerHTML"]; 45415const _hoisted_3$3 = ["aria-label"]; 45416function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { 45417 return openBlock(), createElementBlock("div", { 45418 id: "sub_nav", 45419 class: normalizeClass(["sub-navigation", { 45420 "is-open": $props.isOpen 45421 }]), 45422 "aria-label": _ctx.$t("menu.subNav.label") 45423 }, [ 45424 (openBlock(true), createElementBlock(Fragment, null, renderList($props.subNavItems, (item, index2) => { 45425 return openBlock(), createElementBlock("a", { 45426 key: index2, 45427 ref_for: true, 45428 ref: "subNavItem", 45429 href: item.url, 45430 onKeydown: withKeys(withModifiers(($event) => $options.handleFirstItem(index2, $event), ["shift"]), ["tab"]), 45431 class: normalizeClass({ "active": item.url && $data.currentPath.startsWith(item.url) }), 45432 innerHTML: item.name 45433 }, null, 42, _hoisted_2$4); 45434 }), 128)), 45435 $options.belowBreakpoint ? (openBlock(), createElementBlock("button", { 45436 key: 0, 45437 ref: "btnClose", 45438 class: "sub-nav-close", 45439 "aria-label": _ctx.$t("menu.subNav.close"), 45440 onClick: _cache[0] || (_cache[0] = ($event) => $options.closeSubNav()), 45441 onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => $options.handleLastItem($event), ["exact"]), ["tab"])) 45442 }, toDisplayString$1(_ctx.$t("menu.subNav.back")), 41, _hoisted_3$3)) : createCommentVNode("", true) 45443 ], 10, _hoisted_1$5); 45444} 45445const SubNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5]]); 45446const _sfc_main$4 = { 45447 name: "MainNavigation", 45448 components: { 45449 SubNavigation 45450 }, 45451 props: { 45452 homeLink: { 45453 type: String, 45454 default: "/" 45455 }, 45456 mainNavItems: { 45457 type: Array, 45458 required: true, 45459 default: () => [] 45460 }, 45461 disableSubNav: { 45462 type: Boolean, 45463 default: false 45464 } 45465 }, 45466 data() { 45467 return { 45468 isOpenMainNav: false, 45469 selectedSubNav: null, 45470 currentPath: "" 45471 }; 45472 }, 45473 computed: { 45474 ...mapGetters(ENVIRONMENT_TYPES.NAME, { 45475 isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET, 45476 isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE, 45477 assetsUrl: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_ASSETS_URL 45478 }), 45479 belowBreakpoint() { 45480 return this.isMobile || this.isTablet;
45481 }, 45482 currentSubNavItems() { 45483 if (this.selectedSubNav) { 45484 let currentMainNavItem = this.mainNavItems.find((element) => element.id === this.selectedSubNav); 45485 if (currentMainNavItem && currentMainNavItem.items && Array.isArray(currentMainNavItem.items)) { 45486 return currentMainNavItem.items; 45487 } 45488 } 45489 return []; 45490 }, 45491 currentSubNavTeaser() { 45492 if (this.selectedSubNav) { 45493 let currentMainNavItem = this.mainNavItems.find((element) => element.id === this.selectedSubNav); 45494 if (currentMainNavItem && currentMainNavItem.subnavteaser) { 45495 return currentMainNavItem.subnavteaser; 45496 } 45497 } 45498 return null; 45499 }, 45500 getSlotNameTablet() { 45501 if (this.belowBreakpoint) return "meta"; 45502 return "off"; 45503 }, 45504 getSlotNameDesktop() { 45505 if (!this.belowBreakpoint) return "meta"; 45506 return "off"; 45507 }, 45508 // show subnavigation 45509 isOpenSubNav() { 45510 if (this.belowBreakpoint === true && this.isOpenMainNav === true) return true; 45511 return this.selectedSubNav !== null; 45512 }, 45513 // show subnavigation link block 45514 showSubNav() { 45515 return this.selectedSubNav !== null; 45516 }, 45517 selectedMainNavIndex() { 45518 if (!this.selectedSubNav) return -1; 45519 return this.mainNavItems.findIndex((item) => item.id === this.selectedSubNav); 45520 }, 45521 disabledSubNav() { 45522 return this.disableSubNav; 45523 } 45524 }, 45525 methods: { 45526 // used on mobile to open menu 45527 toggleMainNav() { 45528 this.isOpenMainNav = !this.isOpenMainNav; 45529 this.$nextTick(() => { 45530 if (this.isOpenMainNav) { 45531 this.$refs.mainNavItem[0].focus(); 45532 } else if (this.isOpenSubNav) { 45533 this.toggleSubNav(this.selectedSubNav); 45534 } else { 45535 if (this.isTablet || this.isMobile) { 45536 this.$refs.mainNavToggle.focus(); 45537 } 45538 } 45539 }); 45540 }, 45541 // close dropdown on click on content 45542 handleClick(event) { 45543 if (!this.$el.contains(event.target)) { 45544 this.toggleSubNav(this.selectedSubNav); 45545 } 45546 }, 45547 // show/hide subnavigation 45548 toggleSubNav(id) { 45549 const storeIndex = this.selectedMainNavIndex + 0; 45550 if (this.selectedSubNav === id) { 45551 this.selectedSubNav = null; 45552 } else { 45553 this.selectedSubNav = id; 45554 } 45555 if (!this.selectedSubNav) { 45556 this.$refs.mainNavItem[storeIndex].focus(); 45557 } 45558 if (this.selectedSubNav) { 45559 window.onclick = this.handleClick; 45560 } else { 45561 window.onclick = () => { 45562 }; 45563 } 45564 }, 45565 handleLastItem(event) { 45566 event.preventDefault(); 45567 this.handleEsc(); 45568 }, 45569 handleEsc() { 45570 if (this.showSubNav) { 45571 this.toggleSubNav(this.selectedSubNav); 45572 } else if (this.belowBreakpoint && this.isOpenMainNav) { 45573 this.toggleMainNav(); 45574 } 45575 } 45576 }, 45577 // watch() {}, 45578 // Livecycle hooks 45579 created() { 45580 if (typeof window !== "undefined") { 45581 this.currentPath = window.location.pathname; 45582 } 45583 } 45584 // mounted() {}, 45585 // updated() {}, 45586 // beforeDestroy() {}, 45587}; 45588const _hoisted_1$4 = { id: "main_header" }; 45589const _hoisted_2$3 = { class: "main-nav-wrapper" }; 45590const _hoisted_3$2 = { 45591 id: "main_nav_label", 45592 class: "visually-hidden", 45593 "aria-hidden": "true" 45594}; 45595const _hoisted_4$2 = ["href"]; 45596const _hoisted_5$1 = ["src"]; 45597const _hoisted_6$1 = ["aria-expanded"]; 45598const _hoisted_7$1 = { class: "visually-hidden" }; 45599const _hoisted_8 = { 45600 id: "main_nav", 45601 class: "main-nav" 45602}; 45603const _hoisted_9 = ["href"]; 45604const _hoisted_10 = ["innerHTML"]; 45605const _hoisted_11 = ["aria-expanded", "onClick"]; 45606const _hoisted_12 = ["innerHTML"]; 45607const _hoisted_13 = { 45608 key: 0, 45609 class: "sub-nav-wrapper" 45610}; 45611const _hoisted_14 = { 45612 ref: "subNavTeaserSection", 45613 class: "sub-nav-section sub-nav-teaser" 45614}; 45615const _hoisted_15 = ["href"]; 45616const _hoisted_16 = ["src"]; 45617const _hoisted_17 = ["innerHTML"]; 45618const _hoisted_18 = { class: "sub-nav-section" }; 45619const _hoisted_19 = { class: "sub-nav-section --no-border" }; 45620function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
45621 const _component_sub_navigation = resolveComponent("sub-navigation"); 45622 return openBlock(), createElementBlock("header", _hoisted_1$4, [ 45623 createBaseVNode("nav", { 45624 id: "main_navigation", 45625 class: normalizeClass({ 45626 "is-open": $data.isOpenMainNav 45627 }), 45628 "aria-labelledby": "main_nav_label", 45629 onKeyup: _cache[4] || (_cache[4] = withKeys((...args) => $options.handleEsc && $options.handleEsc(...args), ["esc"])) 45630 }, [ 45631 createBaseVNode("div", _hoisted_2$3, [ 45632 createBaseVNode("span", _hoisted_3$2, toDisplayString$1(_ctx.$t("menu.mainNav.label")), 1), 45633 renderSlot(_ctx.$slots, $options.getSlotNameDesktop), 45634 createBaseVNode("a", { 45635 href: $props.homeLink, 45636 class: "logo" 45637 }, [ 45638 renderSlot(_ctx.$slots, "logo", {}, () => [ 45639 createBaseVNode("img", { 45640 src: `${_ctx.assetsUrl}/img/Logo_Zwangsarbeit_Standard.svg`, 45641 alt: "Logo Museum für Zwangsarbeit" 45642 }, null, 8, _hoisted_5$1) 45643 ]) 45644 ], 8, _hoisted_4$2), 45645 renderSlot(_ctx.$slots, "mobile", {}, () => [ 45646 _cache[5] || (_cache[5] = createBaseVNode("section", { class: "mobile-menu-bar" }, null, -1)) 45647 ]), 45648 createBaseVNode("button", { 45649 ref: "mainNavToggle", 45650 class: normalizeClass(["main-nav-toggle", { 45651 "active": $data.isOpenMainNav 45652 }]), 45653 "aria-expanded": $data.isOpenMainNav, 45654 "aria-controls": "main_nav", 45655 onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleMainNav && $options.toggleMainNav(...args)) 45656 }, [ 45657 _cache[6] || (_cache[6] = createBaseVNode("span", { class: "burger" }, null, -1)), 45658 createBaseVNode("span", _hoisted_7$1, toDisplayString$1(_ctx.$t("menu.mainNav.label")) + " " + toDisplayString$1($data.isOpenMainNav ? _ctx.$t("menu.toggle.label.off") : _ctx.$t("menu.toggle.label.on")), 1) 45659 ], 10, _hoisted_6$1), 45660 createBaseVNode("div", _hoisted_8, [ 45661 (openBlock(true), createElementBlock(Fragment, null, renderList($props.mainNavItems, (item) => { 45662 return openBlock(), createElementBlock("div", { 45663 key: item.id, 45664 class: normalizeClass(["sub-nav-toggle-wrapper", { 45665 "active": $options.isOpenSubNav && $data.selectedSubNav == item.id || item.url && $data.currentPath.startsWith(item.url) 45666 }]) 45667 }, [ 45668 $options.disabledSubNav ? (openBlock(), createElementBlock("a", { 45669 key: 0, 45670 href: item.url, 45671 class: "main-nav-link" 45672 }, [ 45673 createBaseVNode("span", { 45674 innerHTML: item.name 45675 }, null, 8, _hoisted_10) 45676 ], 8, _hoisted_9)) : createCommentVNode("", true), 45677 !$options.disabledSubNav ? (openBlock(), createElementBlock("button", { 45678 key: 1, 45679 ref_for: true, 45680 ref: "mainNavItem", 45681 class: "sub-nav-toggle", 45682 "aria-expanded": $options.isOpenSubNav && $data.selectedSubNav == item.id || item.url && $data.currentPath.startsWith(item.url), 45683 "aria-controls": "sub_nav", 45684 onClick: ($event) => $options.toggleSubNav(item.id) 45685 }, [ 45686 createBaseVNode("span", { 45687 innerHTML: item.name 45688 }, null, 8, _hoisted_12) 45689 ], 8, _hoisted_11)) : createCommentVNode("", true) 45690 ], 2); 45691 }), 128)) 45692 ]) 45693 ]), 45694 createVNode(Transition, { 45695 name: $options.belowBreakpoint ? "" : "nav-transition" 45696 }, { 45697 default: withCtx(() => [ 45698 $options.isOpenSubNav ? (openBlock(), createElementBlock("div", _hoisted_13, [ 45699 createVNode(Transition, { name: "subnav-transition" }, { 45700 default: withCtx(() => [ 45701 $options.showSubNav ? (openBlock(), createBlock(_component_sub_navigation, { 45702 key: $data.selectedSubNav, 45703 ref: "subNavItem", 45704 tabindex: "-1",
45705 "sub-nav-items": $options.currentSubNavItems, 45706 "is-open": $options.showSubNav, 45707 onCloseSubNav: _cache[1] || (_cache[1] = ($event) => $options.toggleSubNav($data.selectedSubNav)) 45708 }, null, 8, ["sub-nav-items", "is-open"])) : createCommentVNode("", true) 45709 ]), 45710 _: 1 45711 }), 45712 createBaseVNode("section", _hoisted_14, [ 45713 createVNode(Transition, { name: "subnav-transition" }, { 45714 default: withCtx(() => [ 45715 $options.currentSubNavTeaser ? (openBlock(), createElementBlock("a", { 45716 key: $data.selectedSubNav, 45717 href: $options.currentSubNavTeaser.link 45718 }, [ 45719 $options.currentSubNavTeaser.image ? (openBlock(), createElementBlock("img", { 45720 key: 0, 45721 class: "", 45722 src: $options.currentSubNavTeaser.image, 45723 role: "presentation", 45724 alt: "", 45725 loading: "lazy" 45726 }, null, 8, _hoisted_16)) : createCommentVNode("", true), 45727 createBaseVNode("div", { 45728 class: "icon-arrow-right", 45729 innerHTML: $options.currentSubNavTeaser.linktext 45730 }, null, 8, _hoisted_17) 45731 ], 8, _hoisted_15)) : createCommentVNode("", true) 45732 ]), 45733 _: 1 45734 }) 45735 ], 512), 45736 renderSlot(_ctx.$slots, $options.getSlotNameTablet), 45737 createBaseVNode("section", _hoisted_18, [ 45738 renderSlot(_ctx.$slots, "links") 45739 ]), 45740 createBaseVNode("section", _hoisted_19, [ 45741 renderSlot(_ctx.$slots, "external"), 45742 createBaseVNode("a", { 45743 href: "#main_nav", 45744 class: "tab-close-target", 45745 onKeydown: _cache[2] || (_cache[2] = withKeys(($event) => $options.handleLastItem($event), ["tab"])), 45746 onClick: _cache[3] || (_cache[3] = (...args) => $options.handleEsc && $options.handleEsc(...args)) 45747 }, [ 45748 createBaseVNode("span", null, toDisplayString$1(_ctx.$t("menu.subNav.close")), 1) 45749 ], 32) 45750 ]) 45751 ])) : createCommentVNode("", true) 45752 ]), 45753 _: 3 45754 }, 8, ["name"]) 45755 ], 34) 45756 ]); 45757} 45758const MainNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]); 45759const _sfc_main$3 = { 45760 name: "MagazineFurtherReading" 45761}; 45762const _hoisted_1$3 = { class: "magazine-further-reading" }; 45763function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { 45764 return openBlock(), createElementBlock("div", _hoisted_1$3, [ 45765 renderSlot(_ctx.$slots, "box-1"), 45766 renderSlot(_ctx.$slots, "box-2") 45767 ]); 45768} 45769const MagazineFurtherReading = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3]]); 45770const _sfc_main$2 = { 45771 name: "MagazineArticle", 45772 components: { 45773 LinkButton 45774 }, 45775 props: { 45776 previousArticleUrl: { 45777 type: String, 45778 default: null 45779 }, 45780 nextArticleUrl: { 45781 type: String, 45782 default: null 45783 }, 45784 backToOverviewUrl: { 45785 type: String, 45786 required: true 45787 } 45788 } 45789}; 45790const _hoisted_1$2 = { class: "magazine-article" }; 45791const _hoisted_2$2 = { class: "content-block row" }; 45792const _hoisted_3$1 = { class: "columns" }; 45793const _hoisted_4$1 = { class: "links-container" }; 45794function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { 45795 const _component_link_button = resolveComponent("link-button"); 45796 return openBlock(), createElementBlock("article", _hoisted_1$2, [ 45797 renderSlot(_ctx.$slots, "header"), 45798 createVNode(Transition, { 45799 appear: "", 45800 name: "fadeInDelayed" 45801 }, { 45802 default: withCtx(() => [ 45803 renderSlot(_ctx.$slots, "intro") 45804 ]), 45805 _: 3 45806 }), 45807 createVNode(Transition, { 45808 appear: "", 45809 name: "fadeInDelayed" 45810 }, { 45811 default: withCtx(() => [ 45812 renderSlot(_ctx.$slots, "content") 45813 ]), 45814 _: 3 45815 }), 45816 createVNode(Transition, { 45817 appear: "", 45818 name: "fadeInDelayed" 45819 }, {
45820 default: withCtx(() => [ 45821 createBaseVNode("footer", _hoisted_2$2, [ 45822 createBaseVNode("div", _hoisted_3$1, [ 45823 createBaseVNode("div", _hoisted_4$1, [ 45824 createVNode(_component_link_button, { 45825 label: _ctx.$t("magazine.previousArticle"), 45826 url: $props.previousArticleUrl 45827 }, null, 8, ["label", "url"]), 45828 createVNode(_component_link_button, { 45829 class: "icon-arrow-back", 45830 url: $props.backToOverviewUrl 45831 }, { 45832 default: withCtx(() => _cache[0] || (_cache[0] = [ 45833 createBaseVNode("span", { class: "visually-hidden" }, " $t('magazine.backToOverview') ", -1) 45834 ])), 45835 _: 1, 45836 __: [0] 45837 }, 8, ["url"]), 45838 createVNode(_component_link_button, { 45839 label: _ctx.$t("magazine.nextArticle"), 45840 url: $props.nextArticleUrl 45841 }, null, 8, ["label", "url"]) 45842 ]) 45843 ]) 45844 ]) 45845 ]), 45846 _: 1 45847 }) 45848 ]); 45849} 45850const MagazineArticle = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2]]); 45851const _sfc_main$1 = { 45852 name: "MagazineTableOfContent", 45853 components: { 45854 ImageGallery, 45855 MagazineTopicGroup, 45856 SwiperSlide 45857 }, 45858 props: { 45859 title: { 45860 type: String, 45861 required: true 45862 }, 45863 topicGroups: { 45864 type: Array, 45865 required: true 45866 } 45867 } 45868}; 45869const _hoisted_1$1 = { class: "magazine-table-of-content" }; 45870const _hoisted_2$1 = { class: "magazine-table-of-content-headline" }; 45871function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { 45872 const _component_magazine_topic_group = resolveComponent("magazine-topic-group"); 45873 const _component_swiper_slide = resolveComponent("swiper-slide"); 45874 const _component_image_gallery = resolveComponent("image-gallery"); 45875 return openBlock(), createElementBlock("div", _hoisted_1$1, [ 45876 createBaseVNode("h2", _hoisted_2$1, toDisplayString$1($props.title), 1), 45877 createVNode(_component_image_gallery, { "columns-style": "" }, { 45878 default: withCtx(() => [ 45879 (openBlock(true), createElementBlock(Fragment, null, renderList($props.topicGroups, (topicGroup, index2) => { 45880 return openBlock(), createBlock(_component_swiper_slide, { 45881 key: "topicGroup-" + index2 45882 }, { 45883 default: withCtx(() => [ 45884 createVNode(_component_magazine_topic_group, { 45885 title: topicGroup.title, 45886 articles: topicGroup.articles 45887 }, null, 8, ["title", "articles"]) 45888 ]), 45889 _: 2 45890 }, 1024); 45891 }), 128)) 45892 ]), 45893 _: 1 45894 }) 45895 ]); 45896} 45897const MagazineTableOfContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]); 45898const _sfc_main = { 45899 name: "TeaserWitness", 45900 // components: {}, 45901 props: { 45902 headline: { 45903 type: String, 45904 default: null 45905 } 45906 } 45907 // data() { 45908 // return {}; 45909 // }, 45910 // computed: {}, 45911 // watch: {}, 45912 // Livecycle hooks 45913 // created() {}, 45914 // mounted() {}, 45915 // updated() {}, 45916 // beforeUnmount() {}, 45917 // methods: {}, 45918}; 45919const _hoisted_1 = { class: "teaser-witness row" }; 45920const _hoisted_2 = { class: "columns medium-5 medium-push-1 large-4" }; 45921const _hoisted_3 = { class: "columns medium-7 medium-push-1 large-6" }; 45922const _hoisted_4 = { class: "columns medium-6 medium-push-1" }; 45923const _hoisted_5 = { class: "header" }; 45924const _hoisted_6 = { 45925 key: 0, 45926 class: "headline" 45927}; 45928const _hoisted_7 = { class: "richtext-wrapper" }; 45929function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { 45930 return openBlock(), createElementBlock("div", _hoisted_1, [ 45931 createBaseVNode("div", _hoisted_2, [ 45932 renderSlot(_ctx.$slots, "image") 45933 ]), 45934 createBaseVNode("div", _hoisted_3, [ 45935 renderSlot(_ctx.$slots, "quote") 45936 ]), 45937 createBaseVNode("div", _hoisted_4, [ 45938 createBaseVNode("div", _hoisted_5, [ 45939 $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_6, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true) 45940 ]), 45941 createBaseVNode("div", _hoisted_7, [ 45942 renderSlot(_ctx.$slots, "default") 45943 ]) 45944 ]) 45945 ]); 45946} 45947const HeaderWitness = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); 45948const app = createApp(); 45949app.use(store); 45950app.use(i18nInstance); 45951app.use(install2, { 45952 load: { 45953 key: "AIzaSyComhxjrs8wOdzcaDM7KuZzSndj-B4ub0E" 45954 // TODO
45955 // insert google maps api key 45956 // language: 'de', 45957 } 45958}); 45959app.config.globalProperties.$Swal = Swal; 45960app.config.globalProperties.$window = window; 45961app.config.compilerOptions.isCustomElement = (tag) => ["svg:style"].includes(tag), app.component("SwiperSlide", SwiperSlide); 45962app.component("AnchorTarget", AnchorTarget); 45963app.component("AudioPlayer", AudioPlayer); 45964app.component("AddToCart", AddToCart); 45965app.component("LinkButton", LinkButton); 45966app.component("TeaserTextImage", TeaserTextImage); 45967app.component("PageWrapper", PageWrapper); 45968app.component("ArticleWrapper", ArticleWrapper); 45969app.component("ContentImage", ContentImage); 45970app.component("ContentBlock", ContentBlock); 45971app.component("FormSelect", FormSelect); 45972app.component("RichtextWrapper", RichtextWrapper); 45973app.component("VideoEmbed", VideoEmbed); 45974app.component("DividerLine", DividerLine); 45975app.component("GridWrapper", GridWrapper); 45976app.component("TeaserQuickLink", TeaserQuickLink); 45977app.component("TeaserTextOnly", TeaserTextOnly); 45978app.component("ButtonGroup", ButtonGroup); 45979app.component("ArticleList", ArticleList); 45980app.component("SkipToContent", SkipToContent); 45981app.component("BreadcrumbNavigation", BreadcrumbNavigation); 45982app.component("TagList", TagList); 45983app.component("BiographyHeader", BiographyHeader); 45984app.component("DynamicLink", DynamicLink); 45985app.component("SidebarPortal", SidebarPortal); 45986app.component("PaginationLinkList", PaginationLinkList); 45987app.component("SearchResultEntry", SearchResultEntry); 45988app.component("MatomoEmbed", MatomoEmbed); 45989app.component("SearchNav", SearchNav); 45990app.component("MagazineHeader", MagazineHeader); 45991app.component("MagazineEditorialContent", MagazineEditorialContent); 45992app.component("MagazineEditorialFigure", MagazineEditorialFigure); 45993app.component("MagazineFilter", MagazineFilter); 45994app.component("ImageMagnify", ImageMagnify); 45995app.component("CitymapPagesList", CitymapPagesList); 45996app.component("RecaptchaField", RecaptchaField); 45997app.component("SliderScreenWrapper", SliderScreenWrapper); 45998app.component("LateEmbed", LateEmbed); 45999app.component("EventList", EventList); 46000app.component("FilterSection", FilterSection); 46001app.component("TeaserChronology", TeaserChronology); 46002app.component("ChronologyWrapper", _sfc_main$S); 46003app.component("ChronologyYear", ChronologyYear); 46004app.component("DetailAboutBox", DetailAboutBox); 46005app.component("ImageGallery", ImageGallery); 46006app.component("InfoBox", InfoBox); 46007app.component("TeaserQuote", TeaserQuote); 46008app.component("TeaserMonoBlock", TeaserMonoBlock); 46009app.component("TeaserDuoBlock", TeaserDuoBlock); 46010app.component("TeaserColorBlock", TeaserColorBlock); 46011app.component("TeaserHeroBlock", TeaserHeroBlock); 46012app.component("LangSearchNavigation", LangSearchNavigation); 46013app.component("SoMeFollow", SoMeFollow); 46014app.component("TextImage", TextImage); 46015app.component("TextImageEasyLanguage", TextImageEasyLanguage); 46016app.component("TextImageList", TextImageList); 46017app.component("VisitNavigation", VisitNavigation); 46018app.component("MainFooter", MainFooter); 46019app.component("GlossaryBlock", GlossaryBlock); 46020app.component("MapHistoricSites", MapHistoricSites); 46021app.component("ShopItemHeader", ShopItemHeader); 46022app.component("FormBlock", FormBlock); 46023app.component("SearchField", SearchField); 46024app.component("NewsletterRegistration", NewsletterRegistration); 46025app.component("SupporterLogoArea", SupporterLogoArea); 46026app.component("MagazineEditorial", MagazineEditorial); 46027app.component("MagazineArticleList", MagazineArticleList); 46028app.component("MagazineFurtherReadingBox", MagazineFurtherReadingBox); 46029app.component("MagazineArticleAboutBox", MagazineArticleAboutBox); 46030app.component("MagazineArticleFigure", MagazineArticleFigure); 46031app.component("MagazineArticleHeader", MagazineArticleHeader); 46032app.component("MagazineArticleIntro", MagazineArticleIntro); 46033app.component("MagazineArticleList", MagazineArticleList); 46034app.component("MagazineArticleMediaIntro", MagazineArticleMediaIntro); 46035app.component("MagazineArticleTextBlock", MagazineArticleTextBlock); 46036app.component("MagazineEditorial", MagazineEditorial); 46037app.component("MagazineQuote", MagazineQuote); 46038app.component("MagazineTopicGroup", MagazineTopicGroup); 46039app.component("MagazinesArticleList", MagazinesArticleList); 46040app.component("MagazineFilterList", MagazineFilterList); 46041app.component("TextFootnote", TextFootnote); 46042app.component("OverlayContainer", OverlayContainer); 46043app.component("CampList", CampList); 46044app.component("TeaserDuoMagnify", TeaserDuoMagnify); 46045app.component("TextOverlayImage", TextOverlayImage); 46046app.component("TextOffset", TextOffset); 46047app.component("CitymapArticlesNavigation", CitymapArticlesNavigation); 46048app.component("TextVideoList", TextVideoList); 46049app.component("TextVideo", TextVideo); 46050app.component("CartList", CartList); 46051app.component("MainNavigation", MainNavigation); 46052app.component("MagazineFurtherReading", MagazineFurtherReading); 46053app.component("MagazineArticle", MagazineArticle); 46054app.component("MagazineTableOfContent", MagazineTableOfContent); 46055app.component("TeaserWitness", HeaderWitness); 46056app.component("HeaderWitness", HeaderWitness); 46057app.component("App", App); 46058app.directive("breadcrumbExtension", breadcrumbExtension); 46059app.directive("hideCookieConsent", hideCookieConsent);
46060app.directive("anchorScrollIntoView", anchorScrollIntoView); 46061app.mount("#app");
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.