You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
6.4 KiB
210 lines
6.4 KiB
10 years ago
|
/**
|
||
|
* Copyright 2013-2015, Facebook, Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
* @providesModule HTMLDOMPropertyConfig
|
||
|
*/
|
||
|
|
||
|
/*jslint bitwise: true*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var DOMProperty = require("./DOMProperty");
|
||
|
var ExecutionEnvironment = require("./ExecutionEnvironment");
|
||
|
|
||
|
var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
|
||
|
var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
|
||
|
var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
|
||
|
var HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;
|
||
|
var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
|
||
|
var HAS_POSITIVE_NUMERIC_VALUE =
|
||
|
DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
|
||
|
var HAS_OVERLOADED_BOOLEAN_VALUE =
|
||
|
DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
|
||
|
|
||
|
var hasSVG;
|
||
|
if (ExecutionEnvironment.canUseDOM) {
|
||
|
var implementation = document.implementation;
|
||
|
hasSVG = (
|
||
|
implementation &&
|
||
|
implementation.hasFeature &&
|
||
|
implementation.hasFeature(
|
||
|
'http://www.w3.org/TR/SVG11/feature#BasicStructure',
|
||
|
'1.1'
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
var HTMLDOMPropertyConfig = {
|
||
|
isCustomAttribute: RegExp.prototype.test.bind(
|
||
|
/^(data|aria)-[a-z_][a-z\d_.\-]*$/
|
||
|
),
|
||
|
Properties: {
|
||
|
/**
|
||
|
* Standard Properties
|
||
|
*/
|
||
|
accept: null,
|
||
|
acceptCharset: null,
|
||
|
accessKey: null,
|
||
|
action: null,
|
||
|
allowFullScreen: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
||
|
allowTransparency: MUST_USE_ATTRIBUTE,
|
||
|
alt: null,
|
||
|
async: HAS_BOOLEAN_VALUE,
|
||
|
autoComplete: null,
|
||
|
// autoFocus is polyfilled/normalized by AutoFocusMixin
|
||
|
// autoFocus: HAS_BOOLEAN_VALUE,
|
||
|
autoPlay: HAS_BOOLEAN_VALUE,
|
||
|
cellPadding: null,
|
||
|
cellSpacing: null,
|
||
|
charSet: MUST_USE_ATTRIBUTE,
|
||
|
checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
classID: MUST_USE_ATTRIBUTE,
|
||
|
// To set className on SVG elements, it's necessary to use .setAttribute;
|
||
|
// this works on HTML elements too in all browsers except IE8. Conveniently,
|
||
|
// IE8 doesn't support SVG and so we can simply use the attribute in
|
||
|
// browsers that support SVG and the property in browsers that don't,
|
||
|
// regardless of whether the element is HTML or SVG.
|
||
|
className: hasSVG ? MUST_USE_ATTRIBUTE : MUST_USE_PROPERTY,
|
||
|
cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
|
||
|
colSpan: null,
|
||
|
content: null,
|
||
|
contentEditable: null,
|
||
|
contextMenu: MUST_USE_ATTRIBUTE,
|
||
|
controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
coords: null,
|
||
|
crossOrigin: null,
|
||
|
data: null, // For `<object />` acts as `src`.
|
||
|
dateTime: MUST_USE_ATTRIBUTE,
|
||
|
defer: HAS_BOOLEAN_VALUE,
|
||
|
dir: null,
|
||
|
disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
||
|
download: HAS_OVERLOADED_BOOLEAN_VALUE,
|
||
|
draggable: null,
|
||
|
encType: null,
|
||
|
form: MUST_USE_ATTRIBUTE,
|
||
|
formAction: MUST_USE_ATTRIBUTE,
|
||
|
formEncType: MUST_USE_ATTRIBUTE,
|
||
|
formMethod: MUST_USE_ATTRIBUTE,
|
||
|
formNoValidate: HAS_BOOLEAN_VALUE,
|
||
|
formTarget: MUST_USE_ATTRIBUTE,
|
||
|
frameBorder: MUST_USE_ATTRIBUTE,
|
||
|
headers: null,
|
||
|
height: MUST_USE_ATTRIBUTE,
|
||
|
hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
||
|
high: null,
|
||
|
href: null,
|
||
|
hrefLang: null,
|
||
|
htmlFor: null,
|
||
|
httpEquiv: null,
|
||
|
icon: null,
|
||
|
id: MUST_USE_PROPERTY,
|
||
|
label: null,
|
||
|
lang: null,
|
||
|
list: MUST_USE_ATTRIBUTE,
|
||
|
loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
low: null,
|
||
|
manifest: MUST_USE_ATTRIBUTE,
|
||
|
marginHeight: null,
|
||
|
marginWidth: null,
|
||
|
max: null,
|
||
|
maxLength: MUST_USE_ATTRIBUTE,
|
||
|
media: MUST_USE_ATTRIBUTE,
|
||
|
mediaGroup: null,
|
||
|
method: null,
|
||
|
min: null,
|
||
|
multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
name: null,
|
||
|
noValidate: HAS_BOOLEAN_VALUE,
|
||
|
open: HAS_BOOLEAN_VALUE,
|
||
|
optimum: null,
|
||
|
pattern: null,
|
||
|
placeholder: null,
|
||
|
poster: null,
|
||
|
preload: null,
|
||
|
radioGroup: null,
|
||
|
readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
rel: null,
|
||
|
required: HAS_BOOLEAN_VALUE,
|
||
|
role: MUST_USE_ATTRIBUTE,
|
||
|
rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
|
||
|
rowSpan: null,
|
||
|
sandbox: null,
|
||
|
scope: null,
|
||
|
scoped: HAS_BOOLEAN_VALUE,
|
||
|
scrolling: null,
|
||
|
seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
||
|
selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
||
|
shape: null,
|
||
|
size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
|
||
|
sizes: MUST_USE_ATTRIBUTE,
|
||
|
span: HAS_POSITIVE_NUMERIC_VALUE,
|
||
|
spellCheck: null,
|
||
|
src: null,
|
||
|
srcDoc: MUST_USE_PROPERTY,
|
||
|
srcSet: MUST_USE_ATTRIBUTE,
|
||
|
start: HAS_NUMERIC_VALUE,
|
||
|
step: null,
|
||
|
style: null,
|
||
|
tabIndex: null,
|
||
|
target: null,
|
||
|
title: null,
|
||
|
type: null,
|
||
|
useMap: null,
|
||
|
value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
|
||
|
width: MUST_USE_ATTRIBUTE,
|
||
|
wmode: MUST_USE_ATTRIBUTE,
|
||
|
|
||
|
/**
|
||
|
* Non-standard Properties
|
||
|
*/
|
||
|
// autoCapitalize and autoCorrect are supported in Mobile Safari for
|
||
|
// keyboard hints.
|
||
|
autoCapitalize: null,
|
||
|
autoCorrect: null,
|
||
|
// itemProp, itemScope, itemType are for
|
||
|
// Microdata support. See http://schema.org/docs/gs.html
|
||
|
itemProp: MUST_USE_ATTRIBUTE,
|
||
|
itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
||
|
itemType: MUST_USE_ATTRIBUTE,
|
||
|
// itemID and itemRef are for Microdata support as well but
|
||
|
// only specified in the the WHATWG spec document. See
|
||
|
// https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
|
||
|
itemID: MUST_USE_ATTRIBUTE,
|
||
|
itemRef: MUST_USE_ATTRIBUTE,
|
||
|
// property is supported for OpenGraph in meta tags.
|
||
|
property: null,
|
||
|
// IE-only attribute that controls focus behavior
|
||
|
unselectable: MUST_USE_ATTRIBUTE
|
||
|
},
|
||
|
DOMAttributeNames: {
|
||
|
acceptCharset: 'accept-charset',
|
||
|
className: 'class',
|
||
|
htmlFor: 'for',
|
||
|
httpEquiv: 'http-equiv'
|
||
|
},
|
||
|
DOMPropertyNames: {
|
||
|
autoCapitalize: 'autocapitalize',
|
||
|
autoComplete: 'autocomplete',
|
||
|
autoCorrect: 'autocorrect',
|
||
|
autoFocus: 'autofocus',
|
||
|
autoPlay: 'autoplay',
|
||
|
// `encoding` is equivalent to `enctype`, IE8 lacks an `enctype` setter.
|
||
|
// http://www.w3.org/TR/html5/forms.html#dom-fs-encoding
|
||
|
encType: 'encoding',
|
||
|
hrefLang: 'hreflang',
|
||
|
radioGroup: 'radiogroup',
|
||
|
spellCheck: 'spellcheck',
|
||
|
srcDoc: 'srcdoc',
|
||
|
srcSet: 'srcset'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
module.exports = HTMLDOMPropertyConfig;
|