@descope/web-component 3.42.2 → 3.42.3
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/cjs/descope-wc/BaseDescopeWc.js +1 -1
- package/dist/cjs/descope-wc/DescopeWc.js +1 -1
- package/dist/cjs/descope-wc/DescopeWc.js.map +1 -1
- package/dist/cjs/helpers/state.js +1 -1
- package/dist/cjs/helpers/state.js.map +1 -1
- package/dist/esm/descope-wc/BaseDescopeWc.js +1 -1
- package/dist/esm/descope-wc/DescopeWc.js +1 -1
- package/dist/esm/descope-wc/DescopeWc.js.map +1 -1
- package/dist/esm/helpers/state.js +1 -1
- package/dist/esm/helpers/state.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -2
- package/package.json +3 -3
|
@@ -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>;\n\ntype UpdateStateCb<T> = (state: T) => Partial<T>;\n\ntype Subscribers<T> = Record<\n string,\n {
|
|
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 {\n cb: SubscribeCb<ReturnType<SelectorCb<T>>>;\n selector: SelectorCb<T>;\n forceUpdate: boolean;\n }\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(\n ({ cb, selector, forceUpdate }) => {\n const partialPrevState = selector(prevState);\n const partialNextState = selector(nextState);\n\n if (\n this.#forceUpdateAll ||\n forceUpdate ||\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 );\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 { forceUpdate = false }: { forceUpdate?: boolean } = {},\n ) {\n this.#token += 1;\n this.#subscribers[this.#token] = { cb, selector, forceUpdate };\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":"sIAgCA,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,KAAIC,EAAA,MAAea,SAC/B,EAAGC,KAAIC,WAAUnB,kBACf,MAAMoB,EAAmBD,EAASP,GAC5BS,EAAmBF,EAASR,IAGhCD,EAAAP,KAAoBG,EAAA,MACpBN,IA9EZ,SAAuBsB,GACrB,GAAwB,iBAAbA,GAAsC,OAAbA,EAAmB,OAAO,EAC9D,MAAMC,EAAQlC,OAAOmC,eAAeF,GACpC,OAAOC,IAAUlC,OAAOoC,WAAuB,OAAVF,CACvC,CA2EaG,CAAcL,IACVpC,EAAemC,EAAkBC,GAClCD,IAAqBC,KAEzBH,EACEG,EACAD,EACAO,EAAgBN,EAAkBD,GAErC,GAEJ,GACA,EAAE,EA1CLP,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,CAmCD,SAAA8B,CACEZ,EACAC,EAA6BY,GAAaA,GAC1C/B,YAAEA,GAAc,GAAqC,IAKrD,OAHAa,EAAeV,KAAAE,EAAAK,EAAAP,KAAAE,EAAA,KAAA,OACfK,EAAAP,KAAIC,EAAA,KAAcM,EAAAP,KAAWE,EAAA,MAAI,CAAEa,KAAIC,WAAUnB,eAE1CU,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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -210,7 +210,9 @@ declare class State<T extends StateObject> {
|
|
|
210
210
|
get current(): T;
|
|
211
211
|
set forceUpdate(forceUpdate: boolean);
|
|
212
212
|
update: (newState: Partial<T> | UpdateStateCb<T>) => void;
|
|
213
|
-
subscribe<R extends any | Partial<T>>(cb: SubscribeCb<R>, selector?: (state: T) => R
|
|
213
|
+
subscribe<R extends any | Partial<T>>(cb: SubscribeCb<R>, selector?: (state: T) => R, { forceUpdate }?: {
|
|
214
|
+
forceUpdate?: boolean;
|
|
215
|
+
}): string;
|
|
214
216
|
unsubscribe(token: string): boolean;
|
|
215
217
|
unsubscribeAll(): boolean;
|
|
216
218
|
}
|