@elliemae/pui-app-bridge 2.16.6 → 2.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="mobile-web-app-capable" content="yes"/><link rel="icon" href="/favicon.ico"/><title>Application</title><script nonce="__CSP_NONCE__">!function(e,t,n,a,c,o,s){e.GoogleAnalyticsObject=c,e[c]=e[c]||function(){(e[c].q=e[c].q||[]).push(arguments)},e[c].l=1*new Date,o=t.createElement(n),s=t.getElementsByTagName(n)[0],o.async=1,o.src="https://www.google-analytics.com/analytics.js",s.parentNode.insertBefore(o,s)}(window,document,"script",0,"ga")</script><style nonce="__CSP_NONCE__">.full-width{width:100%}.full-height{height:100%}</style><script defer="defer" src="js/emuiAppBridge.40c8880c94dbc97b49fd.js"></script></head><body class="full-width full-height"><noscript>If you're seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><div id="pui-app-container-" class="full-width full-height"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="mobile-web-app-capable" content="yes"/><link rel="icon" href="/favicon.ico"/><title>Application</title><script nonce="__CSP_NONCE__">!function(e,t,n,a,c,o,s){e.GoogleAnalyticsObject=c,e[c]=e[c]||function(){(e[c].q=e[c].q||[]).push(arguments)},e[c].l=1*new Date,o=t.createElement(n),s=t.getElementsByTagName(n)[0],o.async=1,o.src="https://www.google-analytics.com/analytics.js",s.parentNode.insertBefore(o,s)}(window,document,"script",0,"ga")</script><style nonce="__CSP_NONCE__">.full-width{width:100%}.full-height{height:100%}</style><script defer="defer" src="js/emuiAppBridge.2993b666256d6dd7148d.js"></script></head><body class="full-width full-height"><noscript>If you're seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><div id="pui-app-container-" class="full-width full-height"></div></body></html>
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Host</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://cdn.qa1.ice.com/pui-diagnostics@3"></script><script defer="defer" src="js/emuiAppBridge.40c8880c94dbc97b49fd.js"></script></head><body><header class="bg-indigo-300 h-10 flex place-items-center"><div class="px-2">ICE Mortgage Product</div></header><main class="mx-auto max-w-7xl px-2 sm:px-6 lg:px-8"><div class="min-w-0 flex-1 mt-4"><h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">Loan Application</h1></div><div id="successFeedback" class="hidden rounded-md bg-green-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"/></svg></div><div class="ml-3"><p class="text-sm font-medium text-green-800">Loan Saved Successfully</p></div></div></div><div id="errorFeedback" class="hidden rounded-md bg-red-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd"/></svg></div><div class="ml-3"><h3 class="text-sm font-medium text-red-800">Credit Score is not meeting the requirement</h3></div></div></div><div class="mt-2 sm:grid sm:grid-cols-2 sm:gap-2"><form class="px-2 py-2 space-y-8 divide-y divide-gray-200 bg-gray-50"><div class="space-y-8 divide-y divide-gray-200 sm:space-y-5"><div class="space-y-6 sm:space-y-5"><div><h3 class="text-lg font-medium leading-6 text-gray-900">Personal Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="firstName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">First name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="firstName" id="firstName" autocomplete="given-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="John" placeholder="John"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="lastName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Last name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="lastName" id="lastName" autocomplete="family-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="Doe" placeholder="Doe"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="ssn" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">SSN</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="ssn" id="ssn" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="123456789" placeholder="123456789"/></div></div></div><div><h3 class="text-lg font-medium leading-6 text-gray-900">Loan Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="amount" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Amount</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="amount" id="amount" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="500000" placeholder="500000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="Term" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Term (years)</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="term" id="term" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="30" placeholder="30"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="downPayment" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Down Payment</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="downPayment" id="downPayment" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="50000" placeholder="50000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="creditScore" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Credit Score</label><div class="mt-1 sm:mt-0"><output id="creditScore" class="block w-full max-w-lg pl-2 pt-2 sm:max-w-xs sm:text-sm">NA</output></div><div class="mt-1 sm:mt-0"><button id="getCreditScore" type="button" class="inline-flex items-center rounded-full border border-transparent bg-indigo-600 p-1 text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/></svg></button></div></div></div></div></div><button id="saveLoan" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Save</button></form><div id="aside-container" class="flex flex-col gap-4 items-start mt-4 border-2 p-2 rounded-lg border-dashed border-cyan-300 sm:mt-0"></div></div><div id="bottom-container" class="flex flex-col gap-4 items-start mt-4 p-2 sm:mt-0"></div></main><script src="./init.js" type="module"></script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Host</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://cdn.qa1.ice.com/pui-diagnostics@3"></script><script defer="defer" src="js/emuiAppBridge.2993b666256d6dd7148d.js"></script></head><body><header class="bg-indigo-300 h-10 flex place-items-center"><div class="px-2">ICE Mortgage Product</div></header><main class="mx-auto max-w-7xl px-2 sm:px-6 lg:px-8"><div class="min-w-0 flex-1 mt-4"><h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">Loan Application</h1></div><div id="successFeedback" class="hidden rounded-md bg-green-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"/></svg></div><div class="ml-3"><p class="text-sm font-medium text-green-800">Loan Saved Successfully</p></div></div></div><div id="errorFeedback" class="hidden rounded-md bg-red-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd"/></svg></div><div class="ml-3"><h3 class="text-sm font-medium text-red-800">Credit Score is not meeting the requirement</h3></div></div></div><div class="mt-2 sm:grid sm:grid-cols-2 sm:gap-2"><form class="px-2 py-2 space-y-8 divide-y divide-gray-200 bg-gray-50"><div class="space-y-8 divide-y divide-gray-200 sm:space-y-5"><div class="space-y-6 sm:space-y-5"><div><h3 class="text-lg font-medium leading-6 text-gray-900">Personal Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="firstName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">First name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="firstName" id="firstName" autocomplete="given-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="John" placeholder="John"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="lastName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Last name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="lastName" id="lastName" autocomplete="family-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="Doe" placeholder="Doe"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="ssn" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">SSN</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="ssn" id="ssn" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="123456789" placeholder="123456789"/></div></div></div><div><h3 class="text-lg font-medium leading-6 text-gray-900">Loan Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="amount" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Amount</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="amount" id="amount" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="500000" placeholder="500000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="Term" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Term (years)</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="term" id="term" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="30" placeholder="30"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="downPayment" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Down Payment</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="downPayment" id="downPayment" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="50000" placeholder="50000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="creditScore" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Credit Score</label><div class="mt-1 sm:mt-0"><output id="creditScore" class="block w-full max-w-lg pl-2 pt-2 sm:max-w-xs sm:text-sm">NA</output></div><div class="mt-1 sm:mt-0"><button id="getCreditScore" type="button" class="inline-flex items-center rounded-full border border-transparent bg-indigo-600 p-1 text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/></svg></button></div></div></div></div></div><button id="saveLoan" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Save</button></form><div id="aside-container" class="flex flex-col gap-4 items-start mt-4 border-2 p-2 rounded-lg border-dashed border-cyan-300 sm:mt-0"></div></div><div id="bottom-container" class="flex flex-col gap-4 items-start mt-4 p-2 sm:mt-0"></div></main><script src="./init.js" type="module"></script></body></html>
@@ -48,4 +48,4 @@ function print() { __p += __j.call(arguments, '') }
48
48
  }
