{"version":3,"names":["shouldBeUseWeb","makeShareableCloneRecursive","shareableMappingCache","executeOnUIRuntimeSync","runOnUI","valueSetter","SHOULD_BE_USE_WEB","makeUIMutable","initial","listeners","Map","value","self","newValue","_value","forEach","listener","modify","modifier","forceUpdate","arguments","length","undefined","addListener","id","set","removeListener","delete","_animation","_isReanimatedSharedValue","makeMutable","handle","__init","mutable","uiValueGetter","sv","Error"],"sources":["mutables.ts"],"sourcesContent":["'use strict';\nimport { shouldBeUseWeb } from './PlatformChecker';\nimport type { Mutable } from './commonTypes';\nimport { makeShareableCloneRecursive } from './shareables';\nimport { shareableMappingCache } from './shareableMappingCache';\nimport { executeOnUIRuntimeSync, runOnUI } from './threads';\nimport { valueSetter } from './valueSetter';\n\nconst SHOULD_BE_USE_WEB = shouldBeUseWeb();\n\ntype Listener = (newValue: Value) => void;\n\nexport function makeUIMutable(initial: Value): Mutable {\n 'worklet';\n\n const listeners = new Map>();\n let value = initial;\n\n const self: Mutable = {\n set value(newValue) {\n valueSetter(self, newValue);\n },\n get value() {\n return value;\n },\n /**\n * _value prop should only be accessed by the valueSetter implementation\n * which may make the decision about updating the mutable value depending\n * on the provided new value. All other places should only attempt to modify\n * the mutable by assigning to value prop directly.\n */\n set _value(newValue: Value) {\n value = newValue;\n listeners.forEach((listener) => {\n listener(newValue);\n });\n },\n get _value(): Value {\n return value;\n },\n modify: (modifier, forceUpdate = true) => {\n valueSetter(\n self,\n modifier !== undefined ? modifier(value) : value,\n forceUpdate\n );\n },\n addListener: (id: number, listener: Listener) => {\n listeners.set(id, listener);\n },\n removeListener: (id: number) => {\n listeners.delete(id);\n },\n _animation: null,\n _isReanimatedSharedValue: true,\n };\n return self;\n}\n\nexport function makeMutable(initial: Value): Mutable {\n let value: Value = initial;\n const handle = makeShareableCloneRecursive({\n __init: () => {\n 'worklet';\n return makeUIMutable(initial);\n },\n });\n // listeners can only work on JS thread on Web and jest environments\n const listeners = SHOULD_BE_USE_WEB\n ? new Map>()\n : undefined;\n const mutable: Mutable = {\n set value(newValue) {\n if (SHOULD_BE_USE_WEB) {\n valueSetter(mutable, newValue);\n } else {\n runOnUI(() => {\n mutable.value = newValue;\n })();\n }\n },\n get value(): Value {\n if (SHOULD_BE_USE_WEB) {\n return value;\n }\n const uiValueGetter = executeOnUIRuntimeSync((sv: Mutable) => {\n return sv.value;\n });\n return uiValueGetter(mutable);\n },\n set _value(newValue: Value) {\n if (!SHOULD_BE_USE_WEB) {\n throw new Error(\n '[Reanimated] Setting `_value` directly is only possible on the UI runtime. Perhaps you want to assign to `value` instead?'\n );\n }\n value = newValue;\n listeners!.forEach((listener) => {\n listener(newValue);\n });\n },\n get _value(): Value {\n if (SHOULD_BE_USE_WEB) {\n return value;\n }\n throw new Error(\n '[Reanimated] Reading from `_value` directly is only possible on the UI runtime. Perhaps you passed an Animated Style to a non-animated component?'\n );\n },\n\n modify: (modifier, forceUpdate = true) => {\n if (!SHOULD_BE_USE_WEB) {\n runOnUI(() => {\n mutable.modify(modifier, forceUpdate);\n })();\n } else {\n valueSetter(\n mutable,\n modifier !== undefined ? modifier(mutable.value) : mutable.value,\n forceUpdate\n );\n }\n },\n addListener: (id: number, listener: Listener) => {\n if (!SHOULD_BE_USE_WEB) {\n throw new Error(\n '[Reanimated] Adding listeners is only possible on the UI runtime.'\n );\n }\n listeners!.set(id, listener);\n },\n removeListener: (id: number) => {\n if (!SHOULD_BE_USE_WEB) {\n throw new Error(\n '[Reanimated] Removing listeners is only possible on the UI runtime.'\n );\n }\n listeners!.delete(id);\n },\n _isReanimatedSharedValue: true,\n };\n shareableMappingCache.set(mutable, handle);\n return mutable;\n}\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,cAAc,QAAQ,mBAAmB;AAElD,SAASC,2BAA2B,QAAQ,cAAc;AAC1D,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,sBAAsB,EAAEC,OAAO,QAAQ,WAAW;AAC3D,SAASC,WAAW,QAAQ,eAAe;AAE3C,MAAMC,iBAAiB,GAAGN,cAAc,EAAE;AAI1C,OAAO,SAASO,aAAaA,CAAQC,OAAc,EAAkB;EACnE,SAAS;;EAET,MAAMC,SAAS,GAAG,IAAIC,GAAG,EAA2B;EACpD,IAAIC,KAAK,GAAGH,OAAO;EAEnB,MAAMI,IAAoB,GAAG;IAC3B,IAAID,KAAKA,CAACE,QAAQ,EAAE;MAClBR,WAAW,CAACO,IAAI,EAAEC,QAAQ,CAAC;IAC7B,CAAC;IACD,IAAIF,KAAKA,CAAA,EAAG;MACV,OAAOA,KAAK;IACd,CAAC;IACD;AACJ;AACA;AACA;AACA;AACA;IACI,IAAIG,MAAMA,CAACD,QAAe,EAAE;MAC1BF,KAAK,GAAGE,QAAQ;MAChBJ,SAAS,CAACM,OAAO,CAAEC,QAAQ,IAAK;QAC9BA,QAAQ,CAACH,QAAQ,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC;IACD,IAAIC,MAAMA,CAAA,EAAU;MAClB,OAAOH,KAAK;IACd,CAAC;IACDM,MAAM,EAAE,SAAAA,CAACC,QAAQ,EAAyB;MAAA,IAAvBC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MACnCf,WAAW,CACTO,IAAI,EACJM,QAAQ,KAAKI,SAAS,GAAGJ,QAAQ,CAACP,KAAK,CAAC,GAAGA,KAAK,EAChDQ,WAAW,CACZ;IACH,CAAC;IACDI,WAAW,EAAEA,CAACC,EAAU,EAAER,QAAyB,KAAK;MACtDP,SAAS,CAACgB,GAAG,CAACD,EAAE,EAAER,QAAQ,CAAC;IAC7B,CAAC;IACDU,cAAc,EAAGF,EAAU,IAAK;MAC9Bf,SAAS,CAACkB,MAAM,CAACH,EAAE,CAAC;IACtB,CAAC;IACDI,UAAU,EAAE,IAAI;IAChBC,wBAAwB,EAAE;EAC5B,CAAC;EACD,OAAOjB,IAAI;AACb;AAEA,OAAO,SAASkB,WAAWA,CAAQtB,OAAc,EAAkB;EACjE,IAAIG,KAAY,GAAGH,OAAO;EAC1B,MAAMuB,MAAM,GAAG9B,2BAA2B,CAAC;IACzC+B,MAAM,EAAEA,CAAA,KAAM;MACZ,SAAS;;MACT,OAAOzB,aAAa,CAACC,OAAO,CAAC;IAC/B;EACF,CAAC,CAAC;EACF;EACA,MAAMC,SAAS,GAAGH,iBAAiB,GAC/B,IAAII,GAAG,EAA2B,GAClCY,SAAS;EACb,MAAMW,OAAuB,GAAG;IAC9B,IAAItB,KAAKA,CAACE,QAAQ,EAAE;MAClB,IAAIP,iBAAiB,EAAE;QACrBD,WAAW,CAAC4B,OAAO,EAAEpB,QAAQ,CAAC;MAChC,CAAC,MAAM;QACLT,OAAO,CAAC,MAAM;UACZ6B,OAAO,CAACtB,KAAK,GAAGE,QAAQ;QAC1B,CAAC,CAAC,EAAE;MACN;IACF,CAAC;IACD,IAAIF,KAAKA,CAAA,EAAU;MACjB,IAAIL,iBAAiB,EAAE;QACrB,OAAOK,KAAK;MACd;MACA,MAAMuB,aAAa,GAAG/B,sBAAsB,CAAEgC,EAAkB,IAAK;QACnE,OAAOA,EAAE,CAACxB,KAAK;MACjB,CAAC,CAAC;MACF,OAAOuB,aAAa,CAACD,OAAO,CAAC;IAC/B,CAAC;IACD,IAAInB,MAAMA,CAACD,QAAe,EAAE;MAC1B,IAAI,CAACP,iBAAiB,EAAE;QACtB,MAAM,IAAI8B,KAAK,CACb,2HAA2H,CAC5H;MACH;MACAzB,KAAK,GAAGE,QAAQ;MAChBJ,SAAS,CAAEM,OAAO,CAAEC,QAAQ,IAAK;QAC/BA,QAAQ,CAACH,QAAQ,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC;IACD,IAAIC,MAAMA,CAAA,EAAU;MAClB,IAAIR,iBAAiB,EAAE;QACrB,OAAOK,KAAK;MACd;MACA,MAAM,IAAIyB,KAAK,CACb,mJAAmJ,CACpJ;IACH,CAAC;IAEDnB,MAAM,EAAE,SAAAA,CAACC,QAAQ,EAAyB;MAAA,IAAvBC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MACnC,IAAI,CAACd,iBAAiB,EAAE;QACtBF,OAAO,CAAC,MAAM;UACZ6B,OAAO,CAAChB,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC;QACvC,CAAC,CAAC,EAAE;MACN,CAAC,MAAM;QACLd,WAAW,CACT4B,OAAO,EACPf,QAAQ,KAAKI,SAAS,GAAGJ,QAAQ,CAACe,OAAO,CAACtB,KAAK,CAAC,GAAGsB,OAAO,CAACtB,KAAK,EAChEQ,WAAW,CACZ;MACH;IACF,CAAC;IACDI,WAAW,EAAEA,CAACC,EAAU,EAAER,QAAyB,KAAK;MACtD,IAAI,CAACV,iBAAiB,EAAE;QACtB,MAAM,IAAI8B,KAAK,CACb,mEAAmE,CACpE;MACH;MACA3B,SAAS,CAAEgB,GAAG,CAACD,EAAE,EAAER,QAAQ,CAAC;IAC9B,CAAC;IACDU,cAAc,EAAGF,EAAU,IAAK;MAC9B,IAAI,CAAClB,iBAAiB,EAAE;QACtB,MAAM,IAAI8B,KAAK,CACb,qEAAqE,CACtE;MACH;MACA3B,SAAS,CAAEkB,MAAM,CAACH,EAAE,CAAC;IACvB,CAAC;IACDK,wBAAwB,EAAE;EAC5B,CAAC;EACD3B,qBAAqB,CAACuB,GAAG,CAACQ,OAAO,EAAEF,MAAM,CAAC;EAC1C,OAAOE,OAAO;AAChB"}