var e={102:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=s(r(277)),o=s(r(535));function s(e){return e&&e.__esModule?e:{default:e}}const n="Liferay.State.ATOM",i=new Map,c=new Map,f=new Map,l=new a.default,u=new Map,d={readKey:new Set,subscribeKey:new Set,writeKey:new Set},y={__internal__:{debug:{get atoms(){return Array.from(i.values())},get selectors(){return Array.from(f.values())}},reset(){i.clear(),c.clear(),f.clear(),l.clear(),u.clear(),d.readKey.clear(),d.subscribeKey.clear(),d.writeKey.clear()}},__unsafe__:{readKey(e){const t=i.get(e)||f.get(e);if(t)return y.read(t);throw new Error("Liferay.State.__unsafe__.readKey(): no atom or selector exists for key ".concat(JSON.stringify(e)))},subscribeKey(e,t){const r=i.get(e)||f.get(e);if(r)return y.subscribe(r,t);throw new Error("Liferay.State.__unsafe__.subscribeKey(): no atom or selector exists for key ".concat(JSON.stringify(e)))},writeKey(e,t){if(f.has(e))throw new Error("Liferay.State.__unsafe__.writeKey(): expected atom but found selector for key ".concat(JSON.stringify(e)));if(!i.has(e))throw new Error("Liferay.State.__unsafe__.writeKey(): no atom exists for key ".concat(JSON.stringify(e)));y.writeAtom(i.get(e),t)}},_invalidateDependencies(e,t){const r=c.get(e);if(r)for(const e of r)u.delete(e),t.push(e),this._invalidateDependencies(e,t)},_notify(e,t){try{e(t)}catch(e){console.error("Liferay.State._notify(): caught error during subscriber notification: ".concat(e))}},_readSelector(e,t){if(t.has(e)){const r=Array.from(t.values()),a=r.indexOf(e);r.splice(0,a),r.push(e);const o=r.map((({key:e})=>JSON.stringify(e))).join(" -> ");throw new Error("Liferay.State.readSelector(): cycle detected: ".concat(o))}if(!u.has(e)){const r=r=>(c.has(r)||c.set(r,new Set),c.get(r).add(e),_(r)?y.readAtom(r):y._readSelector(r,t));t.add(e);const a=(0,o.default)(e.deriveValue(r));t.delete(e),u.set(e,a)}return u.get(e)},atom(e,t){if(i.has(e))throw new Error("Liferay.State.atom(): key ".concat(JSON.stringify(e)," already taken"));if(f.has(e))throw new Error("Liferay.State.atom(): key ".concat(JSON.stringify(e)," already taken by a selector"));const r=(0,o.default)({[n]:!0,default:t,key:e});return i.set(e,r),r},read:e=>_(e)?y.readAtom(e):y.readSelector(e),readAtom:e=>u.has(e)?u.get(e):e.default,readSelector(e){const t=new Set;return y._readSelector(e,t)},selector(e,t){if(f.has(e))throw new Error("Liferay.State.selector(): key ".concat(JSON.stringify(e)," already taken"));if(i.has(e))throw new Error("Liferay.State.selector(): key ".concat(JSON.stringify(e)," already taken by an atom"));const r=(0,o.default)({"Liferay.State.SELECTOR":!0,deriveValue:t,key:e});return f.set(e,r),r},subscribe(e,t){const r=l.addCallback(e,t);return _(e)||y.readSelector(e),{dispose:r}},write(e,t){if(!_(e))throw new Error("Liferay.State.write(): expected atom but received selector with key ".concat(JSON.stringify(e.key)));y.writeAtom(e,t)},writeAtom(e,t){const r=u.get(e);if(Object.is(t,r))return;const a=(0,o.default)(t);u.set(e,a);for(const t of l.getCallbacks(e).values())y._notify(t,a);const s=[];this._invalidateDependencies(e,s);for(const e of s)for(const t of l.getCallbacks(e).values())y._notify(t,y.readSelector(e))}};function _(e){return Object.hasOwnProperty.call(e,n)}window.Liferay=window.Liferay||{};var b=y;t.default=b},277:(e,t)=>{function r(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{constructor(){r(this,"_id",void 0),r(this,"_subscribers",void 0),this._id=0,this._subscribers=new Map}clear(){this._subscribers.clear()}getCallbacks(e){return this._subscribers.has(e)||this._subscribers.set(e,new Map),this._subscribers.get(e)}addCallback(e,t){const r=this._id++,a=this.getCallbacks(e);return a.set(r,t),()=>a.delete(r)}}},535:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e}}},t={};function r(a){var o=t[a];if(void 0!==o)return o.exports;var s=t[a]={exports:{}};return e[a](s,s.exports,r),s.exports}var a={};(()=>{var e=a;Object.defineProperty(e,"X",{value:!0}),Object.defineProperty(e,"Z",{enumerable:!0,get:function(){return o.default}});var t,o=(t=r(102))&&t.__esModule?t:{default:t}})();var o=a.Z,s=a.X;export{o as State,s as __esModule}; //# sourceMappingURL=index.js.map