Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80517 views
1
/**
2
* Copyright 2013-2015, 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
headers: null,
98
height: MUST_USE_ATTRIBUTE,
99
hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
100
high: null,
101
href: null,
102
hrefLang: null,
103
htmlFor: null,
104
httpEquiv: null,
105
icon: null,
106
id: MUST_USE_PROPERTY,
107
label: null,
108
lang: null,
109
list: MUST_USE_ATTRIBUTE,
110
loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
111
low: null,
112
manifest: MUST_USE_ATTRIBUTE,
113
marginHeight: null,
114
marginWidth: null,
115
max: null,
116
maxLength: MUST_USE_ATTRIBUTE,
117
media: MUST_USE_ATTRIBUTE,
118
mediaGroup: null,
119
method: null,
120
min: null,
121
multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
122
muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
123
name: null,
124
noValidate: HAS_BOOLEAN_VALUE,
125
open: HAS_BOOLEAN_VALUE,
126
optimum: null,
127
pattern: null,
128
placeholder: null,
129
poster: null,
130
preload: null,
131
radioGroup: null,
132
readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
133
rel: null,
134
required: HAS_BOOLEAN_VALUE,
135
role: MUST_USE_ATTRIBUTE,
136
rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
137
rowSpan: null,
138
sandbox: null,
139
scope: null,
140
scoped: HAS_BOOLEAN_VALUE,
141
scrolling: null,
142
seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
143
selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
144
shape: null,
145
size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
146
sizes: MUST_USE_ATTRIBUTE,
147
span: HAS_POSITIVE_NUMERIC_VALUE,
148
spellCheck: null,
149
src: null,
150
srcDoc: MUST_USE_PROPERTY,
151
srcSet: MUST_USE_ATTRIBUTE,
152
start: HAS_NUMERIC_VALUE,
153
step: null,
154
style: null,
155
tabIndex: null,
156
target: null,
157
title: null,
158
type: null,
159
useMap: null,
160
value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
161
width: MUST_USE_ATTRIBUTE,
162
wmode: MUST_USE_ATTRIBUTE,
163
164
/**
165
* Non-standard Properties
166
*/
167
// autoCapitalize and autoCorrect are supported in Mobile Safari for
168
// keyboard hints.
169
autoCapitalize: null,
170
autoCorrect: null,
171
// itemProp, itemScope, itemType are for
172
// Microdata support. See http://schema.org/docs/gs.html
173
itemProp: MUST_USE_ATTRIBUTE,
174
itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
175
itemType: MUST_USE_ATTRIBUTE,
176
// itemID and itemRef are for Microdata support as well but
177
// only specified in the the WHATWG spec document. See
178
// https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
179
itemID: MUST_USE_ATTRIBUTE,
180
itemRef: MUST_USE_ATTRIBUTE,
181
// property is supported for OpenGraph in meta tags.
182
property: null,
183
// IE-only attribute that controls focus behavior
184
unselectable: MUST_USE_ATTRIBUTE
185
},
186
DOMAttributeNames: {
187
acceptCharset: 'accept-charset',
188
className: 'class',
189
htmlFor: 'for',
190
httpEquiv: 'http-equiv'
191
},
192
DOMPropertyNames: {
193
autoCapitalize: 'autocapitalize',
194
autoComplete: 'autocomplete',
195
autoCorrect: 'autocorrect',
196
autoFocus: 'autofocus',
197
autoPlay: 'autoplay',
198
// `encoding` is equivalent to `enctype`, IE8 lacks an `enctype` setter.
199
// http://www.w3.org/TR/html5/forms.html#dom-fs-encoding
200
encType: 'encoding',
201
hrefLang: 'hreflang',
202
radioGroup: 'radiogroup',
203
spellCheck: 'spellcheck',
204
srcDoc: 'srcdoc',
205
srcSet: 'srcset'
206
}
207
};
208
209
module.exports = HTMLDOMPropertyConfig;
210
211