UNPKG

repoweaver

Version:

A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies

1 lines 4.62 kB
{"ast":null,"code":"'use client';\n\nimport { useRef, useMemo, useEffect } from 'react';\nexport function useReleasingSharedObject(factory, dependencies) {\n const objectRef = useRef(null);\n const isFastRefresh = useRef(false);\n const previousDependencies = useRef(dependencies);\n if (objectRef.current == null) {\n objectRef.current = factory();\n }\n const object = useMemo(() => {\n let newObject = objectRef.current;\n const dependenciesAreEqual = previousDependencies.current?.length === dependencies.length && dependencies.every((value, index) => value === previousDependencies.current[index]);\n if (!newObject || !dependenciesAreEqual) {\n objectRef.current?.release();\n newObject = factory();\n objectRef.current = newObject;\n previousDependencies.current = dependencies;\n } else {\n isFastRefresh.current = true;\n }\n return newObject;\n }, dependencies);\n useEffect(() => {\n isFastRefresh.current = false;\n return () => {\n if (!isFastRefresh.current && objectRef.current) {\n objectRef.current.release();\n }\n };\n }, []);\n return object;\n}","map":{"version":3,"names":["useRef","useMemo","useEffect","useReleasingSharedObject","factory","dependencies","objectRef","isFastRefresh","previousDependencies","current","object","newObject","dependenciesAreEqual","length","every","value","index","release"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/expo-modules-core/src/hooks/useReleasingSharedObject.ts"],"sourcesContent":["'use client';\n\nimport { DependencyList, useRef, useMemo, useEffect } from 'react';\n\nimport type { SharedObject } from '../ts-declarations/SharedObject';\n\n/**\n * Returns a shared object, which is automatically cleaned up when the component is unmounted.\n */\nexport function useReleasingSharedObject<TSharedObject extends SharedObject>(\n factory: () => TSharedObject,\n dependencies: DependencyList\n): TSharedObject {\n const objectRef = useRef<TSharedObject | null>(null);\n const isFastRefresh = useRef(false);\n const previousDependencies = useRef<DependencyList>(dependencies);\n\n if (objectRef.current == null) {\n objectRef.current = factory();\n }\n\n const object = useMemo(() => {\n let newObject = objectRef.current;\n const dependenciesAreEqual =\n previousDependencies.current?.length === dependencies.length &&\n dependencies.every((value, index) => value === previousDependencies.current[index]);\n\n // If the dependencies have changed, release the previous object and create a new one, otherwise this has been called\n // because of a fast refresh, and we don't want to release the object.\n if (!newObject || !dependenciesAreEqual) {\n objectRef.current?.release();\n newObject = factory();\n objectRef.current = newObject;\n previousDependencies.current = dependencies;\n } else {\n isFastRefresh.current = true;\n }\n return newObject;\n }, dependencies);\n\n useEffect(() => {\n isFastRefresh.current = false;\n\n return () => {\n // This will be called on every fast refresh and on unmount, but we only want to release the object on unmount.\n if (!isFastRefresh.current && objectRef.current) {\n objectRef.current.release();\n }\n };\n }, []);\n\n return object;\n}\n"],"mappings":"AAAA,YAAY;;AAEZ,SAAyBA,MAAM,EAAEC,OAAO,EAAEC,SAAS,QAAQ,OAAO;AAOlE,OAAO,SAASC,wBAAwBA,CACtCC,OAA4B,EAC5BC,YAA4B,EACb;EACf,MAAMC,SAAS,GAAGN,MAAM,CAAuB,IAAI,CAAC;EACpD,MAAMO,aAAa,GAAGP,MAAM,CAAC,KAAK,CAAC;EACnC,MAAMQ,oBAAoB,GAAGR,MAAM,CAAiBK,YAAY,CAAC;EAEjE,IAAIC,SAAS,CAACG,OAAO,IAAI,IAAI,EAAE;IAC7BH,SAAS,CAACG,OAAO,GAAGL,OAAO,CAAC,CAAC;EAC/B;EAEA,MAAMM,MAAM,GAAGT,OAAO,CAAC,MAAM;IAC3B,IAAIU,SAAS,GAAGL,SAAS,CAACG,OAAO;IACjC,MAAMG,oBAAoB,GACxBJ,oBAAoB,CAACC,OAAO,EAAEI,MAAM,KAAKR,YAAY,CAACQ,MAAM,IAC5DR,YAAY,CAACS,KAAK,CAAC,CAACC,KAAK,EAAEC,KAAK,KAAKD,KAAK,KAAKP,oBAAoB,CAACC,OAAO,CAACO,KAAK,CAAC,CAAC;IAIrF,IAAI,CAACL,SAAS,IAAI,CAACC,oBAAoB,EAAE;MACvCN,SAAS,CAACG,OAAO,EAAEQ,OAAO,CAAC,CAAC;MAC5BN,SAAS,GAAGP,OAAO,CAAC,CAAC;MACrBE,SAAS,CAACG,OAAO,GAAGE,SAAS;MAC7BH,oBAAoB,CAACC,OAAO,GAAGJ,YAAY;IAC7C,CAAC,MAAM;MACLE,aAAa,CAACE,OAAO,GAAG,IAAI;IAC9B;IACA,OAAOE,SAAS;EAClB,CAAC,EAAEN,YAAY,CAAC;EAEhBH,SAAS,CAAC,MAAM;IACdK,aAAa,CAACE,OAAO,GAAG,KAAK;IAE7B,OAAO,MAAM;MAEX,IAAI,CAACF,aAAa,CAACE,OAAO,IAAIH,SAAS,CAACG,OAAO,EAAE;QAC/CH,SAAS,CAACG,OAAO,CAACQ,OAAO,CAAC,CAAC;MAC7B;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOP,MAAM;AACf","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}