react / react-0.13.3 / examples / basic-commonjs / node_modules / react / lib / HTMLDOMPropertyConfig.js
81143 views/**1* Copyright 2013-2015, Facebook, Inc.2* All rights reserved.3*4* This source code is licensed under the BSD-style license found in the5* LICENSE file in the root directory of this source tree. An additional grant6* of patent rights can be found in the PATENTS file in the same directory.7*8* @providesModule HTMLDOMPropertyConfig9*/1011/*jslint bitwise: true*/1213'use strict';1415var DOMProperty = require("./DOMProperty");16var ExecutionEnvironment = require("./ExecutionEnvironment");1718var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;19var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;20var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;21var HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;22var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;23var HAS_POSITIVE_NUMERIC_VALUE =24DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;25var HAS_OVERLOADED_BOOLEAN_VALUE =26DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;2728var hasSVG;29if (ExecutionEnvironment.canUseDOM) {30var implementation = document.implementation;31hasSVG = (32implementation &&33implementation.hasFeature &&34implementation.hasFeature(35'http://www.w3.org/TR/SVG11/feature#BasicStructure',36'1.1'37)38);39}404142var HTMLDOMPropertyConfig = {43isCustomAttribute: RegExp.prototype.test.bind(44/^(data|aria)-[a-z_][a-z\d_.\-]*$/45),46Properties: {47/**48* Standard Properties49*/50accept: null,51acceptCharset: null,52accessKey: null,53action: null,54allowFullScreen: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,55allowTransparency: MUST_USE_ATTRIBUTE,56alt: null,57async: HAS_BOOLEAN_VALUE,58autoComplete: null,59// autoFocus is polyfilled/normalized by AutoFocusMixin60// autoFocus: HAS_BOOLEAN_VALUE,61autoPlay: HAS_BOOLEAN_VALUE,62cellPadding: null,63cellSpacing: null,64charSet: MUST_USE_ATTRIBUTE,65checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,66classID: MUST_USE_ATTRIBUTE,67// To set className on SVG elements, it's necessary to use .setAttribute;68// this works on HTML elements too in all browsers except IE8. Conveniently,69// IE8 doesn't support SVG and so we can simply use the attribute in70// browsers that support SVG and the property in browsers that don't,71// regardless of whether the element is HTML or SVG.72className: hasSVG ? MUST_USE_ATTRIBUTE : MUST_USE_PROPERTY,73cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,74colSpan: null,75content: null,76contentEditable: null,77contextMenu: MUST_USE_ATTRIBUTE,78controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,79coords: null,80crossOrigin: null,81data: null, // For `<object />` acts as `src`.82dateTime: MUST_USE_ATTRIBUTE,83defer: HAS_BOOLEAN_VALUE,84dir: null,85disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,86download: HAS_OVERLOADED_BOOLEAN_VALUE,87draggable: null,88encType: null,89form: MUST_USE_ATTRIBUTE,90formAction: MUST_USE_ATTRIBUTE,91formEncType: MUST_USE_ATTRIBUTE,92formMethod: MUST_USE_ATTRIBUTE,93formNoValidate: HAS_BOOLEAN_VALUE,94formTarget: MUST_USE_ATTRIBUTE,95frameBorder: MUST_USE_ATTRIBUTE,96headers: null,97height: MUST_USE_ATTRIBUTE,98hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,99high: null,100href: null,101hrefLang: null,102htmlFor: null,103httpEquiv: null,104icon: null,105id: MUST_USE_PROPERTY,106label: null,107lang: null,108list: MUST_USE_ATTRIBUTE,109loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,110low: null,111manifest: MUST_USE_ATTRIBUTE,112marginHeight: null,113marginWidth: null,114max: null,115maxLength: MUST_USE_ATTRIBUTE,116media: MUST_USE_ATTRIBUTE,117mediaGroup: null,118method: null,119min: null,120multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,121muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,122name: null,123noValidate: HAS_BOOLEAN_VALUE,124open: HAS_BOOLEAN_VALUE,125optimum: null,126pattern: null,127placeholder: null,128poster: null,129preload: null,130radioGroup: null,131readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,132rel: null,133required: HAS_BOOLEAN_VALUE,134role: MUST_USE_ATTRIBUTE,135rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,136rowSpan: null,137sandbox: null,138scope: null,139scoped: HAS_BOOLEAN_VALUE,140scrolling: null,141seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,142selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,143shape: null,144size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,145sizes: MUST_USE_ATTRIBUTE,146span: HAS_POSITIVE_NUMERIC_VALUE,147spellCheck: null,148src: null,149srcDoc: MUST_USE_PROPERTY,150srcSet: MUST_USE_ATTRIBUTE,151start: HAS_NUMERIC_VALUE,152step: null,153style: null,154tabIndex: null,155target: null,156title: null,157type: null,158useMap: null,159value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,160width: MUST_USE_ATTRIBUTE,161wmode: MUST_USE_ATTRIBUTE,162163/**164* Non-standard Properties165*/166// autoCapitalize and autoCorrect are supported in Mobile Safari for167// keyboard hints.168autoCapitalize: null,169autoCorrect: null,170// itemProp, itemScope, itemType are for171// Microdata support. See http://schema.org/docs/gs.html172itemProp: MUST_USE_ATTRIBUTE,173itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,174itemType: MUST_USE_ATTRIBUTE,175// itemID and itemRef are for Microdata support as well but176// only specified in the the WHATWG spec document. See177// https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api178itemID: MUST_USE_ATTRIBUTE,179itemRef: MUST_USE_ATTRIBUTE,180// property is supported for OpenGraph in meta tags.181property: null,182// IE-only attribute that controls focus behavior183unselectable: MUST_USE_ATTRIBUTE184},185DOMAttributeNames: {186acceptCharset: 'accept-charset',187className: 'class',188htmlFor: 'for',189httpEquiv: 'http-equiv'190},191DOMPropertyNames: {192autoCapitalize: 'autocapitalize',193autoComplete: 'autocomplete',194autoCorrect: 'autocorrect',195autoFocus: 'autofocus',196autoPlay: 'autoplay',197// `encoding` is equivalent to `enctype`, IE8 lacks an `enctype` setter.198// http://www.w3.org/TR/html5/forms.html#dom-fs-encoding199encType: 'encoding',200hrefLang: 'hreflang',201radioGroup: 'radiogroup',202spellCheck: 'spellcheck',203srcDoc: 'srcdoc',204srcSet: 'srcset'205}206};207208module.exports = HTMLDOMPropertyConfig;209210211