{"version":3,"sources":["../src/children.ts","../src/dom-props.ts","../src/filter-dom-props.ts","../src/functions.ts"],"names":["Children","isValidElement","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAQO,SAAS,iBAAiB,QAAA,EAA2B;AAC1D,EAAA,OAAOA,cAAA,CAAS,QAAQ,QAAQ,CAAA,CAAE,OAAO,CAAC,KAAA,KAAUC,oBAAA,CAAe,KAAK,CAAC,CAAA;AAC3E;AAEO,IAAM,YAAA,GAAe,CAC1B,QAAA,EACA,WAAA,KACqC;AACrC,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,MAAM,qBAAA,GAAwBD,cAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,IAAA,KAAS;AAC7D,IAAA,IAAI,CAACC,oBAAA,CAAe,IAAI,CAAA,EAAG,OAAO,IAAA;AAClC,IAAA,IAAI,IAAA,CAAK,SAAS,WAAA,EAAa;AAC7B,MAAA,MAAA,CAAO,KAAK,IAAS,CAAA;AAErB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAElB,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,IAAU,CAAA,GAAI,MAAA,GAAS,MAAA;AAErD,EAAA,OAAO,CAAC,uBAAuB,cAAc,CAAA;AAC/C;;;AChCO,IAAM,YAAA,uBAAmB,GAAA,CAAI;AAAA,EAClC,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,aAAA,uBAAoB,GAAA,CAAI;AAAA,EACnC,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF,CAAC;;;ACjJD,IAAM,MAAA,GAAS,aAAA;AACf,IAAM,MAAA,GAAS,aAAA;AACf,IAAM,MAAA,GAAS,eAAA;AAOR,SAAS,cAAA,CACd,KAAA,EACA,IAAA,GAAgB,EAAC,EACa;AAC9B,EAAA,MAAM;AAAA,IACJ,SAAA,GAAY,IAAA;AAAA,IACZ,OAAA,GAAU,IAAA;AAAA,IACV,SAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,GAAI,IAAA;AACJ,EAAA,MAAM,gBAAgB,EAAC;AAEvB,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,aAAA,EAAe,GAAA,CAAI,IAAI,CAAA,EAAG;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,gBAAgB,GAAA,CAAI,IAAI,KAAK,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AAClD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,MAAA,CAAO,KAAK,IAAI,CAAA,IAAK,CAAC,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA,EAAG;AACjD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAA,IAAiB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACtC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,cAAA,IAAkB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG;AACvC,MAAA;AAAA,IACF;AAEA,IAAA,IACG,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,KAAA,EAAO,IAAI,CAAA,KAC9C,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA,IACnB,SAAA,IAAa,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,IAC9B,SAAA,EAAW,GAAA,CAAI,IAAI,CAAA,IACnB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAA,IACpB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAChB;AACA,MAAA,aAAA,CAAc,IAAI,CAAA,GAAI,KAAA,CAAM,IAAI,CAAA;AAAA,IAClC;AAAA,EACF;AAEA,EAAA,OAAO,aAAA;AACT;AC9EO,SAAS,QAAA,CAAuB,EAAE,SAAA,EAAW,KAAA,EAAO,cAAa,EAAqB;AAC3F,EAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,KAAiB,UAAA,EAAY;AACtD,IAAA,OAAO,aAAa,KAAK,CAAA;AAAA,EAC3B,CAAA,MAAO;AACL,IAAA,OAAaC,gBAAA,CAAA,aAAA,CAAiB,WAAW,KAAK,CAAA;AAAA,EAChD;AACF","file":"main.cjs","sourcesContent":["import { Children, isValidElement, ReactNode } from 'react'\n\n/**\n * Gets only the valid children of a component,\n * and ignores any nullish or falsy child.\n *\n * @param children the children\n */\nexport function getValidChildren(children: React.ReactNode) {\n  return Children.toArray(children).filter((child) => isValidElement(child)) as React.ReactElement[]\n}\n\nexport const pickChildren = <T = ReactNode>(\n  children: T | undefined,\n  targetChild: React.ElementType,\n): [T | undefined, T[] | undefined] => {\n  const target: T[] = []\n\n  const withoutTargetChildren = Children.map(children, (item) => {\n    if (!isValidElement(item)) return item\n    if (item.type === targetChild) {\n      target.push(item as T)\n\n      return null\n    }\n\n    return item\n  })?.filter(Boolean) as T\n\n  const targetChildren = target.length >= 0 ? target : undefined\n\n  return [withoutTargetChildren, targetChildren]\n}\n","export const DOMPropNames = new Set([\n  'id',\n  'type',\n  'style',\n  'title',\n  'role',\n  'tabIndex',\n  'htmlFor',\n  'width',\n  'height',\n  'abbr',\n  'accept',\n  'acceptCharset',\n  'accessKey',\n  'action',\n  'allowFullScreen',\n  'allowTransparency',\n  'alt',\n  'async',\n  'autoComplete',\n  'autoFocus',\n  'autoPlay',\n  'cellPadding',\n  'cellSpacing',\n  'challenge',\n  'charset',\n  'checked',\n  'cite',\n  'class',\n  'className',\n  'cols',\n  'colSpan',\n  'command',\n  'content',\n  'contentEditable',\n  'contextMenu',\n  'controls',\n  'coords',\n  'crossOrigin',\n  'data',\n  'dateTime',\n  'default',\n  'defer',\n  'dir',\n  'disabled',\n  'download',\n  'draggable',\n  'dropzone',\n  'encType',\n  'enterKeyHint',\n  'for',\n  'form',\n  'formAction',\n  'formEncType',\n  'formMethod',\n  'formNoValidate',\n  'formTarget',\n  'frameBorder',\n  'headers',\n  'hidden',\n  'high',\n  'href',\n  'hrefLang',\n  'httpEquiv',\n  'icon',\n  'inputMode',\n  'isMap',\n  'itemId',\n  'itemProp',\n  'itemRef',\n  'itemScope',\n  'itemType',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loop',\n  'manifest',\n  'max',\n  'maxLength',\n  'media',\n  'mediaGroup',\n  'method',\n  'min',\n  'minLength',\n  'multiple',\n  'muted',\n  'name',\n  'noValidate',\n  'open',\n  'optimum',\n  'pattern',\n  'ping',\n  'placeholder',\n  'poster',\n  'preload',\n  'radioGroup',\n  'referrerPolicy',\n  'readOnly',\n  'rel',\n  'required',\n  'rows',\n  'rowSpan',\n  'sandbox',\n  'scope',\n  'scoped',\n  'scrolling',\n  'seamless',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'slot',\n  'sortable',\n  'span',\n  'spellCheck',\n  'src',\n  'srcDoc',\n  'srcSet',\n  'start',\n  'step',\n  'target',\n  'translate',\n  'typeMustMatch',\n  'useMap',\n  'value',\n  'wmode',\n  'wrap',\n])\n\nexport const DOMEventNames = new Set([\n  'onCopy',\n  'onCut',\n  'onPaste',\n  'onLoad',\n  'onError',\n  'onWheel',\n  'onScroll',\n  'onCompositionEnd',\n  'onCompositionStart',\n  'onCompositionUpdate',\n  'onKeyDown',\n  'onKeyPress',\n  'onKeyUp',\n  'onFocus',\n  'onBlur',\n  'onChange',\n  'onInput',\n  'onSubmit',\n  'onClick',\n  'onContextMenu',\n  'onDoubleClick',\n  'onDrag',\n  'onDragEnd',\n  'onDragEnter',\n  'onDragExit',\n  'onDragLeave',\n  'onDragOver',\n  'onDragStart',\n  'onDrop',\n  'onMouseDown',\n  'onMouseEnter',\n  'onMouseLeave',\n  'onMouseMove',\n  'onMouseOut',\n  'onMouseOver',\n  'onMouseUp',\n  'onPointerDown',\n  'onPointerEnter',\n  'onPointerLeave',\n  'onPointerUp',\n  'onSelect',\n  'onTouchCancel',\n  'onTouchEnd',\n  'onTouchMove',\n  'onTouchStart',\n  'onAnimationStart',\n  'onAnimationEnd',\n  'onAnimationIteration',\n  'onTransitionEnd',\n])\n","import { AriaLabelingProps, DOMProps } from '@react-types/shared'\n\nimport { DOMPropNames, DOMEventNames } from './dom-props'\n\ninterface Options {\n  /**\n   * If the filter should be enabled.\n   */\n  enabled?: boolean\n  /**\n   * If labelling associated aria properties should be included in the filter.\n   */\n  labelable?: boolean\n  /**\n   * A Set of other property names that should be included in the filter.\n   */\n  propNames?: Set<string>\n  /**\n   * A Set of other property names that should be removed from the filter.\n   */\n  omitPropNames?: Set<string>\n  /**\n   * A Set of event names that should be excluded from the filter.\n   */\n  omitEventNames?: Set<string>\n  /**\n   * Whether to omit data-* props.\n   */\n  omitDataProps?: boolean\n  /**\n   * Whether to omit event props.\n   */\n  omitEventProps?: boolean\n}\n\nconst propRe = /^(data-.*)$/\nconst ariaRe = /^(aria-.*)$/\nconst funcRe = /^(on[A-Z].*)$/\n\n/**\n * Filters out all props that aren't valid DOM props or defined via override prop obj.\n * @param props - The component props to be filtered.\n * @param opts - Props to override.\n */\nexport function filterDOMProps(\n  props: DOMProps & AriaLabelingProps,\n  opts: Options = {},\n): DOMProps & AriaLabelingProps {\n  const {\n    labelable = true,\n    enabled = true,\n    propNames,\n    omitPropNames,\n    omitEventNames,\n    omitDataProps,\n    omitEventProps,\n  } = opts\n  const filteredProps = {}\n\n  if (!enabled) {\n    return props\n  }\n  for (const prop in props) {\n    if (omitPropNames?.has(prop)) {\n      continue\n    }\n\n    if (omitEventNames?.has(prop) && funcRe.test(prop)) {\n      continue\n    }\n\n    if (funcRe.test(prop) && !DOMEventNames.has(prop)) {\n      continue\n    }\n\n    if (omitDataProps && propRe.test(prop)) {\n      continue\n    }\n\n    if (omitEventProps && funcRe.test(prop)) {\n      continue\n    }\n\n    if (\n      (Object.prototype.hasOwnProperty.call(props, prop) &&\n        (DOMPropNames.has(prop) ||\n          (labelable && ariaRe.test(prop)) ||\n          propNames?.has(prop) ||\n          propRe.test(prop))) ||\n      funcRe.test(prop)\n    ) {\n      filteredProps[prop] = props[prop]\n    }\n  }\n\n  return filteredProps\n}\n","import * as React from 'react'\n\ntype RenderFunction<P> = (props: P) => React.ReactNode\n\ntype RenderFnProps<P extends {}> = {\n  Component: React.FunctionComponent<P> | React.ComponentClass<P> | string\n  props: P\n  renderCustom?: RenderFunction<P>\n}\n\n/**\n * Render a component with custom render function\n *\n * @param Component  The component to be rendered\n * @param renderCustom The custom render function\n * @param props The props to be passed to the component\n * @returns React.ReactElement\n */\nexport function renderFn<P extends {}>({ Component, props, renderCustom }: RenderFnProps<P>) {\n  if (renderCustom && typeof renderCustom === 'function') {\n    return renderCustom(props)\n  } else {\n    return React.createElement<P>(Component, props)\n  }\n}\n"]}