GeoLeaf Core API - v3.0.0
    Preparing search index...
    Utils: {
        validateUrl: (
            url: string | null | undefined,
            allowedProtocols?: string[],
        ) => string | null;
        deepMerge: <T extends Record<string, unknown>>(
            target: T,
            source: Record<string, unknown> | null | undefined,
        ) => T;
        ensureMap: (explicitMap: unknown) => unknown;
        mergeOptions: <T extends Record<string, unknown>>(
            defaults: T,
            override: Record<string, unknown> | null | undefined,
        ) => T;
        fireMapEvent: (
            map:
                | { fire?: (name: string, payload: unknown) => void }
                | null
                | undefined,
            eventName: string,
            payload?: unknown,
        ) => void;
        debounce: <T extends (...args: never[]) => unknown>(
            func: T,
            wait?: number,
            immediate?: boolean,
        ) => (...args: Parameters<T>) => void;
        throttle: <T extends (...args: never[]) => unknown>(
            func: T,
            limit?: number,
        ) => (...args: Parameters<T>) => void;
        getDistance: (
            lat1: number,
            lng1: number,
            lat2: number,
            lng2: number,
        ) => number;
        resolveField: (
            obj: Record<string, unknown> | null | undefined,
            ...paths: string[],
        ) => unknown;
        compareByOrder: (
            a: { order?: number },
            b: { order?: number },
            fallback?: number,
        ) => number;
        getLog: () => LogImplInterface;
        getActiveProfile: () => unknown;
    } = ...

    The GeoLeaf.Utils façade — generic helpers with no DOM or map dependency.

    Distinct from GeoLeaf.Helpers, which is the DOM-facing set: anything here works without a document. The split is the reason debounce and throttle live on this side.

    Type Declaration

    • validateUrl: (url: string | null | undefined, allowedProtocols?: string[]) => string | null
    • deepMerge: <T extends Record<string, unknown>>(
          target: T,
          source: Record<string, unknown> | null | undefined,
      ) => T
    • ensureMap: (explicitMap: unknown) => unknown
    • mergeOptions: <T extends Record<string, unknown>>(
          defaults: T,
          override: Record<string, unknown> | null | undefined,
      ) => T
    • fireMapEvent: (
          map:
              | { fire?: (name: string, payload: unknown) => void }
              | null
              | undefined,
          eventName: string,
          payload?: unknown,
      ) => void
    • debounce: <T extends (...args: never[]) => unknown>(
          func: T,
          wait?: number,
          immediate?: boolean,
      ) => (...args: Parameters<T>) => void
    • throttle: <T extends (...args: never[]) => unknown>(
          func: T,
          limit?: number,
      ) => (...args: Parameters<T>) => void
    • getDistance: (lat1: number, lng1: number, lat2: number, lng2: number) => number
    • resolveField: (obj: Record<string, unknown> | null | undefined, ...paths: string[]) => unknown
    • compareByOrder: (a: { order?: number }, b: { order?: number }, fallback?: number) => number
    • getLog: () => LogImplInterface
    • getActiveProfile: () => unknown