import { r as lowercasePreservingWhitespace } from "./string-coerce-DyL154ka.js";
import "./string-coerce-runtime-DcopKqDR.js";
//#region extensions/canvas/src/host/a2ui-shared.ts
const A2UI_PATH = "/__daocore__/a2ui";
const CANVAS_HOST_PATH = "/__daocore__/canvas";
const CANVAS_WS_PATH = "/__daocore__/ws";
function isA2uiPath(pathname) {
	return pathname === "/__daocore__/a2ui" || pathname.startsWith(`/__daocore__/a2ui/`);
}
function injectCanvasLiveReload(html) {
	const snippet = `
<script>
(() => {
  // Cross-platform action bridge helper.
  // Works on:
  // - iOS: window.webkit.messageHandlers.daocoreCanvasA2UIAction.postMessage(...)
  // - Android: window.daocoreCanvasA2UIAction.postMessage(...)
  const handlerNames = ["daocoreCanvasA2UIAction"];
  function postToNode(payload) {
    try {
      const raw = typeof payload === "string" ? payload : JSON.stringify(payload);
      for (const name of handlerNames) {
        const iosHandler = globalThis.webkit?.messageHandlers?.[name];
        if (iosHandler && typeof iosHandler.postMessage === "function") {
          iosHandler.postMessage(raw);
          return true;
        }
        const androidHandler = globalThis[name];
        if (androidHandler && typeof androidHandler.postMessage === "function") {
          // Important: call as a method on the interface object (binding matters on Android WebView).
          androidHandler.postMessage(raw);
          return true;
        }
      }
    } catch {}
    return false;
  }
  function sendUserAction(userAction) {
    const id =
      (userAction && typeof userAction.id === "string" && userAction.id.trim()) ||
      (globalThis.crypto?.randomUUID?.() ?? String(Date.now()));
    const action = { ...userAction, id };
    return postToNode({ userAction: action });
  }
  globalThis.DaoCore = globalThis.DaoCore ?? {};
  globalThis.DaoCore.postMessage = postToNode;
  globalThis.DaoCore.sendUserAction = sendUserAction;
  globalThis.daocorePostMessage = postToNode;
  globalThis.daocoreSendUserAction = sendUserAction;

  try {
    const cap = new URLSearchParams(location.search).get("oc_cap");
    const proto = location.protocol === "https:" ? "wss" : "ws";
    const capQuery = cap ? "?oc_cap=" + encodeURIComponent(cap) : "";
    const ws = new WebSocket(proto + "://" + location.host + ${JSON.stringify(CANVAS_WS_PATH)} + capQuery);
    ws.onmessage = (ev) => {
      if (String(ev.data || "") === "reload") location.reload();
    };
  } catch {}
})();
<\/script>
`.trim();
	const idx = lowercasePreservingWhitespace(html).lastIndexOf("</body>");
	if (idx >= 0) return `${html.slice(0, idx)}\n${snippet}\n${html.slice(idx)}`;
	return `${html}\n${snippet}\n`;
}
//#endregion
export { isA2uiPath as a, injectCanvasLiveReload as i, CANVAS_HOST_PATH as n, CANVAS_WS_PATH as r, A2UI_PATH as t };
