import { blueFromArgb, greenFromArgb, redFromArgb, customColor, argbFromHex, Scheme, CorePalette, } from '@material/material-color-utilities'; import { getDocument } from 'ssr-window'; import { $ } from '@mdui/jq/$.js'; import { unique } from '@mdui/jq/functions/unique.js'; import '@mdui/jq/methods/addClass.js'; import '@mdui/jq/methods/append.js'; import '@mdui/jq/methods/get.js'; import '@mdui/jq/methods/remove.js'; import '@mdui/jq/methods/removeClass.js'; import { toKebabCase } from '@mdui/jq/shared/helper.js'; const themeArr = ['light', 'dark']; const prefix = 'mdui-custom-color-scheme-'; // 类名前缀 let themeIndex = 0; const rgbFromArgb = (source) => { const red = redFromArgb(source); const green = greenFromArgb(source); const blue = blueFromArgb(source); return [red, green, blue].join(', '); }; /** * 移除指定元素上的配色方案 * @param target */ export const remove = (target) => { const $target = $(target); // 找出指定元素上所有的配色方案 CSS class let classNames = $target .get() .map((element) => Array.from(element.classList)) .flat(); classNames = unique(classNames).filter((className) => className.startsWith(prefix)); // 移除 CSS class $target.removeClass(classNames.join(' ')); // 找出没有被其他元素使用的 CSS class const unusedClassNames = classNames.filter((className) => $(`.${className}`).length === 0); // 移除对应的 `); // 添加新配色方案 $target.addClass(className); };