getPropsToForward function

Map getPropsToForward(
  1. Map props, {
  2. bool omitReactProps = true,
  3. bool onlyCopyDomProps = false,
  4. Iterable? keysToOmit,
  5. Iterable<Iterable>? keySetsToOmit,
})

Returns a copy of the specified props map, omitting reserved React props by default, in addition to any specified keysToOmit or keySetsToOmit.

If onlyCopyDomProps is true, only the keys found within DomPropsMixin and SvgPropsMixin will be forwarded.

Useful for prop forwarding.

Implementation

Map getPropsToForward(Map props, {
    bool omitReactProps = true,
    bool onlyCopyDomProps = false,
    Iterable? keysToOmit,
    Iterable<Iterable>? keySetsToOmit
}) {
  Map propsToForward = JsBackedMap.from(props);

  if (omitReactProps) {
    propsToForward
      ..remove('key')
      ..remove('ref')
      ..remove('children');
  }

  if (keysToOmit != null) {
    keysToOmit.forEach((key) {
      propsToForward.remove(key);
    });
  }

  if (keySetsToOmit != null) {
    keySetsToOmit.forEach((keySet) {
      keySet.forEach((key) {
        propsToForward.remove(key);
      });
    });
  }

  if (onlyCopyDomProps) {
    List<String>.from(propsToForward.keys).forEach((key) {
      if (key.startsWith('aria-')) return;
      if (key.startsWith('data-')) return;
      if (_validDomProps.contains(key)) return;

      propsToForward.remove(key);
    });
  }

  return propsToForward;
}