UNPKG

@tdi2/di-core

Version:

TypeScript Dependency Injection 2 - Core DI framework

65 lines (62 loc) 2.19 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // tools/functional-di-enhanced-transformer/__tests__/__fixtures__/complex-component.basic.transformed.snap.tsx import React2 from "react"; // src/context.tsx import * as React from "react"; import { createContext, useContext } from "react"; import { proxy, useSnapshot } from "valtio"; var DIContext = /* @__PURE__ */ createContext(null); function useDI() { const container = useContext(DIContext); if (!container) { throw new Error("useDI must be used within a DIProvider"); } return container; } __name(useDI, "useDI"); function useService(token) { const container = useDI(); const [_] = React.useState(proxy(container.resolve(token))); if (_ === void 0) { throw new Error(`Service not found: ${String(token)}`); } useSnapshot(_); return _; } __name(useService, "useService"); // tools/functional-di-enhanced-transformer/__tests__/__fixtures__/complex-component.basic.transformed.snap.tsx function ComplexComponent(props) { const api = useService("ApiInterface"); const logger = useService("LoggerInterface"); const cache = void 0; const user = void 0; const services = { api, logger, cache, user }; const { userId, config } = props; React2.useEffect(() => { services.logger.log(`Loading complex component for user ${userId}`); services.api.getUserData(userId).then((data) => { services.cache?.set(`user-${userId}`, data); services.user?.updateProfile(data); if (config.debug) { services.logger.log(`Debug: Loaded user data for ${userId}`); } }); }, [ userId, config.debug ]); return /* @__PURE__ */ React2.createElement("div", { "data-theme": config.theme }, /* @__PURE__ */ React2.createElement("h1", null, "Complex Component"), /* @__PURE__ */ React2.createElement("p", null, "User: ", userId), /* @__PURE__ */ React2.createElement("p", null, "Debug: ", config.debug ? "ON" : "OFF")); } __name(ComplexComponent, "ComplexComponent"); export { ComplexComponent }; //# sourceMappingURL=complex-component.basic.transformed.snap.js.map