import {CloudinaryImage} from "@cloudinary/url-gen/assets/CloudinaryImage";
import {Plugin, AccessibilityMode, HtmlPluginState, PluginResponse} from "../types";
import {ACCESSIBILITY_MODES} from '../utils/internalConstants';
import {isBrowser} from "../utils/isBrowser";
import {isImage} from "../utils/isImage";
export function accessibility({mode = 'darkmode'}: { mode?: string; }={}): Plugin{
return accessibilityPlugin.bind(null, mode);
}
export function accessibilityPlugin(mode: AccessibilityMode, element: HTMLImageElement, pluginCloudinaryImage: CloudinaryImage, htmlPluginState: HtmlPluginState): Promise<PluginResponse> | boolean {
if(isBrowser()){
if(!isImage(element)) return;
return new Promise((resolve) => {
htmlPluginState.cleanupCallbacks.push(()=>{
resolve('canceled');
});
if(!ACCESSIBILITY_MODES[mode]){
mode = 'darkmode';
}
pluginCloudinaryImage.effect(ACCESSIBILITY_MODES[mode]);
resolve({accessibility: true});
});
}else{
pluginCloudinaryImage.effect(ACCESSIBILITY_MODES[mode]);
return true;
}
}