@descope/web-component 3.38.2 → 3.39.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
- {"version":3,"file":"state.js","sources":["../../../src/lib/helpers/state.ts"],"sourcesContent":["import { createIsChanged } from './helpers';\n\ntype StateObject = Record<string, any>;\n\n// eslint-disable-next-line import/exports-last\nexport type SubscribeCb<T> = (\n state: T,\n prevState: T,\n isChanged: ReturnType<typeof createIsChanged>,\n) => void | Promise<void>;\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\ntype Subscribers<T> = Record<string, SubscribeCb<T>>;\n\nexport type IsChanged<T> = Parameters<SubscribeCb<T>>[2];\n\nfunction compareObjects(\n objectA: Record<string, any>,\n objectB: Record<string, any>,\n) {\n const aProperties = Object.getOwnPropertyNames(objectA);\n const bProperties = Object.getOwnPropertyNames(objectB);\n\n if (aProperties.length !== bProperties.length) {\n return false;\n }\n\n for (let i = 0; i < aProperties.length; i += 1) {\n const propName = aProperties[i];\n\n const valA = objectA[propName];\n const valB = objectB[propName];\n if (valA === null || valB === null) {\n if (valA !== valB) {\n return false;\n }\n } else if (typeof valA === 'object' && typeof valB === 'object') {\n // compare nested objects\n if (!compareObjects(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\nclass State<T extends StateObject> {\n #state: T;\n\n #subscribers: Subscribers<T> = {};\n\n #token = 0;\n\n #forceUpdateAll = true;\n\n constructor(init: T = {} as T, { forceUpdate = false } = {}) {\n this.#state = init;\n this.#forceUpdateAll = forceUpdate;\n }\n\n get current() {\n return { ...this.#state };\n }\n\n set forceUpdate(forceUpdate: boolean) {\n this.#forceUpdateAll = forceUpdate;\n }\n\n update = (newState: Partial<T> | UpdateStateCb<T>) => {\n const internalNewState =\n typeof newState === 'function' ? newState(this.#state) : newState;\n\n const nextState = { ...this.#state, ...internalNewState };\n if (this.#forceUpdateAll || !compareObjects(this.#state, nextState)) {\n const prevState = this.#state;\n this.#state = nextState;\n Object.freeze(this.#state);\n\n setTimeout(() => {\n Object.values(this.#subscribers).forEach((cb) =>\n cb(nextState, prevState, createIsChanged(nextState, prevState)),\n );\n }, 0);\n }\n };\n\n subscribe(cb: SubscribeCb<T>) {\n this.#token += 1;\n this.#subscribers[this.#token] = cb;\n\n return this.#token.toString();\n }\n\n unsubscribe(token: string) {\n const isFound = !!this.#subscribers[token];\n\n if (isFound) {\n delete this.#subscribers[token];\n }\n\n return isFound;\n }\n\n unsubscribeAll() {\n this.#subscribers = {};\n\n return true;\n }\n}\n\nexport default State;\n"],"names":["compareObjects","objectA","objectB","aProperties","Object","getOwnPropertyNames","bProperties","length","i","propName","valA","valB","State","constructor","init","forceUpdate","_State_state","set","this","_State_subscribers","_State_token","_State_forceUpdateAll","update","newState","internalNewState","__classPrivateFieldGet","nextState","prevState","__classPrivateFieldSet","freeze","setTimeout","values","forEach","cb","createIsChanged","current","assign","subscribe","toString","unsubscribe","token","isFound","unsubscribeAll"],"mappings":"sIAeA,SAASA,EACPC,EACAC,GAEA,MAAMC,EAAcC,OAAOC,oBAAoBJ,GACzCK,EAAcF,OAAOC,oBAAoBH,GAE/C,GAAIC,EAAYI,SAAWD,EAAYC,OACrC,OAAO,EAGT,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAAYI,OAAQC,GAAK,EAAG,CAC9C,MAAMC,EAAWN,EAAYK,GAEvBE,EAAOT,EAAQQ,GACfE,EAAOT,EAAQO,GACrB,GAAa,OAATC,GAA0B,OAATC,GACnB,GAAID,IAASC,EACX,OAAO,OAEJ,GAAoB,iBAATD,GAAqC,iBAATC,GAE5C,IAAKX,EAAeU,EAAMC,GACxB,OAAO,OAEJ,GAAID,IAASC,EAClB,OAAO,CAEV,CAED,OAAO,CACT,CAEA,MAAMC,EASJ,WAAAC,CAAYC,EAAU,CAAO,GAAEC,YAAEA,GAAc,GAAU,IARzDC,EAAUC,IAAAC,UAAA,GAEVC,EAAAF,IAAAC,KAA+B,CAAA,GAE/BE,EAAAH,IAAAC,KAAS,GAETG,EAAAJ,IAAAC,MAAkB,GAelBA,KAAAI,OAAUC,IACR,MAAMC,EACgB,mBAAbD,EAA0BA,EAASE,EAAAP,KAAWF,EAAA,MAAIO,EAErDG,iCAAiBD,EAAAP,aAAgBM,GACvC,GAAIC,EAAAP,KAAoBG,EAAA,OAAKrB,EAAeyB,EAAAP,KAAWF,EAAA,KAAEU,GAAY,CACnE,MAAMC,EAAYF,EAAAP,YAClBU,EAAAV,KAAIF,EAAUU,EAAS,KACvBtB,OAAOyB,OAAOJ,EAAAP,KAAIF,EAAA,MAElBc,YAAW,KACT1B,OAAO2B,OAAON,EAAAP,KAAIC,EAAA,MAAea,SAASC,GACxCA,EAAGP,EAAWC,EAAWO,EAAgBR,EAAWC,KACrD,GACA,EACJ,GA3BDC,EAAAV,KAAIF,EAAUF,EAAI,KAClBc,EAAAV,KAAIG,EAAmBN,EAAW,IACnC,CAED,WAAIoB,GACF,OAAY/B,OAAAgC,OAAA,GAAAX,EAAAP,KAAIF,EAAA,KACjB,CAED,eAAID,CAAYA,GACda,EAAAV,KAAIG,EAAmBN,EAAW,IACnC,CAoBD,SAAAsB,CAAUJ,GAIR,OAHAL,EAAeV,KAAAE,EAAAK,EAAAP,KAAAE,EAAA,KAAA,OACfK,EAAAP,YAAkBO,EAAAP,KAAWE,EAAA,MAAIa,EAE1BR,EAAAP,KAAIE,EAAA,KAAQkB,UACpB,CAED,WAAAC,CAAYC,GACV,MAAMC,IAAYhB,EAAAP,KAAiBC,EAAA,KAACqB,GAMpC,OAJIC,UACKhB,EAAAP,KAAIC,EAAA,KAAcqB,GAGpBC,CACR,CAED,cAAAC,GAGE,OAFAd,EAAAV,KAAIC,EAAgB,CAAE,EAAA,MAEf,CACR"}
1
+ {"version":3,"file":"state.js","sources":["../../../src/lib/helpers/state.ts"],"sourcesContent":["import { createIsChanged } from './helpers';\n\ntype StateObject = Record<string, any>;\n\n// eslint-disable-next-line import/exports-last\nexport type SubscribeCb<T> = (\n state: T,\n prevState: T,\n isChanged: ReturnType<typeof createIsChanged>,\n) => void | Promise<void>;\n\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\n\ntype Subscribers<T> = Record<\n string,\n { cb: SubscribeCb<ReturnType<SelectorCb<T>>>; selector: SelectorCb<T> }\n>;\n\nexport type SelectorCb<T> = (state: T) => any;\n\nexport type IsChanged<T> = Parameters<SubscribeCb<T>>[2];\n\nfunction isPlainObject(maybeObj: any) {\n if (typeof maybeObj !== 'object' || maybeObj === null) return false;\n const proto = Object.getPrototypeOf(maybeObj);\n return proto === Object.prototype || proto === null;\n}\n\nfunction compareObjects(\n objectA: Record<string, any>,\n objectB: Record<string, any>,\n) {\n const aProperties = Object.getOwnPropertyNames(objectA);\n const bProperties = Object.getOwnPropertyNames(objectB);\n\n if (aProperties.length !== bProperties.length) {\n return false;\n }\n\n for (let i = 0; i < aProperties.length; i += 1) {\n const propName = aProperties[i];\n\n const valA = objectA[propName];\n const valB = objectB[propName];\n if (valA === null || valB === null) {\n if (valA !== valB) {\n return false;\n }\n } else if (typeof valA === 'object' && typeof valB === 'object') {\n // compare nested objects\n if (!compareObjects(valA, valB)) {\n return false;\n }\n } else if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\nclass State<T extends StateObject> {\n #state: T;\n\n #subscribers: Subscribers<T> = {};\n\n #token = 0;\n\n #forceUpdateAll = true;\n\n constructor(init: T = {} as T, { forceUpdate = false } = {}) {\n this.#state = init;\n this.#forceUpdateAll = forceUpdate;\n }\n\n get current() {\n return { ...this.#state };\n }\n\n set forceUpdate(forceUpdate: boolean) {\n this.#forceUpdateAll = forceUpdate;\n }\n\n update = (newState: Partial<T> | UpdateStateCb<T>) => {\n const internalNewState =\n typeof newState === 'function' ? newState(this.#state) : newState;\n\n const nextState = { ...this.#state, ...internalNewState };\n const prevState = this.#state;\n this.#state = nextState;\n Object.freeze(this.#state);\n\n setTimeout(() => {\n Object.values(this.#subscribers).forEach(({ cb, selector }) => {\n const partialPrevState = selector(prevState);\n const partialNextState = selector(nextState);\n\n if (\n this.#forceUpdateAll ||\n (isPlainObject(partialNextState)\n ? !compareObjects(partialPrevState, partialNextState)\n : partialPrevState !== partialNextState)\n ) {\n cb(\n partialNextState,\n partialPrevState,\n createIsChanged(partialNextState, partialPrevState),\n );\n }\n });\n }, 0);\n };\n\n subscribe<R extends any | Partial<T>>(\n cb: SubscribeCb<R>,\n selector: (state: T) => R = (state: T) => state as unknown as R,\n ) {\n this.#token += 1;\n this.#subscribers[this.#token] = { cb, selector };\n\n return this.#token.toString();\n }\n\n unsubscribe(token: string) {\n const isFound = !!this.#subscribers[token];\n\n if (isFound) {\n delete this.#subscribers[token];\n }\n\n return isFound;\n }\n\n unsubscribeAll() {\n this.#subscribers = {};\n\n return true;\n }\n}\n\nexport default State;\n"],"names":["compareObjects","objectA","objectB","aProperties","Object","getOwnPropertyNames","bProperties","length","i","propName","valA","valB","State","constructor","init","forceUpdate","_State_state","set","this","_State_subscribers","_State_token","_State_forceUpdateAll","update","newState","internalNewState","__classPrivateFieldGet","nextState","prevState","__classPrivateFieldSet","freeze","setTimeout","values","forEach","cb","selector","partialPrevState","partialNextState","maybeObj","proto","getPrototypeOf","prototype","isPlainObject","createIsChanged","current","assign","subscribe","state","toString","unsubscribe","token","isFound","unsubscribeAll"],"mappings":"sIA4BA,SAASA,EACPC,EACAC,GAEA,MAAMC,EAAcC,OAAOC,oBAAoBJ,GACzCK,EAAcF,OAAOC,oBAAoBH,GAE/C,GAAIC,EAAYI,SAAWD,EAAYC,OACrC,OAAO,EAGT,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAAYI,OAAQC,GAAK,EAAG,CAC9C,MAAMC,EAAWN,EAAYK,GAEvBE,EAAOT,EAAQQ,GACfE,EAAOT,EAAQO,GACrB,GAAa,OAATC,GAA0B,OAATC,GACnB,GAAID,IAASC,EACX,OAAO,OAEJ,GAAoB,iBAATD,GAAqC,iBAATC,GAE5C,IAAKX,EAAeU,EAAMC,GACxB,OAAO,OAEJ,GAAID,IAASC,EAClB,OAAO,CAEV,CAED,OAAO,CACT,CAEA,MAAMC,EASJ,WAAAC,CAAYC,EAAU,CAAO,GAAEC,YAAEA,GAAc,GAAU,IARzDC,EAAUC,IAAAC,UAAA,GAEVC,EAAAF,IAAAC,KAA+B,CAAA,GAE/BE,EAAAH,IAAAC,KAAS,GAETG,EAAAJ,IAAAC,MAAkB,GAelBA,KAAAI,OAAUC,IACR,MAAMC,EACgB,mBAAbD,EAA0BA,EAASE,EAAAP,KAAWF,EAAA,MAAIO,EAErDG,iCAAiBD,EAAAP,aAAgBM,GACjCG,EAAYF,EAAAP,YAClBU,EAAAV,KAAIF,EAAUU,EAAS,KACvBtB,OAAOyB,OAAOJ,EAAAP,KAAIF,EAAA,MAElBc,YAAW,KACT1B,OAAO2B,OAAON,EAAAP,aAAmBc,SAAQ,EAAGC,KAAIC,eAC9C,MAAMC,EAAmBD,EAASP,GAC5BS,EAAmBF,EAASR,IAGhCD,EAAAP,KAAoBG,EAAA,OA5E9B,SAAuBgB,GACrB,GAAwB,iBAAbA,GAAsC,OAAbA,EAAmB,OAAO,EAC9D,MAAMC,EAAQlC,OAAOmC,eAAeF,GACpC,OAAOC,IAAUlC,OAAOoC,WAAuB,OAAVF,CACvC,CAyEWG,CAAcL,GACVpC,EAAemC,EAAkBC,GAClCD,IAAqBC,IAEzBH,EACEG,EACAD,EACAO,EAAgBN,EAAkBD,GAErC,GACD,GACD,EAAE,EAvCLP,EAAAV,KAAIF,EAAUF,EAAI,KAClBc,EAAAV,KAAIG,EAAmBN,EAAW,IACnC,CAED,WAAI4B,GACF,OAAYvC,OAAAwC,OAAA,GAAAnB,EAAAP,KAAIF,EAAA,KACjB,CAED,eAAID,CAAYA,GACda,EAAAV,KAAIG,EAAmBN,EAAW,IACnC,CAgCD,SAAA8B,CACEZ,EACAC,EAA6BY,GAAaA,GAK1C,OAHAlB,EAAeV,KAAAE,EAAAK,EAAAP,KAAAE,EAAA,KAAA,OACfK,EAAAP,KAAIC,EAAA,KAAcM,EAAAP,KAAIE,EAAA,MAAW,CAAEa,KAAIC,YAEhCT,EAAAP,KAAIE,EAAA,KAAQ2B,UACpB,CAED,WAAAC,CAAYC,GACV,MAAMC,IAAYzB,EAAAP,KAAiBC,EAAA,KAAC8B,GAMpC,OAJIC,UACKzB,EAAAP,KAAIC,EAAA,KAAc8B,GAGpBC,CACR,CAED,cAAAC,GAGE,OAFAvB,EAAAV,KAAIC,EAAgB,CAAE,EAAA,MAEf,CACR"}
@@ -1,2 +1,2 @@
1
- import{__rest as e}from"tslib";import{escapeMarkdown as t}from"@descope/escape-markdown";import{ELEMENT_TYPE_ATTRIBUTE as o,HAS_DYNAMIC_VALUES_ATTR_NAME as r,DESCOPE_ATTRIBUTE_EXCLUDE_FIELD as s}from"../constants/index.js";import{shouldHandleMarkdown as l}from"./helpers.js";const n=["disabled"],c=(e,t)=>{Object.entries(t||{}).forEach((([t,o])=>{Array.from(e.querySelectorAll(`*[name="${t}"]:not([${s}])`)).forEach((e=>{e.value=o}))}))},i=(e,t)=>t.split(".").reduce(((e,t)=>(null==e?void 0:e[t])||""),e),a=(e,o,r)=>e.replace(/{{(.+?)}}/g,((e,s)=>r?t(i(o,s)):i(o,s))),d=(e,t,r)=>{e.querySelectorAll(`[${o}="${t}"]`).forEach((e=>{e.setAttribute("href",r)}))},u=(e,t,o,r)=>{o&&Object.keys(o).forEach((s=>{t.querySelector(s)||r.debug(`Skipping css vars for component "${s}}"`,`Got css vars for component ${s} but Could not find it on next page`);const l=customElements.get(s);l?Object.keys(o[s]).forEach((t=>{var n;const c=o[s],i=null===(n=null==l?void 0:l.cssVarList)||void 0===n?void 0:n[t];if(!i)return void r.info(`Could not find css variable name for ${t} in ${s}`,"Check if the css variable is defined in the component");const a=c[t];e.style.setProperty(i,a)})):r.info(`Could not find component class for ${s}`,"Check if the component is registered")}))},f=(e,t,o)=>{var r,s;const l=null===(r=customElements.get(t))||void 0===r?void 0:r.cssVarList.url;o&&l&&(null===(s=null==e?void 0:e.style)||void 0===s||s.setProperty(l,`url(data:image/jpg;base64,${o})`))},p=(t,s,c,i,u,f)=>{var p,m;let v=null==s?void 0:s.errorText;try{v=(null==u?void 0:u({text:null==s?void 0:s.errorText,type:null==s?void 0:s.errorType}))||(null==s?void 0:s.errorText)}catch(e){f.error("Error transforming error message",e.message)}((e,t,r="")=>{e.querySelectorAll(`[${o}="${t}"]`).forEach((e=>{e.textContent=r,e.classList[r?"remove":"add"]("hide")}))})(t,"error-message",v),d(t,"totp-link",null===(p=null==s?void 0:s.totp)||void 0===p?void 0:p.provisionUrl),d(t,"notp-link",null===(m=null==s?void 0:s.notp)||void 0===m?void 0:m.redirectUrl),((e,t)=>{e.querySelectorAll("descope-text,descope-link,descope-enriched-text,descope-code-snippet").forEach((e=>{const o=l(e.localName);e.textContent=a(e.textContent,t,o);const r=e.getAttribute("href");r&&e.setAttribute("href",a(r,t))}))})(t,s),((t,o,r)=>{if(!o)return;const{componentsDynamicAttrs:s}=o,l=e(o,["componentsDynamicAttrs"]),n=Object.keys(l).reduce(((e,t)=>(e[`[name=${t}]`]=l[t],e)),{});s&&Object.keys(s).forEach((e=>{const t=s[e];if(t){const{attributes:o}=t;o&&Object.keys(o).length&&(n[e]=o)}})),Object.keys(n).forEach((e=>{t.querySelectorAll(e).forEach((t=>{const o=n[e];Object.keys(o).forEach((e=>{let s=o[e];if("string"!=typeof s)try{s=JSON.stringify(s)}catch(t){r.error(`Could not stringify value "${s}" for "${e}"`,t.message),s=""}t.setAttribute(e,s)}))}))}))})(t,c,f),((e,t)=>{e.querySelectorAll(`[${r}]`).forEach((e=>{Array.from(e.attributes).forEach((e=>{e.value=a(e.value,t)}))}))})(t,s),((e,t)=>{Object.entries(t).forEach((([t,o])=>{e.querySelectorAll(`[name="${t}"]`).forEach((e=>{Object.entries(o).forEach((([t,o])=>{n.includes(t)&&e.setAttribute(t,o)}))}))}))})(t,i)},m=(e,t)=>{c(e,null==t?void 0:t.inputs),c(e,null==t?void 0:t.form)},v=(e,t)=>{f(e,"descope-totp-image",t)},y=(e,t)=>{f(e,"descope-notp-image",t)},h=(e,t)=>{Array.from(e.querySelectorAll('[default-code="autoDetect"]')).forEach((e=>{e.setAttribute("default-code",t)}))},b=e=>{e.querySelectorAll(`descope-button[${o}="biometrics"]`).forEach((e=>e.setAttribute("disabled","true")))};export{b as disableWebauthnButtons,u as setCssVars,y as setNOTPVariable,h as setPhoneAutoDetectDefaultCode,v as setTOTPVariable,m as updateScreenFromScreenState,p as updateTemplateFromScreenState};
1
+ import{__rest as e}from"tslib";import{escapeMarkdown as t}from"@descope/escape-markdown";import{ELEMENT_TYPE_ATTRIBUTE as o,HAS_DYNAMIC_VALUES_ATTR_NAME as r,DESCOPE_ATTRIBUTE_EXCLUDE_FIELD as c}from"../constants/index.js";import{shouldHandleMarkdown as s}from"./helpers.js";const n=["disabled"],l=(e,t,r="")=>{e.querySelectorAll(`[${o}="${t}"]`).forEach((e=>{e.textContent=r,e.classList[r?"remove":"add"]("hide")}))},i=(e,t)=>{Object.entries(t||{}).forEach((([t,o])=>{Array.from(e.querySelectorAll(`*[name="${t}"]:not([${c}])`)).forEach((e=>{e.value=o}))}))},a=(e,t)=>t.split(".").reduce(((e,t)=>(null==e?void 0:e[t])||""),e),d=(e,o,r)=>e.replace(/{{(.+?)}}/g,((e,c)=>r?t(a(o,c)):a(o,c))),u=(e,t,r)=>{e.querySelectorAll(`[${o}="${t}"]`).forEach((e=>{e.setAttribute("href",r)}))},f=(e,t,o,r)=>{o&&Object.keys(o).forEach((c=>{t.querySelector(c)||r.debug(`Skipping css vars for component "${c}}"`,`Got css vars for component ${c} but Could not find it on next page`);const s=customElements.get(c);s?Object.keys(o[c]).forEach((t=>{var n;const l=o[c],i=null===(n=null==s?void 0:s.cssVarList)||void 0===n?void 0:n[t];if(!i)return void r.info(`Could not find css variable name for ${t} in ${c}`,"Check if the css variable is defined in the component");const a=l[t];e.style.setProperty(i,a)})):r.info(`Could not find component class for ${c}`,"Check if the component is registered")}))},p=(e,t,o)=>{var r,c;const s=null===(r=customElements.get(t))||void 0===r?void 0:r.cssVarList.url;o&&s&&(null===(c=null==e?void 0:e.style)||void 0===c||c.setProperty(s,`url(data:image/jpg;base64,${o})`))},m=(t,o,c,l,i)=>{var a,f;u(t,"totp-link",null===(a=null==o?void 0:o.totp)||void 0===a?void 0:a.provisionUrl),u(t,"notp-link",null===(f=null==o?void 0:o.notp)||void 0===f?void 0:f.redirectUrl),((e,t)=>{e.querySelectorAll("descope-text,descope-link,descope-enriched-text,descope-code-snippet").forEach((e=>{const o=s(e.localName);e.textContent=d(e.textContent,t,o);const r=e.getAttribute("href");r&&e.setAttribute("href",d(r,t))}))})(t,o),((t,o,r)=>{if(!o)return;const{componentsDynamicAttrs:c}=o,s=e(o,["componentsDynamicAttrs"]),n=Object.keys(s).reduce(((e,t)=>(e[`[name=${t}]`]=s[t],e)),{});c&&Object.keys(c).forEach((e=>{const t=c[e];if(t){const{attributes:o}=t;o&&Object.keys(o).length&&(n[e]=o)}})),Object.keys(n).forEach((e=>{t.querySelectorAll(e).forEach((t=>{const o=n[e];Object.keys(o).forEach((e=>{let c=o[e];if("string"!=typeof c)try{c=JSON.stringify(c)}catch(t){r.error(`Could not stringify value "${c}" for "${e}"`,t.message),c=""}t.setAttribute(e,c)}))}))}))})(t,c,i),((e,t)=>{e.querySelectorAll(`[${r}]`).forEach((e=>{Array.from(e.attributes).forEach((e=>{e.value=d(e.value,t)}))}))})(t,o),((e,t)=>{Object.entries(t).forEach((([t,o])=>{e.querySelectorAll(`[name="${t}"]`).forEach((e=>{Object.entries(o).forEach((([t,o])=>{n.includes(t)&&e.setAttribute(t,o)}))}))}))})(t,l)},h=(e,t)=>{i(e,null==t?void 0:t.inputs),i(e,null==t?void 0:t.form)},v=(e,t)=>{p(e,"descope-totp-image",t)},y=(e,t)=>{p(e,"descope-notp-image",t)},b=(e,t)=>{Array.from(e.querySelectorAll('[default-code="autoDetect"]')).forEach((e=>{e.setAttribute("default-code",t)}))},A=e=>{e.querySelectorAll(`descope-button[${o}="biometrics"]`).forEach((e=>e.setAttribute("disabled","true")))};export{A as disableWebauthnButtons,l as replaceElementMessage,f as setCssVars,y as setNOTPVariable,b as setPhoneAutoDetectDefaultCode,v as setTOTPVariable,h as updateScreenFromScreenState,m as updateTemplateFromScreenState};
2
2
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sources":["../../../src/lib/helpers/templates.ts"],"sourcesContent":["import { escapeMarkdown } from '@descope/escape-markdown';\nimport {\n ELEMENT_TYPE_ATTRIBUTE,\n DESCOPE_ATTRIBUTE_EXCLUDE_FIELD,\n HAS_DYNAMIC_VALUES_ATTR_NAME,\n} from '../constants';\nimport { ComponentsConfig, CssVars, ScreenState } from '../types';\nimport { shouldHandleMarkdown } from './helpers';\n\nconst ALLOWED_INPUT_CONFIG_ATTRS = ['disabled'];\n\nconst replaceElementMessage = (\n baseEle: DocumentFragment,\n eleType: string,\n message = '',\n) => {\n const eleList = baseEle.querySelectorAll(\n `[${ELEMENT_TYPE_ATTRIBUTE}=\"${eleType}\"]`,\n );\n eleList.forEach((ele: HTMLElement) => {\n // eslint-disable-next-line no-param-reassign\n ele.textContent = message;\n ele.classList[message ? 'remove' : 'add']('hide');\n });\n};\n\n/**\n * Replace the 'value' attribute of screen inputs with screen state's inputs.\n * For example: if base element contains '<input name=\"key1\" ...>' and screen input is in form of { key1: 'val1' },\n * it will add 'val1' as the input value\n */\nconst replaceElementInputs = (\n baseEle: HTMLElement,\n screenInputs: Record<string, string>,\n) => {\n Object.entries(screenInputs || {}).forEach(([name, value]) => {\n const inputEls = Array.from(\n baseEle.querySelectorAll(\n `*[name=\"${name}\"]:not([${DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`,\n ),\n ) as HTMLInputElement[];\n inputEls.forEach((inputEle) => {\n // eslint-disable-next-line no-param-reassign\n inputEle.value = value;\n });\n });\n};\n\n/**\n * Get object nested path.\n * Examples:\n * - getByPath({ { a { b: 'rob' } }, 'a.b') => 'hey rob'\n * - getByPath({}, 'a.b') => ''\n */\nconst getByPath = (obj: Record<string, any>, path: string) =>\n path.split('.').reduce((prev, next) => prev?.[next] || '', obj);\n\n/**\n * Apply template language on text, based on screen state.\n * Examples:\n * - 'hey {{a.b}}', { a { b: 'rob' }} => 'hey rob'\n * - 'hey {{not.exists}}', {} => 'hey '\n */\nconst applyTemplates = (\n text: string,\n screenState?: Record<string, any>,\n handleMarkdown?: boolean,\n): string =>\n text.replace(/{{(.+?)}}/g, (_, match) =>\n handleMarkdown\n ? escapeMarkdown(getByPath(screenState, match))\n : getByPath(screenState, match),\n );\n\n/**\n * Replace the templates of content of inner text/link elements with screen state data\n */\nconst replaceElementTemplates = (\n baseEle: DocumentFragment,\n screenState?: Record<string, any>,\n) => {\n const eleList = baseEle.querySelectorAll(\n 'descope-text,descope-link,descope-enriched-text,descope-code-snippet',\n );\n eleList.forEach((inEle: HTMLElement) => {\n const handleMarkdown = shouldHandleMarkdown(inEle.localName);\n // eslint-disable-next-line no-param-reassign\n inEle.textContent = applyTemplates(\n inEle.textContent,\n screenState,\n handleMarkdown,\n );\n const href = inEle.getAttribute('href');\n if (href) {\n inEle.setAttribute('href', applyTemplates(href, screenState));\n }\n });\n};\n\nconst replaceTemplateDynamicAttrValues = (\n baseEle: DocumentFragment,\n screenState?: Record<string, any>,\n) => {\n const eleList = baseEle.querySelectorAll(`[${HAS_DYNAMIC_VALUES_ATTR_NAME}]`);\n eleList.forEach((ele: HTMLElement) => {\n Array.from(ele.attributes).forEach((attr) => {\n // eslint-disable-next-line no-param-reassign\n attr.value = applyTemplates(attr.value, screenState);\n });\n });\n};\n\nconst replaceHrefByDataType = (\n baseEle: DocumentFragment,\n dataType: string,\n provisionUrl?: string,\n) => {\n const eleList = baseEle.querySelectorAll(\n `[${ELEMENT_TYPE_ATTRIBUTE}=\"${dataType}\"]`,\n );\n eleList.forEach((ele: HTMLLinkElement) => {\n // eslint-disable-next-line no-param-reassign\n ele.setAttribute('href', provisionUrl);\n });\n};\n\nconst setFormConfigValues = (\n baseEle: DocumentFragment,\n formData: Record<string, string>,\n) => {\n Object.entries(formData).forEach(([name, config]) => {\n const eles = baseEle.querySelectorAll(`[name=\"${name}\"]`);\n\n eles.forEach((ele) => {\n Object.entries(config).forEach(([attrName, attrValue]) => {\n if (ALLOWED_INPUT_CONFIG_ATTRS.includes(attrName)) {\n ele.setAttribute(attrName, attrValue);\n }\n });\n });\n });\n};\n\nexport const setCssVars = (\n rootEle: HTMLElement,\n nextPageTemplate: DocumentFragment,\n cssVars: CssVars,\n logger: {\n error: (message: string, description: string) => void;\n info: (message: string, description: string) => void;\n debug: (message: string, description: string) => void;\n },\n) => {\n if (!cssVars) {\n return;\n }\n\n Object.keys(cssVars).forEach((componentName) => {\n if (!nextPageTemplate.querySelector(componentName)) {\n logger.debug(\n `Skipping css vars for component \"${componentName}}\"`,\n `Got css vars for component ${componentName} but Could not find it on next page`,\n );\n }\n const componentClass:\n | (CustomElementConstructor & { cssVarList: CssVars })\n | undefined = customElements.get(componentName) as any;\n\n if (!componentClass) {\n logger.info(\n `Could not find component class for ${componentName}`,\n 'Check if the component is registered',\n );\n return;\n }\n\n Object.keys(cssVars[componentName]).forEach((cssVarKey) => {\n const componentCssVars = cssVars[componentName];\n const varName = componentClass?.cssVarList?.[cssVarKey];\n\n if (!varName) {\n logger.info(\n `Could not find css variable name for ${cssVarKey} in ${componentName}`,\n 'Check if the css variable is defined in the component',\n );\n return;\n }\n\n const value = componentCssVars[cssVarKey];\n\n rootEle.style.setProperty(varName, value);\n });\n });\n};\n\nconst setElementConfig = (\n baseEle: DocumentFragment,\n componentsConfig: ComponentsConfig,\n logger?: { error: (message: string, description: string) => void },\n) => {\n if (!componentsConfig) {\n return;\n }\n const { componentsDynamicAttrs, ...rest } = componentsConfig;\n\n const configMap = Object.keys(rest).reduce((acc, componentName) => {\n acc[`[name=${componentName}]`] = rest[componentName];\n return acc;\n }, {});\n\n if (componentsDynamicAttrs) {\n Object.keys(componentsDynamicAttrs).forEach((componentSelector) => {\n const componentDynamicAttrs = componentsDynamicAttrs[componentSelector];\n if (componentDynamicAttrs) {\n const { attributes } = componentDynamicAttrs;\n if (attributes && Object.keys(attributes).length) {\n configMap[componentSelector] = attributes;\n }\n }\n });\n }\n\n // collect components that needs configuration from DOM\n Object.keys(configMap).forEach((componentsSelector) => {\n baseEle.querySelectorAll(componentsSelector).forEach((comp) => {\n const config = configMap[componentsSelector];\n\n Object.keys(config).forEach((attr) => {\n let value = config[attr];\n\n if (typeof value !== 'string') {\n try {\n value = JSON.stringify(value);\n } catch (e) {\n logger.error(\n `Could not stringify value \"${value}\" for \"${attr}\"`,\n e.message,\n );\n value = '';\n }\n }\n\n comp.setAttribute(attr, value);\n });\n });\n });\n};\n\nconst setImageVariable = (\n rootEle: HTMLElement,\n name: string,\n image?: string,\n) => {\n const imageVarName = (\n customElements.get(name) as CustomElementConstructor & {\n cssVarList: Record<string, string>;\n }\n )?.cssVarList.url;\n\n if (image && imageVarName) {\n rootEle?.style?.setProperty(\n imageVarName,\n `url(data:image/jpg;base64,${image})`,\n );\n }\n};\n\n/**\n * Update a screen template based on the screen state\n * - Show/hide error messages\n * - Replace element templates ({{...}} syntax) with screen state object\n */\nexport const updateTemplateFromScreenState = (\n baseEle: DocumentFragment,\n screenState?: ScreenState,\n componentsConfig?: ComponentsConfig,\n flowInputs?: Record<string, string>,\n errorTransformer?: (error: { text: string; type: string }) => string,\n logger?: { error: (message: string, description: string) => void },\n) => {\n let errorText = screenState?.errorText;\n try {\n errorText =\n errorTransformer?.({\n text: screenState?.errorText,\n type: screenState?.errorType,\n }) || screenState?.errorText;\n } catch (e) {\n logger.error('Error transforming error message', e.message);\n }\n replaceElementMessage(baseEle, 'error-message', errorText);\n replaceHrefByDataType(baseEle, 'totp-link', screenState?.totp?.provisionUrl);\n replaceHrefByDataType(baseEle, 'notp-link', screenState?.notp?.redirectUrl);\n replaceElementTemplates(baseEle, screenState);\n setElementConfig(baseEle, componentsConfig, logger);\n replaceTemplateDynamicAttrValues(baseEle, screenState);\n setFormConfigValues(baseEle, flowInputs);\n};\n\n/**\n * Update a screen based on a screen state\n * - Replace values of element inputs with screen state's inputs\n */\nexport const updateScreenFromScreenState = (\n baseEle: HTMLElement,\n screenState?: ScreenState,\n) => {\n replaceElementInputs(baseEle, screenState?.inputs);\n replaceElementInputs(baseEle, screenState?.form);\n};\n\nexport const setTOTPVariable = (rootEle: HTMLElement, image?: string) => {\n setImageVariable(rootEle, 'descope-totp-image', image);\n};\n\nexport const setNOTPVariable = (rootEle: HTMLElement, image?: string) => {\n setImageVariable(rootEle, 'descope-notp-image', image);\n};\n\nexport const setPhoneAutoDetectDefaultCode = (\n fragment: DocumentFragment,\n autoDetectCode?: string,\n) => {\n Array.from(fragment.querySelectorAll('[default-code=\"autoDetect\"]')).forEach(\n (phoneEle) => {\n phoneEle.setAttribute('default-code', autoDetectCode);\n },\n );\n};\n\nexport const disableWebauthnButtons = (fragment: DocumentFragment) => {\n const webauthnButtons = fragment.querySelectorAll(\n `descope-button[${ELEMENT_TYPE_ATTRIBUTE}=\"biometrics\"]`,\n );\n webauthnButtons.forEach((button) => button.setAttribute('disabled', 'true'));\n};\n\nexport const getDescopeUiComponentsList = (clone: DocumentFragment) => [\n ...Array.from(clone.querySelectorAll('*')).reduce<Set<string>>(\n (acc, el: HTMLElement) =>\n el.tagName.startsWith('DESCOPE-')\n ? acc.add(el.tagName.toLocaleLowerCase())\n : acc,\n new Set(),\n ),\n];\n"],"names":["ALLOWED_INPUT_CONFIG_ATTRS","replaceElementInputs","baseEle","screenInputs","Object","entries","forEach","name","value","Array","from","querySelectorAll","DESCOPE_ATTRIBUTE_EXCLUDE_FIELD","inputEle","getByPath","obj","path","split","reduce","prev","next","applyTemplates","text","screenState","handleMarkdown","replace","_","match","escapeMarkdown","replaceHrefByDataType","dataType","provisionUrl","ELEMENT_TYPE_ATTRIBUTE","ele","setAttribute","setCssVars","rootEle","nextPageTemplate","cssVars","logger","keys","componentName","querySelector","debug","componentClass","customElements","get","cssVarKey","componentCssVars","varName","_a","cssVarList","info","style","setProperty","setImageVariable","image","imageVarName","url","_b","updateTemplateFromScreenState","componentsConfig","flowInputs","errorTransformer","errorText","type","errorType","e","error","message","eleType","textContent","classList","replaceElementMessage","totp","notp","redirectUrl","inEle","shouldHandleMarkdown","localName","href","getAttribute","replaceElementTemplates","componentsDynamicAttrs","rest","__rest","configMap","acc","componentSelector","componentDynamicAttrs","attributes","length","componentsSelector","comp","config","attr","JSON","stringify","setElementConfig","HAS_DYNAMIC_VALUES_ATTR_NAME","replaceTemplateDynamicAttrValues","formData","attrName","attrValue","includes","setFormConfigValues","updateScreenFromScreenState","inputs","form","setTOTPVariable","setNOTPVariable","setPhoneAutoDetectDefaultCode","fragment","autoDetectCode","phoneEle","disableWebauthnButtons","button"],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sources":["../../../src/lib/helpers/templates.ts"],"sourcesContent":["import { escapeMarkdown } from '@descope/escape-markdown';\nimport {\n ELEMENT_TYPE_ATTRIBUTE,\n DESCOPE_ATTRIBUTE_EXCLUDE_FIELD,\n HAS_DYNAMIC_VALUES_ATTR_NAME,\n} from '../constants';\nimport { ComponentsConfig, CssVars, ScreenState } from '../types';\nimport { shouldHandleMarkdown } from './helpers';\n\nconst ALLOWED_INPUT_CONFIG_ATTRS = ['disabled'];\n\nexport const replaceElementMessage = (\n baseEle: HTMLElement,\n eleType: string,\n message = '',\n) => {\n const eleList = baseEle.querySelectorAll(\n `[${ELEMENT_TYPE_ATTRIBUTE}=\"${eleType}\"]`,\n );\n eleList.forEach((ele: HTMLElement) => {\n // eslint-disable-next-line no-param-reassign\n ele.textContent = message;\n ele.classList[message ? 'remove' : 'add']('hide');\n });\n};\n\n/**\n * Replace the 'value' attribute of screen inputs with screen state's inputs.\n * For example: if base element contains '<input name=\"key1\" ...>' and screen input is in form of { key1: 'val1' },\n * it will add 'val1' as the input value\n */\nconst replaceElementInputs = (\n baseEle: HTMLElement,\n screenInputs: Record<string, string>,\n) => {\n Object.entries(screenInputs || {}).forEach(([name, value]) => {\n const inputEls = Array.from(\n baseEle.querySelectorAll(\n `*[name=\"${name}\"]:not([${DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`,\n ),\n ) as HTMLInputElement[];\n inputEls.forEach((inputEle) => {\n // eslint-disable-next-line no-param-reassign\n inputEle.value = value;\n });\n });\n};\n\n/**\n * Get object nested path.\n * Examples:\n * - getByPath({ { a { b: 'rob' } }, 'a.b') => 'hey rob'\n * - getByPath({}, 'a.b') => ''\n */\nconst getByPath = (obj: Record<string, any>, path: string) =>\n path.split('.').reduce((prev, next) => prev?.[next] || '', obj);\n\n/**\n * Apply template language on text, based on screen state.\n * Examples:\n * - 'hey {{a.b}}', { a { b: 'rob' }} => 'hey rob'\n * - 'hey {{not.exists}}', {} => 'hey '\n */\nconst applyTemplates = (\n text: string,\n screenState?: Record<string, any>,\n handleMarkdown?: boolean,\n): string =>\n text.replace(/{{(.+?)}}/g, (_, match) =>\n handleMarkdown\n ? escapeMarkdown(getByPath(screenState, match))\n : getByPath(screenState, match),\n );\n\n/**\n * Replace the templates of content of inner text/link elements with screen state data\n */\nconst replaceElementTemplates = (\n baseEle: DocumentFragment,\n screenState?: Record<string, any>,\n) => {\n const eleList = baseEle.querySelectorAll(\n 'descope-text,descope-link,descope-enriched-text,descope-code-snippet',\n );\n eleList.forEach((inEle: HTMLElement) => {\n const handleMarkdown = shouldHandleMarkdown(inEle.localName);\n // eslint-disable-next-line no-param-reassign\n inEle.textContent = applyTemplates(\n inEle.textContent,\n screenState,\n handleMarkdown,\n );\n const href = inEle.getAttribute('href');\n if (href) {\n inEle.setAttribute('href', applyTemplates(href, screenState));\n }\n });\n};\n\nconst replaceTemplateDynamicAttrValues = (\n baseEle: DocumentFragment,\n screenState?: Record<string, any>,\n) => {\n const eleList = baseEle.querySelectorAll(`[${HAS_DYNAMIC_VALUES_ATTR_NAME}]`);\n eleList.forEach((ele: HTMLElement) => {\n Array.from(ele.attributes).forEach((attr) => {\n // eslint-disable-next-line no-param-reassign\n attr.value = applyTemplates(attr.value, screenState);\n });\n });\n};\n\nconst replaceHrefByDataType = (\n baseEle: DocumentFragment,\n dataType: string,\n provisionUrl?: string,\n) => {\n const eleList = baseEle.querySelectorAll(\n `[${ELEMENT_TYPE_ATTRIBUTE}=\"${dataType}\"]`,\n );\n eleList.forEach((ele: HTMLLinkElement) => {\n // eslint-disable-next-line no-param-reassign\n ele.setAttribute('href', provisionUrl);\n });\n};\n\nconst setFormConfigValues = (\n baseEle: DocumentFragment,\n formData: Record<string, string>,\n) => {\n Object.entries(formData).forEach(([name, config]) => {\n const eles = baseEle.querySelectorAll(`[name=\"${name}\"]`);\n\n eles.forEach((ele) => {\n Object.entries(config).forEach(([attrName, attrValue]) => {\n if (ALLOWED_INPUT_CONFIG_ATTRS.includes(attrName)) {\n ele.setAttribute(attrName, attrValue);\n }\n });\n });\n });\n};\n\nexport const setCssVars = (\n rootEle: HTMLElement,\n nextPageTemplate: DocumentFragment,\n cssVars: CssVars,\n logger: {\n error: (message: string, description: string) => void;\n info: (message: string, description: string) => void;\n debug: (message: string, description: string) => void;\n },\n) => {\n if (!cssVars) {\n return;\n }\n\n Object.keys(cssVars).forEach((componentName) => {\n if (!nextPageTemplate.querySelector(componentName)) {\n logger.debug(\n `Skipping css vars for component \"${componentName}}\"`,\n `Got css vars for component ${componentName} but Could not find it on next page`,\n );\n }\n const componentClass:\n | (CustomElementConstructor & { cssVarList: CssVars })\n | undefined = customElements.get(componentName) as any;\n\n if (!componentClass) {\n logger.info(\n `Could not find component class for ${componentName}`,\n 'Check if the component is registered',\n );\n return;\n }\n\n Object.keys(cssVars[componentName]).forEach((cssVarKey) => {\n const componentCssVars = cssVars[componentName];\n const varName = componentClass?.cssVarList?.[cssVarKey];\n\n if (!varName) {\n logger.info(\n `Could not find css variable name for ${cssVarKey} in ${componentName}`,\n 'Check if the css variable is defined in the component',\n );\n return;\n }\n\n const value = componentCssVars[cssVarKey];\n\n rootEle.style.setProperty(varName, value);\n });\n });\n};\n\nconst setElementConfig = (\n baseEle: DocumentFragment,\n componentsConfig: ComponentsConfig,\n logger?: { error: (message: string, description: string) => void },\n) => {\n if (!componentsConfig) {\n return;\n }\n const { componentsDynamicAttrs, ...rest } = componentsConfig;\n\n const configMap = Object.keys(rest).reduce((acc, componentName) => {\n acc[`[name=${componentName}]`] = rest[componentName];\n return acc;\n }, {});\n\n if (componentsDynamicAttrs) {\n Object.keys(componentsDynamicAttrs).forEach((componentSelector) => {\n const componentDynamicAttrs = componentsDynamicAttrs[componentSelector];\n if (componentDynamicAttrs) {\n const { attributes } = componentDynamicAttrs;\n if (attributes && Object.keys(attributes).length) {\n configMap[componentSelector] = attributes;\n }\n }\n });\n }\n\n // collect components that needs configuration from DOM\n Object.keys(configMap).forEach((componentsSelector) => {\n baseEle.querySelectorAll(componentsSelector).forEach((comp) => {\n const config = configMap[componentsSelector];\n\n Object.keys(config).forEach((attr) => {\n let value = config[attr];\n\n if (typeof value !== 'string') {\n try {\n value = JSON.stringify(value);\n } catch (e) {\n logger.error(\n `Could not stringify value \"${value}\" for \"${attr}\"`,\n e.message,\n );\n value = '';\n }\n }\n\n comp.setAttribute(attr, value);\n });\n });\n });\n};\n\nconst setImageVariable = (\n rootEle: HTMLElement,\n name: string,\n image?: string,\n) => {\n const imageVarName = (\n customElements.get(name) as CustomElementConstructor & {\n cssVarList: Record<string, string>;\n }\n )?.cssVarList.url;\n\n if (image && imageVarName) {\n rootEle?.style?.setProperty(\n imageVarName,\n `url(data:image/jpg;base64,${image})`,\n );\n }\n};\n\n/**\n * Update a screen template based on the screen state\n * - Show/hide error messages\n * - Replace element templates ({{...}} syntax) with screen state object\n */\nexport const updateTemplateFromScreenState = (\n baseEle: DocumentFragment,\n screenState?: ScreenState,\n componentsConfig?: ComponentsConfig,\n flowInputs?: Record<string, string>,\n logger?: { error: (message: string, description: string) => void },\n) => {\n replaceHrefByDataType(baseEle, 'totp-link', screenState?.totp?.provisionUrl);\n replaceHrefByDataType(baseEle, 'notp-link', screenState?.notp?.redirectUrl);\n replaceElementTemplates(baseEle, screenState);\n setElementConfig(baseEle, componentsConfig, logger);\n replaceTemplateDynamicAttrValues(baseEle, screenState);\n setFormConfigValues(baseEle, flowInputs);\n};\n\n/**\n * Update a screen based on a screen state\n * - Replace values of element inputs with screen state's inputs\n */\nexport const updateScreenFromScreenState = (\n baseEle: HTMLElement,\n screenState?: ScreenState,\n) => {\n replaceElementInputs(baseEle, screenState?.inputs);\n replaceElementInputs(baseEle, screenState?.form);\n};\n\nexport const setTOTPVariable = (rootEle: HTMLElement, image?: string) => {\n setImageVariable(rootEle, 'descope-totp-image', image);\n};\n\nexport const setNOTPVariable = (rootEle: HTMLElement, image?: string) => {\n setImageVariable(rootEle, 'descope-notp-image', image);\n};\n\nexport const setPhoneAutoDetectDefaultCode = (\n fragment: DocumentFragment,\n autoDetectCode?: string,\n) => {\n Array.from(fragment.querySelectorAll('[default-code=\"autoDetect\"]')).forEach(\n (phoneEle) => {\n phoneEle.setAttribute('default-code', autoDetectCode);\n },\n );\n};\n\nexport const disableWebauthnButtons = (fragment: DocumentFragment) => {\n const webauthnButtons = fragment.querySelectorAll(\n `descope-button[${ELEMENT_TYPE_ATTRIBUTE}=\"biometrics\"]`,\n );\n webauthnButtons.forEach((button) => button.setAttribute('disabled', 'true'));\n};\n\nexport const getDescopeUiComponentsList = (clone: DocumentFragment) => [\n ...Array.from(clone.querySelectorAll('*')).reduce<Set<string>>(\n (acc, el: HTMLElement) =>\n el.tagName.startsWith('DESCOPE-')\n ? acc.add(el.tagName.toLocaleLowerCase())\n : acc,\n new Set(),\n ),\n];\n"],"names":["ALLOWED_INPUT_CONFIG_ATTRS","replaceElementMessage","baseEle","eleType","message","querySelectorAll","ELEMENT_TYPE_ATTRIBUTE","forEach","ele","textContent","classList","replaceElementInputs","screenInputs","Object","entries","name","value","Array","from","DESCOPE_ATTRIBUTE_EXCLUDE_FIELD","inputEle","getByPath","obj","path","split","reduce","prev","next","applyTemplates","text","screenState","handleMarkdown","replace","_","match","escapeMarkdown","replaceHrefByDataType","dataType","provisionUrl","setAttribute","setCssVars","rootEle","nextPageTemplate","cssVars","logger","keys","componentName","querySelector","debug","componentClass","customElements","get","cssVarKey","componentCssVars","varName","_a","cssVarList","info","style","setProperty","setImageVariable","image","imageVarName","url","_b","updateTemplateFromScreenState","componentsConfig","flowInputs","totp","notp","redirectUrl","inEle","shouldHandleMarkdown","localName","href","getAttribute","replaceElementTemplates","componentsDynamicAttrs","rest","__rest","configMap","acc","componentSelector","componentDynamicAttrs","attributes","length","componentsSelector","comp","config","attr","JSON","stringify","e","error","setElementConfig","HAS_DYNAMIC_VALUES_ATTR_NAME","replaceTemplateDynamicAttrValues","formData","attrName","attrValue","includes","setFormConfigValues","updateScreenFromScreenState","inputs","form","setTOTPVariable","setNOTPVariable","setPhoneAutoDetectDefaultCode","fragment","autoDetectCode","phoneEle","disableWebauthnButtons","button"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -200,7 +200,7 @@ declare class State<T extends StateObject> {
200
200
  get current(): T;
201
201
  set forceUpdate(forceUpdate: boolean);
202
202
  update: (newState: Partial<T> | UpdateStateCb<T>) => void;
203
- subscribe(cb: SubscribeCb<T>): string;
203
+ subscribe<R extends any | Partial<T>>(cb: SubscribeCb<R>, selector?: (state: T) => R): string;
204
204
  unsubscribe(token: string): boolean;
205
205
  unsubscribeAll(): boolean;
206
206
  }
@@ -537,9 +537,9 @@ declare const BaseClass: {
537
537
  focus(options?: FocusOptions): void;
538
538
  };
539
539
  } & (new (...params: any[]) => {
540
- "__#27137@#lastBaseUrl"?: string;
541
- "__#27137@#workingBaseUrl"?: string;
542
- "__#27137@#getResourceUrls"(filename: string): (URL & {
540
+ "__#27165@#lastBaseUrl"?: string;
541
+ "__#27165@#workingBaseUrl"?: string;
542
+ "__#27165@#getResourceUrls"(filename: string): (URL & {
543
543
  baseUrl: string;
544
544
  }) | (URL & {
545
545
  baseUrl: string;
@@ -877,39 +877,39 @@ declare const BaseClass: {
877
877
  blur(): void;
878
878
  focus(options?: FocusOptions): void;
879
879
  readonly projectId: string;
880
- "__#27136@#handleError"(attrName: string, newValue: string): void;
880
+ "__#27164@#handleError"(attrName: string, newValue: string): void;
881
881
  init(): Promise<void>;
882
- "__#27135@#observeMappings": {};
882
+ "__#27163@#observeMappings": {};
883
883
  observeAttribute(attrName: string, onAttrChange: (attrName: string, value: string) => void): () => any;
884
884
  observeAttributes(attrs: string[], cb: (attrName: string, value: string) => void): () => void;
885
- "__#27134@#isInit": boolean;
886
- "__#27133@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
887
- "__#27133@#wrapLogger": ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger);
885
+ "__#27162@#isInit": boolean;
886
+ "__#27161@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
887
+ "__#27161@#wrapLogger": ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger);
888
888
  get logger(): _descope_sdk_mixins_static_resources_mixin.Logger;
889
889
  set logger(logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>);
890
890
  onLogEvent: ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void);
891
891
  }) & (new (...params: any[]) => {
892
- "__#27148@#globalStyle": CSSStyleSheet;
892
+ "__#27176@#globalStyle": CSSStyleSheet;
893
893
  readonly theme: _descope_sdk_mixins_static_resources_mixin.ThemeOptions;
894
894
  readonly styleId: string;
895
- "__#27148@#_themeResource": Promise<void | Record<string, any>>;
896
- "__#27148@#fetchTheme"(): Promise<Record<string, any>>;
897
- readonly "__#27148@#themeResource": Promise<void | Record<string, any>>;
898
- "__#27148@#loadGlobalStyle"(): Promise<void>;
899
- "__#27148@#loadComponentsStyle"(): Promise<void>;
900
- "__#27148@#getFontsConfig"(): Promise<Record<string, {
895
+ "__#27176@#_themeResource": Promise<void | Record<string, any>>;
896
+ "__#27176@#fetchTheme"(): Promise<Record<string, any>>;
897
+ readonly "__#27176@#themeResource": Promise<void | Record<string, any>>;
898
+ "__#27176@#loadGlobalStyle"(): Promise<void>;
899
+ "__#27176@#loadComponentsStyle"(): Promise<void>;
900
+ "__#27176@#getFontsConfig"(): Promise<Record<string, {
901
901
  url?: string;
902
902
  }>>;
903
- "__#27148@#loadFonts"(): Promise<void>;
904
- "__#27148@#applyTheme"(): Promise<void>;
905
- "__#27148@#onThemeChange": () => void;
906
- "__#27148@#loadTheme"(): void;
907
- "__#27148@#toggleOsThemeChangeListener": (listen: boolean) => void;
903
+ "__#27176@#loadFonts"(): Promise<void>;
904
+ "__#27176@#applyTheme"(): Promise<void>;
905
+ "__#27176@#onThemeChange": () => void;
906
+ "__#27176@#loadTheme"(): void;
907
+ "__#27176@#toggleOsThemeChangeListener": (listen: boolean) => void;
908
908
  init(): Promise<void>;
909
- "__#27135@#observeMappings": {};
909
+ "__#27163@#observeMappings": {};
910
910
  observeAttribute: ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any);
911
911
  observeAttributes: ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void);
912
- "__#27134@#isInit": boolean;
912
+ "__#27162@#isInit": boolean;
913
913
  connectedCallback: (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void);
914
914
  accessKey: string;
915
915
  readonly accessKeyLabel: string;
@@ -1236,24 +1236,24 @@ declare const BaseClass: {
1236
1236
  tabIndex: number;
1237
1237
  blur(): void;
1238
1238
  focus(options?: FocusOptions): void;
1239
- "__#27133@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
1240
- "__#27133@#wrapLogger": ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger);
1239
+ "__#27161@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
1240
+ "__#27161@#wrapLogger": ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger);
1241
1241
  get logger(): _descope_sdk_mixins_static_resources_mixin.Logger;
1242
1242
  set logger(logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>);
1243
1243
  onLogEvent: ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void);
1244
1244
  contentRootElement: HTMLElement;
1245
1245
  rootElement: HTMLElement;
1246
1246
  readonly config: Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
1247
- "__#27139@#configCacheClear": (() => void) & (() => void);
1248
- "__#27139@#_configResource": Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
1249
- "__#27139@#fetchConfig": (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>) & (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>);
1250
- "__#27138@#callbacks": Map<string, () => void> & Map<string, () => void>;
1247
+ "__#27167@#configCacheClear": (() => void) & (() => void);
1248
+ "__#27167@#_configResource": Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
1249
+ "__#27167@#fetchConfig": (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>) & (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>);
1250
+ "__#27166@#callbacks": Map<string, () => void> & Map<string, () => void>;
1251
1251
  onReset: ((sectionId: string, callback: () => void | Promise<void>) => () => void) & ((sectionId: string, callback: () => void | Promise<void>) => () => void);
1252
1252
  reset: ((...sectionIds: string[]) => Promise<void>) & ((...sectionIds: string[]) => Promise<void>);
1253
- "__#27136@#handleError": ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void);
1254
- "__#27137@#lastBaseUrl"?: string;
1255
- "__#27137@#workingBaseUrl"?: string;
1256
- "__#27137@#getResourceUrls": ((filename: string) => (URL & {
1253
+ "__#27164@#handleError": ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void);
1254
+ "__#27165@#lastBaseUrl"?: string;
1255
+ "__#27165@#workingBaseUrl"?: string;
1256
+ "__#27165@#getResourceUrls": ((filename: string) => (URL & {
1257
1257
  baseUrl: string;
1258
1258
  }) | (URL & {
1259
1259
  baseUrl: string;
@@ -1279,18 +1279,18 @@ declare const BaseClass: {
1279
1279
  readonly baseStaticUrl: string;
1280
1280
  readonly baseUrl: string;
1281
1281
  readonly projectId: string;
1282
- "__#27142@#errorCbsSym": symbol;
1283
- "__#27142@#loadCbsSym": symbol;
1284
- "__#27142@#getComponentsVersion"(): Promise<string>;
1285
- "__#27142@#exposeAlternateEvents"(scriptEle: HTMLScriptElement): void;
1286
- "__#27142@#handleFallbackScript"(errorCbs: ((error: string) => void)[], loadCbs: (() => void)[], elemId: string, scriptUrl: string): Promise<void>;
1287
- "__#27142@#registerEvents"(scriptEle: HTMLScriptElement): void;
1288
- "__#27142@#getDescopeUiLoadingScript"(): Promise<HTMLElement>;
1289
- "__#27142@#descopeUi": Promise<any>;
1282
+ "__#27170@#errorCbsSym": symbol;
1283
+ "__#27170@#loadCbsSym": symbol;
1284
+ "__#27170@#getComponentsVersion"(): Promise<string>;
1285
+ "__#27170@#exposeAlternateEvents"(scriptEle: HTMLScriptElement): void;
1286
+ "__#27170@#handleFallbackScript"(errorCbs: ((error: string) => void)[], loadCbs: (() => void)[], elemId: string, scriptUrl: string): Promise<void>;
1287
+ "__#27170@#registerEvents"(scriptEle: HTMLScriptElement): void;
1288
+ "__#27170@#getDescopeUiLoadingScript"(): Promise<HTMLElement>;
1289
+ "__#27170@#descopeUi": Promise<any>;
1290
1290
  readonly descopeUi: Promise<any>;
1291
- "__#27142@#loadDescopeUiComponent"(componentName: string): Promise<any>;
1291
+ "__#27170@#loadDescopeUiComponent"(componentName: string): Promise<any>;
1292
1292
  loadDescopeUiComponents(templateOrComponentNames: string[] | HTMLTemplateElement): Promise<any[]>;
1293
- "__#27142@#getDescopeUi"(): Promise<unknown>;
1293
+ "__#27170@#getDescopeUi"(): Promise<unknown>;
1294
1294
  readonly baseCdnUrl: string;
1295
1295
  }) & {
1296
1296
  new (): HTMLElement;
@@ -1376,6 +1376,7 @@ declare class DescopeWc extends BaseDescopeWc {
1376
1376
  origin?: string;
1377
1377
  } | undefined;
1378
1378
  loadSdkScripts(scripts: ClientScript[]): Promise<unknown>;
1379
+ get isDismissScreenErrorOnInput(): boolean;
1379
1380
  init(): Promise<void>;
1380
1381
  _init(): Promise<void>;
1381
1382
  disconnectedCallback(): void;