{"version":3,"file":"ngxtension-singleton-proxy.mjs","sources":["../../../../libs/ngxtension/singleton-proxy/src/singleton-proxy.ts","../../../../libs/ngxtension/singleton-proxy/src/ngxtension-singleton-proxy.ts"],"sourcesContent":["/**\n * Original code by PMNDRS\n * Source: https://github.com/pmndrs/react-three-rapier\n * License: MIT License (or specify the appropriate license)\n *\n * Creates a proxy that will create a singleton instance of the given class\n * when a property is accessed, and not before.\n *\n * @returns A proxy and a reset function, so that the instance can created again\n */\nexport function createSingletonProxy<\n\tSingletonClass extends object,\n\tCreationFn extends () => SingletonClass = () => SingletonClass,\n>(\n\t/**\n\t * A function that returns a new instance of the class\n\t */\n\tcreateInstance: CreationFn,\n): { proxy: SingletonClass; reset: () => void } {\n\tlet instance: SingletonClass | undefined;\n\n\tconst handler: ProxyHandler<SingletonClass> = {\n\t\tget(_, prop) {\n\t\t\tif (!instance) {\n\t\t\t\tinstance = createInstance();\n\t\t\t}\n\t\t\treturn Reflect.get(instance!, prop);\n\t\t},\n\t\tset(_, prop, value) {\n\t\t\tif (!instance) {\n\t\t\t\tinstance = createInstance();\n\t\t\t}\n\t\t\treturn Reflect.set(instance!, prop, value);\n\t\t},\n\t};\n\n\tconst proxy = new Proxy({} as SingletonClass, handler) as SingletonClass;\n\n\tconst reset = () => {\n\t\tinstance = undefined;\n\t};\n\n\t/**\n\t * Return the proxy and a reset function\n\t */\n\treturn { proxy, reset };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;;;;;;;AASG;SACa,oBAAoB;AAInC;;AAEG;AACH,cAA0B,EAAA;AAE1B,IAAA,IAAI,QAAoC,CAAC;AAEzC,IAAA,MAAM,OAAO,GAAiC;QAC7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAA;YACV,IAAI,CAAC,QAAQ,EAAE;gBACd,QAAQ,GAAG,cAAc,EAAE,CAAC;aAC5B;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAS,EAAE,IAAI,CAAC,CAAC;SACpC;AACD,QAAA,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAA;YACjB,IAAI,CAAC,QAAQ,EAAE;gBACd,QAAQ,GAAG,cAAc,EAAE,CAAC;aAC5B;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3C;KACD,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAoB,EAAE,OAAO,CAAmB,CAAC;IAEzE,MAAM,KAAK,GAAG,MAAK;QAClB,QAAQ,GAAG,SAAS,CAAC;AACtB,KAAC,CAAC;AAEF;;AAEG;AACH,IAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACzB;;AC9CA;;AAEG;;;;"}