import { defineComponent, computed, createElementBlock, openBlock, createElementVNode, Fragment, renderList, createBlock } from "vue";
import { isHttpMethod } from "@scalar/helpers/http/is-http-method";
import { objectEntries } from "@scalar/helpers/object/object-entries";
import { getResolvedRef } from "@scalar/workspace-store/helpers/get-resolved-ref";
import Callback from "./Callback.vue.js";
const _hoisted_1 = {
  "aria-label": "Callbacks",
  class: "callbacks-list gap-3",
  role: "group"
};
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "Callbacks",
  props: {
    path: {},
    callbacks: {},
    eventBus: {},
    options: {}
  },
  setup(__props) {
    const flattenedCallbacks = computed(() => {
      const _callbacks = [];
      objectEntries(__props.callbacks).forEach(([name, pathItem]) => {
        objectEntries(getResolvedRef(pathItem)).forEach(([url, methods]) => {
          if (typeof methods !== "object" || !methods) {
            return;
          }
          objectEntries(methods).forEach(([callbackMethod, callback]) => {
            if (!isHttpMethod(callbackMethod)) {
              return;
            }
            _callbacks.push({
              name,
              url,
              method: callbackMethod,
              callback
            });
          });
        });
      });
      return _callbacks;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1, [
        _cache[0] || (_cache[0] = createElementVNode("div", { class: "callbacks-title text-c-1 my-3 text-lg font-medium" }, " Callbacks ", -1)),
        (openBlock(true), createElementBlock(Fragment, null, renderList(flattenedCallbacks.value, ({ callback, method, name, url }) => {
          return openBlock(), createBlock(Callback, {
            key: `${name}-${url}-${method}`,
            callback,
            eventBus: _ctx.eventBus,
            method,
            name,
            options: _ctx.options,
            path: _ctx.path,
            url
          }, null, 8, ["callback", "eventBus", "method", "name", "options", "path", "url"]);
        }), 128))
      ]);
    };
  }
});
export {
  _sfc_main as default
};
