import { computed, ref, type Ref, type ComputedRef } from 'vue' import { useProFeatures } from '@/composables/useProFeatures.ts' const EDIT_ENTRIES_FEATURE = 'edit_entries' export interface EntryEditController { isEditMode: Ref isSaving: Ref canEditEntry: ComputedRef hasUnsavedChanges: ComputedRef fieldErrors: Ref> draftFieldValues: Ref> draftMetadata: Ref> enterEditMode: () => Promise exitEditMode: () => void cancelEdit: () => Promise saveEntry: () => Promise setFieldValue: (fieldId: string | number, value: unknown) => void setMetadataValue: (key: string, value: unknown) => void } /** Lite no-op controller when Pro edit feature is not registered. */ export function useEntryEditStub(): EntryEditController { const pro = useProFeatures() const isEditMode = ref(false) const isSaving = ref(false) const fieldErrors = ref>({}) const draftFieldValues = ref>({}) const draftMetadata = ref>({}) const canEditEntry = computed(() => pro.hasFeature(EDIT_ENTRIES_FEATURE)) const hasUnsavedChanges = computed(() => false) const noopAsync = async () => {} const noop = () => {} return { isEditMode, isSaving, canEditEntry, hasUnsavedChanges, fieldErrors, draftFieldValues, draftMetadata, enterEditMode: noopAsync, exitEditMode: noop, cancelEdit: noopAsync, saveEntry: async () => false, setFieldValue: noop, setMetadataValue: noop, } }