| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496 |
- // @flow
- const props = {
- // react props
- // https://github.com/facebook/react/blob/5495a7f24aef85ba6937truetrue1ce962673ca9f5fde6/src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js
- children: true,
- dangerouslySetInnerHTML: true,
- key: true,
- ref: true,
- autoFocus: true,
- defaultValue: true,
- defaultChecked: true,
- innerHTML: true,
- suppressContentEditableWarning: true,
- suppressHydrationWarning: true,
- // deprecated react prop
- valueLink: true,
- // https://github.com/facebook/react/blob/d7157651f7b72d9888ctrue123e191f9b88cd8f41e9/src/renderers/dom/shared/HTMLDOMPropertyConfig.js
- /**
- * Standard Properties
- */
- abbr: true,
- accept: true,
- acceptCharset: true,
- accessKey: true,
- action: true,
- allow: true,
- allowUserMedia: true,
- allowPaymentRequest: true,
- allowFullScreen: true,
- allowTransparency: true,
- alt: true,
- // specifies target context for links with `preload` type
- // as: true,
- async: true,
- autoComplete: true,
- // autoFocus is polyfilled/normalized by AutoFocusUtils
- // autoFocus: true,
- autoPlay: true,
- capture: true,
- cellPadding: true,
- cellSpacing: true,
- // keygen prop
- challenge: true,
- charSet: true,
- checked: true,
- cite: true,
- classID: true,
- className: true,
- cols: true,
- colSpan: true,
- content: true,
- contentEditable: true,
- contextMenu: true,
- controls: true,
- controlsList: true,
- coords: true,
- crossOrigin: true,
- data: true, // For `<object />` acts as `src`.
- dateTime: true,
- decoding: true,
- default: true,
- defer: true,
- dir: true,
- disabled: true,
- disablePictureInPicture: true,
- disableRemotePlayback: true,
- download: true,
- draggable: true,
- encType: true,
- enterKeyHint: true,
- form: true,
- formAction: true,
- formEncType: true,
- formMethod: true,
- formNoValidate: true,
- formTarget: true,
- frameBorder: true,
- headers: true,
- height: true,
- hidden: true,
- high: true,
- href: true,
- hrefLang: true,
- htmlFor: true,
- httpEquiv: true,
- id: true,
- inputMode: true,
- integrity: true,
- is: true,
- keyParams: true,
- keyType: true,
- kind: true,
- label: true,
- lang: true,
- list: true,
- loading: true,
- loop: true,
- low: true,
- // manifest: true,
- marginHeight: true,
- marginWidth: true,
- max: true,
- maxLength: true,
- media: true,
- mediaGroup: true,
- method: true,
- min: true,
- minLength: true,
- // Caution; `option.selected` is not updated if `select.multiple` is
- // disabled with `removeAttribute`.
- multiple: true,
- muted: true,
- name: true,
- nonce: true,
- noValidate: true,
- open: true,
- optimum: true,
- pattern: true,
- placeholder: true,
- playsInline: true,
- poster: true,
- preload: true,
- profile: true,
- radioGroup: true,
- readOnly: true,
- referrerPolicy: true,
- rel: true,
- required: true,
- reversed: true,
- role: true,
- rows: true,
- rowSpan: true,
- sandbox: true,
- scope: true,
- scoped: true,
- scrolling: true,
- seamless: true,
- selected: true,
- shape: true,
- size: true,
- sizes: true,
- // support for projecting regular DOM Elements via V1 named slots ( shadow dom )
- slot: true,
- span: true,
- spellCheck: true,
- src: true,
- srcDoc: true,
- srcLang: true,
- srcSet: true,
- start: true,
- step: true,
- style: true,
- summary: true,
- tabIndex: true,
- target: true,
- title: true,
- translate: true,
- // Setting .type throws on non-<input> tags
- type: true,
- useMap: true,
- value: true,
- width: true,
- wmode: true,
- wrap: true,
- /**
- * RDFa Properties
- */
- about: true,
- datatype: true,
- inlist: true,
- prefix: true,
- // property is also supported for OpenGraph in meta tags.
- property: true,
- resource: true,
- typeof: true,
- vocab: true,
- /**
- * Non-standard Properties
- */
- // autoCapitalize and autoCorrect are supported in Mobile Safari for
- // keyboard hints.
- autoCapitalize: true,
- autoCorrect: true,
- // autoSave allows WebKit/Blink to persist values of input fields on page reloads
- autoSave: true,
- // color is for Safari mask-icon link
- color: true,
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search#incremental_This_API_has_not_been_standardized
- incremental: true,
- // used in amp html for indicating the fallback behavior
- // https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/placeholders/
- fallback: true,
- // https://html.spec.whatwg.org/multipage/interaction.html#inert
- inert: true,
- // itemProp, itemScope, itemType are for
- // Microdata support. See http://schema.org/docs/gs.html
- itemProp: true,
- itemScope: true,
- itemType: true,
- // itemID and itemRef are for Microdata support as well but
- // only specified in the WHATWG spec document. See
- // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
- itemID: true,
- itemRef: true,
- // used in amp html for eventing purposes
- // https://amp.dev/documentation/guides-and-tutorials/learn/common_attributes/
- on: true,
- // used in amp html for indicating that the option is selectable
- // https://amp.dev/documentation/components/amp-selector/
- option: true,
- // results show looking glass icon and recent searches on input
- // search fields in WebKit/Blink
- results: true,
- // IE-only attribute that specifies security restrictions on an iframe
- // as an alternative to the sandbox attribute on IE<1true
- security: true,
- // IE-only attribute that controls focus behavior
- unselectable: true,
- //
- // SVG properties: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute
- // The following "onX" events have been omitted:
- //
- // onabort
- // onactivate
- // onbegin
- // onclick
- // onend
- // onerror
- // onfocusin
- // onfocusout
- // onload
- // onmousedown
- // onmousemove
- // onmouseout
- // onmouseover
- // onmouseup
- // onrepeat
- // onresize
- // onscroll
- // onunload
- accentHeight: true,
- accumulate: true,
- additive: true,
- alignmentBaseline: true,
- allowReorder: true,
- alphabetic: true,
- amplitude: true,
- arabicForm: true,
- ascent: true,
- attributeName: true,
- attributeType: true,
- autoReverse: true,
- azimuth: true,
- baseFrequency: true,
- baselineShift: true,
- baseProfile: true,
- bbox: true,
- begin: true,
- bias: true,
- by: true,
- calcMode: true,
- capHeight: true,
- clip: true,
- clipPathUnits: true,
- clipPath: true,
- clipRule: true,
- colorInterpolation: true,
- colorInterpolationFilters: true,
- colorProfile: true,
- colorRendering: true,
- contentScriptType: true,
- contentStyleType: true,
- cursor: true,
- cx: true,
- cy: true,
- d: true,
- decelerate: true,
- descent: true,
- diffuseConstant: true,
- direction: true,
- display: true,
- divisor: true,
- dominantBaseline: true,
- dur: true,
- dx: true,
- dy: true,
- edgeMode: true,
- elevation: true,
- enableBackground: true,
- end: true,
- exponent: true,
- externalResourcesRequired: true,
- fill: true,
- fillOpacity: true,
- fillRule: true,
- filter: true,
- filterRes: true,
- filterUnits: true,
- floodColor: true,
- floodOpacity: true,
- focusable: true,
- fontFamily: true,
- fontSize: true,
- fontSizeAdjust: true,
- fontStretch: true,
- fontStyle: true,
- fontVariant: true,
- fontWeight: true,
- format: true,
- from: true,
- fr: true, // valid SVG element but React will ask for removal
- fx: true,
- fy: true,
- g1: true,
- g2: true,
- glyphName: true,
- glyphOrientationHorizontal: true,
- glyphOrientationVertical: true,
- glyphRef: true,
- gradientTransform: true,
- gradientUnits: true,
- hanging: true,
- horizAdvX: true,
- horizOriginX: true,
- ideographic: true,
- imageRendering: true,
- in: true,
- in2: true,
- intercept: true,
- k: true,
- k1: true,
- k2: true,
- k3: true,
- k4: true,
- kernelMatrix: true,
- kernelUnitLength: true,
- kerning: true,
- keyPoints: true,
- keySplines: true,
- keyTimes: true,
- lengthAdjust: true,
- letterSpacing: true,
- lightingColor: true,
- limitingConeAngle: true,
- local: true,
- markerEnd: true,
- markerMid: true,
- markerStart: true,
- markerHeight: true,
- markerUnits: true,
- markerWidth: true,
- mask: true,
- maskContentUnits: true,
- maskUnits: true,
- mathematical: true,
- mode: true,
- numOctaves: true,
- offset: true,
- opacity: true,
- operator: true,
- order: true,
- orient: true,
- orientation: true,
- origin: true,
- overflow: true,
- overlinePosition: true,
- overlineThickness: true,
- panose1: true,
- paintOrder: true,
- pathLength: true,
- patternContentUnits: true,
- patternTransform: true,
- patternUnits: true,
- pointerEvents: true,
- points: true,
- pointsAtX: true,
- pointsAtY: true,
- pointsAtZ: true,
- preserveAlpha: true,
- preserveAspectRatio: true,
- primitiveUnits: true,
- r: true,
- radius: true,
- refX: true,
- refY: true,
- renderingIntent: true,
- repeatCount: true,
- repeatDur: true,
- requiredExtensions: true,
- requiredFeatures: true,
- restart: true,
- result: true,
- rotate: true,
- rx: true,
- ry: true,
- scale: true,
- seed: true,
- shapeRendering: true,
- slope: true,
- spacing: true,
- specularConstant: true,
- specularExponent: true,
- speed: true,
- spreadMethod: true,
- startOffset: true,
- stdDeviation: true,
- stemh: true,
- stemv: true,
- stitchTiles: true,
- stopColor: true,
- stopOpacity: true,
- strikethroughPosition: true,
- strikethroughThickness: true,
- string: true,
- stroke: true,
- strokeDasharray: true,
- strokeDashoffset: true,
- strokeLinecap: true,
- strokeLinejoin: true,
- strokeMiterlimit: true,
- strokeOpacity: true,
- strokeWidth: true,
- surfaceScale: true,
- systemLanguage: true,
- tableValues: true,
- targetX: true,
- targetY: true,
- textAnchor: true,
- textDecoration: true,
- textRendering: true,
- textLength: true,
- to: true,
- transform: true,
- u1: true,
- u2: true,
- underlinePosition: true,
- underlineThickness: true,
- unicode: true,
- unicodeBidi: true,
- unicodeRange: true,
- unitsPerEm: true,
- vAlphabetic: true,
- vHanging: true,
- vIdeographic: true,
- vMathematical: true,
- values: true,
- vectorEffect: true,
- version: true,
- vertAdvY: true,
- vertOriginX: true,
- vertOriginY: true,
- viewBox: true,
- viewTarget: true,
- visibility: true,
- widths: true,
- wordSpacing: true,
- writingMode: true,
- x: true,
- xHeight: true,
- x1: true,
- x2: true,
- xChannelSelector: true,
- xlinkActuate: true,
- xlinkArcrole: true,
- xlinkHref: true,
- xlinkRole: true,
- xlinkShow: true,
- xlinkTitle: true,
- xlinkType: true,
- xmlBase: true,
- xmlns: true,
- xmlnsXlink: true,
- xmlLang: true,
- xmlSpace: true,
- y: true,
- y1: true,
- y2: true,
- yChannelSelector: true,
- z: true,
- zoomAndPan: true,
- // For preact. We have this code here even though Emotion doesn't support
- // Preact, since @emotion/is-prop-valid is used by some libraries outside of
- // the context of Emotion.
- for: true,
- class: true,
- autofocus: true
- }
- // eslint-disable-next-line import/no-commonjs
- module.exports = `/^((${Object.keys(props).join(
- '|'
- )})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/`
|