import { Arr } from '@ephox/katamari'; import type { SugarElement } from '../node/SugarElement'; import * as Attribute from './Attribute'; // Methods for handling attributes that contain a list of values
const read = (element: SugarElement, attr: string): string[] => { const value = Attribute.get(element, attr); return value === undefined || value === '' ? [] : value.split(' '); }; const add = (element: SugarElement, attr: string, id: string): boolean => { const old = read(element, attr); const nu = old.concat([ id ]); Attribute.set(element, attr, nu.join(' ')); return true; }; const remove = (element: SugarElement, attr: string, id: string): boolean => { const nu = Arr.filter(read(element, attr), (v) => v !== id); if (nu.length > 0) { Attribute.set(element, attr, nu.join(' ')); } else { Attribute.remove(element, attr); } return false; }; export { read, add, remove };