@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
1 lines • 2.48 kB
Source Map (JSON)
{"version":3,"file":"environment-provider.cjs","names":["defaultEnvironment: Environment","EnvironmentProvider: FC<EnvironmentProviderProps>"],"sources":["../../../../src/core/system/environment-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport { createContext, use, useCallback, useMemo, useRef } from \"react\"\nimport { createdDom, getDocument, getWindow, runIfFn } from \"../../utils\"\n\nexport type RootNode = Document | Node | ShadowRoot\n\nexport interface Environment {\n getDocument: () => Document | undefined\n getRootNode: () => RootNode | undefined\n getWindow: () => undefined | Window\n}\n\nexport const defaultEnvironment: Environment = {\n getDocument: () => document,\n getRootNode: () => document,\n getWindow: () => window,\n}\n\nconst EnvironmentContext = createContext<Environment>(defaultEnvironment)\n\nexport interface EnvironmentProviderProps extends PropsWithChildren {\n value?: (() => RootNode) | RootNode\n}\n\nexport const EnvironmentProvider: FC<EnvironmentProviderProps> = ({\n children,\n value,\n}) => {\n const ref = useRef<HTMLSpanElement>(null)\n\n const getRootNode = useCallback(() => {\n return runIfFn(value) ?? ref.current?.getRootNode() ?? document\n }, [value, ref])\n\n const context = useMemo<Environment>(() => {\n if (createdDom()) {\n return {\n getDocument: () => getDocument(getRootNode()),\n getRootNode,\n getWindow: () => getWindow(getRootNode()),\n }\n } else {\n return {\n getDocument: () => undefined,\n getRootNode: () => undefined,\n getWindow: () => undefined,\n }\n }\n }, [getRootNode])\n\n return (\n <EnvironmentContext value={context}>\n {children}\n\n {!value ? <span ref={ref} hidden /> : null}\n </EnvironmentContext>\n )\n}\n\nexport const useEnvironment = () => {\n return use(EnvironmentContext)\n}\n"],"mappings":";;;;;;;;;;;AAcA,MAAaA,qBAAkC;CAC7C,mBAAmB;CACnB,mBAAmB;CACnB,iBAAiB;CAClB;AAED,MAAM,8CAAgD,mBAAmB;AAMzE,MAAaC,uBAAqD,EAChE,UACA,YACI;CACJ,MAAM,wBAA8B,KAAK;CAEzC,MAAM,2CAAgC;AACpC,wDAAe,MAAM,IAAI,IAAI,SAAS,aAAa,IAAI;IACtD,CAAC,OAAO,IAAI,CAAC;AAkBhB,QACE,4CAAC;EAAmB,gCAjBqB;AACzC,0DAAgB,CACd,QAAO;IACL,sEAA+B,aAAa,CAAC;IAC7C;IACA,kEAA2B,aAAa,CAAC;IAC1C;OAED,QAAO;IACL,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IAClB;KAEF,CAAC,YAAY,CAAC;aAIZ,UAEA,CAAC,QAAQ,2CAAC;GAAU;GAAK;IAAS,GAAG;GACnB;;AAIzB,MAAa,uBAAuB;AAClC,uBAAW,mBAAmB"}