=> {
			const targetVersion = dropdown.value
			if (!targetVersion || targetVersion === currentVersion) {
				result.className = 'notice notice-warning'
				result.innerHTML = `${getI18n('selectDifferent', 'Please select a different version to switch to.')}
`
				result.style.display = ''
				return
			}
			button.disabled = true
			const originalText = button.textContent ?? ''
			button.textContent = getI18n('switching', 'Switching...')
			result.className = 'notice notice-info'
			result.innerHTML = `${getI18n('processing', 'Processing version switch. Please wait...')}
`
			result.style.display = ''
			try {
				const response = await postForm({
					action: 'code_snippets_switch_version',
					target_version: targetVersion,
					nonce: cfg.nonce_switch ?? '',
				}, cfg)
				if (response.success) {
					result.className = 'notice notice-success'
					result.innerHTML = `${response.data?.message ?? ''}
`
					setTimeout(() => window.location.reload(), SUCCESS_RELOAD_MS)
					return
				}
				result.className = 'notice notice-error'
				result.innerHTML = `${response.data?.message ?? getI18n('error', 'An error occurred.')}
`
				button.disabled = false
				button.textContent = originalText
			} catch (_err) {
				result.className = 'notice notice-error'
				result.innerHTML = `${getI18n('errorSwitch', 'An error occurred while switching versions. Please try again.')}
`
				button.disabled = false
				button.textContent = originalText
			}
		})()
	})
}
const REFRESH_RELOAD_MS = 1000
const bindRefresh = (
	btn: HTMLButtonElement,
	cfg: VersionConfig,
): void => {
	btn.addEventListener('click', (): void => {
		void (async (): Promise => {
			const original = btn.textContent ?? ''
			btn.disabled = true
			btn.textContent = getI18n('refreshing', 'Refreshing...')
			try {
				await postForm({
					action: 'code_snippets_refresh_versions',
					nonce: cfg.nonce_refresh ?? '',
				}, cfg)
				btn.textContent = getI18n('refreshed', 'Refreshed!')
				setTimeout(() => {
					btn.disabled = false
					btn.textContent = original
					window.location.reload()
				}, REFRESH_RELOAD_MS)
			} catch {
				btn.disabled = false
				btn.textContent = original
			}
		})()
	})
}
export const initVersionSwitch = (): void => {
	const cfg = getConfig()
	const currentVersion = getCurrentVersion()
	const button =  el('switch-version-btn')
	const dropdown =  el('target_version')
	const result =  el('version-switch-result')
	const refreshBtn =  el('refresh-versions-btn')
	if (dropdown) {
		bindDropdown(dropdown, button, currentVersion)
	}
	if (button && dropdown && result) {
		bindSwitch(button, dropdown, result, cfg, currentVersion)
	}
	if (refreshBtn) {
		bindRefresh(refreshBtn, cfg)
	}
}