import type { PopsIconType } from "./types/icon";
import SVG_min from "./svg/min.svg";
import SVG_mise from "./svg/mise.svg";
import SVG_max from "./svg/max.svg";
import SVG_close from "./svg/close.svg";
import SVG_edit from "./svg/edit.svg";
import SVG_share from "./svg/share.svg";
import SVG_delete from "./svg/delete.svg";
import SVG_search from "./svg/search.svg";
import SVG_upload from "./svg/upload.svg";
import SVG_loading from "./svg/loading.svg";
import SVG_next from "./svg/next.svg";
import SVG_prev from "./svg/prev.svg";
import SVG_eleme from "./svg/eleme.svg";
import SVG_elemePlus from "./svg/elemePlus.svg";
import SVG_chromeFilled from "./svg/chromeFilled.svg";
import SVG_cpu from "./svg/cpu.svg";
import SVG_videoPlay from "./svg/videoPlay.svg";
import SVG_videoPause from "./svg/videoPause.svg";
import SVG_headset from "./svg/headset.svg";
import SVG_monitor from "./svg/monitor.svg";
import SVG_documentCopy from "./svg/documentCopy.svg";
import SVG_picture from "./svg/picture.svg";
import SVG_circleClose from "./svg/circleClose.svg";
import SVG_view from "./svg/view.svg";
import SVG_hide from "./svg/hide.svg";
import SVG_keyboard from "./svg/keyboard.svg";
import SVG_arrowRight from "./svg/arrowRight.svg";
import SVG_arrowLeft from "./svg/arrowLeft.svg";

export const PopsIcon = {
	$data: {
		min: SVG_min,
		mise: SVG_mise,
		max: SVG_max,
		close: SVG_close,
		edit: SVG_edit,
		share: SVG_share,
		delete: SVG_delete,
		search: SVG_search,
		upload: SVG_upload,
		loading: SVG_loading,
		next: SVG_next,
		prev: SVG_prev,
		eleme: SVG_eleme,
		elemePlus: SVG_elemePlus,
		chromeFilled: SVG_chromeFilled,
		cpu: SVG_cpu,
		videoPlay: SVG_videoPlay,
		videoPause: SVG_videoPause,
		headset: SVG_headset,
		monitor: SVG_monitor,
		documentCopy: SVG_documentCopy,
		picture: SVG_picture,
		circleClose: SVG_circleClose,
		view: SVG_view,
		hide: SVG_hide,
		keyboard: SVG_keyboard,
		arrowRight: SVG_arrowRight,
		arrowLeft: SVG_arrowLeft,
	} as {
		[key in PopsIconType]: string;
	},
	/**
	 * 判断是否存在某个icon
	 * @param iconName 图标名
	 */
	hasIcon(iconName: string) {
		return Object.keys(PopsIcon.$data).includes(iconName);
	},
	/**
	 * 获取icon
	 * @param iconName 图标名
	 */
	getIcon(iconName: string): string | null {
		return PopsIcon.$data[iconName as keyof typeof this.$data];
	},
	/**
	 * 删除图标
	 * @param iconName 图标名
	 */
	deleteIcon(iconName: string) {
		return Reflect.deleteProperty(PopsIcon.$data, iconName);
	},
	/**
	 * 设置图标
	 * @param iconName 图标名
	 * @param iconHTML 图标html
	 */
	setIcon(iconName: string, iconHTML: string) {
		Reflect.set(PopsIcon.$data, iconName, iconHTML);
	},
};
