react / react-0.13.3 / examples / basic-commonjs / node_modules / reactify / node_modules / react-tools / src / browser / ui / dom / HTMLDOMPropertyConfig.js
81159 views/**1* Copyright 2013-2014, 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,96height: MUST_USE_ATTRIBUTE,97hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,98href: null,99hrefLang: null,100htmlFor: null,101httpEquiv: null,102icon: null,103id: MUST_USE_PROPERTY,104label: null,105lang: null,106list: MUST_USE_ATTRIBUTE,107loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,108manifest: MUST_USE_ATTRIBUTE,109marginHeight: null,110marginWidth: null,111max: null,112maxLength: MUST_USE_ATTRIBUTE,113media: MUST_USE_ATTRIBUTE,114mediaGroup: null,115method: null,116min: null,117multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,118muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,119name: null,120noValidate: HAS_BOOLEAN_VALUE,121open: null,122pattern: null,123placeholder: null,124poster: null,125preload: null,126radioGroup: null,127readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,128rel: null,129required: HAS_BOOLEAN_VALUE,130role: MUST_USE_ATTRIBUTE,131rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,132rowSpan: null,133sandbox: null,134scope: null,135scrolling: null,136seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,137selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,138shape: null,139size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,140sizes: MUST_USE_ATTRIBUTE,141span: HAS_POSITIVE_NUMERIC_VALUE,142spellCheck: null,143src: null,144srcDoc: MUST_USE_PROPERTY,145srcSet: MUST_USE_ATTRIBUTE,146start: HAS_NUMERIC_VALUE,147step: null,148style: null,149tabIndex: null,150target: null,151title: null,152type: null,153useMap: null,154value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,155width: MUST_USE_ATTRIBUTE,156wmode: MUST_USE_ATTRIBUTE,157158/**159* Non-standard Properties160*/161autoCapitalize: null, // Supported in Mobile Safari for keyboard hints162autoCorrect: null, // Supported in Mobile Safari for keyboard hints163itemProp: MUST_USE_ATTRIBUTE, // Microdata: http://schema.org/docs/gs.html164itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE, // Microdata: http://schema.org/docs/gs.html165itemType: MUST_USE_ATTRIBUTE, // Microdata: http://schema.org/docs/gs.html166property: null // Supports OG in meta tags167},168DOMAttributeNames: {169acceptCharset: 'accept-charset',170className: 'class',171htmlFor: 'for',172httpEquiv: 'http-equiv'173},174DOMPropertyNames: {175autoCapitalize: 'autocapitalize',176autoComplete: 'autocomplete',177autoCorrect: 'autocorrect',178autoFocus: 'autofocus',179autoPlay: 'autoplay',180encType: 'enctype',181hrefLang: 'hreflang',182radioGroup: 'radiogroup',183spellCheck: 'spellcheck',184srcDoc: 'srcdoc',185srcSet: 'srcset'186}187};188189module.exports = HTMLDOMPropertyConfig;190191192