import {
  runIfFn
} from "./KGOB2IMX.jsx";
import {
  ark
} from "./UFYZ7HLU.jsx";
import {
  createContext
} from "./UZJJWJQM.jsx";

// src/providers/environment/environment-provider.tsx
import { getDocument, getWindow } from "@zag-js/dom-query";
import { Show, createMemo, createSignal } from "solid-js";

// src/providers/environment/use-environment-context.ts
var [EnvironmentContextProvider, useEnvironmentContext] = createContext({
  hookName: "useEnvironmentContext",
  providerName: "<EnvironmentProvider />",
  strict: false,
  defaultValue: () => ({
    getRootNode: () => document,
    getDocument: () => document,
    getWindow: () => window
  })
});

// src/providers/environment/environment-provider.tsx
var EnvironmentProvider = (props) => {
  const [spanRef, setSpanRef] = createSignal();
  const getRootNode = () => runIfFn(props.value) ?? spanRef()?.getRootNode() ?? document;
  const environment = createMemo(() => ({
    getRootNode,
    getDocument: () => getDocument(getRootNode()),
    getWindow: () => getWindow(getRootNode())
  }));
  return <EnvironmentContextProvider value={environment}>
      {props.children}
      <Show when={!props.value}>
        <ark.span hidden ref={setSpanRef} />
      </Show>
    </EnvironmentContextProvider>;
};

export {
  useEnvironmentContext,
  EnvironmentProvider
};
