{"version":3,"file":"properties.js","sourceRoot":"../src/","sources":["properties.ts"],"names":[],"mappings":"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","sourcesContent":["const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n  const result: Record<string, number> = {};\n\n  for (const item of items) {\n    const keys = Array.isArray(item) ? item : Object.keys(item);\n\n    for (const key of keys) {\n      result[key] = 1;\n    }\n  }\n\n  return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n  'onCopy',\n  'onCut',\n  'onPaste',\n  'onCompositionEnd',\n  'onCompositionStart',\n  'onCompositionUpdate',\n  'onFocus',\n  'onFocusCapture',\n  'onBlur',\n  'onBlurCapture',\n  'onChange',\n  'onInput',\n  'onSubmit',\n  'onLoad',\n  'onError',\n  'onKeyDown',\n  'onKeyDownCapture',\n  'onKeyPress',\n  'onKeyUp',\n  'onAbort',\n  'onCanPlay',\n  'onCanPlayThrough',\n  'onDurationChange',\n  'onEmptied',\n  'onEncrypted',\n  'onEnded',\n  'onLoadedData',\n  'onLoadedMetadata',\n  'onLoadStart',\n  'onPause',\n  'onPlay',\n  'onPlaying',\n  'onProgress',\n  'onRateChange',\n  'onSeeked',\n  'onSeeking',\n  'onStalled',\n  'onSuspend',\n  'onTimeUpdate',\n  'onVolumeChange',\n  'onWaiting',\n  'onClick',\n  'onClickCapture',\n  'onContextMenu',\n  'onDoubleClick',\n  'onDrag',\n  'onDragEnd',\n  'onDragEnter',\n  'onDragExit',\n  'onDragLeave',\n  'onDragOver',\n  'onDragStart',\n  'onDrop',\n  'onMouseDown',\n  'onMouseDownCapture',\n  'onMouseEnter',\n  'onMouseLeave',\n  'onMouseMove',\n  'onMouseOut',\n  'onMouseOver',\n  'onMouseUp',\n  'onMouseUpCapture',\n  'onSelect',\n  'onTouchCancel',\n  'onTouchEnd',\n  'onTouchMove',\n  'onTouchStart',\n  'onScroll',\n  'onWheel',\n  'onPointerCancel',\n  'onPointerDown',\n  'onPointerEnter',\n  'onPointerLeave',\n  'onPointerMove',\n  'onPointerOut',\n  'onPointerOver',\n  'onPointerUp',\n  'onGotPointerCapture',\n  'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n  'accessKey', // global\n  'children', // global\n  'className', // global\n  'contentEditable', // global\n  'dir', // global\n  'draggable', // global\n  'hidden', // global\n  'htmlFor', // global\n  'id', // global\n  'lang', // global\n  'ref', // global\n  'role', // global\n  'style', // global\n  'tabIndex', // global\n  'title', // global\n  'translate', // global\n  'spellCheck', // global\n  'name', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n  'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n  'height', // canvas, embed, iframe, img, input, object, video\n  'loop', // audio, video\n  'muted', // audio, video\n  'preload', // audio, video\n  'src', // audio, embed, iframe, img, input, script, source, track, video\n  'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n  'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n  'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n  'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n  'download', // a, area\n  'href', // a, area, base, link\n  'hrefLang', // a, area, link\n  'media', // a, area, link, source, style\n  'rel', // a, area, link\n  'target', // a, area, base, form\n  'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n  'autoFocus', // button, input, select, textarea\n  'disabled', // button, fieldset, input, optgroup, option, select, textarea\n  'form', // button, fieldset, input, label, meter, object, output, select, textarea\n  'formAction', // input, button\n  'formEncType', // input, button\n  'formMethod', // input, button\n  'formNoValidate', // input, button\n  'formTarget', // input, button\n  'type', // a, button, input, link, menu, object, script, source, style\n  'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n  'accept', // input\n  'alt', // area, img, input\n  'autoCapitalize', // input, textarea\n  'autoComplete', // form, input\n  'checked', // input\n  'dirname', // input, textarea\n  'form', // button, fieldset, input, label, meter, object, output, select, textarea\n  'height', // canvas, embed, iframe, img, input, object, video\n  'inputMode', // input\n  'list', // input\n  'max', // input, meter\n  'maxLength', // input, textarea\n  'min', // input, meter\n  'multiple', // input, select\n  'pattern', // input\n  'placeholder', // input, textarea\n  'readOnly', // input, textarea\n  'required', // input, select, textarea\n  'src', // audio, embed, iframe, img, input, script, source, track, video\n  'step', // input\n  'size', // input\n  'type', // a, button, input, link, menu, object, script, source, style\n  'value', // button, input, li, option, meter, progress, param\n  'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n  'autoCapitalize', // input, textarea\n  'cols', // textarea\n  'dirname', // input, textarea\n  'form', // button, fieldset, input, label, meter, object, output, select, textarea\n  'maxLength', // input, textarea\n  'placeholder', // input, textarea\n  'readOnly', // input, textarea\n  'required', // input, select, textarea\n  'rows', // textarea\n  'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n  'form', // button, fieldset, input, label, meter, object, output, select, textarea\n  'multiple', // input, select\n  'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n  'selected', // option\n  'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n  'cellPadding', // table\n  'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n  'rowSpan', // td, th\n  'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n  'colSpan', // td\n  'headers', // td\n  'rowSpan', // td, th\n  'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n  'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n  'span', // col, colgroup\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n  'acceptCharset', // form\n  'action', // form\n  'encType', // form\n  'encType', // form\n  'method', // form\n  'noValidate', // form\n  'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n  'allow', // iframe\n  'allowFullScreen', // iframe\n  'allowPaymentRequest', // iframe\n  'allowTransparency', // iframe\n  'csp', // iframe\n  'height', // canvas, embed, iframe, img, input, object, video\n  'importance', // iframe\n  'referrerPolicy', // iframe\n  'sandbox', // iframe\n  'src', // audio, embed, iframe, img, input, script, source, track, video\n  'srcDoc', // iframe\n  'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n  'alt', // area, img, input\n  'crossOrigin', // img\n  'height', // canvas, embed, iframe, img, input, object, video\n  'src', // audio, embed, iframe, img, input, script, source, track, video\n  'srcSet', // img, source\n  'useMap', // img, object,\n  'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport const imageProperties = imgProperties;\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  props: Record<string, any>,\n  allowedPropNames: string[] | Record<string, number>,\n  excludedPropNames?: string[],\n): T {\n  // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n  // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n  // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n  // return native props.\n  // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n  const isArray = Array.isArray(allowedPropNames);\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const result: Record<string, any> = {};\n  const keys = Object.keys(props);\n\n  for (const key of keys) {\n    const isNativeProp =\n      (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n      (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n      key.indexOf('data-') === 0 ||\n      key.indexOf('aria-') === 0;\n\n    if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      result[key] = props![key] as any;\n    }\n  }\n\n  return result as T;\n}\n"]}