import {markRaw} from 'vue';
import {FormHook, useFormBuilder} from '@myparcel/vue-form-builder';
import {StopActionHandler} from '../stopActionHandler';
import {type ActionContext} from '../executors';
import {type ActionParameters, type PrintAction} from '../../types';
import {useModalStore} from '../../stores';
import {AdminModalKey} from '../../data';
export const waitForLabelPrompt = ({
parameters,
}: ActionContext): Promise> => {
const formBuilder = useFormBuilder();
const modalStore = useModalStore();
return new Promise((resolve, reject) => {
formBuilder.on('afterRegister', (form) => {
modalStore.context ??= {};
// @ts-expect-error infinitely deep instantiation
modalStore.context.form = markRaw(form);
if (form.name !== AdminModalKey.PrintOptions) {
return;
}
form.on(FormHook.AfterSubmit, (instance) => {
resolve({
...parameters,
...instance.getValues(),
} as ActionParameters);
});
});
modalStore.onClose(() => {
reject(new StopActionHandler());
});
modalStore.open(AdminModalKey.PrintOptions);
});
};