// Metro module 3961 (f3962). import { useMemo, useRef } from "react"; import { ArtboardByName } from "./Module3950"; import { useDisposableMemo } from "./Module3954"; import { callDispose } from "./Module3942"; export function useViewModelInstance(a0, a1) { let c13757_0 = a0; let r12 = a1?.instanceName; const name2 = a1?.name; if (r12 == null) { r12 = name2; } const name = r12; const artboardName = a1?.artboardName; const viewModelName = a1?.viewModelName; let r6 = a1?.useNew; if (r6 == null) { r6 = false; } let c13757_4 = r6; let r23 = a1?.required; if (r23 == null) { r23 = false; } const onInit = a1?.onInit; const ref = useRef(onInit); ref.current = onInit; const disposableMemo = useDisposableMemo(() => { let r3, r35, r60, instance; L41: { if (c13757_0) { if (c13757_0 != null && "getViewModelInstance" in c13757_0) { let instance3 = c13757_0.getViewModelInstance(); if (instance3 == null) { instance3 = null; } r3 = { instance: instance3, needsDispose: false }; } else if (c13757_0 != null && "defaultArtboardViewModel" in c13757_0) { if (viewModelName) { r35 = c13757_0.viewModelByName(viewModelName); if (!r35) { r3 = { instance: null, needsDispose: false, error: `ViewModel '${viewModelName}' not found` }; break L41; } } else { r35 = c13757_0.defaultArtboardViewModel(artboardName ? ArtboardByName(artboardName) : void 0); if (!r35) { r3 = artboardName ? { instance: null, needsDispose: false, error: `Artboard '${artboardName}' not found or has no ViewModel` } : { instance: null, needsDispose: false }; break L41; } } let instance2 = name ? r35.createInstanceByName(name) : r35.createDefaultInstance(); if (!instance2 && name) { r60 = { instance: null, needsDispose: false, error: `ViewModel instance '${name}' not found` }; } else { if (instance2 == null) { instance2 = null; } r60 = { instance: instance2, needsDispose: true }; } r3 = r60; } else { if (name) { instance = c13757_0.createInstanceByName(name); if (!instance) { r3 = { instance: null, needsDispose: false, error: `ViewModel instance '${name}' not found` }; break L41; } } else { instance = c13757_4 ? c13757_0.createInstance() : c13757_0.createDefaultInstance(); } if (instance == null) { instance = null; } r3 = { instance, needsDispose: true }; } } else { r3 = { instance: void 0, needsDispose: false }; } } if (r3.instance && ref.current) { ref.current(r3.instance); } return r3; }, (a0) => { if (a0.needsDispose && a0.instance) { callDispose(a0.instance); } }, [a0, name, artboardName, viewModelName, r6]); const memo = useMemo(() => disposableMemo.error ? new Error(disposableMemo.error) : null, [disposableMemo.error]); if (r23 && disposableMemo.instance === null) { throw new Error(disposableMemo.error ? `useViewModelInstance: ${disposableMemo.error}` : "useViewModelInstance: Failed to get ViewModelInstance. Ensure the source has a valid ViewModel and instance available."); } const { instance, instance: instance2 } = disposableMemo; return instance ? { instance: instance2, error: null } : instance2 === void 0 ? { instance: void 0, error: null } : { instance: null, error: memo }; }