EUR/USD, USD/JPY, USD/CAD & AUD/USD’s Path Tied to US PCE

<p> <br />
</p>
<div>
<h2>US DOLLAR FORECAST – EUR/USD, USD/JPY, USD/CAD, AUD/USD</h2>
<ul>
<li><span>The </span><span>U.S. dollar</span><span> has rebounded recently, boosted by a hawkish repricing of the Fed’s path</span> <span>relative to what was expected earlier in the year</span></li>
<li><span>The prospect of the </span><span>FOMC</span><span> starting to cut borrowing costs at its March meeting have also diminished, reinforcing the greenback’s recovery</span></li>
<li><span>This week, all eyes will be on the U.S. </span><span>PCE</span><span> report</span></li>
</ul>
<div>
<div>
<p>
Recommended by Diego Colman
</p>
<p>
Building Confidence in Trading
</p>
</div>
</div>
<p><span>Most Read: </span><span>US Dollar Forecast – EUR/USD, USD/CAD and AUD/USD. Where to Next?</span></p>
<p>The U.S. dollar, as measured by the DXY index, has staged a remarkable turnaround recently, supported by the significant rebound in U.S. Treasury yields on the back of a hawkish repricing of the Federal Reserve’s monetary policy outlook.</p>
<p>To provide context, as recently as last Friday Wall Street was forecasting nearly 160 basis points of interest rate cuts for the year, but these dovish expectations have since been scaled back, with markets now discounting only 124 basis points of easing for the highlighted period.</p>
<h3>2024 FED FUNDS FUTURES CONTRACTS (IMPLIED YIELDS)</h3>
<p><img fetchpriority="high" decoding="async" src="https://a.c-dn.net/b/3TDQjE/image1.png" alt="A graph of different colored lines Description automatically generated" data-image-original-width="1429" data-image-original-height="739" width="1429" height="739" class="dfx-lazyload" style="padding-bottom: calc(739 / 1429 * 100%);" /></p>
<p>Source: TradingView</p>
<p>The prospect of the FOMC starting to lower borrowing costs at its March meeting has also diminished, falling from roughly 77% one week ago (January) to 46% today. This situation has undoubtedly contributed to the greenback’s positive performance against its top peers.</p>
<p><span>For a complete overview of the U.S. dollar’s technical and fundamental outlook, request your complimentary Q1 trading forecast now!</span></p>
<div>
<div>
<p>
Recommended by Diego Colman
</p>
<p>
Get Your Free USD Forecast
</p>
</div>
</div>
<p><img decoding="async" src="https://a.c-dn.net/b/05sDgs/image2.png" alt="image2.png" data-image-original-width="1397" data-image-original-height="674" width="1397" height="674" class="dfx-lazyload" style="padding-bottom: calc(674 / 1397 * 100%);" /></p>
<p>Source: CME Group</p>
<p>With U.S. economic activity growing above trend, the labor market extremely tight and progress on disinflation stalled, it would not be surprising to see traders further reduce bets on how much policymakers will cut rates in 2024, especially if incoming data doesn’t cooperate.</p>
<p>We’ll have more clarity on the economy and consumer prices in the coming days when the U.S. Bureau of Economic Analysis unveils last month’s personal income and outlays numbers. That said, traders should pay attention to two things in the report: consumer spending growth and core PCE.</p>
<p>The screen capture below, sourced from DailyFX’s economic calendar, presents the consensus estimates for the upcoming release.</p>
<h3>UPCOMING US DATA</h3>
<p><img decoding="async" src="https://a.c-dn.net/b/2471mp/image3.png" alt="image3.png" data-image-original-width="1179" data-image-original-height="401" width="1179" height="401" class="dfx-lazyload" style="padding-bottom: calc(401 / 1179 * 100%);" /></p>
<p><span>Source: </span><span>DailyFX Economic Calendar</span></p>
<p>Any results above consensus estimates could indicate that the U.S. economy continues to run hot and that it would be premature to ease the policy stance. This scenario could drive Treasury yields higher, reinforcing the U.S. dollar’s bullish reversal. Conversely, subdued numbers could validate easing expectations, putting the greenback back on a depreciating path.</p>
<p><span>Interested in learning how retail positioning can offer clues about </span><span>EUR/USD</span><span>’s near-term trajectory? Our sentiment guide has valuable insights about this topic. Download it now!</span></p>
<div>
<div>
<p>
<span><br />
<span data-stream-type="sentiment" data-market- data-value="–" data-type="long-value-info"><br />
</span><br />
<span>of clients are </span><span>net long.</span> </span><br />
<span><br />
<span data-stream-type="sentiment" data-market- data-value="–" data-type="short-value-info"><br />
</span><br />
<span>of clients are </span><span>net short.</span> </span>
</p>
</div>
</div>
<div>
<table>
<thead>
<tr>
<td>
Change in </td>
<td>
Longs </td>
<td>
Shorts </td>
<td>
OI </td>
</tr>
</thead>
<tbody>
<tr>
<td>Daily</td>
<td>-10%</td>
<td>-3%</td>
<td>-6%</td>
</tr>
<tr>
<td>Weekly</td>
<td>12%</td>
<td>6%</td>
<td>9%</td>
</tr>
</tbody>
</table>
</div>
<h2>EUR/USD TECHNICAL ANALYSIS</h2>
<p>EUR/USD retreated earlier in the week but managed to hold above its 200-day simple moving average at 1.0840. To bolster sentiment toward the euro, it is crucial for this support zone to remain intact; failure to do so could result in a pullback towards 1.0770, followed by 1.0700.</p>
<p>On the flip side, if buying momentum returns and triggers a market turnaround, primary resistance is located in the 1.0910-1.0930 band. Sellers are expected to vigorously defend this technical ceiling; however, a successful breakout could expose the 1.1020 area.</p>
<h3>EUR/USD TECHNICAL CHART</h3>
<p><img loading="lazy" decoding="async" src="https://a.c-dn.net/b/20Y9wS/image4.png" alt="A screen shot of a graph Description automatically generated" data-image-original-width="1429" data-image-original-height="739" width="1429" height="739" class="dfx-lazyload" style="padding-bottom: calc(739 / 1429 * 100%);" /></p>
<p><span>EUR/USD Chart Prepared Using TradingView</span></p>
<p><span>For a complete overview of the </span><span>Japanese yen</span><span>’s medium-term prospects, make sure to request the Q1 trading forecast!</span></p>
<div>
<div>
<p>
Recommended by Diego Colman
</p>
<p>
Get Your Free JPY Forecast
</p>
</div>
</div>
<h2>USD/JPY TECHNICAL ANALYSIS</h2>
<p>USD/JPY rallied earlier in the week, but its upward momentum diminished as the weekend approached when prices failed to clear resistance near 149.00, which resulted in a modest retracement from those levels. That said, if losses intensify in the upcoming days, support appears at 147.40, followed by 146.00.</p>
<p>On the flip side, if bulls regain market control and propel the pair above 149.00, there’s potential for a rally towards the psychological 150.00 mark. If historical patterns serve as a guide, USD/JPY could be rejected from this area on a retest; however, a breakout could set the stage for a move toward 150.90.</p>
<h3>USD/JPY TECHNICAL CHART</h3>
<p><img loading="lazy" decoding="async" src="https://a.c-dn.net/b/0DoGLR/image5.png" alt="A screenshot of a graph Description automatically generated" data-image-original-width="1429" data-image-original-height="739" width="1429" height="739" class="dfx-lazyload" style="padding-bottom: calc(739 / 1429 * 100%);" /></p>
<p><span>USD/JPY Chart Created Using TradingView</span></p>
<p><span>Want to know more about the correlation between retail positioning and </span><span>USD/CAD</span><span>’s trajectory? Download our sentiment guide to learn more about market psychology.</span></p>
<div>
<div>
<p>
<span><br />
<span data-stream-type="sentiment" data-market- data-value="–" data-type="long-value-info"><br />
</span><br />
<span>of clients are </span><span>net long.</span> </span><br />
<span><br />
<span data-stream-type="sentiment" data-market- data-value="–" data-type="short-value-info"><br />
</span><br />
<span>of clients are </span><span>net short.</span> </span>
</p>
</div>
</div>
<div>
<table>
<thead>
<tr>
<td>
Change in </td>
<td>
Longs </td>
<td>
Shorts </td>
<td>
OI </td>
</tr>
</thead>
<tbody>
<tr>
<td>Daily</td>
<td>-1%</td>
<td>-22%</td>
<td>-12%</td>
</tr>
<tr>
<td>Weekly</td>
<td>-6%</td>
<td>13%</td>
<td>2%</td>
</tr>
</tbody>
</table>
</div>
<h2>USD/CAD TECHNICAL ANALYSIS</h2>
<p>USD/CAD showed strong performance early in the week but took a sharp turn to the downside, losing its 200-day simple moving average heading into the weekend. This pullback followed an unsuccessful attempt to overtake trendline resistance and a key Fibonacci level near 1.3540.</p>
<p>If the bearish reversal gains momentum in the trading sessions ahead, initial support is expected at 1.3385, followed by 1.3355. On the other hand, if bulls stage a comeback and drive the pair higher, resistance is seen at 1.3480. With further strength, attention will be on 1.3510.</p>
<h3>USD/CAD TECHNICAL CHART</h3>
<p><img loading="lazy" decoding="async" src="https://a.c-dn.net/b/368Spp/image6.png" alt="A screenshot of a graph Description automatically generated" data-image-original-width="1429" data-image-original-height="739" width="1429" height="739" class="dfx-lazyload" style="padding-bottom: calc(739 / 1429 * 100%);" /></p>
<p><span>USD/CAD Chart Created Using TradingView</span></p>
<p><span>Curious about what lies ahead for the </span><span>Australian dollar</span><span>? Find comprehensive answers in our quarterly trading forecast. Claim your free copy now!</span></p>
<div>
<div>
<p>
Recommended by Diego Colman
</p>
<p>
Get Your Free AUD Forecast
</p>
</div>
</div>
<h2>AUD/USD TECHNICAL ANALYSIS</h2>
<p>AUD/USD lost ground from late December through early this week, but has bounced off technical support at 0.6525, allowing prices to push past a key ceiling ranging from 0.6570 to 0.6580. Should the recovery gather strength in the coming sessions, initial resistance lies at 0.6650, followed by 0.6700.</p>
<p>Conversely, if sellers reappear and drive the pair below 0.6580/0.6570, the next area likely to offer technical support appears at 0.6525, which corresponds to the 100-day simple moving average. On further weakness, the focus will be on 0.6500, the 61.8% Fib retracement of the October/December rally.</p>
<h3>AUD/USD TECHNICAL CHART</h3>
<p><img loading="lazy" decoding="async" src="https://a.c-dn.net/b/3o5DQC/image7.png" alt="A screenshot of a computer screen Description automatically generated" data-image-original-width="1429" data-image-original-height="739" width="1429" height="739" class="dfx-lazyload" style="padding-bottom: calc(739 / 1429 * 100%);" /></p>
<p><span>AUD/USD Chart Created Using TradingView</span></p>
</div>
<p><script>
!function(){function errMsg(errCode,msg){return(msg||"")+" (SystemJS Error#"+errCode+" https://github.com/systemjs/systemjs/blob/main/docs/errors.md#"+errCode+")"}var baseUrl,baseEl,hasSymbol="undefined"!=typeof Symbol,hasSelf="undefined"!=typeof self,hasDocument="undefined"!=typeof document,envGlobal=hasSelf?self:global,backslashRegEx=(!hasDocument||(baseEl=document.querySelector("base[href]"))&&(baseUrl=baseEl.href),baseUrl||"undefined"==typeof location||-1!==(baseEl=(baseUrl=location.href.split("#")[0].split("?")[0]).lastIndexOf("/"))&&(baseUrl=baseUrl.slice(0,baseEl+1)),/\/g);function resolveIfNotPlainOrUrl(relUrl,parentUrl){if("/"===(relUrl=-1!==relUrl.indexOf("\")?relUrl.replace(backslashRegEx,"/"):relUrl)[0]&&"/"===relUrl[1])return parentUrl.slice(0,parentUrl.indexOf(":")+1)+relUrl;if("."===relUrl[0]&&("/"===relUrl[1]||"."===relUrl[1]&&("/"===relUrl[2]||2===relUrl.length&&(relUrl+="/"))||1===relUrl.length&&(relUrl+="/"))||"/"===relUrl[0]){var parentProtocol=parentUrl.slice(0,parentUrl.indexOf(":")+1),pathname="/"===parentUrl[parentProtocol.length+1]?"file:"!==parentProtocol?(pathname=parentUrl.slice(parentProtocol.length+2)).slice(pathname.indexOf("/")+1):parentUrl.slice(8):parentUrl.slice(parentProtocol.length+("/"===parentUrl[parentProtocol.length]));if("/"===relUrl[0])return parentUrl.slice(0,parentUrl.length-pathname.length-1)+relUrl;for(var segmented=pathname.slice(0,pathname.lastIndexOf("/")+1)+relUrl,output=[],segmentIndex=-1,i=0;i<segmented.length;i++)-1!==segmentIndex?"/"===segmented[i]&&(output.push(segmented.slice(segmentIndex,i+1)),segmentIndex=-1):"."===segmented[i]?"."!==segmented[i+1]||"/"!==segmented[i+2]&&i+2!==segmented.length?"/"===segmented[i+1]||i+1===segmented.length?i+=1:segmentIndex=i:(output.pop(),i+=2):segmentIndex=i;return-1!==segmentIndex&&output.push(segmented.slice(segmentIndex)),parentUrl.slice(0,parentUrl.length-pathname.length)+output.join("")}}function resolveUrl(relUrl,parentUrl){return resolveIfNotPlainOrUrl(relUrl,parentUrl)||(-1!==relUrl.indexOf(":")?relUrl:resolveIfNotPlainOrUrl("./"+relUrl,parentUrl))}function resolveAndComposePackages(packages,outPackages,baseUrl,parentMap,parentUrl){for(var p in packages){var mapped,resolvedLhs=resolveIfNotPlainOrUrl(p,baseUrl)||p,rhs=packages[p];"string"==typeof rhs&&((mapped=resolveImportMap(parentMap,resolveIfNotPlainOrUrl(rhs,baseUrl)||rhs,parentUrl))?outPackages[resolvedLhs]=mapped:targetWarning("W1",p,rhs,"bare specifier did not resolve"))}}function resolveAndComposeImportMap(json,baseUrl,outMap){for(var u in json.imports&&resolveAndComposePackages(json.imports,outMap.imports,baseUrl,outMap,null),json.scopes||{}){var resolvedScope=resolveUrl(u,baseUrl);resolveAndComposePackages(json.scopes[u],outMap.scopes[resolvedScope]||(outMap.scopes[resolvedScope]={}),baseUrl,outMap,resolvedScope)}for(u in json.depcache||{})outMap.depcache[resolveUrl(u,baseUrl)]=json.depcache[u];for(u in json.integrity||{})outMap.integrity[resolveUrl(u,baseUrl)]=json.integrity[u]}function getMatch(path,matchObj){if(matchObj[path])return path;var sepIndex=path.length;do{var segment=path.slice(0,sepIndex+1);if(segment in matchObj)return segment}while(-1!==(sepIndex=path.lastIndexOf("/",sepIndex-1)))}function applyPackages(id,packages){var pkgName=getMatch(id,packages);if(pkgName){packages=packages[pkgName];if(null!==packages)return id.length>pkgName.length&&"/"!==packages[packages.length-1]?void targetWarning("W2",pkgName,packages,"should have a trailing '/'"):packages+id.slice(pkgName.length)}}function targetWarning(code,match,target,msg){console.warn(errMsg(code,"Package target "+msg+", resolving target '"+target+"' for "+match))}function resolveImportMap(importMap,resolvedOrPlain,parentUrl){for(var scopes=importMap.scopes,scopeUrl=parentUrl&&getMatch(parentUrl,scopes);scopeUrl;){var packageResolution=applyPackages(resolvedOrPlain,scopes[scopeUrl]);if(packageResolution)return packageResolution;scopeUrl=getMatch(scopeUrl.slice(0,scopeUrl.lastIndexOf("/")),scopes)}return applyPackages(resolvedOrPlain,importMap.imports)||-1!==resolvedOrPlain.indexOf(":")&&resolvedOrPlain}var toStringTag$1=hasSymbol&&Symbol.toStringTag,REGISTRY=hasSymbol?Symbol():"@";function SystemJS(){this[REGISTRY]={}}var lastRegister,systemJSPrototype=SystemJS.prototype;function loadToId(load){return load.id}function triggerOnload(loader,load,err,isErrSource){if(loader.onload(err,load.id,load.d&&load.d.map(loadToId),!!isErrSource),err)throw err}function getOrCreateLoad(loader,id,firstParentUrl,meta){var importerSetters,ns,instantiatePromise,linkPromise,load=loader[REGISTRY][id];return load||(importerSetters=[],ns=Object.create(null),toStringTag$1&&Object.defineProperty(ns,toStringTag$1,{value:"Module"}),linkPromise=(instantiatePromise=Promise.resolve().then(function(){return loader.instantiate(id,firstParentUrl,meta)}).then(function(registration){var declared;if(registration)return declared=registration[1](function _export(name,value){var changed=!(load.h=!0);if("string"==typeof name)name in ns&&ns[name]===value||(ns[name]=value,changed=!0);else{for(var p in name){value=name[p];p in ns&&ns[p]===value||(ns[p]=value,changed=!0)}name&&name.__esModule&&(ns.__esModule=name.__esModule)}if(changed)for(var i=0;i<importerSetters.length;i++){var setter=importerSetters[i];setter&&setter(ns)}return value},2===registration[1].length?{import:function(importId,meta){return loader.import(importId,id,meta)},meta:loader.createContext(id)}:void 0),load.e=declared.execute||function(){},[registration[0],declared.setters||[],registration[2]||[]];throw Error(errMsg(2,"Module "+id+" did not instantiate"))},function(err){throw load.e=null,load.er=err,triggerOnload(loader,load,err,!0),err})).then(function(instantiation){return Promise.all(instantiation[0].map(function(dep,i){var setter=instantiation[1][i],meta=instantiation[2][i];return Promise.resolve(loader.resolve(dep,id)).then(function(depId){var depLoad=getOrCreateLoad(loader,depId,id,meta);return Promise.resolve(depLoad.I).then(function(){return setter&&(depLoad.i.push(setter),!depLoad.h&&depLoad.I||setter(depLoad.n)),depLoad})})})).then(function(depLoads){load.d=depLoads})}),load=loader[REGISTRY][id]={id:id,i:importerSetters,n:ns,m:meta,I:instantiatePromise,L:linkPromise,h:!1,d:void 0,e:void 0,er:void 0,E:void 0,C:void 0,p:void 0})}systemJSPrototype.import=function(id,parentUrl,meta){var loader=this;return parentUrl&&"object"==typeof parentUrl&&(meta=parentUrl,parentUrl=void 0),Promise.resolve(loader.prepareImport()).then(function(){return loader.resolve(id,parentUrl,meta)}).then(function(id){id=getOrCreateLoad(loader,id,void 0,meta);return id.C||function topLevelLoad(loader,load){return load.C=function instantiateAll(loader,load,parent,loaded){if(!loaded[load.id])return loaded[load.id]=!0,Promise.resolve(load.L).then(function(){return load.p&&null!==load.p.e||(load.p=parent),Promise.all(load.d.map(function(dep){return instantiateAll(loader,dep,parent,loaded)}))}).catch(function(err){throw load.er||(load.e=null,triggerOnload(loader,load,err,!1)),err})}(loader,load,load,{}).then(function(){return function postOrderExec(loader,load,seen){if(seen[load.id])return;seen[load.id]=!0;if(!load.e){if(load.er)throw load.er;return load.E?load.E:void 0}var exec=load.e;load.e=null;var depLoadPromises;load.d.forEach(function(depLoad){try{var depLoadPromise=postOrderExec(loader,depLoad,seen);depLoadPromise&&(depLoadPromises=depLoadPromises||[]).push(depLoadPromise)}catch(err){throw load.er=err,triggerOnload(loader,load,err,!1),err}});if(depLoadPromises)return Promise.all(depLoadPromises).then(doExec);return doExec();function doExec(){try{var execPromise=exec.call(nullContext);if(execPromise)return execPromise=execPromise.then(function(){load.C=load.n,load.E=null,triggerOnload(loader,load,null,!0)},function(err){throw load.er=err,load.E=null,triggerOnload(loader,load,err,!0),err}),load.E=execPromise;load.C=load.n,load.L=load.I=void 0}catch(err){throw load.er=err}finally{triggerOnload(loader,load,load.er,!0)}}}(loader,load,{})}).then(function(){return load.n})}(loader,id)})},systemJSPrototype.createContext=function(parentId){var loader=this;return{url:parentId,resolve:function(id,parentUrl){return Promise.resolve(loader.resolve(id,parentUrl||parentId))}}},systemJSPrototype.onload=function(){},systemJSPrototype.register=function(deps,declare,metas){lastRegister=[deps,declare,metas]},systemJSPrototype.getRegister=function(){var _lastRegister=lastRegister;return lastRegister=void 0,_lastRegister};var nullContext=Object.freeze(Object.create(null));envGlobal.System=new SystemJS;var baseOrigin,lastAutoImportDeps,lastAutoImportTimeout,importMapPromise=Promise.resolve(),importMap={imports:{},scopes:{},depcache:{},integrity:{}},processFirst=hasDocument;function processScripts(){[].forEach.call(document.querySelectorAll("script"),function(script){var fetchPromise;script.sp||("systemjs-module"===script.type?(script.sp=!0,script.src&&System.import("import:"===script.src.slice(0,7)?script.src.slice(7):resolveUrl(script.src,baseUrl)).catch(function(e){var event;return-1<e.message.indexOf("https://github.com/systemjs/systemjs/blob/main/docs/errors.md#3")&&((event=document.createEvent("Event")).initEvent("error",!1,!1),script.dispatchEvent(event)),Promise.reject(e)})):"systemjs-importmap"===script.type&&(script.sp=!0,fetchPromise=script.src?(System.fetch||fetch)(script.src,{integrity:script.integrity,passThrough:!0}).then(function(res){if(res.ok)return res.text();throw Error("Invalid status code: "+res.status)}).catch(function(err){return err.message=errMsg("W4","Error fetching systemjs-import map "+script.src)+"
"+err.message,console.warn(err),"function"==typeof script.onerror&&script.onerror(),"{}"}):script.innerHTML,importMapPromise=importMapPromise.then(function(){return fetchPromise}).then(function(text){!function extendImportMap(importMap,newMapText,newMapUrl){var newMap={};try{newMap=JSON.parse(newMapText)}catch(err){console.warn(Error(errMsg("W5","systemjs-importmap contains invalid JSON")+"

"+newMapText+"
"))}resolveAndComposeImportMap(newMap,newMapUrl,importMap)}(importMap,text,script.src||baseUrl)})))})}systemJSPrototype.prepareImport=function(doProcessScripts){return(processFirst||doProcessScripts)&&(processScripts(),processFirst=!1),importMapPromise},hasDocument&&(processScripts(),window.addEventListener("DOMContentLoaded",processScripts)),systemJSPrototype.addImportMap=function(newMap,mapBase){resolveAndComposeImportMap(newMap,mapBase||baseUrl,importMap)},hasDocument&&(window.addEventListener("error",function(evt){lastWindowErrorUrl=evt.filename,lastWindowError=evt.error}),baseOrigin=location.origin),systemJSPrototype.createScript=function(url){var script=document.createElement("script"),integrity=(script.async=!0,url.indexOf(baseOrigin+"/")&&(script.crossOrigin="anonymous"),importMap.integrity[url]);return integrity&&(script.integrity=integrity),script.src=url,script};var lastWindowErrorUrl,lastWindowError,autoImportCandidates={},systemRegister=systemJSPrototype.register,instantiate=(systemJSPrototype.register=function(deps,declare){var scripts,lastScript,loader;return hasDocument&&"loading"===document.readyState&&"string"!=typeof deps?(scripts=document.querySelectorAll("script[src]"),(lastScript=scripts[scripts.length-1])&&(lastScript.src,lastAutoImportDeps=deps,loader=this,lastAutoImportTimeout=setTimeout(function(){autoImportCandidates[lastScript.src]=[deps,declare],loader.import(lastScript.src)}))):lastAutoImportDeps=void 0,systemRegister.call(this,deps,declare)},systemJSPrototype.instantiate=function(url,firstParentUrl){var loader,autoImportRegistration=autoImportCandidates[url];return autoImportRegistration?(delete autoImportCandidates[url],autoImportRegistration):(loader=this,Promise.resolve(systemJSPrototype.createScript(url)).then(function(script){return new Promise(function(resolve,reject){script.addEventListener("error",function(){reject(Error(errMsg(3,"Error loading "+url+(firstParentUrl?" from "+firstParentUrl:""))))}),script.addEventListener("load",function(){var register;document.head.removeChild(script),lastWindowErrorUrl===url?reject(lastWindowError):((register=loader.getRegister(url))&&register[0]===lastAutoImportDeps&&clearTimeout(lastAutoImportTimeout),resolve(register))}),document.head.appendChild(script)})}))},systemJSPrototype.shouldFetch=function(){return!1},"undefined"!=typeof fetch&&(systemJSPrototype.fetch=fetch),systemJSPrototype.instantiate),jsContentTypeRegEx=/^(text|application)/(x-)?javascript(;|$)/;systemJSPrototype.instantiate=function(url,parent,meta){var loader=this;return this.shouldFetch(url,parent,meta)?this.fetch(url,{credentials:"same-origin",integrity:importMap.integrity[url],meta:meta}).then(function(res){if(!res.ok)throw Error(errMsg(7,res.status+" "+res.statusText+", loading "+url+(parent?" from "+parent:"")));var contentType=res.headers.get("content-type");if(contentType&&jsContentTypeRegEx.test(contentType))return res.text().then(function(source){return source.indexOf("//# sourceURL=")<0&&(source+="
//# sourceURL="+url),(0,eval)(source),loader.getRegister(url)});throw Error(errMsg(4,'Unknown Content-Type "'+contentType+'", loading '+url+(parent?" from "+parent:"")))}):instantiate.apply(this,arguments)},systemJSPrototype.resolve=function(id,parentUrl){return resolveImportMap(importMap,resolveIfNotPlainOrUrl(id,parentUrl=parentUrl||baseUrl)||id,parentUrl)||function throwUnresolved(id,parentUrl){throw Error(errMsg(8,"Unable to resolve bare specifier '"+id+(parentUrl?"' from "+parentUrl:"'")))}(id,parentUrl)};var systemInstantiate=systemJSPrototype.instantiate,toStringTag=(systemJSPrototype.instantiate=function(url,firstParentUrl,meta){var preloads=importMap.depcache[url];if(preloads)for(var i=0;i<preloads.length;i++)getOrCreateLoad(this,this.resolve(preloads[i],url),url);return systemInstantiate.call(this,url,firstParentUrl,meta)},hasSelf&&"function"==typeof importScripts&&(systemJSPrototype.instantiate=function(url){var loader=this;return Promise.resolve().then(function(){return importScripts(url),loader.getRegister(url)})}),!function(global){var firstGlobalProp,secondGlobalProp,lastGlobalProp,systemJSPrototype=global.System.constructor.prototype;var impt=systemJSPrototype.import,emptyInstantiation=(systemJSPrototype.import=function(id,parentUrl,meta){return function noteGlobalProps(){for(var p in firstGlobalProp=secondGlobalProp=void 0,global)shouldSkipProperty(p)||(firstGlobalProp?secondGlobalProp=secondGlobalProp||p:firstGlobalProp=p,lastGlobalProp=p)}(),impt.call(this,id,parentUrl,meta)},[[],function(){return{}}]),getRegister=systemJSPrototype.getRegister,isIE11=(systemJSPrototype.getRegister=function(){var lastRegister=getRegister.call(this);if(lastRegister)return lastRegister;var globalExport,lastRegister=function getGlobalProp(useFirstGlobalProp){var foundLastProp,result,p,cnt=0;for(p in global)if(!shouldSkipProperty(p)){if(0===cnt&&p!==firstGlobalProp||1===cnt&&p!==secondGlobalProp)return p;foundLastProp?(lastGlobalProp=p,result=useFirstGlobalProp&&result||p):foundLastProp=p===lastGlobalProp,cnt++}return result}(this.firstGlobalProp);if(!lastRegister)return emptyInstantiation;try{globalExport=global[lastRegister]}catch(e){return emptyInstantiation}return[[],function(_export){return{execute:function(){_export(globalExport),_export({default:globalExport,__useDefault:!0})}}}]},"undefined"!=typeof navigator&&-1!==navigator.userAgent.indexOf("Trident"));function shouldSkipProperty(p){return!global.hasOwnProperty(p)||!isNaN(p)&&p<global.length||isIE11&&global[p]&&"undefined"!=typeof window&&global[p].parent===window}}("undefined"!=typeof self?self:global),!function(global){var systemJSPrototype=global.System.constructor.prototype,moduleTypesRegEx=/^[^#?]+.(css|html|json|wasm)([?#].*)?$/,_shouldFetch=systemJSPrototype.shouldFetch.bind(systemJSPrototype),jsonContentType=(systemJSPrototype.shouldFetch=function(url){return _shouldFetch(url)||moduleTypesRegEx.test(url)},/^application/json(;|$)/),cssContentType=/^text/css(;|$)/,wasmContentType=/^application/wasm(;|$)/,fetch=systemJSPrototype.fetch;systemJSPrototype.fetch=function(url,options){return fetch(url,options).then(function(res){var contentType;return!options.passThrough&&res.ok?(contentType=res.headers.get("content-type"),jsonContentType.test(contentType)?res.json().then(function(json){return new Response(new Blob(['System.register([],function(e){return{execute:function(){e("default",'+JSON.stringify(json)+")}}})"],{type:"application/javascript"}))}):cssContentType.test(contentType)?res.text().then(function(source){return source=source.replace(/url(s*(?:(["'])((?:\.|[^
\"'])+)1|((?:\.|[^s,"'()\])+))s*)/g,function(match,quotes,relUrl1,relUrl2){return"url("+quotes+resolveUrl(relUrl1||relUrl2,url)+quotes+")"}),new Response(new Blob(["System.register([],function(e){return{execute:function(){var s=new CSSStyleSheet();s.replaceSync("+JSON.stringify(source)+');e("default",s)}}})'],{type:"application/javascript"}))}):wasmContentType.test(contentType)?(WebAssembly.compileStreaming?WebAssembly.compileStreaming(res):res.arrayBuffer().then(WebAssembly.compile)).then(function(module){global.System.wasmModules||(global.System.wasmModules=Object.create(null)),global.System.wasmModules[url]=module;var deps=[],setterSources=[];return WebAssembly.Module.imports&&WebAssembly.Module.imports(module).forEach(function(impt){impt=JSON.stringify(impt.module);-1===deps.indexOf(impt)&&(deps.push(impt),setterSources.push("function(m){i["+impt+"]=m}"))}),new Response(new Blob(["System.register(["+deps.join(",")+"],function(e){var i={};return{setters:["+setterSources.join(",")+"],execute:function(){return WebAssembly.instantiate(System.wasmModules["+JSON.stringify(url)+"],i).then(function(m){e(m.exports)})}}})"],{type:"application/javascript"}))}):res):res})}}("undefined"!=typeof self?self:global),"undefined"!=typeof Symbol&&Symbol.toStringTag),iterator=(systemJSPrototype.get=function(id){id=this[REGISTRY][id];if(id&&null===id.e&&!id.E)return id.er?null:id.n},systemJSPrototype.set=function(id,module){try{new URL(id)}catch(err){console.warn(Error(errMsg("W3",'"'+id+'" is not a valid URL to set in the module registry')))}toStringTag&&"Module"===module[toStringTag]?ns=module:(ns=Object.assign(Object.create(null),module),toStringTag&&Object.defineProperty(ns,toStringTag,{value:"Module"}));var ns,module=Promise.resolve(ns),id=this[REGISTRY][id]||(this[REGISTRY][id]={id:id,i:[],h:!1,d:[],e:null,er:void 0,E:void 0});return!id.e&&!id.E&&(Object.assign(id,{n:ns,I:void 0,L:void 0,C:module}),ns)},systemJSPrototype.has=function(id){return!!this[REGISTRY][id]},systemJSPrototype.delete=function(id){var importerSetters,registry=this[REGISTRY],load=registry[id];return!(!load||load.p&&null!==load.p.e||load.E)&&(importerSetters=load.i,load.d&&load.d.forEach(function(depLoad){var importerIndex=depLoad.i.indexOf(load);-1!==importerIndex&&depLoad.i.splice(importerIndex,1)}),delete registry[id],function(){var load=registry[id];if(!load||!importerSetters||null!==load.e||load.E)return!1;importerSetters.forEach(function(setter){load.i.push(setter),setter(load.n)}),importerSetters=null})},"undefined"!=typeof Symbol&&Symbol.iterator);systemJSPrototype.entries=function(){var ns,key,loader=this,keys=Object.keys(loader[REGISTRY]),index=0,result={next:function(){for(;void 0!==(key=keys[index++])&&void 0===(ns=loader.get(key)););return{done:void 0===key,value:void 0!==key&&[key,ns]}}};return result[iterator]=function(){return this},result}}(),!function(global){function SystemJS(){constructor.call(this),setRegisterRegistry(this)}var firstNamedDefine,firstName,global=global.System,systemJSPrototype=(setRegisterRegistry(global),global.constructor.prototype),constructor=global.constructor;function setRegisterRegistry(systemInstance){systemInstance.registerRegistry=Object.create(null),systemInstance.namedRegisterAliases=Object.create(null)}SystemJS.prototype=systemJSPrototype,global.constructor=SystemJS;var register=systemJSPrototype.register,resolve=(systemJSPrototype.register=function(name,deps,declare,metas){var define;return"string"!=typeof name?register.apply(this,arguments):(this.registerRegistry[name]=define=[deps,declare,metas],firstNamedDefine||(firstNamedDefine=define,firstName=name),Promise.resolve().then(function(){firstName=firstNamedDefine=null}),register.apply(this,[deps,declare,metas]))},systemJSPrototype.resolve),instantiate=(systemJSPrototype.resolve=function(id,parentURL){try{return resolve.call(this,id,parentURL)}catch(err){if(id in this.registerRegistry)return this.namedRegisterAliases[id]||id;throw err}},systemJSPrototype.instantiate),getRegister=(systemJSPrototype.instantiate=function(url,firstParentUrl,meta){var result=this.registerRegistry[url];return result?(this.registerRegistry[url]=null,result):instantiate.call(this,url,firstParentUrl,meta)},systemJSPrototype.getRegister);systemJSPrototype.getRegister=function(url){var register=getRegister.call(this,url),url=(firstName&&url&&(this.namedRegisterAliases[firstName]=url),firstNamedDefine||register);return firstName=firstNamedDefine=null,url}}("undefined"!=typeof self?self:global),!function(exports){"use strict";var FrameLoadingStyle,FetchMethod,FormSubmissionState,FormEnctype,TimingMetric,VisitState,SystemStatusCode,PageStage,__async$3=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});if(void 0!==window.Reflect&&void 0!==window.customElements&&!window.customElements.polyfillWrapFlushCallback){const BuiltInHTMLElement=HTMLElement,wrapperForTheName_HTMLElement=function HTMLElement2(){return Reflect.construct(BuiltInHTMLElement,[],this.constructor)};window.HTMLElement=wrapperForTheName_HTMLElement,HTMLElement.prototype=BuiltInHTMLElement.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,BuiltInHTMLElement)}function raise(errorConstructor,message,name){throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': "+message+".",name)}"function"!=typeof(prototype=HTMLFormElement.prototype).requestSubmit&&(prototype.requestSubmit=function(submitter){submitter?(function validateSubmitter(submitter,form){submitter instanceof HTMLElement||raise(TypeError,"parameter 1 is not of type 'HTMLElement'"),"submit"!=submitter.type&&raise(TypeError,"The specified element is not a submit button"),submitter.form!=form&&raise(DOMException,"The specified element is not owned by this form element","NotFoundError")}(submitter,this),submitter.click()):((submitter=document.createElement("input")).type="submit",submitter.hidden=!0,this.appendChild(submitter),submitter.click(),this.removeChild(submitter))});const submittersByForm=new WeakMap;function clickCaptured(event){event=function findSubmitterFromClickTarget(target){return"submit"==(null==(target=(target=target instanceof Element?target:target instanceof Node?target.parentElement:null)?target.closest("input, button"):null)?void 0:target.type)?target:null}(event.target);event&&event.form&&submittersByForm.set(event.form,event)}!function(){if(!("submitter"in Event.prototype)){let prototype=window.Event.prototype;if("SubmitEvent"in window&&/Apple Computer/.test(navigator.vendor))prototype=window.SubmitEvent.prototype;else if("SubmitEvent"in window)return;addEventListener("click",clickCaptured,!0),Object.defineProperty(prototype,"submitter",{get(){if("submit"==this.type&&this.target instanceof HTMLFormElement)return submittersByForm.get(this.target)}})}}(),(prototype=FrameLoadingStyle=FrameLoadingStyle||{}).eager="eager",prototype.lazy="lazy";class FrameElement extends HTMLElement{static get observedAttributes(){return["disabled","complete","loading","src"]}constructor(){super(),this.loaded=Promise.resolve(),this.delegate=new FrameElement.delegateConstructor(this)}connectedCallback(){this.delegate.connect()}disconnectedCallback(){this.delegate.disconnect()}reload(){return this.delegate.sourceURLReloaded()}attributeChangedCallback(name){"loading"==name?this.delegate.loadingStyleChanged():"complete"==name?this.delegate.completeChanged():"src"==name?this.delegate.sourceURLChanged():this.delegate.disabledChanged()}get src(){return this.getAttribute("src")}set src(value){value?this.setAttribute("src",value):this.removeAttribute("src")}get loading(){return function frameLoadingStyleFromString(style){{if("lazy"!==style.toLowerCase())return FrameLoadingStyle.eager;return FrameLoadingStyle.lazy}}(this.getAttribute("loading")||"")}set loading(value){value?this.setAttribute("loading",value):this.removeAttribute("loading")}get disabled(){return this.hasAttribute("disabled")}set disabled(value){value?this.setAttribute("disabled",""):this.removeAttribute("disabled")}get autoscroll(){return this.hasAttribute("autoscroll")}set autoscroll(value){value?this.setAttribute("autoscroll",""):this.removeAttribute("autoscroll")}get complete(){return!this.delegate.isLoading}get isActive(){return this.ownerDocument===document&&!this.isPreview}get isPreview(){var _a;return null==(_a=null==(_a=this.ownerDocument)?void 0:_a.documentElement)?void 0:_a.hasAttribute("data-turbo-preview")}}function expandURL(locatable){return new URL(locatable.toString(),document.baseURI)}function getAnchor(url){return url.hash?url.hash.slice(1):(url=url.href.match(/#(.*)$/))?url[1]:void 0}function getAction(form,submitter){return expandURL((null==submitter?void 0:submitter.getAttribute("formaction"))||form.getAttribute("action")||form.action)}function getExtension(url){return(function getLastPathComponent(url){return function getPathComponents(url){return url.pathname.split("/").slice(1)}(url).slice(-1)[0]}(url).match(/.[^.]*$/)||[])[0]||""}function isPrefixedBy(baseURL,url){url=function getPrefix(url){return function addTrailingSlash(value){return value.endsWith("/")?value:value+"/"}(url.origin+url.pathname)}(url);return baseURL.href===expandURL(url).href||baseURL.href.startsWith(url)}function locationIsVisitable(location2,rootLocation){return isPrefixedBy(location2,rootLocation)&&function isHTML(url){return!!getExtension(url).match(/^(?:|.(?:htm|html|xhtml|php))$/)}(location2)}function getRequestURL(url){var anchor=getAnchor(url);return null!=anchor?url.href.slice(0,-(anchor.length+1)):url.href}function toCacheKey(url){return getRequestURL(url)}class FetchResponse{constructor(response){this.response=response}get succeeded(){return this.response.ok}get failed(){return!this.succeeded}get clientError(){return 400<=this.statusCode&&this.statusCode<=499}get serverError(){return 500<=this.statusCode&&this.statusCode<=599}get redirected(){return this.response.redirected}get location(){return expandURL(this.response.url)}get isHTML(){return this.contentType&&this.contentType.match(/^(?:text/([^s;,]+)?html|application/xhtml+xml)/)}get statusCode(){return this.response.status}get contentType(){return this.header("Content-Type")}get responseText(){return this.response.clone().text()}get responseHTML(){return this.isHTML?this.response.clone().text():Promise.resolve(void 0)}header(name){return this.response.headers.get(name)}}function activateScriptElement(element){var createdScriptElement,cspNonce;return"false"==element.getAttribute("data-turbo-eval")?element:(createdScriptElement=document.createElement("script"),(cspNonce=getMetaContent("csp-nonce"))&&(createdScriptElement.nonce=cspNonce),createdScriptElement.textContent=element.textContent,createdScriptElement.async=!1,function copyElementAttributes(destinationElement,sourceElement){for(var{name,value}of sourceElement.attributes)destinationElement.setAttribute(name,value)}(createdScriptElement,element),createdScriptElement)}function dispatch(eventName,{target,cancelable,detail}={}){eventName=new CustomEvent(eventName,{cancelable:cancelable,bubbles:!0,composed:!0,detail:detail});return(target&&target.isConnected?target:document.documentElement).dispatchEvent(eventName),eventName}function nextAnimationFrame(){return new Promise(resolve=>requestAnimationFrame(()=>resolve()))}function parseHTMLDocument(html=""){return(new DOMParser).parseFromString(html,"text/html")}function unindent(strings,…values){strings=function interpolate(strings,values){return strings.reduce((result,string,i)=>{return result+string+(null==values[i]?"":values[i])},"")}(strings,values).replace(/^
/,"").split("
"),values=strings[0].match(/^s+/);const indent=values?values[0].length:0;return strings.map(line=>line.slice(indent)).join("
")}function uuid(){return Array.from({length:36}).map((_,i)=>8==i||13==i||18==i||23==i?"-":14==i?"4":(19==i?Math.floor(4*Math.random())+8:Math.floor(15*Math.random())).toString(16)).join("")}function getAttribute(attributeName,…elements){for(const value of elements.map(element=>null==element?void 0:element.getAttribute(attributeName)))if("string"==typeof value)return value;return null}function markAsBusy(…elements){for(const element of elements)"turbo-frame"==element.localName&&element.setAttribute("busy",""),element.setAttribute("aria-busy","true")}function clearBusyState(…elements){for(const element of elements)"turbo-frame"==element.localName&&element.removeAttribute("busy"),element.removeAttribute("aria-busy")}function getHistoryMethodForAction(action){switch(action){case"replace":return history.replaceState;case"advance":case"restore":return history.pushState}}function getVisitAction(…elements){elements=getAttribute("data-turbo-action",…elements);return function isAction(action){return"advance"==action||"replace"==action||"restore"==action}(elements)?elements:null}function getMetaElement(name){return document.querySelector(`meta[name="${name}"]`)}function getMetaContent(name){name=getMetaElement(name);return name&&name.content}function findClosestRecursively(element,selector){if(element instanceof Element)return element.closest(selector)||findClosestRecursively(element.assignedSlot||(null==(element=element.getRootNode())?void 0:element.host),selector)}(prototype=FetchMethod=FetchMethod||{})[prototype.get=0]="get",prototype[prototype.post=1]="post",prototype[prototype.put=2]="put",prototype[prototype.patch=3]="patch",prototype[prototype.delete=4]="delete";class FetchRequest{constructor(delegate,method,location2,body=new URLSearchParams,target=null){this.abortController=new AbortController,this.resolveRequestPromise=_value=>{},this.delegate=delegate,this.method=method,this.headers=this.defaultHeaders,this.body=body,this.url=location2,this.target=target}get location(){return this.url}get params(){return this.url.searchParams}get entries(){return this.body?Array.from(this.body.entries()):[]}cancel(){this.abortController.abort()}perform(){return __async$3(this,null,function*(){var fetchOptions=this["fetchOptions"];this.delegate.prepareRequest(this),yield this.allowRequestToBeIntercepted(fetchOptions);try{this.delegate.requestStarted(this);var response=yield fetch(this.url.href,fetchOptions);return yield this.receive(response)}catch(error){if("AbortError"!==error.name)throw this.willDelegateErrorHandling(error)&&this.delegate.requestErrored(this,error),error}finally{this.delegate.requestFinished(this)}})}receive(response){return __async$3(this,null,function*(){var fetchResponse=new FetchResponse(response);return dispatch("turbo:before-fetch-response",{cancelable:!0,detail:{fetchResponse:fetchResponse},target:this.target}).defaultPrevented?this.delegate.requestPreventedHandlingResponse(this,fetchResponse):fetchResponse.succeeded?this.delegate.requestSucceededWithResponse(this,fetchResponse):this.delegate.requestFailedWithResponse(this,fetchResponse),fetchResponse})}get fetchOptions(){var _a;return{method:FetchMethod[this.method].toUpperCase(),credentials:"same-origin",headers:this.headers,redirect:"follow",body:this.isSafe?null:this.body,signal:this.abortSignal,referrer:null==(_a=this.delegate.referrer)?void 0:_a.href}}get defaultHeaders(){return{Accept:"text/html, application/xhtml+xml"}}get isSafe(){return this.method===FetchMethod.get}get abortSignal(){return this.abortController.signal}acceptResponseType(mimeType){this.headers.Accept=[mimeType,this.headers.Accept].join(", ")}allowRequestToBeIntercepted(fetchOptions){return __async$3(this,null,function*(){var requestInterception=new Promise(resolve=>this.resolveRequestPromise=resolve);dispatch("turbo:before-fetch-request",{cancelable:!0,detail:{fetchOptions:fetchOptions,url:this.url,resume:this.resolveRequestPromise},target:this.target}).defaultPrevented&&(yield requestInterception)})}willDelegateErrorHandling(error){return!dispatch("turbo:fetch-request-error",{target:this.target,cancelable:!0,detail:{request:this,error:error}}).defaultPrevented}}class AppearanceObserver{constructor(delegate,element){this.started=!1,this.intersect=entries=>{entries=entries.slice(-1)[0];null!=entries&&entries.isIntersecting&&this.delegate.elementAppearedInViewport(this.element)},this.delegate=delegate,this.element=element,this.intersectionObserver=new IntersectionObserver(this.intersect)}start(){this.started||(this.started=!0,this.intersectionObserver.observe(this.element))}stop(){this.started&&(this.started=!1,this.intersectionObserver.unobserve(this.element))}}class StreamMessage{static wrap(message){return"string"==typeof message?new this(function createDocumentFragment(html){var template=document.createElement("template");return template.innerHTML=html,template.content}(message)):message}constructor(fragment){this.fragment=function importStreamElements(fragment){for(const element of fragment.querySelectorAll("turbo-stream")){var streamElement=document.importNode(element,!0);for(const inertScriptElement of streamElement.templateElement.content.querySelectorAll("script"))inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));element.replaceWith(streamElement)}return fragment}(fragment)}}StreamMessage.contentType="text/vnd.turbo-stream.html",(prototype=FormSubmissionState=FormSubmissionState||{})[prototype.initialized=0]="initialized",prototype[prototype.requesting=1]="requesting",prototype[prototype.waiting=2]="waiting",prototype[prototype.receiving=3]="receiving",prototype[prototype.stopping=4]="stopping",prototype[prototype.stopped=5]="stopped",(prototype=FormEnctype=FormEnctype||{}).urlEncoded="application/x-www-form-urlencoded",prototype.multipart="multipart/form-data",prototype.plain="text/plain";class FormSubmission{static confirmMethod(message,_element,_submitter){return Promise.resolve(confirm(message))}constructor(delegate,formElement,submitter,mustRedirect=!1){this.state=FormSubmissionState.initialized,this.delegate=delegate,this.formElement=formElement,this.submitter=submitter,this.formData=function buildFormData(formElement,submitter){var formElement=new FormData(formElement),name=null==submitter?void 0:submitter.getAttribute("name"),submitter=null==submitter?void 0:submitter.getAttribute("value");name&&formElement.append(name,submitter||"");return formElement}(formElement,submitter),this.location=expandURL(this.action),this.method==FetchMethod.get&&function mergeFormDataEntries(url,entries){var searchParams=new URLSearchParams;for(var[name,value]of entries)value instanceof File||searchParams.append(name,value);url.search=searchParams.toString()}(this.location,[…this.body.entries()]),this.fetchRequest=new FetchRequest(this,this.method,this.location,this.body,this.formElement),this.mustRedirect=mustRedirect}get method(){var _a;return function fetchMethodFromString(method){switch(method.toLowerCase()){case"get":return FetchMethod.get;case"post":return FetchMethod.post;case"put":return FetchMethod.put;case"patch":return FetchMethod.patch;case"delete":return FetchMethod.delete}}(((null==(_a=this.submitter)?void 0:_a.getAttribute("formmethod"))||this.formElement.getAttribute("method")||"").toLowerCase())||FetchMethod.get}get action(){var _a,formElementAction="string"==typeof this.formElement.action?this.formElement.action:null;return null!=(_a=this.submitter)&&_a.hasAttribute("formaction")?this.submitter.getAttribute("formaction")||"":this.formElement.getAttribute("action")||formElementAction||""}get body(){return this.enctype==FormEnctype.urlEncoded||this.method==FetchMethod.get?new URLSearchParams(this.stringFormData):this.formData}get enctype(){var _a;return function formEnctypeFromString(encoding){switch(encoding.toLowerCase()){case FormEnctype.multipart:return FormEnctype.multipart;case FormEnctype.plain:return FormEnctype.plain;default:return FormEnctype.urlEncoded}}((null==(_a=this.submitter)?void 0:_a.getAttribute("formenctype"))||this.formElement.enctype)}get isSafe(){return this.fetchRequest.isSafe}get stringFormData(){return[…this.formData].reduce((entries,[name,value])=>entries.concat("string"==typeof value?[[name,value]]:[]),[])}start(){return __async$3(this,null,function*(){var{initialized,requesting}=FormSubmissionState,confirmationMessage=getAttribute("data-turbo-confirm",this.submitter,this.formElement);if("string"==typeof confirmationMessage&&!(yield FormSubmission.confirmMethod(confirmationMessage,this.formElement,this.submitter)))return;if(this.state==initialized)return this.state=requesting,this.fetchRequest.perform()})}stop(){var{stopping,stopped}=FormSubmissionState;if(this.state!=stopping&&this.state!=stopped)return this.state=stopping,this.fetchRequest.cancel(),!0}prepareRequest(request){var token;request.isSafe||(token=function getCookieValue(cookieName){{var cookie;return null!=cookieName&&(cookie=(document.cookie?document.cookie.split("; "):[]).find(cookie2=>cookie2.startsWith(cookieName)))&&(cookie=cookie.split("=").slice(1).join("="))?decodeURIComponent(cookie):void 0}}(getMetaContent("csrf-param"))||getMetaContent("csrf-token"))&&(request.headers["X-CSRF-Token"]=token),this.requestAcceptsTurboStreamResponse(request)&&request.acceptResponseType(StreamMessage.contentType)}requestStarted(_request){var _a;this.state=FormSubmissionState.waiting,null!=(_a=this.submitter)&&_a.setAttribute("disabled",""),this.setSubmitsWith(),dispatch("turbo:submit-start",{target:this.formElement,detail:{formSubmission:this}}),this.delegate.formSubmissionStarted(this)}requestPreventedHandlingResponse(request,response){this.result={success:response.succeeded,fetchResponse:response}}requestSucceededWithResponse(request,response){response.clientError||response.serverError?this.delegate.formSubmissionFailedWithResponse(this,response):this.requestMustRedirect(request)&&function responseSucceededWithoutRedirect(response){return 200==response.statusCode&&!response.redirected}(response)?(request=new Error("Form responses must redirect to another location"),this.delegate.formSubmissionErrored(this,request)):(this.state=FormSubmissionState.receiving,this.result={success:!0,fetchResponse:response},this.delegate.formSubmissionSucceededWithResponse(this,response))}requestFailedWithResponse(request,response){this.result={success:!1,fetchResponse:response},this.delegate.formSubmissionFailedWithResponse(this,response)}requestErrored(request,error){this.result={success:!1,error:error},this.delegate.formSubmissionErrored(this,error)}requestFinished(_request){var _a;this.state=FormSubmissionState.stopped,null!=(_a=this.submitter)&&_a.removeAttribute("disabled"),this.resetSubmitterText(),dispatch("turbo:submit-end",{target:this.formElement,detail:Object.assign({formSubmission:this},this.result)}),this.delegate.formSubmissionFinished(this)}setSubmitsWith(){var input;this.submitter&&this.submitsWith&&(this.submitter.matches("button")?(this.originalSubmitText=this.submitter.innerHTML,this.submitter.innerHTML=this.submitsWith):this.submitter.matches("input")&&(input=this.submitter,this.originalSubmitText=input.value,input.value=this.submitsWith))}resetSubmitterText(){this.submitter&&this.originalSubmitText&&(this.submitter.matches("button")?this.submitter.innerHTML=this.originalSubmitText:this.submitter.matches("input")&&(this.submitter.value=this.originalSubmitText))}requestMustRedirect(request){return!request.isSafe&&this.mustRedirect}requestAcceptsTurboStreamResponse(request){return!request.isSafe||function hasAttribute(attributeName,…elements){return elements.some(element=>element&&element.hasAttribute(attributeName))}("data-turbo-stream",this.submitter,this.formElement)}get submitsWith(){var _a;return null==(_a=this.submitter)?void 0:_a.getAttribute("data-turbo-submits-with")}}class Snapshot{constructor(element){this.element=element}get activeElement(){return this.element.ownerDocument.activeElement}get children(){return[…this.element.children]}hasAnchor(anchor){return null!=this.getElementForAnchor(anchor)}getElementForAnchor(anchor){return anchor?this.element.querySelector(`[id='${anchor}'], a[name="${anchor}"]`):null}get isConnected(){return this.element.isConnected}get firstAutofocusableElement(){for(const element of this.element.querySelectorAll("[autofocus]"))if(null==element.closest("[inert], :disabled, [hidden], details:not([open]), dialog:not([open])"))return element;return null}get permanentElements(){return queryPermanentElementsAll(this.element)}getPermanentElementById(id){return getPermanentElementById(this.element,id)}getPermanentElementMapForSnapshot(snapshot){var permanentElementMap={};for(const currentPermanentElement of this.permanentElements){var id=currentPermanentElement["id"],newPermanentElement=snapshot.getPermanentElementById(id);newPermanentElement&&(permanentElementMap[id]=[currentPermanentElement,newPermanentElement])}return permanentElementMap}}function getPermanentElementById(node,id){return node.querySelector(`#${id}[data-turbo-permanent]`)}function queryPermanentElementsAll(node){return node.querySelectorAll("[id][data-turbo-permanent]")}class FormSubmitObserver{constructor(delegate,eventTarget){this.started=!1,this.submitCaptured=()=>{this.eventTarget.removeEventListener("submit",this.submitBubbled,!1),this.eventTarget.addEventListener("submit",this.submitBubbled,!1)},this.submitBubbled=event=>{var form,submitter;event.defaultPrevented||(form=event.target instanceof HTMLFormElement?event.target:void 0,submitter=event.submitter||void 0,form&&function submissionDoesNotDismissDialog(form,submitter){submitter=(null==submitter?void 0:submitter.getAttribute("formmethod"))||form.getAttribute("method");return"dialog"!=submitter}(form,submitter)&&function submissionDoesNotTargetIFrame(form,submitter){{if(null!=submitter&&submitter.hasAttribute("formtarget")||form.hasAttribute("target")){submitter=(null==submitter?void 0:submitter.getAttribute("formtarget"))||form.target;for(const element of document.getElementsByName(submitter))if(element instanceof HTMLIFrameElement)return}return 1}}(form,submitter)&&this.delegate.willSubmitForm(form,submitter)&&(event.preventDefault(),event.stopImmediatePropagation(),this.delegate.formSubmitted(form,submitter)))},this.delegate=delegate,this.eventTarget=eventTarget}start(){this.started||(this.eventTarget.addEventListener("submit",this.submitCaptured,!0),this.started=!0)}stop(){this.started&&(this.eventTarget.removeEventListener("submit",this.submitCaptured,!0),this.started=!1)}}class View{constructor(delegate,element){this.resolveRenderPromise=_value=>{},this.resolveInterceptionPromise=_value=>{},this.delegate=delegate,this.element=element}scrollToAnchor(anchor){anchor=this.snapshot.getElementForAnchor(anchor);anchor?(this.scrollToElement(anchor),this.focusElement(anchor)):this.scrollToPosition({x:0,y:0})}scrollToAnchorFromLocation(location2){this.scrollToAnchor(getAnchor(location2))}scrollToElement(element){element.scrollIntoView()}focusElement(element){element instanceof HTMLElement&&(element.hasAttribute("tabindex")?element.focus():(element.setAttribute("tabindex","-1"),element.focus(),element.removeAttribute("tabindex")))}scrollToPosition({x,y}){this.scrollRoot.scrollTo(x,y)}scrollToTop(){this.scrollToPosition({x:0,y:0})}get scrollRoot(){return window}render(renderer){return __async$3(this,null,function*(){var{isPreview,shouldRender,newSnapshot:snapshot}=renderer;if(shouldRender)try{this.renderPromise=new Promise(resolve=>this.resolveRenderPromise=resolve),this.renderer=renderer,yield this.prepareToRenderSnapshot(renderer);var renderInterception=new Promise(resolve=>this.resolveInterceptionPromise=resolve),options={resume:this.resolveInterceptionPromise,render:this.renderer.renderElement};this.delegate.allowsImmediateRender(snapshot,options)||(yield renderInterception),yield this.renderSnapshot(renderer),this.delegate.viewRenderedSnapshot(snapshot,isPreview),this.delegate.preloadOnLoadLinksForView(this.element),this.finishRenderingSnapshot(renderer)}finally{delete this.renderer,this.resolveRenderPromise(void 0),delete this.renderPromise}else this.invalidate(renderer.reloadReason)})}invalidate(reason){this.delegate.viewInvalidated(reason)}prepareToRenderSnapshot(renderer){return __async$3(this,null,function*(){this.markAsPreview(renderer.isPreview),yield renderer.prepareToRender()})}markAsPreview(isPreview){isPreview?this.element.setAttribute("data-turbo-preview",""):this.element.removeAttribute("data-turbo-preview")}renderSnapshot(renderer){return __async$3(this,null,function*(){yield renderer.render()})}finishRenderingSnapshot(renderer){renderer.finishRendering()}}class FrameView extends View{missing(){this.element.innerHTML='<strong>Content missing</strong>'}get snapshot(){return new Snapshot(this.element)}}class LinkInterceptor{constructor(delegate,element){this.clickBubbled=event=>{this.respondsToEventTarget(event.target)?this.clickEvent=event:delete this.clickEvent},this.linkClicked=event=>{this.clickEvent&&this.respondsToEventTarget(event.target)&&event.target instanceof Element&&this.delegate.shouldInterceptLinkClick(event.target,event.detail.url,event.detail.originalEvent)&&(this.clickEvent.preventDefault(),event.preventDefault(),this.delegate.linkClickIntercepted(event.target,event.detail.url,event.detail.originalEvent)),delete this.clickEvent},this.willVisit=_event=>{delete this.clickEvent},this.delegate=delegate,this.element=element}start(){this.element.addEventListener("click",this.clickBubbled),document.addEventListener("turbo:click",this.linkClicked),document.addEventListener("turbo:before-visit",this.willVisit)}stop(){this.element.removeEventListener("click",this.clickBubbled),document.removeEventListener("turbo:click",this.linkClicked),document.removeEventListener("turbo:before-visit",this.willVisit)}respondsToEventTarget(target){target=target instanceof Element?target:target instanceof Node?target.parentElement:null;return target&&target.closest("turbo-frame, html")==this.element}}class LinkClickObserver{constructor(delegate,eventTarget){this.started=!1,this.clickCaptured=()=>{this.ev

Leave a Comment

Leave a Reply

Your email address will not be published. Required fields are marked *