/**
* @module plugins/clean-html
*/
import type { IJodit, Nullable, IDictionary } from 'jodit/types';
import * as filters from './filters';
type Filter = keyof typeof filters;
const keys = Object.keys(filters) as Filter[];
/**
* @private
*/
export function visitNodeWalker(
jodit: IJodit,
nodeElm: Node,
allowTags: IDictionary | false,
denyTags: IDictionary | false,
currentSelectionNode: Nullable
): boolean {
let hadEffect = false;
const dcf = jodit.o.cleanHTML.disableCleanFilter;
for (const key of keys) {
if (dcf && dcf.has(key)) {
continue;
}
const filter = filters[key];
const tmp = hadEffect;
hadEffect = filter(
jodit,
nodeElm,
hadEffect,
allowTags,
denyTags,
currentSelectionNode
);
if (!isProd && !tmp && hadEffect) {
console.warn(`CleanHTML: Effect "${key}"`);
}
if (!nodeElm.isConnected) {
return true;
}
}
return hadEffect;
}