{"version":3,"sources":["observers.ts"],"sourcesContent":["// Util class to link observers methods\nexport class Observers {\n\n    static #observers = new WeakMap<object, (Map<string|symbol,Set<Function>>)>();\n\n    // register a new observer group for a parent and key\n    public static register(parent:object, key:string|symbol) {\n        if (!this.#observers.has(parent)) this.#observers.set(parent, new Map());\n        const observers = this.#observers.get(parent)!;\n        if (!observers.has(key)) observers.set(key, new Set());\n    }\n\n\n    // add a observer method\n    public static add(parent:object, key:string|symbol, observer:Function) {\n        if (!this.#observers.has(parent)) this.#observers.set(parent, new Map());\n        const observers = this.#observers.get(parent)!;\n        if (!observers.has(key)) observers.set(key, new Set());\n        observers.get(key)!.add(observer);\n    }\n\n    // call all observer methods for a parent and key with args\n    public static call(parent:object, key:string|symbol, ...args:any[]) {\n        if (!this.#observers.has(parent)) throw Error(\"Observers for this object do not exist\")\n        const observers = this.#observers.get(parent)!;\n        if (!observers.has(key)) throw Error(\"Observers for this key do not exist\")\n        for (const o of observers.get(key)!) o(...args);\n    }\n\n    // call all observer methods for a parent and key with args (async)\n    public static callAsync(parent:object, key:string|symbol, ...args:any[]) {\n        if (!this.#observers.has(parent)) throw Error(\"Observers for this object do not exist\")\n        const observers = this.#observers.get(parent)!;\n        if (!observers.has(key)) throw Error(\"Observers for this key do not exist\")\n        const promises = [];\n        for (const o of observers.get(key)!) promises.push(o(...args));\n        return Promise.all(promises);\n    }\n\n    public static clear(parent:object, key?:string|symbol, observer?:Function) {\n        if (!this.#observers.has(parent)) throw Error(\"Observers for this object do not exist\")\n        // delete all observers for parent object\n        if (key === undefined) this.#observers.delete(parent);\n        else {\n            const observers = this.#observers.get(parent)!;\n            if (!observers.has(key)) throw Error(\"Observers for this key do not exist\")\n            // delete method\n            if (observer) {\n                observers.get(key)!.delete(observer);\n            }\n            // delete all observer methods for key\n            else {\n                observers.delete(key);\n            }\n        }\n\n    }\n}\n"],"names":["Observers","WeakMap","register","parent","key","has","set","Map","observers","get","Set","add","observer","call","args","Error","o","callAsync","promises","push","Promise","all","clear","undefined","delete"],"mappings":"AACA,OAAO,MAAMA;IAET,OAAO,CAAA,SAAU,GAAG,IAAIC,UAAsD;IAG9E,OAAcC,SAASC,MAAa,EAAEC,GAAiB,EAAE;QAChD,IAAI,CAAC,CAAA,SAAU,CAACC,GAAG,CAACF,WAAS,IAAI,CAAC,CAAA,SAAU,CAACG,GAAG,CAACH,QAAQ,IAAII;QAClE,IAAMC,YAAY,IAAI,CAAC,CAAA,SAAU,CAACC,GAAG,CAACN;QACjCK,UAAUH,GAAG,CAACD,QAAMI,UAAUF,GAAG,CAACF,KAAK,IAAIM;IACpD;IAIA,OAAcC,IAAIR,MAAa,EAAEC,GAAiB,EAAEQ,QAAiB,EAAE;QAC9D,IAAI,CAAC,CAAA,SAAU,CAACP,GAAG,CAACF,WAAS,IAAI,CAAC,CAAA,SAAU,CAACG,GAAG,CAACH,QAAQ,IAAII;QAClE,IAAMC,YAAY,IAAI,CAAC,CAAA,SAAU,CAACC,GAAG,CAACN;QACjCK,UAAUH,GAAG,CAACD,QAAMI,UAAUF,GAAG,CAACF,KAAK,IAAIM,QAChDF,UAAUC,GAAG,CAACL,KAAMO,GAAG,CAACC;IAC5B;IAGA,OAAcC,KAAKV,MAAa,EAAEC,GAAiB,EAAE,GAAGU,IAAU,EAAE;QAChE,IAAI,CAAC,IAAI,CAAC,CAAA,SAAU,CAACT,GAAG,CAACF,SAAS,MAAMY,MAAM;QAC9C,IAAMP,YAAY,IAAI,CAAC,CAAA,SAAU,CAACC,GAAG,CAACN;QACtC,IAAI,CAACK,UAAUH,GAAG,CAACD,MAAM,MAAMW,MAAM;QACrC,KAAK,IAAMC,KAAKR,UAAUC,GAAG,CAACL,KAAOY,KAAKF;IAC9C;IAGA,OAAcG,UAAUd,MAAa,EAAEC,GAAiB,EAAE,GAAGU,IAAU,EAAE;QACrE,IAAI,CAAC,IAAI,CAAC,CAAA,SAAU,CAACT,GAAG,CAACF,SAAS,MAAMY,MAAM;QAC9C,IAAMP,YAAY,IAAI,CAAC,CAAA,SAAU,CAACC,GAAG,CAACN;QACtC,IAAI,CAACK,UAAUH,GAAG,CAACD,MAAM,MAAMW,MAAM;QACrC,IAAMG,WAAW,EAAE;QACnB,KAAK,IAAMF,KAAKR,UAAUC,GAAG,CAACL,KAAOc,SAASC,IAAI,CAACH,KAAKF;QACxD,OAAOM,QAAQC,GAAG,CAACH;IACvB;IAEA,OAAcI,MAAMnB,MAAa,EAAEC,GAAkB,EAAEQ,QAAkB,EAAE;QACvE,IAAI,CAAC,IAAI,CAAC,CAAA,SAAU,CAACP,GAAG,CAACF,SAAS,MAAMY,MAAM;QAE9C,IAAIX,AAAQmB,KAAAA,MAARnB,KAAmB,IAAI,CAAC,CAAA,SAAU,CAACoB,MAAM,CAACrB;aACzC;YACD,IAAMK,YAAY,IAAI,CAAC,CAAA,SAAU,CAACC,GAAG,CAACN;YACtC,IAAI,CAACK,UAAUH,GAAG,CAACD,MAAM,MAAMW,MAAM;YAEjCH,WACAJ,UAAUC,GAAG,CAACL,KAAMoB,MAAM,CAACZ,YAI3BJ,UAAUgB,MAAM,CAACpB;QAEzB;IAEJ;AACJ","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/utils/","file":"observers.ts"}