import { setupHtmx, registerAcmsExtensions } from '@ablogcms/htmx';
import type { HtmxConfig } from '@ablogcms/htmx';
import geolocation from '@ablogcms/lib/geolocation';

// ここに到達するのは htmx_load_strategy: dynamic のときのみ（static ではサーバーが
// window.htmx を用意済みのため built-in/dispatch.js がこの import 自体をスキップする）。
// 非推奨通知は setupHtmx 自身（@ablogcms/htmx）が bundledHtmx にフォールバックした時点で出す
const dispatchHtmx = (element: HTMLElement, customConfig: Partial<HtmxConfig>): void => {
  setupHtmx(element, customConfig, {
    onAfterSwap: (target) => {
      ACMS.Dispatch(target);
    },
    registerExtensions: (htmx) => {
      registerAcmsExtensions(htmx, { getGeolocation: geolocation });
    },
  });
};

export default dispatchHtmx;
