// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
// Source: HTML Sanitizer API (https://wicg.github.io/sanitizer-api/)

[
  Exposed=(Window),
  SecureContext
] interface Sanitizer {
  constructor(optional SanitizerConfig config = {});

  DocumentFragment sanitize(SanitizerInput input);
  DOMString sanitizeToString(SanitizerInput input);

  SanitizerConfig config();
  static SanitizerConfig defaultConfig();
};

typedef (DOMString or DocumentFragment or Document) SanitizerInput;

dictionary SanitizerConfig {
  sequence<DOMString> allowElements;
  sequence<DOMString> blockElements;
  sequence<DOMString> dropElements;
  AttributeMatchList allowAttributes;
  AttributeMatchList dropAttributes;
  boolean allowCustomElements;
};

typedef record<DOMString, sequence<DOMString>> AttributeMatchList;
