@salesforce/lightning-out 2.2.6 → 2.2.7-rc.0

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.
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @salesforce/lightning-out v2.2.6 (2026-08-31) */
1
+ /*! @salesforce/lightning-out v2.2.7-rc.0 (2026-09-09) */
2
2
  /**
3
3
  * Numeric ranks for {@link LogLevel}; lower values are more severe.
4
4
  */
@@ -410,16 +410,12 @@ function isStandardName(name) {
410
410
  return name.includes("/") || name.includes(":");
411
411
  }
412
412
  /**
413
- * Returns true when `propName` is the `@lwc/synthetic-shadow` tag. The polyfill attaches
414
- * `$$ShadowResolverKey$$` as a function-valued own-prop to every DOM node it touches, and
415
- * structuredClone rejects it with DataCloneError when the observed property set is posted
416
- * across the iframe boundary (W-23744109).
417
- *
418
- * @param propName - The property name to check
419
- * @returns True if the property is the synthetic-shadow tag
413
+ * Returns true for `@lwc/synthetic-shadow` internal keys (`$$…$$` own-props). Filter by
414
+ * prefix the function-valued ones break structuredClone across the iframe boundary
415
+ * (W-23744109, W-23966913).
420
416
  */
421
- function isSyntheticShadowKey(propName) {
422
- return propName === "$$ShadowResolverKey$$";
417
+ function isSyntheticShadowInternal(propName) {
418
+ return propName.startsWith("$$");
423
419
  }
424
420
  /**
425
421
  * Applies property transformations and validation callbacks to component
@@ -1307,7 +1303,7 @@ class LightningOutComponent extends HTMLElement {
1307
1303
  return false;
1308
1304
  }
1309
1305
  else {
1310
- return !attrName.startsWith("_") && !isSyntheticShadowKey(attrOrPropName);
1306
+ return !attrName.startsWith("_") && !isSyntheticShadowInternal(attrOrPropName);
1311
1307
  }
1312
1308
  };
1313
1309
  addEventListener(eventName, listener, options) {
@@ -1498,7 +1494,7 @@ class LightningOutRouter {
1498
1494
  url.searchParams.set("parentElementId", parentElementId);
1499
1495
  url.searchParams.set("loAppOrigin", this.config.loAppOrigin);
1500
1496
  // This helps in general but also for cache busting
1501
- url.searchParams.set("loVersion", "2.2.6");
1497
+ url.searchParams.set("loVersion", "2.2.7-rc.0");
1502
1498
  if (this.config.appId) {
1503
1499
  url.searchParams.set("appId", this.config.appId);
1504
1500
  }
@@ -1834,7 +1830,7 @@ class LightningOutApplication extends HTMLElement {
1834
1830
  return false;
1835
1831
  }
1836
1832
  else {
1837
- return !propName.startsWith("_") && !isSyntheticShadowKey(propName);
1833
+ return !propName.startsWith("_") && !isSyntheticShadowInternal(propName);
1838
1834
  }
1839
1835
  };
1840
1836
  _propertyChanged_lwrApplication = (lwrApplication) => {
@@ -1,4 +1,4 @@
1
- /*! @salesforce/lightning-out v2.2.6 (2026-08-31) */
1
+ /*! @salesforce/lightning-out v2.2.7-rc.0 (2026-09-09) */
2
2
  var LO2 = (function (exports) {
3
3
  'use strict';
4
4
 
@@ -413,16 +413,12 @@ var LO2 = (function (exports) {
413
413
  return name.includes("/") || name.includes(":");
414
414
  }
415
415
  /**
416
- * Returns true when `propName` is the `@lwc/synthetic-shadow` tag. The polyfill attaches
417
- * `$$ShadowResolverKey$$` as a function-valued own-prop to every DOM node it touches, and
418
- * structuredClone rejects it with DataCloneError when the observed property set is posted
419
- * across the iframe boundary (W-23744109).
420
- *
421
- * @param propName - The property name to check
422
- * @returns True if the property is the synthetic-shadow tag
416
+ * Returns true for `@lwc/synthetic-shadow` internal keys (`$$…$$` own-props). Filter by
417
+ * prefix the function-valued ones break structuredClone across the iframe boundary
418
+ * (W-23744109, W-23966913).
423
419
  */
424
- function isSyntheticShadowKey(propName) {
425
- return propName === "$$ShadowResolverKey$$";
420
+ function isSyntheticShadowInternal(propName) {
421
+ return propName.startsWith("$$");
426
422
  }
427
423
  /**
428
424
  * Applies property transformations and validation callbacks to component
@@ -1310,7 +1306,7 @@ var LO2 = (function (exports) {
1310
1306
  return false;
1311
1307
  }
1312
1308
  else {
1313
- return !attrName.startsWith("_") && !isSyntheticShadowKey(attrOrPropName);
1309
+ return !attrName.startsWith("_") && !isSyntheticShadowInternal(attrOrPropName);
1314
1310
  }
1315
1311
  };
1316
1312
  addEventListener(eventName, listener, options) {
@@ -1501,7 +1497,7 @@ var LO2 = (function (exports) {
1501
1497
  url.searchParams.set("parentElementId", parentElementId);
1502
1498
  url.searchParams.set("loAppOrigin", this.config.loAppOrigin);
1503
1499
  // This helps in general but also for cache busting
1504
- url.searchParams.set("loVersion", "2.2.6");
1500
+ url.searchParams.set("loVersion", "2.2.7-rc.0");
1505
1501
  if (this.config.appId) {
1506
1502
  url.searchParams.set("appId", this.config.appId);
1507
1503
  }
@@ -1837,7 +1833,7 @@ var LO2 = (function (exports) {
1837
1833
  return false;
1838
1834
  }
1839
1835
  else {
1840
- return !propName.startsWith("_") && !isSyntheticShadowKey(propName);
1836
+ return !propName.startsWith("_") && !isSyntheticShadowInternal(propName);
1841
1837
  }
1842
1838
  };
1843
1839
  _propertyChanged_lwrApplication = (lwrApplication) => {
@@ -1,10 +1,10 @@
1
- /*! @salesforce/lightning-out v2.2.6 (2026-08-31) */
2
- var LO2=function(e){"use strict";const t={error:0,warn:1,info:2,debug:3,trace:4};class r{static#e="LO2";static#t="error";#r;static set level(e){this.#t=e}static set prefix(e){this.#e=e}get brand(){return`${r.#e}:${this.#r}:`}constructor(e){this.#r="string"==typeof e?e:e.constructor?.name}error(...e){t.error<=t[r.#t]&&console.error(this.brand,...e)}warn(...e){t.warn<=t[r.#t]&&console.warn(this.brand,...e)}info(...e){t.info<=t[r.#t]&&console.info(this.brand,...e)}debug(...e){t.debug<=t[r.#t]&&console.debug(this.brand,...e)}trace(...e){t.trace<=t[r.#t]&&console.trace(this.brand,...e)}}function i(){return Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(36)}const s={application:{ready:"lo.application.ready",error:"lo.application.error",logout:"lo.application.logout",auth:{redirect:"lo.application.auth.redirect"},session:{refresh:"lo.application.session.refresh"}},component:{ready:"lo.component.ready",error:"lo.component.error"},iframe:{load:"lo.iframe.load",error:"lo.iframe.error",logout:"lo.iframe.logout",auth:{redirect:"lo.iframe.auth.redirect"}}},o={addEventListener:"lo.addEventListener",authReload:"lo.auth.reload",dispatchEvent:"lo.dispatchEvent",error:"lo.error",getComponentData:"lo.getComponentData",loaded:"lo.loaded",logout:"lo.logout",ready:"lo.ready",redirect:"lo.redirect",removeEventListener:"lo.removeEventListener",resize:"lo.resize",sessionExpiry:"lo.sessionExpiry",sessionExpiryResponse:"lo.sessionExpiry.response",setComponentData:"lo.setComponentData",setComponentProps:"lo.setComponentProps"},n=new r("LightningOutError"),a="Session not ready",h="Session timeout",l="Session failed: iframe error",c="Malformed sessionExpiry response",d="Session terminated",p="Session APIs are not supported in org-url mode";class m{#i;#r;constructor(e){this.#r="string"==typeof e?e:e.constructor?.name,"function"==typeof e.dispatchEvent&&(this.#i=e)}#s(e){return`${this.#r}: ${e}`}create(e){const t="string"==typeof e?e:e.message;return new Error(this.#s(t))}dispatch(e,t){const r="string"==typeof t?t:t.message||t.detail?.message;if(this.#i){const i=t.detail||{message:this.#s(r),originalError:t},s=new CustomEvent(e,{detail:i});this.#i.dispatchEvent(s),n.error(`${this.#s("dispatched error")} -> ${e}: ${r}`)}else n.error(`${this.#s("unable to dispatch error on a non-EventTarget object")} -> ${e}: ${r}`)}}const u=new m("LightningOutUtils");function g(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function f(e,t=!1){if(/[A-Z]/.test(e))throw u.create(`elementNameToStandardName: "${e}" is not a valid custom element name - must be all lowercase.`);const r=e.indexOf("-");if(-1===r)throw u.create(`elementNameToStandardName: "${e}" is not a valid custom element name - missing hyphen character.`);return`${function(e){if(/[A-Z]/.test(e))throw u.create(`snakeToCamel: "${e}" is not valid snake_case - must be all lowercase.`);return e.replace(/_([a-z_])/g,(e,t)=>t.toUpperCase())}(e.slice(0,r))}${t?":":"/"}${function(e){if(/[A-Z]/.test(e))throw u.create(`kebabToCamel: "${e}" is not valid kebab-case - must be all lowercase.`);return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}(e.slice(r+1))}`}function v(e){return"$$ShadowResolverKey$$"===e}function w(e,t){const r=Object.entries(t).map(t=>{let[r,i]=t;const s=r.split("dataMirror");2===s.length&&""===s[0]&&(r=s[1].charAt(0).toLowerCase()+s[1].slice(1));const o=`_propertyChanged_${r}`;if("function"==typeof e[o]){i=(0,e[o])(i)}return[r,i]});return Object.fromEntries(r)}const b=new r("LightningOutIFrame");class E{#o;#n;#a;#h="display:none";#l="border:0px; width:100%; height:100%; overflow:auto;";#c;#d;#p;#m;#u;#g;constructor(e){this.#o=e.parentElement,this.#n=e.parentElement instanceof O,this.#a=new m(e.parentElement)}get iframeReady(){return!!this.#p&&!!this.#m}get iframeElement(){return this.#d}#f(e,t){this.#p=e,this.#m=t}#v=e=>{if(e.data.id===this.#o._uuid)switch(b.debug("#messageListener:",`parentElement._uuid: ${this.#o._uuid}`,`parentElement.localName: ${this.#o.localName}`,JSON.stringify(e.data)),e.data.type){case o.loaded:{this.#g=clearTimeout(this.#g),this.#f(e.source,e.origin);const t=e.data.lightningDomain;this.#o.dispatchEvent(new CustomEvent(s.iframe.load,{detail:{origin:e.origin,lightningDomain:t}}));break}case o.logout:this.#g=clearTimeout(this.#g),this.#o.dispatchEvent(new CustomEvent(s.iframe.logout));break;case o.redirect:this.#g=clearTimeout(this.#g),this.#o.dispatchEvent(new CustomEvent(s.iframe.auth.redirect,{detail:{redirectUrl:e.data.redirectUrl,redirectOrigin:e.origin}}));break;case o.resize:break;case o.sessionExpiryResponse:this.#o instanceof k&&this.#o._handleSessionExpiryResponse(e.data)}};#w(e){this.#d&&this.#n&&(this.#d.style.height=`${e}px`,b.debug(`#handleResize: applied height ${e}px to iframe`))}#b(){if(!this.#d){const e=window.document.createElement("iframe");e.name="lightning_af",e.setAttribute("sandbox",["allow-downloads","allow-forms","allow-popups","allow-same-origin","allow-scripts","allow-top-navigation-by-user-activation"].join(" ")),e.style.cssText=this.#n?this.#l:this.#h,this.#d=e,this.#c=this.#o.attachShadow({mode:"closed"}),this.#c.appendChild(this.#d),e.addEventListener("load",this.#E),window.addEventListener("message",this.#v)}return this.#d}load(e){const t=this.#b();this.#u=new URL(e),b.debug("#loadIframe: endpoint =",function(e){const t={},r=e=>{const t={};for(const[r,i]of e.entries())t[r]=i;return t};if(t.url=e.origin+e.pathname,t.urlParams=r(e.searchParams),"/secur/frontdoor.jsp"===e.pathname){const e=t.urlParams.otp?"startURL":"retURL",i=new URL(t.urlParams[e],"http://dummy.com");t.urlParams[e]={url:i.pathname,urlParams:r(i.searchParams)}}return t}(this.#u)),this.#f(void 0,void 0),this.#n?t.src=e:localStorage.getItem("LightningOutIFrame:load:window.open")?window.open(e,`LO2 Hidden ${this.#o._uuid}`,"left=200,top=200,width=800,height=800"):t.src=e}#E=()=>{this.#g&&clearTimeout(this.#g),this.#g=setTimeout(()=>{if(!this.iframeReady){const e="Error: Unknown error, unable to load the iframe.";this.#a.dispatch(s.iframe.error,e),this.#y(e)}},6e4)};destroy(){this.#c&&(this.#c.innerHTML=""),this.#d&&this.#d.remove(),this.#c=void 0,this.#d=void 0,this.#f(void 0,void 0)}#y(e){if(this.#n&&this.#u){const t=new URL("/lightning/lightning.out.message.html",this.#u.origin);t.search=new URLSearchParams({loAppOrigin:window.location.origin,parentElementId:this.#o._uuid,message:e}).toString(),this.load(t.href)}}postMessage(e){if(!this.#p||!this.#m)throw this.#a.create("Error attempting to postMessage on an iframe that is not ready.");b.debug("postMessage:",`parentElement: ${this.#o._uuid}`,JSON.stringify(e));try{this.#p.postMessage(e,this.#m)}catch(e){const t=`postMessage error: ${e}`;throw this.#a.dispatch(s.iframe.error,t),this.#a.create(t)}}}
1
+ /*! @salesforce/lightning-out v2.2.7-rc.0 (2026-09-09) */
2
+ var LO2=function(e){"use strict";const t={error:0,warn:1,info:2,debug:3,trace:4};class r{static#e="LO2";static#t="error";#r;static set level(e){this.#t=e}static set prefix(e){this.#e=e}get brand(){return`${r.#e}:${this.#r}:`}constructor(e){this.#r="string"==typeof e?e:e.constructor?.name}error(...e){t.error<=t[r.#t]&&console.error(this.brand,...e)}warn(...e){t.warn<=t[r.#t]&&console.warn(this.brand,...e)}info(...e){t.info<=t[r.#t]&&console.info(this.brand,...e)}debug(...e){t.debug<=t[r.#t]&&console.debug(this.brand,...e)}trace(...e){t.trace<=t[r.#t]&&console.trace(this.brand,...e)}}function i(){return Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(36)}const s={application:{ready:"lo.application.ready",error:"lo.application.error",logout:"lo.application.logout",auth:{redirect:"lo.application.auth.redirect"},session:{refresh:"lo.application.session.refresh"}},component:{ready:"lo.component.ready",error:"lo.component.error"},iframe:{load:"lo.iframe.load",error:"lo.iframe.error",logout:"lo.iframe.logout",auth:{redirect:"lo.iframe.auth.redirect"}}},o={addEventListener:"lo.addEventListener",authReload:"lo.auth.reload",dispatchEvent:"lo.dispatchEvent",error:"lo.error",getComponentData:"lo.getComponentData",loaded:"lo.loaded",logout:"lo.logout",ready:"lo.ready",redirect:"lo.redirect",removeEventListener:"lo.removeEventListener",resize:"lo.resize",sessionExpiry:"lo.sessionExpiry",sessionExpiryResponse:"lo.sessionExpiry.response",setComponentData:"lo.setComponentData",setComponentProps:"lo.setComponentProps"},n=new r("LightningOutError"),a="Session not ready",h="Session timeout",l="Session failed: iframe error",c="Malformed sessionExpiry response",d="Session terminated",p="Session APIs are not supported in org-url mode";class m{#i;#r;constructor(e){this.#r="string"==typeof e?e:e.constructor?.name,"function"==typeof e.dispatchEvent&&(this.#i=e)}#s(e){return`${this.#r}: ${e}`}create(e){const t="string"==typeof e?e:e.message;return new Error(this.#s(t))}dispatch(e,t){const r="string"==typeof t?t:t.message||t.detail?.message;if(this.#i){const i=t.detail||{message:this.#s(r),originalError:t},s=new CustomEvent(e,{detail:i});this.#i.dispatchEvent(s),n.error(`${this.#s("dispatched error")} -> ${e}: ${r}`)}else n.error(`${this.#s("unable to dispatch error on a non-EventTarget object")} -> ${e}: ${r}`)}}const u=new m("LightningOutUtils");function g(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function f(e,t=!1){if(/[A-Z]/.test(e))throw u.create(`elementNameToStandardName: "${e}" is not a valid custom element name - must be all lowercase.`);const r=e.indexOf("-");if(-1===r)throw u.create(`elementNameToStandardName: "${e}" is not a valid custom element name - missing hyphen character.`);return`${function(e){if(/[A-Z]/.test(e))throw u.create(`snakeToCamel: "${e}" is not valid snake_case - must be all lowercase.`);return e.replace(/_([a-z_])/g,(e,t)=>t.toUpperCase())}(e.slice(0,r))}${t?":":"/"}${function(e){if(/[A-Z]/.test(e))throw u.create(`kebabToCamel: "${e}" is not valid kebab-case - must be all lowercase.`);return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}(e.slice(r+1))}`}function v(e){return e.startsWith("$$")}function w(e,t){const r=Object.entries(t).map(t=>{let[r,i]=t;const s=r.split("dataMirror");2===s.length&&""===s[0]&&(r=s[1].charAt(0).toLowerCase()+s[1].slice(1));const o=`_propertyChanged_${r}`;if("function"==typeof e[o]){i=(0,e[o])(i)}return[r,i]});return Object.fromEntries(r)}const b=new r("LightningOutIFrame");class E{#o;#n;#a;#h="display:none";#l="border:0px; width:100%; height:100%; overflow:auto;";#c;#d;#p;#m;#u;#g;constructor(e){this.#o=e.parentElement,this.#n=e.parentElement instanceof O,this.#a=new m(e.parentElement)}get iframeReady(){return!!this.#p&&!!this.#m}get iframeElement(){return this.#d}#f(e,t){this.#p=e,this.#m=t}#v=e=>{if(e.data.id===this.#o._uuid)switch(b.debug("#messageListener:",`parentElement._uuid: ${this.#o._uuid}`,`parentElement.localName: ${this.#o.localName}`,JSON.stringify(e.data)),e.data.type){case o.loaded:{this.#g=clearTimeout(this.#g),this.#f(e.source,e.origin);const t=e.data.lightningDomain;this.#o.dispatchEvent(new CustomEvent(s.iframe.load,{detail:{origin:e.origin,lightningDomain:t}}));break}case o.logout:this.#g=clearTimeout(this.#g),this.#o.dispatchEvent(new CustomEvent(s.iframe.logout));break;case o.redirect:this.#g=clearTimeout(this.#g),this.#o.dispatchEvent(new CustomEvent(s.iframe.auth.redirect,{detail:{redirectUrl:e.data.redirectUrl,redirectOrigin:e.origin}}));break;case o.resize:break;case o.sessionExpiryResponse:this.#o instanceof k&&this.#o._handleSessionExpiryResponse(e.data)}};#w(e){this.#d&&this.#n&&(this.#d.style.height=`${e}px`,b.debug(`#handleResize: applied height ${e}px to iframe`))}#b(){if(!this.#d){const e=window.document.createElement("iframe");e.name="lightning_af",e.setAttribute("sandbox",["allow-downloads","allow-forms","allow-popups","allow-same-origin","allow-scripts","allow-top-navigation-by-user-activation"].join(" ")),e.style.cssText=this.#n?this.#l:this.#h,this.#d=e,this.#c=this.#o.attachShadow({mode:"closed"}),this.#c.appendChild(this.#d),e.addEventListener("load",this.#E),window.addEventListener("message",this.#v)}return this.#d}load(e){const t=this.#b();this.#u=new URL(e),b.debug("#loadIframe: endpoint =",function(e){const t={},r=e=>{const t={};for(const[r,i]of e.entries())t[r]=i;return t};if(t.url=e.origin+e.pathname,t.urlParams=r(e.searchParams),"/secur/frontdoor.jsp"===e.pathname){const e=t.urlParams.otp?"startURL":"retURL",i=new URL(t.urlParams[e],"http://dummy.com");t.urlParams[e]={url:i.pathname,urlParams:r(i.searchParams)}}return t}(this.#u)),this.#f(void 0,void 0),this.#n?t.src=e:localStorage.getItem("LightningOutIFrame:load:window.open")?window.open(e,`LO2 Hidden ${this.#o._uuid}`,"left=200,top=200,width=800,height=800"):t.src=e}#E=()=>{this.#g&&clearTimeout(this.#g),this.#g=setTimeout(()=>{if(!this.iframeReady){const e="Error: Unknown error, unable to load the iframe.";this.#a.dispatch(s.iframe.error,e),this.#y(e)}},6e4)};destroy(){this.#c&&(this.#c.innerHTML=""),this.#d&&this.#d.remove(),this.#c=void 0,this.#d=void 0,this.#f(void 0,void 0)}#y(e){if(this.#n&&this.#u){const t=new URL("/lightning/lightning.out.message.html",this.#u.origin);t.search=new URLSearchParams({loAppOrigin:window.location.origin,parentElementId:this.#o._uuid,message:e}).toString(),this.load(t.href)}}postMessage(e){if(!this.#p||!this.#m)throw this.#a.create("Error attempting to postMessage on an iframe that is not ready.");b.debug("postMessage:",`parentElement: ${this.#o._uuid}`,JSON.stringify(e));try{this.#p.postMessage(e,this.#m)}catch(e){const t=`postMessage error: ${e}`;throw this.#a.dispatch(s.iframe.error,t),this.#a.create(t)}}}
3
3
  /**
4
4
  * @file property-observer.ts
5
5
  * @author Caridy Patiño (2025)
6
6
  * @license MIT
7
7
  * @description Provides the PropertyObserver class, a utility to observe property and attribute
8
8
  * changes on any DOM element, with automatic getter/setter interception and batched notifications.
9
- */const y=new r("PropertyObserver");class _{_el;_cb;_cache;_shouldObserve;_interceptedProps;_originalDescriptors;_observer;_changesPending;_pendingChanges;_attributeExceptions=new Map([["for","htmlFor"],["class","className"],["formnovalidate","formNoValidate"],["readonly","readOnly"],["maxlength","maxLength"],["minlength","minLength"],["contenteditable","contentEditable"],["spellcheck","spellcheck"],["novalidate","noValidate"],["autofocus","autofocus"],["autocomplete","autocomplete"],["crossorigin","crossOrigin"]]);constructor(e,t,r){if(!(e instanceof Element))throw new TypeError("Target must be a DOM Element");if("function"!=typeof t)throw new TypeError("Callback must be a function");if(r&&"function"!=typeof r)throw new TypeError("shouldObserve callback must be a function");this._el=e,this._cb=t,this._cache=new Map,this._shouldObserve=r||((e,t)=>!1===t),this._interceptedProps=new Set,this._originalDescriptors=new Map,this._changesPending=!1,this._pendingChanges={},this._initialScan(),this._setupMutationObserver()}disconnect(){this._observer&&this._observer.disconnect();for(const[e,t]of this._originalDescriptors)Object.defineProperty(this._el,e,t);this._cache.clear(),this._interceptedProps.clear(),this._originalDescriptors.clear(),this._pendingChanges={},this._changesPending=!1}_initialScan(){const e={};for(const t of Array.from(this._el.attributes)){const r=t.name,i=this._isStandardAttribute(r);if(!this._shouldObserve(r,i))continue;const s=this._attributeNameToPropName(r),o=t.value;e[s]=o,this._cache.set(s,o),this._installPropertyInterceptor(s)}for(const t of Object.getOwnPropertyNames(this._el)){const r=this._isStandardProperty(t);if(this._cache.has(t)||!this._shouldObserve(t,r))continue;const i=this._el[t];e[t]=i,this._cache.set(t,i),this._installPropertyInterceptor(t)}if(Object.keys(e).length>0)try{this._cb(e)}catch(e){y.error("Error in initial PropertyObserver callback:",e)}}_setupMutationObserver(){this._observer=new MutationObserver(e=>{const t={};for(const r of e)if("attributes"===r.type&&r.attributeName){const e=r.attributeName,i=this._isStandardAttribute(e);if(!this._shouldObserve(e,i))continue;const s=this._attributeNameToPropName(e),o=this._el.getAttribute(e);o!==this._cache.get(s)&&(t[s]=o,this._cache.set(s,o),this._interceptedProps.has(s)||this._installPropertyInterceptor(s))}Object.keys(t).length>0&&this._batchChanges(t)}),this._observer.observe(this._el,{attributes:!0,attributeOldValue:!1})}_installPropertyInterceptor(e){if(this._interceptedProps.has(e))return;const t=Object.getOwnPropertyDescriptor(this._el,e)||{value:this._el[e],writable:!0,enumerable:!0,configurable:!0};this._originalDescriptors.set(e,t);const r={enumerable:t.enumerable,configurable:t.configurable,get:t.get||(()=>t.value),set:r=>{r!==this._cache.get(e)&&(t.set?t.set.call(this._el,r):t.value=r,this._cache.set(e,r),this._batchChanges({[e]:r}))}};Object.defineProperty(this._el,e,r),this._interceptedProps.add(e)}_batchChanges(e){Object.assign(this._pendingChanges,e),this._changesPending||(this._changesPending=!0,queueMicrotask(()=>{this._changesPending=!1;const e={...this._pendingChanges};this._pendingChanges={};try{this._cb(e)}catch(e){y.error("Error in PropertyObserver callback:",e)}}))}_attributeNameToPropName(e){return this._attributeExceptions.has(e)?this._attributeExceptions.get(e):e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}_isStandardAttribute(e){if(e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("on"))return!0;const t=this._attributeNameToPropName(e);return this._isStandardProperty(t)}_isStandardProperty(e){return e in HTMLElement.prototype}}const C=new class{#_=new m("LightningOutRegistry");appToComps=new WeakMap;compToApp=new WeakMap;compNameToApp=new Map;registerApplication(e){this.appToComps.has(e)||this.appToComps.set(e,new Set)}registerComponentName(e,t){if(this.compNameToApp.has(e))throw this.#_.create(`"${e}" is already registered to another App.`);this.compNameToApp.set(e,t)}registerComponent(e,t){if(this.compToApp.has(e))throw this.#_.create("This Comp is already registered to another App.");let r=t;if(!r){const t=e.localName;if(r=this.compNameToApp.get(t),!r)throw this.#_.create(`Could not find a parent App for component "${e.localName}"`)}return this.appToComps.get(r).add(e),this.compToApp.set(e,r),r}unregisterComponent(e){const t=this.compToApp.get(e);if(!t)return!1;const r=this.appToComps.get(t);return r?.delete(e),this.compToApp.delete(e),!0}getComps(e){const t=this.appToComps.get(e);if(!t)throw this.#_.create("Unable to find set of LightningOutComponents");return t}},L=new r("LightningOutComponent"),R=new Set(["autocapitalize","autocorrect","dir","enterkeyhint","inputmode","lang","spellcheck","style","title","translate"]),P=new Set(["aria-disabled","aria-hidden","aria-label","aria-live","aria-modal","aria-pressed","aria-valuemax","aria-valuemin","aria-valuenow"]),S=new Set(["accesskey","autofocus","draggable","exportparts","hidden","inert","nonce","part","slot","tabindex"]),A=new Set(["aria-activedescendant","aria-controls","aria-describedby","aria-details","aria-errormessage","aria-flowto","aria-labelledby","aria-owns"]);class O extends HTMLElement{_uuid=i();componentReady=!1;_standardName=f(this.localName);#C;#_=new m(this);#L=new E({parentElement:this});#R;#P=!0;#S=[];#A=new WeakMap;#O=0;constructor(){super(),L.trace("constructor: called",`_uuid: ${this._uuid}`)}_getComponentURL(){const e=this.#C;if(!e)throw this.#_.create("Undefined parent App!");return e._getComponentURL(this._standardName,this._uuid)}_init(){this.componentReady||this.#L.load(this._getComponentURL().href)}#v=e=>{if(e.data.id===this._uuid)switch(L.debug("#messageListener:",`this._uuid: ${this._uuid}`,`this._standardName: ${this._standardName}`,`event.data: ${JSON.stringify(e.data)}`),e.data.type){case o.ready:for(this.componentReady=!0;this.#S.length;){const e=this.#S.shift();e&&("add"===e.type?this.addEventListener(...e.args):"remove"===e.type?this.removeEventListener(...e.args):"dispatch"===e.type&&this.dispatchEvent(e.event))}super.dispatchEvent(new CustomEvent(s.component.ready));break;case o.getComponentData:this.#R=new _(this,this.#$,this.#U);break;case o.dispatchEvent:{const t=new CustomEvent(e.data.name,{detail:e.data.detail});super.dispatchEvent(t);break}case o.error:this.#_.dispatch(s.component.error,e.data.error);break;default:L.info("#messageListener:","Unknown message received:",{"event.data":e.data})}};_propertyChanged_style=e=>{const t=this.style,r=[];for(let e=0;e<t.length;e+=1){const i=t.item(e);i.startsWith("--")&&r.push(`${i}:${t.getPropertyValue(i)}`)}return r.join(";")};#$=e=>{const t=w(this,e);L.debug("#propObserverCallback:",{changes:e,propsToSend:t}),this.#P?(this.#P=!1,this.#L.postMessage({type:o.setComponentData,componentData:{id:this._uuid,name:this._standardName,props:t}})):this.#L.postMessage({type:o.setComponentProps,componentProps:t})};#U=(e,t)=>{const r=g(e);return L.debug("#shouldObserveCallback:",{attrOrPropName:e,attrName:r,isStandard:t}),t?!(!R.has(r)&&!P.has(r))||(S.has(r)||A.has(r)||r.startsWith("on")?(L.warn(`"${r}" will not be mirrored.`),!1):!!r.startsWith("data-mirror-")||(L.warn(`"${r}" will not be mirrored.`),!1)):!r.startsWith("_")&&!v(e)};addEventListener(e,t,r){if(e===s.component.ready&&this.componentReady){const e=new CustomEvent(s.component.ready);queueMicrotask(()=>{"function"==typeof t?t.call(this,e):t.handleEvent(e)})}if(e.startsWith("lo."))return void super.addEventListener(e,t,r);let i=this.#A.get(t);i||(i=`${e}_${this.#O++}`,this.#A.set(t,i)),this.componentReady?(super.addEventListener(...arguments),this.#L.postMessage({name:e,options:r,listenerKey:i,type:o.addEventListener})):(this.#S.push({type:"add",args:[e,t,r]}),L.debug("addEventListener:","#eventQueue pushed add args:",[e,t,r]))}dispatchEvent(e){if(e.type.startsWith("lo."))return L.debug(`dispatchEvent: dispatching event "${e.type}" to this Element only`),super.dispatchEvent(e);if(this.componentReady){L.debug(`dispatchEvent: dispatching event "${e.type}" to this Element and embedded Element inside the iframe`);const t=super.dispatchEvent(e);return this.#L.postMessage({name:e.type,detail:e.detail||{},type:o.dispatchEvent}),t}return L.debug(`dispatchEvent: component not ready, queueing event "${e.type}"`),this.#S.push({type:"dispatch",event:e}),!0}removeEventListener(e,t,r){if(e.startsWith("lo."))return void super.removeEventListener(...arguments);const i=this.#A.get(t);this.componentReady?(super.removeEventListener(...arguments),this.#L.postMessage({name:e,options:r,listenerKey:i,type:o.removeEventListener})):(this.#S.push({type:"remove",args:[e,t,r]}),L.debug("removeEventListener:","#eventQueue pushed remove args:",[e,t,r])),i&&this.#A.delete(t)}adoptedCallback(){throw this.remove(),this.#_.create("This component cannot be rerendered for security reasons.")}connectedCallback(){if(L.trace("connectedCallback: called",`_uuid: ${this._uuid}`),window.addEventListener("message",this.#v),this.hasChildNodes())throw this.#_.create("Should not have child nodes");this.style.display||="block",this.style.width||="100%",this.style.height||="100%",this.#C=C.registerComponent(this),this._standardName=this.#C._getComponentStandardName(this),this.#C.applicationReady&&this._init()}disconnectedCallback(){L.trace("disconnectedCallback: called",`_uuid: ${this._uuid}`),this.#L.destroy(),window.removeEventListener("message",this.#v),C.unregisterComponent(this),this.#R?.disconnect()}connectedMoveCallback(){}}class ${config;errorHandler;constructor(e,t){if(this.config=e,this.errorHandler=t,!this.config.origin)throw this.errorHandler('Missing "frontdoor-url" or "org-url" attribute')}getComponentURL(e,t){let r;if(void 0===this.config.sitePrefix){let t=e.includes("/")?this.config.lwrAppComp:e.includes(":")?this.config.lwrAppAura:void 0;if(void 0===t)throw this.errorHandler(`Invalid componentName: ${e}`);t=t.replace("/","%2F");const i=this.config.lang?`l/${this.config.lang}/`:"";r=new URL(`lwr/application/amd/0/${i}ai/${t}`,this.config.origin)}else r=new URL(`${this.config.sitePrefix}/lightning-out`,this.config.origin);return r.searchParams.set("componentName",e),this.#N(r,t)}getAuthURL(e){let t;if(void 0===this.config.sitePrefix){const e=this.config.lwrAppAuth.replace("/","%2F");t=new URL(`lwr/application/amd/0/ai/${e}`,this.config.origin)}else t=new URL(this.config.lwrPageAuth,this.config.origin);return this.#N(t,e)}getPageURL(e,t){const r=new URL(e,this.config.origin);return this.#N(r,t)}#N(e,t){return e.searchParams.set("parentElementId",t),e.searchParams.set("loAppOrigin",this.config.loAppOrigin),e.searchParams.set("loVersion","2.2.6"),this.config.appId&&e.searchParams.set("appId",this.config.appId),this.config.testMode&&e.searchParams.set("testMode","true"),this.config.designSystem&&e.searchParams.set("designSystem",this.config.designSystem),this.config.globalStyle&&e.searchParams.set("globalStyle",this.config.globalStyle),e}}const U=new r("LightningOutApplication"),N=new Set(["slds1","slds2","none"]),I=new Set(["frontdoorUrl","orgUrl"]);class k extends HTMLElement{_uuid=i();applicationReady=!1;#_=new m(this);#L=new E({parentElement:this});#I;#R;#k="";#T="lightningout/auth";#x="lightningout/container";#M="lightningout/auraContainer";#j="lightning/lightning.out.auth.html";#D="lightning/lightning.out.logout.html";#F="lightning/lightning.out.auth.error.html";#W="/secur/logout.jsp";lwrApplication;orgUrl;#K;frontdoorUrl;#z;appId;#H;components;#Q=new Map;sitePrefix;#Z;designSystem;#V;globalStyle;#q;#J=document.documentElement.lang??"";#G=!1;#X=null;#B=null;constructor(){super(),U.trace("constructor: called",`_uuid: ${this._uuid}`),C.registerApplication(this)}addEventListener(e,t,r){if(e===s.application.ready&&this.applicationReady){const e=new CustomEvent(s.application.ready);queueMicrotask(()=>{"function"==typeof t?t.call(this,e):t.handleEvent(e)})}super.addEventListener(e,t,r)}#Y(e){try{this.#K=new URL(e)}catch{throw this.#_.create(`Invalid org-url: ${e}`)}this.dispatchEvent(new CustomEvent(s.iframe.load,{detail:this.#K.origin}))}#ee(e){try{this.#z=new URL(e),this.#k=this.#z.origin;const t=this.#te(),r=this.#z.searchParams.has("otp")?"startURL":"retURL";this.#z.searchParams.set(r,t.pathname+t.search);const i=this.#re(this.#F);this.#z.searchParams.set("error-redirect-uri",i.pathname+i.search)}catch{throw this.#_.create(`Invalid frontdoor-url: ${e}`)}this.#L.load(this.#z.href)}#ie(){const e=new URL(this.#W,this.#k),t=this.#re(this.#D);e.searchParams.set("redirect-uri",t.pathname+t.search),this.#L.load(e.href)}getRouter(){if(void 0===this.#I){const e={origin:this.#k,lwrPageAuth:this.#j,lwrAppAuth:this.#T,lwrAppComp:this.#x,lwrAppAura:this.#M,sitePrefix:this.#Z,lang:this.#J,appId:this.#H,testMode:this.__testMode||!1,loAppOrigin:window.location.origin,designSystem:this.#V,globalStyle:this.#q};this.#I=new $(e,e=>this.#_.create(e))}return this.#I}_getComponentURL(e,t){return this.getRouter().getComponentURL(e,t)}#te(){return this.getRouter().getAuthURL(this._uuid)}#re(e){return this.getRouter().getPageURL(e,this._uuid)}#se=e=>{this.applicationReady=!0;const t=e.detail;return this.#k="string"==typeof t?t:t.lightningDomain||t.origin,this.#I=void 0,this.#G?(U.trace("#iframeLoaded: frontdoor-url refresh path"),this.#G=!1,void this.dispatchEvent(new CustomEvent(s.application.session.refresh))):this.#B?(U.trace("#iframeLoaded: sessionRefresh() reload path"),clearTimeout(this.#B.timeoutId),this.#B.resolve(),void(this.#B=null)):(U.trace("#iframeLoaded: initial-auth path"),this.#oe(),void this.dispatchEvent(new CustomEvent(s.application.ready)))};sessionExpiry(){if(void 0!==this.#K)return Promise.reject(this.#_.create(p));if(!this.applicationReady)return Promise.reject(this.#_.create(a));if(this.#X)return this.#X.promise;let e,t;const r=new Promise((r,i)=>{e=r,t=i}),i=window.setTimeout(()=>{const e=this.#X;this.#X=null,e?.reject(this.#_.create(h))},3e4);return this.#X={promise:r,resolve:e,reject:t,timeoutId:i},this.#L.postMessage({type:o.sessionExpiry,id:this._uuid}),r}sessionRefresh(){if(void 0!==this.#K)return Promise.reject(this.#_.create(p));if(!this.applicationReady)return Promise.reject(this.#_.create(a));if(this.#B)return this.#B.promise;let e,t;const r=new Promise((r,i)=>{e=r,t=i}),i=window.setTimeout(()=>{const e=this.#B;this.#B=null,e?.reject(this.#_.create(h))},6e4);return this.#B={promise:r,resolve:e,reject:t,timeoutId:i},this.#L.postMessage({type:o.authReload,id:this._uuid}),r}_handleSessionExpiryResponse(e){const t=this.#X;t&&(clearTimeout(t.timeoutId),this.#X=null,void 0!==e.error?t.reject(this.#_.create(e.error)):void 0===e.ttl?t.reject(this.#_.create(c)):t.resolve(e.ttl))}#ne(e){const t=this.#B;t&&(clearTimeout(t.timeoutId),this.#B=null,t.reject(this.#_.create(e)))}#ae(e){const t=this.#X;t&&(clearTimeout(t.timeoutId),this.#X=null,t.reject(this.#_.create(e)))}#he(e){this.#ne(e),this.#ae(e)}#le=e=>{this.#G=!1;const t=e.detail?.message;this.#he(t??l),this.#_.dispatch(s.application.error,e)};#ce=e=>{this.dispatchEvent(new CustomEvent(s.application.logout))};#de=e=>{this.dispatchEvent(new CustomEvent(s.application.auth.redirect,{detail:e.detail}))};#oe(){C.getComps(this).forEach(e=>{e._init()})}#$=e=>{const t={},r={};Object.keys(e).forEach(i=>{I.has(i)?r[i]=e[i]:t[i]=e[i]}),w(this,t),w(this,r)};#U=(e,t)=>t?"lang"===e:!e.startsWith("_")&&!v(e);_propertyChanged_lwrApplication=e=>{if(void 0!==e){const t=e.split("/");if(2!==t.length||!t[0]||!t[1])throw this.#_.create(`"${e}" is not a valid lwr-application name, must be of the form 'namespace/name'`);this.#x=e}};_propertyChanged_lang=e=>{this.#J=e??""};_propertyChanged_orgUrl=e=>{if(void 0!==e){if(void 0!==this.#z)throw this.#_.create('Can\'t set "org-url" because "frontdoor-url" is already set');""===e?this.#ie():this.#Y(e)}};_propertyChanged_frontdoorUrl=e=>{if(void 0===e)return;if(void 0!==this.#K)throw this.#_.create('Can\'t set "frontdoor-url" because "org-url" is already set');if(""===e)return this.#he(d),void this.#ie();const t=null!==this.#B;this.#he(d),this.#G=this.applicationReady&&!t,this.#ee(e)};_propertyChanged_sitePrefix=e=>{void 0!==e&&(this.#Z=e)};_propertyChanged_appId=e=>{void 0!==e&&(this.#H=e)};_propertyChanged_globalStyle=e=>{if(void 0!==e){const t=e.split(";").map(e=>e.trim()).filter(e=>e.length>0),r=[];for(const e of t){const[t,...i]=e.split(":"),s=t.trim();if(!s.startsWith("--"))throw this.#_.create(`Invalid global-style: "${s}" is not a CSS custom property. Only CSS custom properties (starting with --) are allowed.`);const o=i.join(":").trim();o&&r.push(`${s}:${o}`)}this.#q=r.join(";")+";"}};_propertyChanged_components=e=>{void 0!==e&&e.split(",").forEach(e=>{const[t,r]=e.split(" as ").map(e=>e.trim()),i=function(e){return e.includes("/")||e.includes(":")}(t);if(i&&t.includes(":"))throw this.#_.create(`"${t}" is not supported in components. Use kebab "namespace-name" in components and the "aura" attribute on the component element instead.`);const s=i?t:f(t),o=r||(i?function(e){const t=e.includes("/")?"/":":",r=e.indexOf(t);if(-1===r)throw u.create(`standardNameToElementName: "${e}" is not a valid component name - missing namespace separator.`);if(/-/.test(e))throw u.create(`standardNameToElementName: "${e}" is not a valid component name - must not contain hyphens.`);if(/^[A-Z]/.test(e))throw u.create(`standardNameToElementName: "${e}" is not a valid component name - first character must not be uppercase.`);const i=e.slice(0,r),s=e.slice(r+1);return`${i.replace(/([A-Z_])/g,"_$1").toLowerCase()}-${g(s)}`}(s):t);if(o&&!this.#Q.has(o)){this.#Q.set(o,s);try{C.registerComponentName(o,this),customElements.define(o,class extends O{})}catch(e){throw this.#_.create(`"${o}" is already registered. ${e}`)}}})};_propertyChanged_designSystem=e=>{if(void 0!==e&&!N.has(e))throw this.#_.create(`Invalid design-system: ${e}`);this.#V=e};_getComponentStandardName(e){const t=e.localName,r=e.hasAttribute("aura"),i=this.#Q.get(t);if(!i)throw this.#_.create(`"${t}" is not registered.`);return r&&i.includes("/")?i.replace("/",":"):i}get _compNames(){}connectedCallback(){if(U.trace("connectedCallback: called",`_uuid: ${this._uuid}`),this.hasChildNodes())throw this.#_.create("Should not have child nodes");this.style.display||="none",this.addEventListener(s.iframe.load,this.#se),this.addEventListener(s.iframe.error,this.#le),this.addEventListener(s.iframe.logout,this.#ce),this.addEventListener(s.iframe.auth.redirect,this.#de),this.#R=new _(this,this.#$,this.#U)}disconnectedCallback(){U.trace("disconnectedCallback: called",`_uuid: ${this._uuid}`),this.#he(d),this.#ie(),this.#L.destroy(),this.removeEventListener(s.iframe.load,this.#se),this.removeEventListener(s.iframe.error,this.#le),this.removeEventListener(s.iframe.logout,this.#ce),this.removeEventListener(s.iframe.auth.redirect,this.#de),this.#R?.disconnect()}connectedMoveCallback(){}}return r.level="debug",window.customElements.define("lightning-out-application",k),e.LightningOutApplication=k,e}({});
9
+ */const y=new r("PropertyObserver");class _{_el;_cb;_cache;_shouldObserve;_interceptedProps;_originalDescriptors;_observer;_changesPending;_pendingChanges;_attributeExceptions=new Map([["for","htmlFor"],["class","className"],["formnovalidate","formNoValidate"],["readonly","readOnly"],["maxlength","maxLength"],["minlength","minLength"],["contenteditable","contentEditable"],["spellcheck","spellcheck"],["novalidate","noValidate"],["autofocus","autofocus"],["autocomplete","autocomplete"],["crossorigin","crossOrigin"]]);constructor(e,t,r){if(!(e instanceof Element))throw new TypeError("Target must be a DOM Element");if("function"!=typeof t)throw new TypeError("Callback must be a function");if(r&&"function"!=typeof r)throw new TypeError("shouldObserve callback must be a function");this._el=e,this._cb=t,this._cache=new Map,this._shouldObserve=r||((e,t)=>!1===t),this._interceptedProps=new Set,this._originalDescriptors=new Map,this._changesPending=!1,this._pendingChanges={},this._initialScan(),this._setupMutationObserver()}disconnect(){this._observer&&this._observer.disconnect();for(const[e,t]of this._originalDescriptors)Object.defineProperty(this._el,e,t);this._cache.clear(),this._interceptedProps.clear(),this._originalDescriptors.clear(),this._pendingChanges={},this._changesPending=!1}_initialScan(){const e={};for(const t of Array.from(this._el.attributes)){const r=t.name,i=this._isStandardAttribute(r);if(!this._shouldObserve(r,i))continue;const s=this._attributeNameToPropName(r),o=t.value;e[s]=o,this._cache.set(s,o),this._installPropertyInterceptor(s)}for(const t of Object.getOwnPropertyNames(this._el)){const r=this._isStandardProperty(t);if(this._cache.has(t)||!this._shouldObserve(t,r))continue;const i=this._el[t];e[t]=i,this._cache.set(t,i),this._installPropertyInterceptor(t)}if(Object.keys(e).length>0)try{this._cb(e)}catch(e){y.error("Error in initial PropertyObserver callback:",e)}}_setupMutationObserver(){this._observer=new MutationObserver(e=>{const t={};for(const r of e)if("attributes"===r.type&&r.attributeName){const e=r.attributeName,i=this._isStandardAttribute(e);if(!this._shouldObserve(e,i))continue;const s=this._attributeNameToPropName(e),o=this._el.getAttribute(e);o!==this._cache.get(s)&&(t[s]=o,this._cache.set(s,o),this._interceptedProps.has(s)||this._installPropertyInterceptor(s))}Object.keys(t).length>0&&this._batchChanges(t)}),this._observer.observe(this._el,{attributes:!0,attributeOldValue:!1})}_installPropertyInterceptor(e){if(this._interceptedProps.has(e))return;const t=Object.getOwnPropertyDescriptor(this._el,e)||{value:this._el[e],writable:!0,enumerable:!0,configurable:!0};this._originalDescriptors.set(e,t);const r={enumerable:t.enumerable,configurable:t.configurable,get:t.get||(()=>t.value),set:r=>{r!==this._cache.get(e)&&(t.set?t.set.call(this._el,r):t.value=r,this._cache.set(e,r),this._batchChanges({[e]:r}))}};Object.defineProperty(this._el,e,r),this._interceptedProps.add(e)}_batchChanges(e){Object.assign(this._pendingChanges,e),this._changesPending||(this._changesPending=!0,queueMicrotask(()=>{this._changesPending=!1;const e={...this._pendingChanges};this._pendingChanges={};try{this._cb(e)}catch(e){y.error("Error in PropertyObserver callback:",e)}}))}_attributeNameToPropName(e){return this._attributeExceptions.has(e)?this._attributeExceptions.get(e):e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}_isStandardAttribute(e){if(e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("on"))return!0;const t=this._attributeNameToPropName(e);return this._isStandardProperty(t)}_isStandardProperty(e){return e in HTMLElement.prototype}}const C=new class{#_=new m("LightningOutRegistry");appToComps=new WeakMap;compToApp=new WeakMap;compNameToApp=new Map;registerApplication(e){this.appToComps.has(e)||this.appToComps.set(e,new Set)}registerComponentName(e,t){if(this.compNameToApp.has(e))throw this.#_.create(`"${e}" is already registered to another App.`);this.compNameToApp.set(e,t)}registerComponent(e,t){if(this.compToApp.has(e))throw this.#_.create("This Comp is already registered to another App.");let r=t;if(!r){const t=e.localName;if(r=this.compNameToApp.get(t),!r)throw this.#_.create(`Could not find a parent App for component "${e.localName}"`)}return this.appToComps.get(r).add(e),this.compToApp.set(e,r),r}unregisterComponent(e){const t=this.compToApp.get(e);if(!t)return!1;const r=this.appToComps.get(t);return r?.delete(e),this.compToApp.delete(e),!0}getComps(e){const t=this.appToComps.get(e);if(!t)throw this.#_.create("Unable to find set of LightningOutComponents");return t}},L=new r("LightningOutComponent"),R=new Set(["autocapitalize","autocorrect","dir","enterkeyhint","inputmode","lang","spellcheck","style","title","translate"]),P=new Set(["aria-disabled","aria-hidden","aria-label","aria-live","aria-modal","aria-pressed","aria-valuemax","aria-valuemin","aria-valuenow"]),S=new Set(["accesskey","autofocus","draggable","exportparts","hidden","inert","nonce","part","slot","tabindex"]),A=new Set(["aria-activedescendant","aria-controls","aria-describedby","aria-details","aria-errormessage","aria-flowto","aria-labelledby","aria-owns"]);class O extends HTMLElement{_uuid=i();componentReady=!1;_standardName=f(this.localName);#C;#_=new m(this);#L=new E({parentElement:this});#R;#P=!0;#S=[];#A=new WeakMap;#O=0;constructor(){super(),L.trace("constructor: called",`_uuid: ${this._uuid}`)}_getComponentURL(){const e=this.#C;if(!e)throw this.#_.create("Undefined parent App!");return e._getComponentURL(this._standardName,this._uuid)}_init(){this.componentReady||this.#L.load(this._getComponentURL().href)}#v=e=>{if(e.data.id===this._uuid)switch(L.debug("#messageListener:",`this._uuid: ${this._uuid}`,`this._standardName: ${this._standardName}`,`event.data: ${JSON.stringify(e.data)}`),e.data.type){case o.ready:for(this.componentReady=!0;this.#S.length;){const e=this.#S.shift();e&&("add"===e.type?this.addEventListener(...e.args):"remove"===e.type?this.removeEventListener(...e.args):"dispatch"===e.type&&this.dispatchEvent(e.event))}super.dispatchEvent(new CustomEvent(s.component.ready));break;case o.getComponentData:this.#R=new _(this,this.#$,this.#U);break;case o.dispatchEvent:{const t=new CustomEvent(e.data.name,{detail:e.data.detail});super.dispatchEvent(t);break}case o.error:this.#_.dispatch(s.component.error,e.data.error);break;default:L.info("#messageListener:","Unknown message received:",{"event.data":e.data})}};_propertyChanged_style=e=>{const t=this.style,r=[];for(let e=0;e<t.length;e+=1){const i=t.item(e);i.startsWith("--")&&r.push(`${i}:${t.getPropertyValue(i)}`)}return r.join(";")};#$=e=>{const t=w(this,e);L.debug("#propObserverCallback:",{changes:e,propsToSend:t}),this.#P?(this.#P=!1,this.#L.postMessage({type:o.setComponentData,componentData:{id:this._uuid,name:this._standardName,props:t}})):this.#L.postMessage({type:o.setComponentProps,componentProps:t})};#U=(e,t)=>{const r=g(e);return L.debug("#shouldObserveCallback:",{attrOrPropName:e,attrName:r,isStandard:t}),t?!(!R.has(r)&&!P.has(r))||(S.has(r)||A.has(r)||r.startsWith("on")?(L.warn(`"${r}" will not be mirrored.`),!1):!!r.startsWith("data-mirror-")||(L.warn(`"${r}" will not be mirrored.`),!1)):!r.startsWith("_")&&!v(e)};addEventListener(e,t,r){if(e===s.component.ready&&this.componentReady){const e=new CustomEvent(s.component.ready);queueMicrotask(()=>{"function"==typeof t?t.call(this,e):t.handleEvent(e)})}if(e.startsWith("lo."))return void super.addEventListener(e,t,r);let i=this.#A.get(t);i||(i=`${e}_${this.#O++}`,this.#A.set(t,i)),this.componentReady?(super.addEventListener(...arguments),this.#L.postMessage({name:e,options:r,listenerKey:i,type:o.addEventListener})):(this.#S.push({type:"add",args:[e,t,r]}),L.debug("addEventListener:","#eventQueue pushed add args:",[e,t,r]))}dispatchEvent(e){if(e.type.startsWith("lo."))return L.debug(`dispatchEvent: dispatching event "${e.type}" to this Element only`),super.dispatchEvent(e);if(this.componentReady){L.debug(`dispatchEvent: dispatching event "${e.type}" to this Element and embedded Element inside the iframe`);const t=super.dispatchEvent(e);return this.#L.postMessage({name:e.type,detail:e.detail||{},type:o.dispatchEvent}),t}return L.debug(`dispatchEvent: component not ready, queueing event "${e.type}"`),this.#S.push({type:"dispatch",event:e}),!0}removeEventListener(e,t,r){if(e.startsWith("lo."))return void super.removeEventListener(...arguments);const i=this.#A.get(t);this.componentReady?(super.removeEventListener(...arguments),this.#L.postMessage({name:e,options:r,listenerKey:i,type:o.removeEventListener})):(this.#S.push({type:"remove",args:[e,t,r]}),L.debug("removeEventListener:","#eventQueue pushed remove args:",[e,t,r])),i&&this.#A.delete(t)}adoptedCallback(){throw this.remove(),this.#_.create("This component cannot be rerendered for security reasons.")}connectedCallback(){if(L.trace("connectedCallback: called",`_uuid: ${this._uuid}`),window.addEventListener("message",this.#v),this.hasChildNodes())throw this.#_.create("Should not have child nodes");this.style.display||="block",this.style.width||="100%",this.style.height||="100%",this.#C=C.registerComponent(this),this._standardName=this.#C._getComponentStandardName(this),this.#C.applicationReady&&this._init()}disconnectedCallback(){L.trace("disconnectedCallback: called",`_uuid: ${this._uuid}`),this.#L.destroy(),window.removeEventListener("message",this.#v),C.unregisterComponent(this),this.#R?.disconnect()}connectedMoveCallback(){}}class ${config;errorHandler;constructor(e,t){if(this.config=e,this.errorHandler=t,!this.config.origin)throw this.errorHandler('Missing "frontdoor-url" or "org-url" attribute')}getComponentURL(e,t){let r;if(void 0===this.config.sitePrefix){let t=e.includes("/")?this.config.lwrAppComp:e.includes(":")?this.config.lwrAppAura:void 0;if(void 0===t)throw this.errorHandler(`Invalid componentName: ${e}`);t=t.replace("/","%2F");const i=this.config.lang?`l/${this.config.lang}/`:"";r=new URL(`lwr/application/amd/0/${i}ai/${t}`,this.config.origin)}else r=new URL(`${this.config.sitePrefix}/lightning-out`,this.config.origin);return r.searchParams.set("componentName",e),this.#N(r,t)}getAuthURL(e){let t;if(void 0===this.config.sitePrefix){const e=this.config.lwrAppAuth.replace("/","%2F");t=new URL(`lwr/application/amd/0/ai/${e}`,this.config.origin)}else t=new URL(this.config.lwrPageAuth,this.config.origin);return this.#N(t,e)}getPageURL(e,t){const r=new URL(e,this.config.origin);return this.#N(r,t)}#N(e,t){return e.searchParams.set("parentElementId",t),e.searchParams.set("loAppOrigin",this.config.loAppOrigin),e.searchParams.set("loVersion","2.2.7-rc.0"),this.config.appId&&e.searchParams.set("appId",this.config.appId),this.config.testMode&&e.searchParams.set("testMode","true"),this.config.designSystem&&e.searchParams.set("designSystem",this.config.designSystem),this.config.globalStyle&&e.searchParams.set("globalStyle",this.config.globalStyle),e}}const U=new r("LightningOutApplication"),N=new Set(["slds1","slds2","none"]),I=new Set(["frontdoorUrl","orgUrl"]);class k extends HTMLElement{_uuid=i();applicationReady=!1;#_=new m(this);#L=new E({parentElement:this});#I;#R;#k="";#T="lightningout/auth";#x="lightningout/container";#M="lightningout/auraContainer";#j="lightning/lightning.out.auth.html";#D="lightning/lightning.out.logout.html";#F="lightning/lightning.out.auth.error.html";#W="/secur/logout.jsp";lwrApplication;orgUrl;#z;frontdoorUrl;#H;appId;#K;components;#Q=new Map;sitePrefix;#Z;designSystem;#V;globalStyle;#q;#J=document.documentElement.lang??"";#G=!1;#X=null;#B=null;constructor(){super(),U.trace("constructor: called",`_uuid: ${this._uuid}`),C.registerApplication(this)}addEventListener(e,t,r){if(e===s.application.ready&&this.applicationReady){const e=new CustomEvent(s.application.ready);queueMicrotask(()=>{"function"==typeof t?t.call(this,e):t.handleEvent(e)})}super.addEventListener(e,t,r)}#Y(e){try{this.#z=new URL(e)}catch{throw this.#_.create(`Invalid org-url: ${e}`)}this.dispatchEvent(new CustomEvent(s.iframe.load,{detail:this.#z.origin}))}#ee(e){try{this.#H=new URL(e),this.#k=this.#H.origin;const t=this.#te(),r=this.#H.searchParams.has("otp")?"startURL":"retURL";this.#H.searchParams.set(r,t.pathname+t.search);const i=this.#re(this.#F);this.#H.searchParams.set("error-redirect-uri",i.pathname+i.search)}catch{throw this.#_.create(`Invalid frontdoor-url: ${e}`)}this.#L.load(this.#H.href)}#ie(){const e=new URL(this.#W,this.#k),t=this.#re(this.#D);e.searchParams.set("redirect-uri",t.pathname+t.search),this.#L.load(e.href)}getRouter(){if(void 0===this.#I){const e={origin:this.#k,lwrPageAuth:this.#j,lwrAppAuth:this.#T,lwrAppComp:this.#x,lwrAppAura:this.#M,sitePrefix:this.#Z,lang:this.#J,appId:this.#K,testMode:this.__testMode||!1,loAppOrigin:window.location.origin,designSystem:this.#V,globalStyle:this.#q};this.#I=new $(e,e=>this.#_.create(e))}return this.#I}_getComponentURL(e,t){return this.getRouter().getComponentURL(e,t)}#te(){return this.getRouter().getAuthURL(this._uuid)}#re(e){return this.getRouter().getPageURL(e,this._uuid)}#se=e=>{this.applicationReady=!0;const t=e.detail;return this.#k="string"==typeof t?t:t.lightningDomain||t.origin,this.#I=void 0,this.#G?(U.trace("#iframeLoaded: frontdoor-url refresh path"),this.#G=!1,void this.dispatchEvent(new CustomEvent(s.application.session.refresh))):this.#B?(U.trace("#iframeLoaded: sessionRefresh() reload path"),clearTimeout(this.#B.timeoutId),this.#B.resolve(),void(this.#B=null)):(U.trace("#iframeLoaded: initial-auth path"),this.#oe(),void this.dispatchEvent(new CustomEvent(s.application.ready)))};sessionExpiry(){if(void 0!==this.#z)return Promise.reject(this.#_.create(p));if(!this.applicationReady)return Promise.reject(this.#_.create(a));if(this.#X)return this.#X.promise;let e,t;const r=new Promise((r,i)=>{e=r,t=i}),i=window.setTimeout(()=>{const e=this.#X;this.#X=null,e?.reject(this.#_.create(h))},3e4);return this.#X={promise:r,resolve:e,reject:t,timeoutId:i},this.#L.postMessage({type:o.sessionExpiry,id:this._uuid}),r}sessionRefresh(){if(void 0!==this.#z)return Promise.reject(this.#_.create(p));if(!this.applicationReady)return Promise.reject(this.#_.create(a));if(this.#B)return this.#B.promise;let e,t;const r=new Promise((r,i)=>{e=r,t=i}),i=window.setTimeout(()=>{const e=this.#B;this.#B=null,e?.reject(this.#_.create(h))},6e4);return this.#B={promise:r,resolve:e,reject:t,timeoutId:i},this.#L.postMessage({type:o.authReload,id:this._uuid}),r}_handleSessionExpiryResponse(e){const t=this.#X;t&&(clearTimeout(t.timeoutId),this.#X=null,void 0!==e.error?t.reject(this.#_.create(e.error)):void 0===e.ttl?t.reject(this.#_.create(c)):t.resolve(e.ttl))}#ne(e){const t=this.#B;t&&(clearTimeout(t.timeoutId),this.#B=null,t.reject(this.#_.create(e)))}#ae(e){const t=this.#X;t&&(clearTimeout(t.timeoutId),this.#X=null,t.reject(this.#_.create(e)))}#he(e){this.#ne(e),this.#ae(e)}#le=e=>{this.#G=!1;const t=e.detail?.message;this.#he(t??l),this.#_.dispatch(s.application.error,e)};#ce=e=>{this.dispatchEvent(new CustomEvent(s.application.logout))};#de=e=>{this.dispatchEvent(new CustomEvent(s.application.auth.redirect,{detail:e.detail}))};#oe(){C.getComps(this).forEach(e=>{e._init()})}#$=e=>{const t={},r={};Object.keys(e).forEach(i=>{I.has(i)?r[i]=e[i]:t[i]=e[i]}),w(this,t),w(this,r)};#U=(e,t)=>t?"lang"===e:!e.startsWith("_")&&!v(e);_propertyChanged_lwrApplication=e=>{if(void 0!==e){const t=e.split("/");if(2!==t.length||!t[0]||!t[1])throw this.#_.create(`"${e}" is not a valid lwr-application name, must be of the form 'namespace/name'`);this.#x=e}};_propertyChanged_lang=e=>{this.#J=e??""};_propertyChanged_orgUrl=e=>{if(void 0!==e){if(void 0!==this.#H)throw this.#_.create('Can\'t set "org-url" because "frontdoor-url" is already set');""===e?this.#ie():this.#Y(e)}};_propertyChanged_frontdoorUrl=e=>{if(void 0===e)return;if(void 0!==this.#z)throw this.#_.create('Can\'t set "frontdoor-url" because "org-url" is already set');if(""===e)return this.#he(d),void this.#ie();const t=null!==this.#B;this.#he(d),this.#G=this.applicationReady&&!t,this.#ee(e)};_propertyChanged_sitePrefix=e=>{void 0!==e&&(this.#Z=e)};_propertyChanged_appId=e=>{void 0!==e&&(this.#K=e)};_propertyChanged_globalStyle=e=>{if(void 0!==e){const t=e.split(";").map(e=>e.trim()).filter(e=>e.length>0),r=[];for(const e of t){const[t,...i]=e.split(":"),s=t.trim();if(!s.startsWith("--"))throw this.#_.create(`Invalid global-style: "${s}" is not a CSS custom property. Only CSS custom properties (starting with --) are allowed.`);const o=i.join(":").trim();o&&r.push(`${s}:${o}`)}this.#q=r.join(";")+";"}};_propertyChanged_components=e=>{void 0!==e&&e.split(",").forEach(e=>{const[t,r]=e.split(" as ").map(e=>e.trim()),i=function(e){return e.includes("/")||e.includes(":")}(t);if(i&&t.includes(":"))throw this.#_.create(`"${t}" is not supported in components. Use kebab "namespace-name" in components and the "aura" attribute on the component element instead.`);const s=i?t:f(t),o=r||(i?function(e){const t=e.includes("/")?"/":":",r=e.indexOf(t);if(-1===r)throw u.create(`standardNameToElementName: "${e}" is not a valid component name - missing namespace separator.`);if(/-/.test(e))throw u.create(`standardNameToElementName: "${e}" is not a valid component name - must not contain hyphens.`);if(/^[A-Z]/.test(e))throw u.create(`standardNameToElementName: "${e}" is not a valid component name - first character must not be uppercase.`);const i=e.slice(0,r),s=e.slice(r+1);return`${i.replace(/([A-Z_])/g,"_$1").toLowerCase()}-${g(s)}`}(s):t);if(o&&!this.#Q.has(o)){this.#Q.set(o,s);try{C.registerComponentName(o,this),customElements.define(o,class extends O{})}catch(e){throw this.#_.create(`"${o}" is already registered. ${e}`)}}})};_propertyChanged_designSystem=e=>{if(void 0!==e&&!N.has(e))throw this.#_.create(`Invalid design-system: ${e}`);this.#V=e};_getComponentStandardName(e){const t=e.localName,r=e.hasAttribute("aura"),i=this.#Q.get(t);if(!i)throw this.#_.create(`"${t}" is not registered.`);return r&&i.includes("/")?i.replace("/",":"):i}get _compNames(){}connectedCallback(){if(U.trace("connectedCallback: called",`_uuid: ${this._uuid}`),this.hasChildNodes())throw this.#_.create("Should not have child nodes");this.style.display||="none",this.addEventListener(s.iframe.load,this.#se),this.addEventListener(s.iframe.error,this.#le),this.addEventListener(s.iframe.logout,this.#ce),this.addEventListener(s.iframe.auth.redirect,this.#de),this.#R=new _(this,this.#$,this.#U)}disconnectedCallback(){U.trace("disconnectedCallback: called",`_uuid: ${this._uuid}`),this.#he(d),this.#ie(),this.#L.destroy(),this.removeEventListener(s.iframe.load,this.#se),this.removeEventListener(s.iframe.error,this.#le),this.removeEventListener(s.iframe.logout,this.#ce),this.removeEventListener(s.iframe.auth.redirect,this.#de),this.#R?.disconnect()}connectedMoveCallback(){}}return r.level="debug",window.customElements.define("lightning-out-application",k),e.LightningOutApplication=k,e}({});
10
10
  //# sourceMappingURL=index.iife.prod.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lightning-out",
3
- "version": "2.2.6",
3
+ "version": "2.2.7-rc.0",
4
4
  "private": false,
5
5
  "description": "Lightning Out 2.0 for Salesforce",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "dependencies": {},
24
24
  "devDependencies": {
25
- "core": "2.2.6",
26
- "utils": "2.2.6"
25
+ "core": "2.2.7-rc.0",
26
+ "utils": "2.2.7-rc.0"
27
27
  },
28
28
  "files": [
29
29
  "dist/",