Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81159 views
1
/**
2
* Copyright 2013-2014, Facebook, Inc.
3
* All rights reserved.
4
*
5
* This source code is licensed under the BSD-style license found in the
6
* LICENSE file in the root directory of this source tree. An additional grant
7
* of patent rights can be found in the PATENTS file in the same directory.
8
*
9
* @providesModule HTMLDOMPropertyConfig
10
*/
11
12
/*jslint bitwise: true*/
13
14
"use strict";
15
16
var DOMProperty = require('DOMProperty');
17
var ExecutionEnvironment = require('ExecutionEnvironment');
18
19
var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
20
var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
21
var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
22
var HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;
23
var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
24
var HAS_POSITIVE_NUMERIC_VALUE =
25
DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
26
var HAS_OVERLOADED_BOOLEAN_VALUE =
27
DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
28
29
var hasSVG;
30
if (ExecutionEnvironment.canUseDOM) {
31
var implementation = document.implementation;
32
hasSVG = (
33
implementation &&
34
implementation.hasFeature &&
35
implementation.hasFeature(
36
'http://www.w3.org/TR/SVG11/feature#BasicStructure',
37
'1.1'
38
)
39
);
40
}
41
42
43
var HTMLDOMPropertyConfig = {
44
isCustomAttribute: RegExp.prototype.test.bind(
45
/^(data|aria)-[a-z_][a-z\d_.\-]*$/
46
),
47
Properties: {
48
/**
49
* Standard Properties
50
*/
51
accept: null,
52
acceptCharset: null,
53
accessKey: null,
54
action: null,
55
allowFullScreen: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
56
allowTransparency: MUST_USE_ATTRIBUTE,
57
alt: null,
58
async: HAS_BOOLEAN_VALUE,
59
autoComplete: null,
60
// autoFocus is polyfilled/normalized by AutoFocusMixin
61
// autoFocus: HAS_BOOLEAN_VALUE,
62
autoPlay: HAS_BOOLEAN_VALUE,
63
cellPadding: null,
64
cellSpacing: null,
65
charSet: MUST_USE_ATTRIBUTE,
66
checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
67
classID: MUST_USE_ATTRIBUTE,
68
// To set className on SVG elements, it's necessary to use .setAttribute;
69
// this works on HTML elements too in all browsers except IE8. Conveniently,
70
// IE8 doesn't support SVG and so we can simply use the attribute in
71
// browsers that support SVG and the property in browsers that don't,
72
// regardless of whether the element is HTML or SVG.
73
className: hasSVG ? MUST_USE_ATTRIBUTE : MUST_USE_PROPERTY,
74
cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
75
colSpan: null,
76
content: null,
77
contentEditable: null,
78
contextMenu: MUST_USE_ATTRIBUTE,
79
controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
80
coords: null,
81
crossOrigin: null,
82
data: null, // For `<object />` acts as `src`.
83
dateTime: MUST_USE_ATTRIBUTE,
84
defer: HAS_BOOLEAN_VALUE,
85
dir: null,
86
disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
87
download: HAS_OVERLOADED_BOOLEAN_VALUE,
88
draggable: null,
89
encType: null,
90
form: MUST_USE_ATTRIBUTE,
91
formAction: MUST_USE_ATTRIBUTE,
92
formEncType: MUST_USE_ATTRIBUTE,
93
formMethod: MUST_USE_ATTRIBUTE,
94
formNoValidate: HAS_BOOLEAN_VALUE,
95
formTarget: MUST_USE_ATTRIBUTE,
96
frameBorder: MUST_USE_ATTRIBUTE,
97
height: MUST_USE_ATTRIBUTE,
98
hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
99
href: null,
100
hrefLang: null,
101
htmlFor: null,
102
httpEquiv: null,
103
icon: null,
104
id: MUST_USE_PROPERTY,
105
label: null,
106
lang: null,
107
list: MUST_USE_ATTRIBUTE,
108
loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
109
manifest: MUST_USE_ATTRIBUTE,
110
marginHeight: null,
111
marginWidth: null,
112
max: null,
113
maxLength: MUST_USE_ATTRIBUTE,
114
media: MUST_USE_ATTRIBUTE,
115
mediaGroup: null,
116
method: null,
117
min: null,
118
multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
119
muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
120
name: null,
121
noValidate: HAS_BOOLEAN_VALUE,
122
open: null,
123
pattern: null,
124
placeholder: null,
125
poster: null,
126
preload: null,
127
radioGroup: null,
128
readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
129
rel: null,
130
required: HAS_BOOLEAN_VALUE,
131
role: MUST_USE_ATTRIBUTE,
132
rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
133
rowSpan: null,
134
sandbox: null,
135
scope: null,
136
scrolling: null,
137
seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
138
selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
139
shape: null,
140
size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
141
sizes: MUST_USE_ATTRIBUTE,
142
span: HAS_POSITIVE_NUMERIC_VALUE,
143
spellCheck: null,
144
src: null,
145
srcDoc: MUST_USE_PROPERTY,
146
srcSet: MUST_USE_ATTRIBUTE,
147
start: HAS_NUMERIC_VALUE,
148
step: null,
149
style: null,
150
tabIndex: null,
151
target: null,
152
title: null,
153
type: null,
154
useMap: null,
155
value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
156
width: MUST_USE_ATTRIBUTE,
157
wmode: MUST_USE_ATTRIBUTE,
158
159
/**
160
* Non-standard Properties
161
*/
162
autoCapitalize: null, // Supported in Mobile Safari for keyboard hints
163
autoCorrect: null, // Supported in Mobile Safari for keyboard hints
164
itemProp: MUST_USE_ATTRIBUTE, // Microdata: http://schema.org/docs/gs.html
165
itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE, // Microdata: http://schema.org/docs/gs.html
166
itemType: MUST_USE_ATTRIBUTE, // Microdata: http://schema.org/docs/gs.html
167
property: null // Supports OG in meta tags
168
},
169
DOMAttributeNames: {
170
acceptCharset: 'accept-charset',
171
className: 'class',
172
htmlFor: 'for',
173
httpEquiv: 'http-equiv'
174
},
175
DOMPropertyNames: {
176
autoCapitalize: 'autocapitalize',
177
autoComplete: 'autocomplete',
178
autoCorrect: 'autocorrect',
179
autoFocus: 'autofocus',
180
autoPlay: 'autoplay',
181
encType: 'enctype',
182
hrefLang: 'hreflang',
183
radioGroup: 'radiogroup',
184
spellCheck: 'spellcheck',
185
srcDoc: 'srcdoc',
186
srcSet: 'srcset'
187
}
188
};
189
190
module.exports = HTMLDOMPropertyConfig;
191
192