{
  "tag": "ed-mutation-observer",
  "kind": "component",
  "summary": "The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).",
  "status": "experimental",
  "level": "molecule",
  "since": "1.0",
  "docs": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/mutation-observer/",
  "usage": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/mutation-observer/usage/",
  "playwright": "getByTestId('…')",
  "dependencies": [],
  "use": [
    "Reacting when content inside a wrapped region is added, removed or changed, such as rows inserted into a list by other code",
    "Reacting when an attribute of a wrapped element changes, such as a state flag set by another script"
  ],
  "notFor": [
    {
      "when": "Tracking size changes of an element",
      "instead": "a [Resize Observer](https://test-apps.eurodata.de/a/eurodata-ui/docs/components/resize-observer)"
    },
    {
      "when": "Tracking whether an element is visible in the viewport",
      "instead": "an [Intersection Observer](https://test-apps.eurodata.de/a/eurodata-ui/docs/components/intersection-observer)"
    }
  ],
  "rules": [],
  "api": {
    "attributes": [
      {
        "name": "attr",
        "property": "attr",
        "type": "string",
        "description": "Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.\n`attr=\"class id title\"`. To watch all attributes, use `*`."
      },
      {
        "name": "attr-old-value",
        "property": "attrOldValue",
        "type": "boolean",
        "default": "false",
        "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes."
      },
      {
        "name": "char-data",
        "property": "charData",
        "type": "boolean",
        "default": "false",
        "description": "Watches for changes to the character data contained within the node."
      },
      {
        "name": "char-data-old-value",
        "property": "charDataOldValue",
        "type": "boolean",
        "default": "false",
        "description": "Indicates whether or not the previous value of the node's text should be recorded."
      },
      {
        "name": "child-list",
        "property": "childList",
        "type": "boolean",
        "default": "false",
        "description": "Watches for the addition or removal of new child nodes."
      },
      {
        "name": "disabled",
        "property": "disabled",
        "type": "boolean",
        "default": "false",
        "description": "Disables the observer."
      },
      {
        "name": "dir",
        "property": "dir",
        "type": "string"
      },
      {
        "name": "lang",
        "property": "lang",
        "type": "string"
      }
    ],
    "properties": [],
    "methods": [
      {
        "name": "getPropertyDescriptor",
        "static": true,
        "parameters": [
          {
            "name": "name",
            "type": "PropertyKey"
          },
          {
            "name": "key",
            "type": "string | symbol"
          },
          {
            "name": "options",
            "type": "PropertyDeclaration"
          }
        ],
        "returns": "PropertyDescriptor | undefined",
        "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`."
      }
    ],
    "events": [
      {
        "name": "ed-mutation",
        "react": "onEdMutation",
        "type": "{ mutationList: MutationRecord[] }",
        "description": "Emitted when a mutation is observed. The event detail contains a `mutationList` array of [`MutationRecord`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord) objects."
      }
    ],
    "slots": [
      {
        "name": "",
        "description": "The content to watch for mutations."
      }
    ],
    "cssProperties": [],
    "parts": [],
    "states": []
  },
  "import": "import '@eurodata/eurodata-ui/dist/components/mutation-observer/mutation-observer.js';",
  "react": {
    "component": "EdMutationObserver",
    "import": "import EdMutationObserver from '@eurodata/eurodata-ui/dist/react/mutation-observer/index.js';"
  }
}
