{"version":3,"sources":["node_modules/@sydle/sydle-ui/dist/collection/components/context/provider/provides-decorator.js"],"names":["Provides","context","target","propertyKey","contextKey","__syContextProvidesKeys","find","el","push","watcherPropertyKey","Object","defineProperty","value","this","__syConsumersMap","has","set","Set","consumersSet","get","forEach","changeValue","watchers","constructor","_a","obj","assign","configurable","__syContextProvidesWrapped","connectedCallback","disconnectedCallback","async","Map","connectCallbackReturn","call","element","getHostElement","__syContextProvidesListeningFunction","e","detail","providerKey","key","unsubscribe","add","delete","stopPropagation","addEventListener","disconnectedCallbackReturn","removeEventListener"],"mappings":"oCACO,SAASA,EAASC,GACvB,MAAO,CAACC,EAAQC,KACd,MAAMC,EAAaH,IAAY,MAAQA,SAAiB,EAAIA,EAAUE,EACtED,EAAOG,wBAA0BH,EAAOG,yBAA2B,GACnE,IAAKH,EAAOG,wBAAwBC,MAAKC,GAAMA,EAAGH,YAAcA,IAAa,CAC3EF,EAAOG,wBAAwBG,KAAK,CAAEJ,WAAAA,EAAYD,YAAAA,IAGpD,MAAMM,EAAqB,eAAeN,WAC1CO,OAAOC,eAAeT,EAAQO,EAAoB,CAChDG,MAAO,WACL,IAAKC,KAAKC,iBAAiBC,IAAIX,GAAa,CAC1CS,KAAKC,iBAAiBE,IAAIZ,EAAY,IAAIa,KAE5C,MAAMC,EAAeL,KAAKC,iBAAiBK,IAAIf,GAC/Cc,EAAaE,SAAQb,IACnBA,EAAGc,YAAYR,KAAKV,UAI1B,MAAMmB,SAAEA,GAAapB,EAAOqB,YAC5Bb,OAAOC,eAAeT,EAAOqB,YAAa,WAAY,CACpDJ,IAAK,WACH,IAAIK,EACJ,MAAMC,EAAMf,OAAOgB,OAAO,GAAIJ,IAAa,MAAQA,SAAkB,EAAIA,EAAW,IACpFG,EAAItB,IAAgBqB,EAAKC,EAAItB,MAAkB,MAAQqB,SAAY,EAAIA,EAAK,GAC5EC,EAAItB,GAAaK,KAAKC,GACtB,OAAOgB,GAETE,aAAc,OAEhB,GAAIzB,EAAO0B,2BACT,OACF1B,EAAO0B,2BAA6B,KACpC,MAAMC,kBAAEA,EAAiBC,qBAAEA,GAAyB5B,EACpDA,EAAO2B,kBAAoBE,iBACzB,IAAIP,EACJX,KAAKC,kBAAoBU,EAAKX,KAAKC,oBAAsB,MAAQU,SAAY,EAAIA,EAAK,IAAIQ,IAC1F,MAAMC,EAAwBJ,GAAqBA,EAAkBK,KAAKrB,MAC1E,MAAMsB,EAAUC,EAAevB,MAC/BA,KAAKwB,qCAAwCC,IAC3C,MAAMrC,QAAEA,GAAYqC,IAAM,MAAQA,SAAW,OAAS,EAAIA,EAAEC,OAC5D,MAAMC,EAActC,EAAOG,wBAAwBC,MAAKmC,GAAOA,EAAIrC,YAAcH,IAEjF,IAAKuC,EACH,OACF,IAAK3B,KAAKC,iBAAiBC,IAAId,GAAU,CACvCY,KAAKC,iBAAiBE,IAAIf,EAAS,IAAIgB,KAEzC,MAAMC,EAAeL,KAAKC,iBAAiBK,IAAIlB,GAC/C,GAAIqC,EAAEC,OAAOhC,KAAO+B,EAAEC,OAAOhC,GAAGmC,YAAa,CAC3CxB,EAAayB,IAAIL,EAAEC,OAAOhC,IAC1B+B,EAAEC,OAAOhC,GAAGc,YAAYR,KAAK2B,EAAYrC,cACzCmC,EAAEC,OAAOhC,GAAGmC,YAAc,KACxBxB,EAAa0B,OAAON,EAAEC,OAAOhC,IAC7B+B,EAAEC,OAAOhC,GAAGmC,YAAc,MAE5BJ,EAAEO,oBAGNV,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQW,iBAAiB,gCAAiCjC,KAAKwB,sCACjH,OAAOJ,GAET/B,EAAO4B,qBAAuBC,iBAC5B,MAAMgB,EAA6BjB,GAAwBA,EAAqBI,KAAKrB,MACrF,GAAIA,KAAKwB,qCAAsC,CAC7C,MAAMF,EAAUC,EAAevB,MAC/BsB,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQa,oBAAoB,gCAAiCnC,KAAKwB,sCAEtH,OAAOU","sourcesContent":["import { getHostElement } from '../consumer/consumes-decorator';\nexport function Provides(context) {\n return (target, propertyKey) => {\n const contextKey = context !== null && context !== void 0 ? context : propertyKey;\n target.__syContextProvidesKeys = target.__syContextProvidesKeys || [];\n if (!target.__syContextProvidesKeys.find(el => el.contextKey == contextKey)) {\n target.__syContextProvidesKeys.push({ contextKey, propertyKey });\n }\n // Define property watcher\n const watcherPropertyKey = `__syContext_${propertyKey}Watcher`;\n Object.defineProperty(target, watcherPropertyKey, {\n value: function () {\n if (!this.__syConsumersMap.has(contextKey)) {\n this.__syConsumersMap.set(contextKey, new Set());\n }\n const consumersSet = this.__syConsumersMap.get(contextKey);\n consumersSet.forEach(el => {\n el.changeValue(this[propertyKey]);\n });\n },\n });\n const { watchers } = target.constructor;\n Object.defineProperty(target.constructor, 'watchers', {\n get: function () {\n var _a;\n const obj = Object.assign({}, watchers !== null && watchers !== void 0 ? watchers : {});\n obj[propertyKey] = (_a = obj[propertyKey]) !== null && _a !== void 0 ? _a : [];\n obj[propertyKey].push(watcherPropertyKey);\n return obj;\n },\n configurable: true,\n });\n if (target.__syContextProvidesWrapped)\n return;\n target.__syContextProvidesWrapped = true;\n const { connectedCallback, disconnectedCallback } = target;\n target.connectedCallback = async function () {\n var _a;\n this.__syConsumersMap = (_a = this.__syConsumersMap) !== null && _a !== void 0 ? _a : new Map();\n const connectCallbackReturn = connectedCallback && connectedCallback.call(this);\n const element = getHostElement(this);\n this.__syContextProvidesListeningFunction = (e) => {\n const { context } = e === null || e === void 0 ? void 0 : e.detail;\n const providerKey = target.__syContextProvidesKeys.find(key => key.contextKey == context);\n // Not for this provider\n if (!providerKey)\n return;\n if (!this.__syConsumersMap.has(context)) {\n this.__syConsumersMap.set(context, new Set());\n }\n const consumersSet = this.__syConsumersMap.get(context);\n if (e.detail.el && !e.detail.el.unsubscribe) {\n consumersSet.add(e.detail.el);\n e.detail.el.changeValue(this[providerKey.propertyKey]);\n e.detail.el.unsubscribe = () => {\n consumersSet.delete(e.detail.el);\n e.detail.el.unsubscribe = null;\n };\n e.stopPropagation();\n }\n };\n element === null || element === void 0 ? void 0 : element.addEventListener('syContextConsumerDidSubscribe', this.__syContextProvidesListeningFunction);\n return connectCallbackReturn;\n };\n target.disconnectedCallback = async function () {\n const disconnectedCallbackReturn = disconnectedCallback && disconnectedCallback.call(this);\n if (this.__syContextProvidesListeningFunction) {\n const element = getHostElement(this);\n element === null || element === void 0 ? void 0 : element.removeEventListener('syContextConsumerDidSubscribe', this.__syContextProvidesListeningFunction);\n }\n return disconnectedCallbackReturn;\n };\n };\n}\n"]}