49
49
  `,f),{}),Hi=p=>({space:{...p.spaces,xxxs:p.spaces[1],xxs:p.spaces[2],xxs2:p.spaces[3],xs:p.spaces[4],s:p.spaces[5],m:p.spaces[6],l:p.spaces[7],xl:p.spaces[8],xxl:p.spaces[9]},fontSizes:{...p.fontSizes,title:{500:p.fontSizes[3],600:p.fontSizes[4],700:p.fontSizes[5],800:p.fontSizes[6],900:p.fontSizes[7]},subTitle:{300:p.fontSizes[1],400:p.fontSizes[2]},label:{200:p.fontSizes[0],300:p.fontSizes[1],400:p.fontSizes[2]},value:{300:p.fontSizes[1],400:p.fontSizes[2],500:p.fontSizes[3],600:p.fontSizes[4]},hyperlink:{200:p.fontSizes[0],300:p.fontSizes[1],400:p.fontSizes[2]},microText:{200:p.fontSizes[0]}},fontWeights:{...p.fontWeights,thin:p.fontWeights[0],light:p.fontWeights[1],regular:p.fontWeights[3],semibold:p.fontWeights[5],bold:p.fontWeights[8]},lineHeights:{...p.lineHeights,r:p.lineHeights[0],m:p.lineHeights[1],l:p.lineHeights[2],xl:p.lineHeights[3]},letterSpacings:{normal:p.letterSpacings[0],tracked:p.letterSpacings[1],tight:p.letterSpacings[2],mega:p.letterSpacings[3]},fonts:{...p.fonts,default:p.fonts[0]},colors:{neutral:{"000":p.colors.neutral[0],"050":p.colors.neutral[1],"080":p.colors.neutral[2],100:p.colors.neutral[3],200:p.colors.neutral[4],300:p.colors.neutral[5],400:p.colors.neutral[6],500:p.colors.neutral[7],600:p.colors.neutral[8],700:p.colors.neutral[9],800:p.colors.neutral[10]},brand:{100:p.colors.brand[0],200:p.colors.brand[1],250:p.colors.brand[8],300:p.colors.brand[2],400:p.colors.brand[3],500:p.colors.brand[4],600:p.colors.brand[5],700:p.colors.brand[6],800:p.colors.brand[7]},success:{300:p.colors.success[0],400:p.colors.success[1],600:p.colors.success[2],900:p.colors.success[3],950:p.colors.success[4]},warning:{400:p.colors.warning[0],500:p.colors.warning[1],600:p.colors.warning[1],900:p.colors.warning[2],950:p.colors.warning[3]},danger:{200:p.colors.danger[0],400:p.colors.danger[1],600:p.colors.danger[2],900:p.colors.danger[3],950:p.colors.danger[4]}},shadows:{xs:p.shadows[0],s:p.shadows[1],m:p.shadows[2],l:p.shadows[3],xl:p.shadows[4]},breakpoints:{...p.breakpoints,xsmall:p.breakpoints[3],small:p.breakpoints[0],medium:p.breakpoints[1],large:p.breakpoints[2]},media:ns({xsmall:p.breakpoints[3],small:p.breakpoints[0],medium:p.breakpoints[1],large:p.breakpoints[2]}),zIndex:{dialog:p.zIndex[0],popper:p.zIndex[1],tooltip:p.zIndex[2],backdrop:p.zIndex[3],loader:p.zIndex[4]},states:{_:p.states[0],motionSafe:p.states[1],motionReduce:p.states[2],first:p.states[3],last:p.states[4],odd:p.states[5],even:p.states[6],visited:p.states[7],checked:p.states[8],focusWithin:p.states[9],hover:p.states[10],focus:p.states[11],focusVisible:p.states[12],active:p.states[13],disabled:p.states[14],placeholder:p.states[15]}}),ki=((p=lr())=>()=>Hi(p))(),is=()=>{try{return window.parent.document,window.parent}catch{return window}},si=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),Vi=p=>Number(p.replace("px","")),Ki=()=>{const{width:p}=si(),{breakpoints:f}=ki();return p<=Vi(f.small)?"small":p<=Vi(f.medium)?"medium":"large"};var Yi=_e(5402),os=_e.n(Yi),ss=_e(5887),as=_e.n(ss),us=_e(7579),ai=_e.n(us),cs=_e(4339),ls=_e.n(cs),fs=_e(2495),Xi=_e.n(fs);const ps=JSON.parse('{"appId":"microfe","activeEnv":"localhost","googleTagManager":true,"sessionTimeoutWarnInterval":"7200000","sessionTimeoutInterval":"9000000","microFrontendApps":{"loanapp":{"name":"Loan","hostUrl":"./loan","development":{"files":["index.js"]},"production":{"files":["index.js"]}},"taskapp":{"name":"Task","hostUrl":"./task","mode":"development","development":{"files":["index.dev.js"]},"production":{"files":["index.js"]}},"travelhub":{"name":"TravelHub","hostUrl":"./travelhub","development":{"files":["app.js","landing.js","app.css","landing.css"]},"production":{"files":["app.js","landing.js","app.css","landing.css"]}},"flights":{"name":"Flights","hostUrl":"./flights","development":{"files":["app.js","app.css"]},"production":{"files":["app.js","app.css"]}},"hotels":{"name":"Hotels","hostUrl":"./hotels","development":{"files":["app.js","app.css"]},"production":{"files":["app.js","app.css"]}}},"serviceEndpoints":{"api":"","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"},"env":{"localhost":{"serviceEndpoints":{"api":"","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"dev":{"serviceEndpoints":{"api":"https://dev.api.puiservice.rd.elliemae.io","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"dev2":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"qa":{"serviceEndpoints":{"api":"https://dev.api.puiservice.rd.elliemae.io","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"qa2":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"qa3":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"int":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-osb1":{"serviceEndpoints":{"api":"https://encompass-peg-api.elliemae.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-osb2":{"serviceEndpoints":{"api":"https://encompass-peg2-api.elliemae.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg":{"serviceEndpoints":{"api":"https://peg2-west.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-oapi-west":{"serviceEndpoints":{"api":"https://peg2-west.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-oapi-east":{"serviceEndpoints":{"api":"https://peg2-east.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg2-oapi-east":{"serviceEndpoints":{"api":"https://peg2-east.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg3":{"serviceEndpoints":{"api":"https://pel1.api.ellielabs.com","idp":"https://peg3.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"stage":{"serviceEndpoints":{"api":"https://stg.api.elliemae.com","idp":"https://stg.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"beta":{"serviceEndpoints":{"api":"https://concept.api.elliemae.com","idp":"https://concept.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"demo":{"serviceEndpoints":{"api":"https://concept.api.elliemae.com","idp":"https://concept.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"epc":{"serviceEndpoints":{"api":"https://concept.api.elliemae.com","idp":"https://concept.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"prod":{"serviceEndpoints":{"api":"https://api.elliemae.com","idp":"https://idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}}}}'),ke="latest",ot=12e4,hs=null,ui=p=>p.replace(/([^:]\/)\/+/g,"$1"),ya=p=>{const f=document.createElement("a");return f.href=p,f.href},mr=p=>p?.replace?.(/\/?$/,"/"),wa=(p,f)=>`${p.replace(/\/+$/,"")}/${f.replace(/^\/+/,"")}`,ds=()=>window.navigator.userAgent.includes("jsdom"),gs=({appObj:p,logger:f})=>{if(!p){f.warn("Application object not available to send keep alive");return}const h=throttle(async()=>{try{await p.keepSessionAlive()}catch(g){f.error(`Error keeping session alive. ${g.message}`)}},ot,{leading:!1});hs.forEach(g=>{document.addEventListener(g,h)})};class vs{#e=ps;#t;#n;constructor(f){this.#t=f?.version||ke,this.#n=mr(f?.baseUrl||"")}#r=f=>{const{activeEnv:h}=f,g=f.env[h]||{};f.env&&delete f.env,this.#e=Xi()(f,g)};get=(f="",h=null)=>os()(as()(this.#e,f,h));set=(f,h)=>ai()(this.#e,f,h);has=(f="")=>ls()(this.#e,f);#o=()=>{if(!/(?:\/)(\d+\.\d+|latest)(?:\/?)?$/.test(this.#n)){const h=this.#t.match(/^(?:\d+\.\d+)*/g);return mr(`${this.#n}${h?.[0]||ke}`)}return this.#n};load=async f=>{const h=f??`${this.#o()}app.config.json`,g=await fetch(h);if(g.ok)try{const A=await g.json();this.#r(A)}catch(A){if(!f&&this.#t!==ke)await this.load(`${this.#n}latest/app.config.json`);else throw new Error("Failed to parse app config",{cause:A})}else{if(!f&&this.#t!==ke){await this.load(`${this.#n}latest/app.config.json`);return}throw new Error("Failed to load app config")}}}const St="microFrontendApps",Zi=()=>!0,yr=p=>Zi()?!0:p?p==="production":!0,Ji=p=>p?new URL(p).pathname:"",ci=p=>{const f=document.createElement("a");return f.href=p,f.href},Jt=(p,f)=>{const h=f.match(/^(?:\d+\.\d+)*/g);return p.replace(/{SYSTEM_VERSION}/,h&&h[0]||ke)},li=p=>!p||!p.length?!1:p.every(f=>typeof f=="string"),Qi=(p,f)=>{const{mode:h="production"}=f;if(h!=="production"&&h!=="development")throw new Error(`invalid mode '${h}' for ${p}`);const{production:g,development:A}=f;if(h==="production"){if(!g)throw new Error(`microFrontendApps.${p} is missing production section in app.config.json`);if(!li(g.files))throw new Error("invalid value for production.files")}if(h==="development"){if(!A)throw new Error(`microFrontendApps.${p} is missing development section in app.config.json`);if(!li(A.files))throw new Error("invalid value for development.files")}},qi=({id:p,config:f,version:h="latest"})=>{const{mode:g="production"}=f,A=yr(g)?f.production:f.development;f.production&&delete f.production,f.development&&delete f.development;const R=Xi()({id:p},{name:p,mode:"production",manifestPath:"./{SYSTEM_VERSION}/",securityContext:v.USER,isJsModule:!0},f,A);return R.hostUrl=mr(ci(R.hostUrl||"")),R.homeRoute=mr(R.homeRoute)||Ji(R.hostUrl),R.manifestPath=mr(Jt(R.manifestPath,h)),R};class eo{#e=[];init=({version:f,appConfig:h})=>{const g=h.get(St);g&&(this.#e=Object.keys(g).map(A=>(Qi(A,g[A]),qi({id:A,config:g[A],version:f}))))};getConfigById=f=>this.#e.find(h=>h.id===f)}const to="ice-script-";class no{#e;constructor(f){this.#e=f}add=({name:f,hostUrl:h,documentEle:g,fileName:A,index:R,isJsModule:B=!0})=>new Promise((H,V)=>{const J=new URL(A,h),q=g.createElement("script");q.id=`${to}${f.toLowerCase()}-${R}`,q.src=ui(J.href),q.nonce="__CSP_NONCE__",!ds()&&B?q.type="module":q.async=!1,q.onload=H.bind(null,q.id),q.onerror=ce=>{V(new Error(`Unable to load script ${q.src}`,{cause:new Error(ce)}))},g.head.appendChild(q)});remove=(f="",h=document)=>new Promise(g=>{const A=h.getElementById(f);A||(this.#e.warn(`script with id ${f} not found`),g()),A.remove(),g()});removeDynamicImportedScripts=(f,h)=>{const g=new RegExp(f,"i"),A=h.getElementsByTagName("script");for(let R=A.length-1;R>=0;R-=1){const B=A[R],{src:H}=B;g.test(H)&&B.remove()}};removePrefetchLinks=(f,h)=>{const g=new RegExp(f,"i"),A=h.querySelectorAll('[rel="prefetch"]');for(let R=A.length-1;R>=0;R-=1){const B=A[R],{href:H}=B;g.test(H)&&B.remove()}}}const Nt="ice-style-";class ms{#e;constructor(f){this.#e=f}add=({name:f,hostUrl:h,documentEle:g,fileName:A,index:R})=>new Promise((B,H)=>{const V=g.createElement("link");V.id=`${Nt}${f.toLowerCase()}-${R}`,V.nonce="__CSP_NONCE__",V.rel="stylesheet";const J=new URL(A,h);V.href=ui(J.href),V.onload=B.bind(null,V.id),V.onerror=q=>{H(new Error(`Unable to load stylesheet ${V.href}`,{cause:new Error(q)}))},g.head.appendChild(V)});remove=(f="",h=document)=>new Promise(g=>{const A=h.getElementById(f);A||(this.#e.warn(`style with id ${f} not found`),g()),A.remove(),g()});removeDynamicImportedStyles=(f,h)=>{const g=new RegExp(f,"i"),A=h.querySelectorAll('[rel="stylesheet"]');for(let R=A.length-1;R>=0;R-=1){const B=A[R],{href:H}=B;g.test(H)&&B.remove()}}}const jt=p=>p.replace(/\/\d+\.\d+/,"/latest"),ys=p=>{let f;try{f=new URL(p)}catch{return!1}return f.protocol==="http:"||f.protocol==="https:"},fi=async({hostUrl:p,manifestPath:f})=>{const h=new URL(`${f}manifest.json`,p),g=await fetch(ui(h.href));if(g.ok){const{headers:R}=g;if((R?.get?.("content-type")??"").includes("application/json"))return await g.json();throw new Error(`manifest ${h.href} is not a valid json`)}const A=jt(f);if(f!==A)return fi({hostUrl:p,manifestPath:jt(f)});throw new Error(`unable to get manifest ${h.href}`)},wr={get:fi,getFullFileNameofAssets:(p,f=[])=>f.reduce((h,g)=>{const A=p[g];if(A)h.push(A);else if(ys(g))h.push(g);else throw new Error(`unable to locate ${g} in manifest`);return h},[])};class pi{#e;#t;#n;#r;#o;#i;constructor(f){this.#n=f.guest,this.#e=f.logger,this.#t=f.containerId,this.#r=f?.version||ke,this.#o=f.soManager,this.#i=f.eventManager}get version(){return this.#r}getObject=f=>{const h=this.#o.getObject(f,this.#n);if(h){const g=new ze(h.id,h.objectType);return Object.keys(h).forEach(A=>{const R=h[A];R instanceof b?Object.defineProperty(g,A,{value:new b({name:A,objectId:h.id}),enumerable:!0}):_(R,A)&&Object.defineProperty(g,A,{value:(...B)=>(Object.defineProperty(R,"callContext",{value:{guest:this.#n},configurable:!0,enumerable:!0,writable:!0}),h[A](...B)),enumerable:!0})}),Promise.resolve(g)}return Promise.resolve(null)};setAppWindowSize=f=>{if(!this.#t)return;const{size:h}=f,g=document.getElementById(this.#t);g&&(g.style.height=`${h.height}px`)};subscribe=f=>this.#i.subscribe(f);unsubscribe=f=>{this.#i.unsubscribe(f)}}class ut{constructor(){window.emui||(window.emui={}),window.emui.registerApp=this.#e}#e=({appId:f,app:h})=>{if(!h?.uuid)throw new Error("application uuid is required");if(window.emui[f]=window.emui[f]||[],Array.isArray(window.emui[f])){const g=window.emui[f].findIndex(A=>A.uuid===h.uuid);g>-1?window.emui[f][g]=h:window.emui[f].push(h)}else{let g=window.emui[f];g?.uuid===h.uuid?(g={...g,...h},window.emui[f]=[g]):typeof g.init===void 0?window.emui[f]=[{...g,...h}]:window.emui[f]=[window.emui[f],h]}};get=({id:f,instanceId:h})=>{const g=window.emui?.[f];return Array.isArray(g)?g.find(R=>R.uuid===h)??null:g?.uuid===h?g:null};add=({id:f,instanceId:h,documentEle:g})=>{const A={uuid:h,init:null,mount:null,unmount:null},R=window.emui[f];if(R){if(!h)throw new Error(`Application ${f} is already loaded. uuid is required to load multiple instances of the same app`);Array.isArray(R)?R.push(A):window.emui[f]=[R,A]}else window.emui[f]=[A];g.defaultView&&(g.defaultView.emui=g.defaultView.emui??{},g.defaultView.emui.uuid=h)};delete=({id:f,instanceId:h})=>{if(Array.isArray(window.emui[f])){const g=window.emui[f].findIndex(A=>A.uuid===h);g>-1&&window.emui[f].splice(g,1)}else delete window.emui[f]}}const Rn=12e4,Lr=["click","scroll","keypress","touchstart"],ws=/\.css$/,hi=p=>ws.test(p);class xs{#e;#t;#n;#r;#o;#i=new eo;#a;#c;#s=new Map;#u=new ut;#l=!0;constructor(f){const{logger:h}=f;if(!h)throw new Error("logger is required");this.#e=f.logger,this.#t=f.version,this.#l=f.extendSession??!0,this.#o=new vs({version:f.version,baseUrl:f.appConfigBaseUrl}),this.#n=new no(h),this.#r=new ms(h),this.#a=new k,this.#c=new Qe}#d(f){return typeof f=="function"}#g=f=>f instanceof u||typeof f?.subscribe=="function";#v=(f,h)=>`Application ${f} with instance id ${h} is not found. Most probably the appId property of app.config.json is not set to ${f}`;#m=(f,h=document)=>{const{elementIds:g}=this.#s.get(f)||{};g&&g.forEach(A=>{const R=h.getElementById(A);R&&R.remove()})};#y=({id:f,instanceId:h,documentEle:g},A)=>{const R=this.#u.get({id:f,instanceId:h});if(!R)throw new Error(this.#v(f,h));this.#s.set(h,{id:f,instanceId:h,elementIds:A,guest:{guestWindow:g?.defaultView,...R}})};#w=(f,h)=>{const{id:g,instanceId:A,containerId:R,name:B,hostUrl:H,manifestPath:V,homeRoute:J,initialRoute:q,history:ce,theme:De,documentEle:Pe}=f;return Promise.all(h).then(this.#y.bind(null,{id:g,instanceId:A,documentEle:Pe})).then(this.#x.bind(null,{id:g,instanceId:A,containerId:R,name:B,hostUrl:H,manifestPath:V,homeRoute:J,initialRoute:q,history:ce,theme:De})).catch(Ce=>{const Be=`Application load failed. Unable to load one or more resources for ${f.id} with instance id ${A}. ${Ce.message}`;throw this.#e.error({message:Be,appId:g,exception:Ce}),new Error(Be)})};#x=async({id:f,instanceId:h,containerId:g,hostUrl:A,manifestPath:R,homeRoute:B,initialRoute:H,history:V,theme:J})=>{const q=this.#u.get({id:f,instanceId:h});if(!q)throw new Error(`Application ${f} with instance id ${h} is not found. Most probably the appId property of app.config.json is not set to ${f}`);if(!q.init||typeof q.init!="function")throw new Error(`Application ${f} with instance id ${h} doesn't expose init method`);const ce=new pi({guest:{id:f},version:this.#t,containerId:g,logger:this.#e,soManager:this.#a,eventManager:this.#c});return q.init({host:ce,hostUrl:A,manifestPath:R,homeRoute:B,initialRoute:H,prevState:null,history:V,theme:J,hostBreakpoint:Ki(),hostViewportSize:si(),logger:this.#e})};#b=async f=>{const{id:h,instanceId:g,files:A,name:R,hostUrl:B,documentEle:H,isJsModule:V}=f;this.#e.debug(`Application ${h} with instance id ${g} is loading...`);let J=A;const q=await wr.get(f);J=wr.getFullFileNameofAssets(q,A);let ce=0;const De=J.map(Pe=>{ce+=1;const Ce={name:R,hostUrl:B,documentEle:H,fileName:Pe,index:ce,isJsModule:V};return hi(Pe)?this.#r.add(Ce):this.#n.add(Ce)});await this.#w(f,De),this.#e.audit(`Application ${h} with instance id ${g} loaded`)};#f=({id:f,instanceId:h,hostUrl:g,documentEle:A})=>{this.#e.debug(`Application ${f} with instance id ${h} unloading...`),this.#u.get({id:f,instanceId:h})&&(this.#m(h,A),this.#n.removeDynamicImportedScripts(g,A),this.#n.removePrefetchLinks(g,A),this.#r.removeDynamicImportedStyles(g,A),this.#u.delete({id:f,instanceId:h}),this.#e.audit(`Application ${f} with instance id ${h} unloaded`))};#p=async({id:f,instanceId:h})=>{const g=this.#u.get({id:f,instanceId:h});if(!g?.mount||typeof g?.mount!="function")throw new Error(`Application ${f} with instance id ${h} doesn't expose mount method`);return g.mount({containerId:`${st}${f}`,hostBreakpoint:Ki(),hostViewportSize:si()})};#h=({id:f,instanceId:h})=>{const g=this.#u.get({id:f,instanceId:h});if(!g?.unmount)return null;if(typeof g.unmount!="function")throw new Error(`Application ${f} with instance id ${h} doesn't expose unmount method`);return g.unmount({containerId:`${st}${f}`})};#S=({id:f,instanceId:h})=>{if(this.#l)try{const g=this.#a.getObject(nt.Application);if(!g){this.#e.warn({message:`Application scripting object not available for ${f} to manage session`});return}const A=this.#s.get(h);if(!A)return;A.keepAlive=(0,T.throttle)(async()=>{try{await g.keepSessionAlive()}catch(B){this.#e.error(`Error keeping session alive. ${B.message}`)}},Rn);const R=Ct.get(h);Lr.forEach(B=>{R?.contentDocument?.addEventListener(B,A.keepAlive)})}catch(g){this.#e.warn({message:`Application scripting object not available for ${f} to manage session`,exception:g})}};#A=f=>{if(!this.#l||!f)return;const{keepAlive:h}=f;h&&(Lr.forEach(g=>{document.removeEventListener(g,h)}),f.keepAlive?.cancel())};addScriptingObject=(f,h)=>{if(Me(f)){const g=this.cloneScriptingObject(f);this.#a.addScriptingObject(g,h)}else this.#a.addScriptingObject(f,h)};cloneScriptingObject=f=>{if(!f)throw new Error("proxy is required");const h=new E(f.id,f.objectType);let g=[];return Object.keys(f).forEach(A=>{const R=f[A];if(this.#g(R)){const B=new b({name:R.name||A,objectId:h.id});Object.defineProperty(h,A,{value:B,enumerable:!0});const H=({eventParams:J,eventOptions:q})=>this.dispatchEvent({event:B,eventParams:J,eventOptions:q}),V=R.subscribe(H);g.push(()=>{R.unsubscribe(V)})}else if(this.#d(R)&&(Object.defineProperty(h,A,{value:async(...B)=>{const H=await R(...B);return Me(H)?this.cloneScriptingObject(H):H},enumerable:!0}),A==="dispose")){const B=h.dispose;Object.defineProperty(h,A,{value:()=>(h._dispose(),B.apply(h)),enumerable:!0})}}),h._dispose=()=>{g.forEach(A=>{A?.()}),g=[]},h};closeAllApps=async()=>{await Promise.all([...this.#s.keys()].map(this.closeApp))};closeApp=async f=>{if(!f)throw new Error("instanceId is required");const h=this.#s.get(f);if(!h){this.#e.warn(`Application with instance id ${f} is not found`);return}this.#s.delete(f);const{id:g}=h,A=this.#i.getConfigById(g),{hostUrl:R}=A;try{this.#A(h),await this.#h({id:g,instanceId:f})}finally{const B=Ct.get(f);B?.contentDocument&&this.#f({id:g,instanceId:f,hostUrl:R,documentEle:B.contentDocument}),Ct.remove(f)}};dispatchEvent=async f=>{const{event:{id:h,name:g}}=f;if(!h)throw new Error("Event Id is required");const A=h.split(".")?.[0],R=this.#a.getObject(A);return R?this.#c.dispatchEvent(R,f):(this.#e.warn(`Attempt to dispatch event ${g} on unknown object ${A}`),Promise.resolve())};getApp=f=>this.#s.get(f)?.guest;getApps=()=>[...this.#s.values()].map(f=>f.guest);init=async()=>{await this.#o.load(),this.#i.init({version:this.#t,appConfig:this.#o})};mountApp=async f=>{if(!f)throw new Error("instanceId is required");const{id:h}=this.#s.get(f)||{};if(!h)throw new Error(`Application with instance id ${f} is not found`);const g=this.#i.getConfigById(h);if(!g)throw new Error(`Application with id ${h} is not found`);await this.#p({...g,instanceId:f})};openApp=async f=>{const{id:h,frameOptions:g,history:A,theme:R,homeRoute:B,initialRoute:H}=f,V=Oe(),J=this.#i.getConfigById(h);if(!J)throw new Error(`Application ${h} is not found in app config`);const q=await Ct.create({id:h,instanceId:V,manifestPath:J.manifestPath,hostUrl:J.hostUrl,options:{title:J.name,...g}});if(!q?.contentDocument)throw new Error("unable to create iframe for the microapp");try{return this.#u.add({id:h,instanceId:V,documentEle:q.contentDocument}),await this.#b({instanceId:V,history:A,theme:R,documentEle:q.contentDocument,containerId:g?.containerId,...J,homeRoute:B??J.homeRoute,initialRoute:H}),await this.#p({instanceId:V,...J}),this.#S({id:h,instanceId:V}),V}catch(ce){throw this.#f({id:h,instanceId:V,hostUrl:J.hostUrl,documentEle:q.contentDocument}),Ct.remove(V),ce}};removeAllEventSubscriptions=()=>{this.#c.unsubscribeAll()};removeAllScriptingObjects=f=>{this.#a.removeAllScriptingObjects(f)};removeScriptingObject=(f,h)=>{this.#a.removeScriptingObject(f,h)};unmountApp=async f=>{if(!f)throw new Error("instanceId is required");const{id:h}=this.#s.get(f)||{};if(!h)throw new Error(`Application with instance id ${f} is not found`);const g=this.#i.getConfigById(h);if(!g)throw new Error(`Application with id ${h} is not found`);await this.#h({...g,instanceId:f})}}})(),$o})());
50
50
 
51
- //# sourceMappingURL=emuiAppBridge.40c8880c94dbc97b49fd.js.map
51
+ //# sourceMappingURL=emuiAppBridge.2993b666256d6dd7148d.js.map