import { ref as s, getCurrentInstance as a, inject as n } from "vue";
import { a as i, g as c } from "./dialogs.vue_vue_type_script_setup_true_lang-D8WYUfXI.es.js";
import { waitWhile as l } from "../utils/system.js";
class w {
  /**
   * Функция, определяющая компонент TopDialogComponent
   */
  resolve;
  /**
   * Реактивная Сссылка на объект worker,
   *
   * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено
   */
  worker = s(null);
  constructor(o) {
    this.resolve = o;
  }
  /**
   * Получить доступ к TopDialogHandle
   */
  async get() {
    if (this.worker.value) return this.worker.value;
    const r = (await this.resolve()).default;
    this.worker.value = k(r);
    const t = this.worker.value;
    return await l(() => !t.isMounted), t;
  }
  /**
   * Открыть диалоговое окно
   */
  async open(...o) {
    await (await this.get()).open(...o);
  }
  /**
   * Открыть диалоговое окно как ссылку, для хеш-навигации
   *
   * Только общедоступные диалоговые окна, расположенные в @/dialogs
   */
  async openAsLink(...o) {
    (await this.get()).openAsLink(...o);
  }
  /**
   * Закрыть диалоговое окно
   *
   * Не меняет состояние компонента диалогового окна
   */
  async close(...o) {
    (await this.get()).close(...o);
  }
  /**
   * Размонтировать виджет диалогового окна
   */
  async destroy(...o) {
    (await this.get()).destroy(...o);
  }
  /**
   * Установить props
   *
   * Полностью сбрасывается состояние props
   */
  async setProps(...o) {
    await (await this.get()).setProps(...o);
  }
}
const d = () => {
  const e = a();
  if (e?.type?.id) {
    const o = c(e.type.id);
    if (o) return o;
  }
  return n("dialogWorker");
}, k = (e) => i(e), h = (e) => new w(e);
export {
  k as a,
  d as b,
  h as u
};
//# sourceMappingURL=utils-MzIaxkRQ.es.js.map
