import {DEFAULT_POLYFILL_OPTIONS, getCompletePolyfill, getPolyfill, NavigationPolyfillOptions} from "./get-polyfill";
import {getNavigation} from "./get-navigation";
import {globalNavigation} from "./global-navigation";

export function applyPolyfill(options: NavigationPolyfillOptions = DEFAULT_POLYFILL_OPTIONS) {
  const { apply, navigation } = getCompletePolyfill(options);
  apply();
  return navigation;
}

export function shouldApplyPolyfill(navigation = getNavigation()) {
  const globalThat: { Element?: unknown, navigation?: unknown } = globalThis;
    return (
      navigation !== globalNavigation &&
      !Object.hasOwn(globalThat, 'navigation') &&
      typeof window !== "undefined"
  );
}
