editable — hover a row for + / move / remove; the type
selector converts a value (string ↔ number ↔ object …); object keys
are editable in place
valueChange emits the serialized JSON string on every edit
readonly — a collapsible viewer for API payloads / audit
data (no editors, still foldable)
form-associated — required; the whole document posts under
the field name as one JSON string
sample usage
<form>
<material-json-field name="config" label="Config"
value='{"theme":"dark","retries":3,"enabled":true}'></material-json-field>
<button type="submit">Save</button>
</form>
<script>
const jf = document.querySelector('material-json-field');
jf.addEventListener('valueChange', (e) => console.log(e.detail.value));
jf.getJson().then((obj) => console.log(obj)); // parsed value
</script>