| 1 | function getProperty(propertyName) { |
| 2 | return el => el[propertyName]; |
| 3 | } |
| 4 | |
| 5 | function getAttribute(attributeName) { |
| 6 | return el => { |
| 7 | if (el.namespaceURI === '') { |
| 8 | throw new Error('Not an HTML element.'); |
| 9 | } |
| 10 | return el.getAttribute(attributeName); |
| 11 | }; |
| 12 | } |
| 13 | |
| 14 | function getSVGProperty(propertyName) { |
| 15 | return el => el[propertyName]; |
| 16 | } |
| 17 | |
| 18 | function getSVGAttribute(attributeName) { |
| 19 | return el => { |
| 20 | if (el.namespaceURI !== 'http://www.w3.org/2000/svg') { |
| 21 | throw new Error('Not an SVG element.'); |
| 22 | } |
| 23 | return el.getAttribute(attributeName); |
| 24 | }; |
| 25 | } |
| 26 | |
| 27 | const attributes = [ |
| 28 | {name: 'about', read: getAttribute('about')}, |
| 29 | {name: 'aBoUt', read: getAttribute('about')}, |
| 30 | { |
| 31 | name: 'accent-Height', |
| 32 | containerTagName: 'svg', |
| 33 | tagName: 'font-face', |
| 34 | read: getSVGAttribute('accent-height'), |
| 35 | }, |
| 36 | { |
| 37 | name: 'accent-height', |
| 38 | containerTagName: 'svg', |
| 39 | tagName: 'font-face', |
| 40 | read: getSVGAttribute('accent-height'), |
| 41 | }, |
| 42 | { |
| 43 | name: 'accentHeight', |
| 44 | containerTagName: 'svg', |
| 45 | tagName: 'font-face', |
| 46 | read: getSVGAttribute('accent-height'), |
| 47 | }, |
| 48 | {name: 'accept', tagName: 'input'}, |
| 49 | {name: 'accept-charset', tagName: 'form', read: getProperty('acceptCharset')}, |
| 50 | {name: 'accept-Charset', tagName: 'form', read: getProperty('acceptCharset')}, |
| 51 | {name: 'acceptCharset', tagName: 'form'}, |
| 52 | {name: 'accessKey'}, |
| 53 | { |
| 54 | name: 'accumulate', |
| 55 | containerTagName: 'svg', |
| 56 | tagName: 'animate', |
| 57 | read: getSVGAttribute('accumulate'), |
| 58 | }, |
| 59 | {name: 'action', tagName: 'form', overrideStringValue: 'https://reactjs.com'}, |
| 60 | { |
| 61 | name: 'additive', |
| 62 | containerTagName: 'svg', |
| 63 | tagName: 'animate', |
| 64 | read: getSVGAttribute('additive'), |
| 65 | }, |
| 66 | { |
| 67 | name: 'alignment-baseline', |
| 68 | containerTagName: 'svg', |
| 69 | tagName: 'textPath', |
| 70 | read: getSVGAttribute('alignment-baseline'), |
| 71 | }, |
| 72 | { |
| 73 | name: 'alignmentBaseline', |
| 74 | containerTagName: 'svg', |
| 75 | tagName: 'textPath', |
| 76 | read: getSVGAttribute('alignment-baseline'), |
| 77 | }, |
| 78 | { |
| 79 | name: 'allowFullScreen', |
| 80 | tagName: 'iframe', |
| 81 | read: getProperty('allowFullscreen'), |
| 82 | }, |
| 83 | { |
| 84 | name: 'allowfullscreen', |
| 85 | tagName: 'iframe', |
| 86 | read: getProperty('allowFullscreen'), |
| 87 | }, |
| 88 | {name: 'allowFullscreen', tagName: 'iframe'}, |
| 89 | { |
| 90 | name: 'allowReorder', |
| 91 | containerTagName: 'svg', |
| 92 | tagName: 'switch', |
| 93 | read: getSVGAttribute('allowReorder'), |
| 94 | }, |
| 95 | { |
| 96 | name: 'alphabetic', |
| 97 | containerTagName: 'svg', |
| 98 | tagName: 'font-face', |
| 99 | read: getSVGAttribute('alphabetic'), |
| 100 | }, |
| 101 | {name: 'alt', tagName: 'img'}, |
| 102 | { |
| 103 | name: 'amplitude', |
| 104 | containerTagName: 'svg', |
| 105 | tagName: 'feFuncA', |
| 106 | read: getSVGProperty('amplitude'), |
| 107 | }, |
| 108 | { |
| 109 | name: 'arabic-form', |
| 110 | containerTagName: 'svg', |
| 111 | tagName: 'glyph', |
| 112 | read: getSVGAttribute('arabic-form'), |
| 113 | }, |
| 114 | { |
| 115 | name: 'arabicForm', |
| 116 | containerTagName: 'svg', |
| 117 | tagName: 'glyph', |
| 118 | read: getSVGAttribute('arabic-form'), |
| 119 | }, |
| 120 | {name: 'aria', read: getAttribute('aria')}, |
| 121 | {name: 'aria-', read: getAttribute('aria-')}, |
| 122 | {name: 'aria-hidden', read: getProperty('ariaHidden')}, |
| 123 | {name: 'aria-invalidattribute', read: getAttribute('aria-invalidattribute')}, |
| 124 | {name: 'as', tagName: 'link'}, |
| 125 | { |
| 126 | name: 'ascent', |
| 127 | containerTagName: 'svg', |
| 128 | tagName: 'font-face', |
| 129 | read: getSVGAttribute('ascent'), |
| 130 | }, |
| 131 | {name: 'async', tagName: 'script'}, |
| 132 | { |
| 133 | name: 'attributeName', |
| 134 | containerTagName: 'svg', |
| 135 | tagName: 'animate', |
| 136 | read: getSVGAttribute('attributeName'), |
| 137 | }, |
| 138 | { |
| 139 | name: 'attributeType', |
| 140 | containerTagName: 'svg', |
| 141 | tagName: 'animate', |
| 142 | read: getSVGAttribute('attributeType'), |
| 143 | }, |
| 144 | { |
| 145 | name: 'autoCapitalize', |
| 146 | tagName: 'input', |
| 147 | read: getProperty('autocapitalize'), |
| 148 | overrideStringValue: 'words', |
| 149 | }, |
| 150 | { |
| 151 | name: 'autoComplete', |
| 152 | tagName: 'input', |
| 153 | overrideStringValue: 'email', |
| 154 | read: getProperty('autocomplete'), |
| 155 | }, |
| 156 | { |
| 157 | name: 'autoCorrect', |
| 158 | tagName: 'input', |
| 159 | overrideStringValue: 'off', |
| 160 | read: getAttribute('autocorrect'), |
| 161 | }, |
| 162 | {name: 'autoPlay', tagName: 'video', read: getProperty('autoplay')}, |
| 163 | { |
| 164 | name: 'autoReverse', |
| 165 | containerTagName: 'svg', |
| 166 | tagName: 'animate', |
| 167 | read: getSVGAttribute('autoreverse'), |
| 168 | }, |
| 169 | {name: 'autoSave', tagName: 'input', read: getAttribute('autosave')}, |
| 170 | { |
| 171 | name: 'azimuth', |
| 172 | containerTagName: 'svg', |
| 173 | tagName: 'feDistantLight', |
| 174 | read: getSVGProperty('azimuth'), |
| 175 | }, |
| 176 | { |
| 177 | name: 'baseFrequency', |
| 178 | containerTagName: 'svg', |
| 179 | tagName: 'feTurbulence', |
| 180 | read: getSVGAttribute('baseFrequency'), |
| 181 | }, |
| 182 | { |
| 183 | name: 'baseline-shift', |
| 184 | containerTagName: 'svg', |
| 185 | tagName: 'textPath', |
| 186 | read: getSVGAttribute('baseline-shift'), |
| 187 | }, |
| 188 | { |
| 189 | name: 'baselineShift', |
| 190 | containerTagName: 'svg', |
| 191 | tagName: 'textPath', |
| 192 | read: getSVGAttribute('baseline-shift'), |
| 193 | }, |
| 194 | {name: 'baseProfile', tagName: 'svg', read: getSVGAttribute('baseProfile')}, |
| 195 | { |
| 196 | name: 'bbox', |
| 197 | containerTagName: 'svg', |
| 198 | tagName: 'font-face', |
| 199 | read: getSVGAttribute('bbox'), |
| 200 | }, |
| 201 | { |
| 202 | name: 'begin', |
| 203 | containerTagName: 'svg', |
| 204 | tagName: 'animate', |
| 205 | read: getSVGAttribute('begin'), |
| 206 | }, |
| 207 | { |
| 208 | name: 'bias', |
| 209 | containerTagName: 'svg', |
| 210 | tagName: 'feConvolveMatrix', |
| 211 | read: getSVGProperty('bias'), |
| 212 | }, |
| 213 | { |
| 214 | name: 'by', |
| 215 | containerTagName: 'svg', |
| 216 | tagName: 'animate', |
| 217 | read: getSVGAttribute('by'), |
| 218 | }, |
| 219 | { |
| 220 | name: 'calcMode', |
| 221 | containerTagName: 'svg', |
| 222 | tagName: 'animate', |
| 223 | overrideStringValue: 'discrete', |
| 224 | read: getSVGAttribute('calcMode'), |
| 225 | }, |
| 226 | { |
| 227 | name: 'cap-height', |
| 228 | containerTagName: 'svg', |
| 229 | tagName: 'font-face', |
| 230 | read: getSVGAttribute('cap-height'), |
| 231 | }, |
| 232 | { |
| 233 | name: 'capHeight', |
| 234 | containerTagName: 'svg', |
| 235 | tagName: 'font-face', |
| 236 | read: getSVGAttribute('cap-height'), |
| 237 | }, |
| 238 | { |
| 239 | name: 'capture', |
| 240 | tagName: 'input', |
| 241 | overrideStringValue: 'environment', |
| 242 | read: getAttribute('capture'), |
| 243 | }, |
| 244 | {name: 'cellPadding', tagName: 'table'}, |
| 245 | {name: 'cellSpacing', tagName: 'table'}, |
| 246 | { |
| 247 | name: 'challenge', |
| 248 | tagName: 'keygen', |
| 249 | read: getAttribute('challenge'), // The property is not supported in Chrome. |
| 250 | }, |
| 251 | {name: 'charSet', tagName: 'script', read: getProperty('charset')}, |
| 252 | {name: 'checked', tagName: 'input', extraProps: {onChange() {}}}, |
| 253 | {name: 'Checked', tagName: 'input', read: getAttribute('Checked')}, |
| 254 | {name: 'Children', read: getAttribute('children')}, |
| 255 | {name: 'children'}, |
| 256 | { |
| 257 | name: 'cite', |
| 258 | tagName: 'blockquote', |
| 259 | overrideStringValue: 'https://reactjs.com/', |
| 260 | }, |
| 261 | {name: 'class', read: getAttribute('class')}, |
| 262 | {name: 'classID', tagName: 'object', read: getAttribute('classid')}, |
| 263 | {name: 'className'}, |
| 264 | {name: 'clip', tagName: 'svg', read: getAttribute('clip')}, |
| 265 | { |
| 266 | name: 'clip-path', |
| 267 | containerTagName: 'svg', |
| 268 | tagName: 'path', |
| 269 | read: getSVGAttribute('clip-path'), |
| 270 | }, |
| 271 | { |
| 272 | name: 'clipPath', |
| 273 | containerTagName: 'svg', |
| 274 | tagName: 'path', |
| 275 | read: getSVGAttribute('clip-path'), |
| 276 | }, |
| 277 | { |
| 278 | name: 'clipPathUnits', |
| 279 | containerTagName: 'svg', |
| 280 | tagName: 'clipPath', |
| 281 | overrideStringValue: 'objectBoundingBox', |
| 282 | read: getSVGProperty('clipPathUnits'), |
| 283 | }, |
| 284 | { |
| 285 | name: 'clip-rule', |
| 286 | containerTagName: 'svg', |
| 287 | tagName: 'path', |
| 288 | read: getSVGAttribute('clip-rule'), |
| 289 | }, |
| 290 | { |
| 291 | name: 'clipRule', |
| 292 | containerTagName: 'svg', |
| 293 | tagName: 'path', |
| 294 | read: getSVGAttribute('clip-rule'), |
| 295 | }, |
| 296 | { |
| 297 | name: 'color', |
| 298 | containerTagName: 'svg', |
| 299 | tagName: 'text', |
| 300 | read: getSVGAttribute('color'), |
| 301 | }, |
| 302 | { |
| 303 | name: 'color-interpolation', |
| 304 | containerTagName: 'svg', |
| 305 | tagName: 'animate', |
| 306 | overrideStringValue: 'sRGB', |
| 307 | read: getSVGAttribute('color-interpolation'), |
| 308 | }, |
| 309 | { |
| 310 | name: 'colorInterpolation', |
| 311 | containerTagName: 'svg', |
| 312 | tagName: 'animate', |
| 313 | overrideStringValue: 'sRGB', |
| 314 | read: getSVGAttribute('color-interpolation'), |
| 315 | }, |
| 316 | { |
| 317 | name: 'color-interpolation-filters', |
| 318 | containerTagName: 'svg', |
| 319 | tagName: 'feComposite', |
| 320 | overrideStringValue: 'sRGB', |
| 321 | read: getSVGAttribute('color-interpolation-filters'), |
| 322 | }, |
| 323 | { |
| 324 | name: 'colorInterpolationFilters', |
| 325 | containerTagName: 'svg', |
| 326 | tagName: 'feComposite', |
| 327 | overrideStringValue: 'sRGB', |
| 328 | read: getSVGAttribute('color-interpolation-filters'), |
| 329 | }, |
| 330 | { |
| 331 | name: 'color-profile', |
| 332 | containerTagName: 'svg', |
| 333 | tagName: 'image', |
| 334 | overrideStringValue: 'sRGB', |
| 335 | read: getSVGAttribute('color-profile'), |
| 336 | }, |
| 337 | { |
| 338 | name: 'colorProfile', |
| 339 | containerTagName: 'svg', |
| 340 | tagName: 'image', |
| 341 | overrideStringValue: 'sRGB', |
| 342 | read: getSVGAttribute('color-profile'), |
| 343 | }, |
| 344 | { |
| 345 | name: 'color-rendering', |
| 346 | containerTagName: 'svg', |
| 347 | tagName: 'animate', |
| 348 | overrideStringValue: 'optimizeSpeed', |
| 349 | read: getSVGAttribute('color-rendering'), |
| 350 | }, |
| 351 | { |
| 352 | name: 'colorRendering', |
| 353 | containerTagName: 'svg', |
| 354 | tagName: 'animate', |
| 355 | overrideStringValue: 'optimizeSpeed', |
| 356 | read: getSVGAttribute('color-rendering'), |
| 357 | }, |
| 358 | {name: 'cols', tagName: 'textarea'}, |
| 359 | {name: 'colSpan', containerTagName: 'tr', tagName: 'td'}, |
| 360 | {name: 'content', containerTagName: 'head', tagName: 'meta'}, |
| 361 | {name: 'contentEditable'}, |
| 362 | { |
| 363 | name: 'contentScriptType', |
| 364 | tagName: 'svg', |
| 365 | read: getSVGAttribute('contentScriptType'), |
| 366 | }, |
| 367 | { |
| 368 | name: 'contentStyleType', |
| 369 | tagName: 'svg', |
| 370 | read: getSVGAttribute('contentStyleType'), |
| 371 | }, |
| 372 | {name: 'contextMenu', read: getAttribute('contextmenu')}, // TODO: Read the property by rendering a menu with the ID. |
| 373 | {name: 'controls', tagName: 'video'}, |
| 374 | {name: 'coords', tagName: 'a'}, |
| 375 | {name: 'crossOrigin', tagName: 'script'}, |
| 376 | {name: 'cursor', tag: 'svg', read: getAttribute('cursor')}, |
| 377 | { |
| 378 | name: 'cx', |
| 379 | containerTagName: 'svg', |
| 380 | tagName: 'circle', |
| 381 | overrideStringValue: '10px', |
| 382 | read: getSVGProperty('cx'), |
| 383 | }, |
| 384 | { |
| 385 | name: 'cy', |
| 386 | containerTagName: 'svg', |
| 387 | tagName: 'circle', |
| 388 | overrideStringValue: '10%', |
| 389 | read: getSVGProperty('cy'), |
| 390 | }, |
| 391 | { |
| 392 | name: 'd', |
| 393 | containerTagName: 'svg', |
| 394 | tagName: 'path', |
| 395 | read: getSVGAttribute('d'), |
| 396 | }, |
| 397 | { |
| 398 | name: 'dangerouslySetInnerHTML', |
| 399 | read: getAttribute('dangerouslySetInnerHTML'), |
| 400 | }, |
| 401 | { |
| 402 | name: 'DangerouslySetInnerHTML', |
| 403 | read: getAttribute('DangerouslySetInnerHTML'), |
| 404 | }, |
| 405 | {name: 'data', read: getAttribute('data')}, |
| 406 | {name: 'data-', read: getAttribute('data-')}, |
| 407 | {name: 'data-unknownattribute', read: getAttribute('data-unknownattribute')}, |
| 408 | {name: 'datatype', read: getAttribute('datatype')}, |
| 409 | { |
| 410 | name: 'dateTime', |
| 411 | tagName: 'time', |
| 412 | overrideStringValue: '2001-05-15T19:00', |
| 413 | read: getAttribute('datetime'), |
| 414 | }, |
| 415 | { |
| 416 | name: 'decelerate', |
| 417 | containerTagName: 'svg', |
| 418 | tagName: 'animate', |
| 419 | read: getSVGAttribute('decelerate'), |
| 420 | }, |
| 421 | {name: 'default', tagName: 'track'}, |
| 422 | { |
| 423 | name: 'defaultchecked', |
| 424 | tagName: 'input', |
| 425 | read: getAttribute('defaultchecked'), |
| 426 | }, |
| 427 | {name: 'defaultChecked', tagName: 'input'}, |
| 428 | {name: 'defaultValue', tagName: 'input'}, |
| 429 | {name: 'defaultValuE', tagName: 'input', read: getAttribute('defaultValuE')}, |
| 430 | {name: 'defer', tagName: 'script'}, |
| 431 | { |
| 432 | name: 'descent', |
| 433 | containerTagName: 'svg', |
| 434 | tagName: 'font-face', |
| 435 | read: getSVGAttribute('descent'), |
| 436 | }, |
| 437 | { |
| 438 | name: 'diffuseConstant', |
| 439 | containerTagName: 'svg', |
| 440 | tagName: 'feDiffuseLighting', |
| 441 | read: getSVGProperty('diffuseConstant'), |
| 442 | }, |
| 443 | {name: 'dir', overrideStringValue: 'rtl'}, |
| 444 | { |
| 445 | name: 'direction', |
| 446 | containerTagName: 'svg', |
| 447 | tagName: 'text', |
| 448 | overrideStringValue: 'rtl', |
| 449 | read: getSVGAttribute('direction'), |
| 450 | }, |
| 451 | {name: 'disabled', tagName: 'input'}, |
| 452 | { |
| 453 | name: 'disablePictureInPicture', |
| 454 | tagName: 'video', |
| 455 | read: getProperty('disablepictureinpicture'), |
| 456 | }, |
| 457 | { |
| 458 | name: 'disableRemotePlayback', |
| 459 | tagName: 'video', |
| 460 | read: getProperty('disableremoteplayback'), |
| 461 | }, |
| 462 | { |
| 463 | name: 'display', |
| 464 | tagName: 'svg', |
| 465 | overrideStringValue: 'list-item', |
| 466 | read: getAttribute('display'), |
| 467 | }, |
| 468 | { |
| 469 | name: 'divisor', |
| 470 | containerTagName: 'svg', |
| 471 | tagName: 'feConvolveMatrix', |
| 472 | read: getSVGProperty('divisor'), |
| 473 | }, |
| 474 | { |
| 475 | name: 'dominant-baseline', |
| 476 | containerTagName: 'svg', |
| 477 | tagName: 'text', |
| 478 | read: getSVGAttribute('dominant-baseline'), |
| 479 | }, |
| 480 | { |
| 481 | name: 'dominantBaseline', |
| 482 | containerTagName: 'svg', |
| 483 | tagName: 'text', |
| 484 | read: getSVGAttribute('dominant-baseline'), |
| 485 | }, |
| 486 | {name: 'download', tagName: 'a'}, |
| 487 | {name: 'dOwNlOaD', tagName: 'a', read: getAttribute('dOwNlOaD')}, |
| 488 | {name: 'draggable'}, |
| 489 | { |
| 490 | name: 'dur', |
| 491 | containerTagName: 'svg', |
| 492 | tagName: 'animate', |
| 493 | read: getSVGAttribute('dur'), |
| 494 | }, |
| 495 | { |
| 496 | name: 'dx', |
| 497 | containerTagName: 'svg', |
| 498 | tagName: 'text', |
| 499 | overrideStringValue: '1pt 2px 3em', |
| 500 | read: getSVGProperty('dx'), |
| 501 | }, |
| 502 | { |
| 503 | name: 'dX', |
| 504 | containerTagName: 'svg', |
| 505 | tagName: 'text', |
| 506 | overrideStringValue: '1pt 2px 3em', |
| 507 | read: getSVGProperty('dx'), |
| 508 | }, |
| 509 | { |
| 510 | name: 'dy', |
| 511 | containerTagName: 'svg', |
| 512 | tagName: 'text', |
| 513 | overrideStringValue: '1 2 3', |
| 514 | read: getSVGProperty('dy'), |
| 515 | }, |
| 516 | { |
| 517 | name: 'dY', |
| 518 | containerTagName: 'svg', |
| 519 | tagName: 'text', |
| 520 | overrideStringValue: '1 2 3', |
| 521 | read: getSVGProperty('dy'), |
| 522 | }, |
| 523 | { |
| 524 | name: 'edgeMode', |
| 525 | containerTagName: 'svg', |
| 526 | tagName: 'feConvolveMatrix', |
| 527 | overrideStringValue: 'wrap', |
| 528 | read: getSVGProperty('edgeMode'), |
| 529 | }, |
| 530 | { |
| 531 | name: 'elevation', |
| 532 | containerTagName: 'svg', |
| 533 | tagName: 'feDistantLight', |
| 534 | read: getSVGProperty('elevation'), |
| 535 | }, |
| 536 | { |
| 537 | name: 'enable-background', |
| 538 | containerTagName: 'svg', |
| 539 | tagName: 'path', |
| 540 | read: getSVGAttribute('enable-background'), |
| 541 | }, |
| 542 | { |
| 543 | name: 'enableBackground', |
| 544 | containerTagName: 'svg', |
| 545 | tagName: 'path', |
| 546 | read: getSVGAttribute('enable-background'), |
| 547 | }, |
| 548 | { |
| 549 | name: 'encType', |
| 550 | tagName: 'form', |
| 551 | overrideStringValue: 'text/plain', |
| 552 | read: getProperty('enctype'), |
| 553 | }, |
| 554 | { |
| 555 | name: 'end', |
| 556 | containerTagName: 'svg', |
| 557 | tagName: 'animate', |
| 558 | read: getSVGAttribute('end'), |
| 559 | }, |
| 560 | { |
| 561 | name: 'enterKeyHint', |
| 562 | tagName: 'input', |
| 563 | read: getProperty('enterKeyHint'), |
| 564 | }, |
| 565 | { |
| 566 | name: 'exponent', |
| 567 | read: getSVGProperty('exponent'), |
| 568 | containerTagName: 'svg', |
| 569 | tagName: 'feFuncA', |
| 570 | }, |
| 571 | { |
| 572 | name: 'externalResourcesRequired', |
| 573 | containerTagName: 'svg', |
| 574 | tagName: 'path', |
| 575 | read: getSVGAttribute('externalResourcesRequired'), |
| 576 | }, |
| 577 | { |
| 578 | name: 'fetchPriority', |
| 579 | overrideStringValue: 'high', |
| 580 | tagName: 'img', |
| 581 | read: getProperty('fetchPriority'), |
| 582 | }, |
| 583 | { |
| 584 | name: 'fetchpriority', |
| 585 | overrideStringValue: 'high', |
| 586 | tagName: 'img', |
| 587 | read: getProperty('fetchPriority'), |
| 588 | }, |
| 589 | { |
| 590 | name: 'fetchPriority', |
| 591 | overrideStringValue: 'high', |
| 592 | tagName: 'link', |
| 593 | read: getProperty('fetchPriority'), |
| 594 | }, |
| 595 | { |
| 596 | name: 'fill', |
| 597 | containerTagName: 'svg', |
| 598 | tagName: 'path', |
| 599 | read: getSVGAttribute('fill'), |
| 600 | }, |
| 601 | { |
| 602 | name: 'fillOpacity', |
| 603 | containerTagName: 'svg', |
| 604 | tagName: 'circle', |
| 605 | read: getSVGAttribute('fill-opacity'), |
| 606 | }, |
| 607 | { |
| 608 | name: 'fill-opacity', |
| 609 | containerTagName: 'svg', |
| 610 | tagName: 'circle', |
| 611 | read: getSVGAttribute('fill-opacity'), |
| 612 | }, |
| 613 | { |
| 614 | name: 'fillRule', |
| 615 | containerTagName: 'svg', |
| 616 | tagName: 'circle', |
| 617 | read: getSVGAttribute('fill-rule'), |
| 618 | }, |
| 619 | { |
| 620 | name: 'fill-rule', |
| 621 | containerTagName: 'svg', |
| 622 | tagName: 'circle', |
| 623 | read: getSVGAttribute('fill-rule'), |
| 624 | }, |
| 625 | { |
| 626 | name: 'filter', |
| 627 | containerTagName: 'svg', |
| 628 | tagName: 'g', |
| 629 | read: getSVGAttribute('filter'), |
| 630 | }, |
| 631 | { |
| 632 | name: 'filterRes', |
| 633 | containerTagName: 'svg', |
| 634 | tagName: 'filter', |
| 635 | read: getSVGAttribute('filterRes'), |
| 636 | }, |
| 637 | { |
| 638 | name: 'filterUnits', |
| 639 | containerTagName: 'svg', |
| 640 | tagName: 'filter', |
| 641 | overrideStringValue: 'userSpaceOnUse', |
| 642 | read: getSVGProperty('filterUnits'), |
| 643 | }, |
| 644 | { |
| 645 | name: 'flood-color', |
| 646 | containerTagName: 'svg', |
| 647 | tagName: 'feflood', |
| 648 | overrideStringValue: 'currentColor', |
| 649 | read: getSVGAttribute('flood-color'), |
| 650 | }, |
| 651 | { |
| 652 | name: 'floodColor', |
| 653 | containerTagName: 'svg', |
| 654 | tagName: 'feflood', |
| 655 | overrideStringValue: 'currentColor', |
| 656 | read: getSVGAttribute('flood-color'), |
| 657 | }, |
| 658 | { |
| 659 | name: 'flood-opacity', |
| 660 | containerTagName: 'svg', |
| 661 | tagName: 'feflood', |
| 662 | overrideStringValue: 'inherit', |
| 663 | read: getSVGAttribute('flood-opacity'), |
| 664 | }, |
| 665 | { |
| 666 | name: 'floodOpacity', |
| 667 | containerTagName: 'svg', |
| 668 | tagName: 'feflood', |
| 669 | overrideStringValue: 'inherit', |
| 670 | read: getSVGAttribute('flood-opacity'), |
| 671 | }, |
| 672 | {name: 'focusable', tagName: 'p', read: getAttribute('focusable')}, |
| 673 | { |
| 674 | name: 'font-family', |
| 675 | read: getSVGAttribute('font-family'), |
| 676 | containerTagName: 'svg', |
| 677 | tagName: 'font-face', |
| 678 | }, |
| 679 | { |
| 680 | name: 'font-size', |
| 681 | read: getSVGAttribute('font-size'), |
| 682 | containerTagName: 'svg', |
| 683 | tagName: 'font-face', |
| 684 | }, |
| 685 | { |
| 686 | name: 'font-size-adjust', |
| 687 | containerTagName: 'svg', |
| 688 | tagName: 'text', |
| 689 | read: getSVGAttribute('font-size-adjust'), |
| 690 | }, |
| 691 | { |
| 692 | name: 'font-stretch', |
| 693 | read: getSVGAttribute('font-stretch'), |
| 694 | containerTagName: 'svg', |
| 695 | tagName: 'font-face', |
| 696 | }, |
| 697 | { |
| 698 | name: 'font-style', |
| 699 | read: getSVGAttribute('font-style'), |
| 700 | containerTagName: 'svg', |
| 701 | tagName: 'font-face', |
| 702 | }, |
| 703 | { |
| 704 | name: 'font-variant', |
| 705 | read: getSVGAttribute('font-variant'), |
| 706 | containerTagName: 'svg', |
| 707 | tagName: 'font-face', |
| 708 | }, |
| 709 | { |
| 710 | name: 'font-weight', |
| 711 | read: getSVGAttribute('font-weight'), |
| 712 | containerTagName: 'svg', |
| 713 | tagName: 'font-face', |
| 714 | }, |
| 715 | { |
| 716 | name: 'fontFamily', |
| 717 | read: getSVGAttribute('font-family'), |
| 718 | containerTagName: 'svg', |
| 719 | tagName: 'font-face', |
| 720 | }, |
| 721 | { |
| 722 | name: 'fontSize', |
| 723 | read: getSVGAttribute('font-size'), |
| 724 | containerTagName: 'svg', |
| 725 | tagName: 'font-face', |
| 726 | }, |
| 727 | { |
| 728 | name: 'fontSizeAdjust', |
| 729 | containerTagName: 'svg', |
| 730 | tagName: 'text', |
| 731 | read: getSVGAttribute('font-size-adjust'), |
| 732 | }, |
| 733 | { |
| 734 | name: 'fontStretch', |
| 735 | read: getSVGAttribute('font-stretch'), |
| 736 | containerTagName: 'svg', |
| 737 | tagName: 'font-face', |
| 738 | }, |
| 739 | { |
| 740 | name: 'fontStyle', |
| 741 | read: getSVGAttribute('font-style'), |
| 742 | containerTagName: 'svg', |
| 743 | tagName: 'font-face', |
| 744 | }, |
| 745 | { |
| 746 | name: 'fontVariant', |
| 747 | read: getSVGAttribute('font-variant'), |
| 748 | containerTagName: 'svg', |
| 749 | tagName: 'font-face', |
| 750 | }, |
| 751 | { |
| 752 | name: 'fontWeight', |
| 753 | read: getSVGAttribute('font-weight'), |
| 754 | containerTagName: 'svg', |
| 755 | tagName: 'font-face', |
| 756 | }, |
| 757 | {name: 'for', tagName: 'label', read: getProperty('htmlFor')}, |
| 758 | {name: 'fOr', tagName: 'label', read: getProperty('htmlFor')}, |
| 759 | {name: 'form', read: getAttribute('form')}, // TODO: Read the property by rendering into a form with i |
| 760 | { |
| 761 | name: 'formAction', |
| 762 | tagName: 'input', |
| 763 | overrideStringValue: 'https://reactjs.com', |
| 764 | }, |
| 765 | { |
| 766 | name: 'format', |
| 767 | read: getSVGAttribute('format'), |
| 768 | containerTagName: 'svg', |
| 769 | tagName: 'altGlyph', |
| 770 | }, |
| 771 | {name: 'formEncType', tagName: 'input', read: getProperty('formEnctype')}, |
| 772 | {name: 'formMethod', tagName: 'input', overrideStringValue: 'POST'}, |
| 773 | {name: 'formNoValidate', tagName: 'input'}, |
| 774 | {name: 'formTarget', tagName: 'input'}, |
| 775 | {name: 'frameBorder', tagName: 'iframe'}, |
| 776 | { |
| 777 | name: 'from', |
| 778 | read: getSVGAttribute('from'), |
| 779 | containerTagName: 'svg', |
| 780 | tagName: 'animate', |
| 781 | }, |
| 782 | { |
| 783 | name: 'fx', |
| 784 | read: getSVGProperty('fx'), |
| 785 | containerTagName: 'svg', |
| 786 | overrideStringValue: '10px', |
| 787 | tagName: 'radialGradient', |
| 788 | }, |
| 789 | { |
| 790 | name: 'fX', |
| 791 | containerTagName: 'svg', |
| 792 | tagName: 'radialGradient', |
| 793 | overrideStringValue: '10px', |
| 794 | read: getSVGProperty('fx'), |
| 795 | }, |
| 796 | { |
| 797 | name: 'fY', |
| 798 | containerTagName: 'svg', |
| 799 | tagName: 'radialGradient', |
| 800 | overrideStringValue: '20em', |
| 801 | read: getSVGProperty('fy'), |
| 802 | }, |
| 803 | { |
| 804 | name: 'fy', |
| 805 | read: getSVGProperty('fy'), |
| 806 | containerTagName: 'svg', |
| 807 | overrideStringValue: '20em', |
| 808 | tagName: 'radialGradient', |
| 809 | }, |
| 810 | { |
| 811 | name: 'G1', |
| 812 | containerTagName: 'svg', |
| 813 | tagName: 'hkern', |
| 814 | read: getSVGAttribute('g1'), |
| 815 | }, |
| 816 | { |
| 817 | name: 'g1', |
| 818 | read: getSVGAttribute('g1'), |
| 819 | containerTagName: 'svg', |
| 820 | tagName: 'hkern', |
| 821 | }, |
| 822 | { |
| 823 | name: 'G2', |
| 824 | containerTagName: 'svg', |
| 825 | tagName: 'hkern', |
| 826 | read: getSVGAttribute('g2'), |
| 827 | }, |
| 828 | { |
| 829 | name: 'g2', |
| 830 | read: getSVGAttribute('g2'), |
| 831 | containerTagName: 'svg', |
| 832 | tagName: 'hkern', |
| 833 | }, |
| 834 | { |
| 835 | name: 'glyph-name', |
| 836 | read: getSVGAttribute('glyph-name'), |
| 837 | containerTagName: 'svg', |
| 838 | tagName: 'glyph', |
| 839 | }, |
| 840 | { |
| 841 | name: 'glyph-orientation-horizontal', |
| 842 | containerTagName: 'svg', |
| 843 | tagName: 'text', |
| 844 | read: getSVGAttribute('glyph-orientation-horizontal'), |
| 845 | }, |
| 846 | { |
| 847 | name: 'glyph-orientation-vertical', |
| 848 | containerTagName: 'svg', |
| 849 | tagName: 'text', |
| 850 | read: getSVGAttribute('glyph-orientation-vertical'), |
| 851 | }, |
| 852 | { |
| 853 | name: 'glyphName', |
| 854 | read: getSVGAttribute('glyph-name'), |
| 855 | containerTagName: 'svg', |
| 856 | tagName: 'glyph', |
| 857 | }, |
| 858 | { |
| 859 | name: 'glyphOrientationHorizontal', |
| 860 | containerTagName: 'svg', |
| 861 | tagName: 'text', |
| 862 | read: getSVGAttribute('glyph-orientation-horizontal'), |
| 863 | }, |
| 864 | { |
| 865 | name: 'glyphOrientationVertical', |
| 866 | containerTagName: 'svg', |
| 867 | tagName: 'text', |
| 868 | read: getSVGAttribute('glyph-orientation-vertical'), |
| 869 | }, |
| 870 | { |
| 871 | name: 'glyphRef', |
| 872 | read: getSVGAttribute('glyph-ref'), |
| 873 | containerTagName: 'svg', |
| 874 | tagName: 'altGlyph', |
| 875 | }, |
| 876 | { |
| 877 | name: 'gradientTransform', |
| 878 | read: getSVGProperty('gradientTransform'), |
| 879 | containerTagName: 'svg', |
| 880 | overrideStringValue: |
| 881 | 'translate(-10,-20) scale(2) rotate(45) translate(5,10)', |
| 882 | tagName: 'linearGradient', |
| 883 | }, |
| 884 | { |
| 885 | name: 'gradientUnits', |
| 886 | read: getSVGProperty('gradientUnits'), |
| 887 | containerTagName: 'svg', |
| 888 | overrideStringValue: 'userSpaceOnUse', |
| 889 | tagName: 'linearGradient', |
| 890 | }, |
| 891 | { |
| 892 | name: 'hanging', |
| 893 | read: getSVGAttribute('hanging'), |
| 894 | containerTagName: 'svg', |
| 895 | tagName: 'font-face', |
| 896 | }, |
| 897 | // Disabled because it crashes other tests with React 15. |
| 898 | // TODO: re-enable when we no longer compare to 15. |
| 899 | // {name: 'hasOwnProperty', read: getAttribute('hasOwnProperty')}, |
| 900 | {name: 'headers', containerTagName: 'tr', tagName: 'td'}, |
| 901 | {name: 'height', tagName: 'img'}, |
| 902 | { |
| 903 | name: 'height', |
| 904 | containerTagName: 'svg', |
| 905 | tagName: 'rect', |
| 906 | read: getSVGProperty('height'), |
| 907 | overrideStringValue: '100%', |
| 908 | }, |
| 909 | {name: 'hidden', overrideStringValue: 'until-found'}, |
| 910 | {name: 'high', tagName: 'meter'}, |
| 911 | { |
| 912 | name: 'horiz-adv-x', |
| 913 | read: getSVGAttribute('horiz-adv-x'), |
| 914 | containerTagName: 'svg', |
| 915 | tagName: 'font', |
| 916 | }, |
| 917 | { |
| 918 | name: 'horiz-origin-x', |
| 919 | read: getSVGAttribute('horiz-origin-x'), |
| 920 | containerTagName: 'svg', |
| 921 | tagName: 'font', |
| 922 | }, |
| 923 | { |
| 924 | name: 'horizAdvX', |
| 925 | read: getSVGAttribute('horiz-adv-x'), |
| 926 | containerTagName: 'svg', |
| 927 | tagName: 'font', |
| 928 | }, |
| 929 | { |
| 930 | name: 'horizOriginX', |
| 931 | read: getSVGAttribute('horiz-origin-x'), |
| 932 | containerTagName: 'svg', |
| 933 | tagName: 'font', |
| 934 | }, |
| 935 | {name: 'href', tagName: 'a', overrideStringValue: 'https://reactjs.com'}, |
| 936 | {name: 'hrefLang', read: getAttribute('hreflang')}, |
| 937 | {name: 'htmlFor', tagName: 'label'}, |
| 938 | { |
| 939 | name: 'http-equiv', |
| 940 | containerTagName: 'head', |
| 941 | tagName: 'meta', |
| 942 | read: getProperty('httpEquiv'), |
| 943 | }, |
| 944 | {name: 'httpEquiv', containerTagName: 'head', tagName: 'meta'}, |
| 945 | {name: 'icon', tagName: 'command', read: getAttribute('icon')}, |
| 946 | {name: 'id'}, |
| 947 | {name: 'ID', read: getProperty('id')}, |
| 948 | { |
| 949 | name: 'ideographic', |
| 950 | read: getSVGAttribute('ideographic'), |
| 951 | containerTagName: 'svg', |
| 952 | tagName: 'font-face', |
| 953 | }, |
| 954 | { |
| 955 | name: 'image-rendering', |
| 956 | tagName: 'svg', |
| 957 | read: getSVGAttribute('image-rendering'), |
| 958 | }, |
| 959 | { |
| 960 | name: 'imageRendering', |
| 961 | tagName: 'svg', |
| 962 | read: getSVGAttribute('image-rendering'), |
| 963 | }, |
| 964 | {name: 'imageSizes', tagName: 'link', read: getProperty('imageSizes')}, |
| 965 | {name: 'imageSrcSet', tagName: 'link', read: getProperty('imageSrcset')}, |
| 966 | { |
| 967 | name: 'in', |
| 968 | read: getSVGAttribute('in'), |
| 969 | containerTagName: 'svg', |
| 970 | tagName: 'feBlend', |
| 971 | }, |
| 972 | {name: 'inert'}, |
| 973 | { |
| 974 | name: 'in2', |
| 975 | read: getSVGProperty('in2'), |
| 976 | containerTagName: 'svg', |
| 977 | tagName: 'feBlend', |
| 978 | }, |
| 979 | {name: 'initialChecked', read: getAttribute('initialchecked')}, |
| 980 | {name: 'initialValue', read: getAttribute('initialvalue')}, |
| 981 | {name: 'inlist', read: getAttribute('inlist')}, |
| 982 | {name: 'inputMode', tagName: 'input'}, |
| 983 | {name: 'integrity', tagName: 'script'}, |
| 984 | { |
| 985 | name: 'intercept', |
| 986 | read: getSVGProperty('intercept'), |
| 987 | containerTagName: 'svg', |
| 988 | tagName: 'feFuncA', |
| 989 | }, |
| 990 | { |
| 991 | name: 'is', |
| 992 | tagName: 'button', |
| 993 | overrideStringValue: 'x-test-element', |
| 994 | read: getAttribute('is'), // TODO: This could check if this is an extended custom element but this is a controversial spec. |
| 995 | }, |
| 996 | {name: 'itemID', read: getAttribute('itemid')}, |
| 997 | {name: 'itemProp', read: getAttribute('itemprop')}, |
| 998 | {name: 'itemRef', read: getAttribute('itemref')}, |
| 999 | {name: 'itemScope', read: getAttribute('itemscope')}, |
| 1000 | {name: 'itemType', read: getAttribute('itemtype')}, |
| 1001 | { |
| 1002 | name: 'k', |
| 1003 | read: getSVGAttribute('k'), |
| 1004 | containerTagName: 'svg', |
| 1005 | tagName: 'hkern', |
| 1006 | }, |
| 1007 | { |
| 1008 | name: 'K', |
| 1009 | containerTagName: 'svg', |
| 1010 | tagName: 'hkern', |
| 1011 | read: getSVGAttribute('k'), |
| 1012 | }, |
| 1013 | { |
| 1014 | name: 'K1', |
| 1015 | containerTagName: 'svg', |
| 1016 | tagName: 'feComposite', |
| 1017 | read: getSVGProperty('k1'), |
| 1018 | }, |
| 1019 | { |
| 1020 | name: 'k1', |
| 1021 | read: getSVGProperty('k1'), |
| 1022 | containerTagName: 'svg', |
| 1023 | tagName: 'feComposite', |
| 1024 | }, |
| 1025 | { |
| 1026 | name: 'k2', |
| 1027 | read: getSVGProperty('k2'), |
| 1028 | containerTagName: 'svg', |
| 1029 | tagName: 'feComposite', |
| 1030 | }, |
| 1031 | { |
| 1032 | name: 'k3', |
| 1033 | read: getSVGProperty('k3'), |
| 1034 | containerTagName: 'svg', |
| 1035 | tagName: 'feComposite', |
| 1036 | }, |
| 1037 | { |
| 1038 | name: 'k4', |
| 1039 | read: getSVGProperty('k4'), |
| 1040 | containerTagName: 'svg', |
| 1041 | tagName: 'feComposite', |
| 1042 | }, |
| 1043 | { |
| 1044 | name: 'kernelMatrix', |
| 1045 | read: getSVGProperty('kernelMatrix'), |
| 1046 | containerTagName: 'svg', |
| 1047 | tagName: 'feConvolveMatrix', |
| 1048 | overrideStringValue: '1 2 3,4', |
| 1049 | }, |
| 1050 | { |
| 1051 | name: 'kernelUnitLength', |
| 1052 | read: getSVGAttribute('kernelUnitLength'), |
| 1053 | containerTagName: 'svg', |
| 1054 | tagName: 'feConvolveMatrix', |
| 1055 | }, |
| 1056 | { |
| 1057 | name: 'kerning', |
| 1058 | containerTagName: 'svg', |
| 1059 | tagName: 'text', |
| 1060 | read: getSVGAttribute('kerning'), |
| 1061 | }, |
| 1062 | {name: 'keyParams', read: getAttribute('keyParams')}, |
| 1063 | { |
| 1064 | name: 'keyPoints', |
| 1065 | read: getSVGAttribute('keyPoints'), |
| 1066 | containerTagName: 'svg', |
| 1067 | tagName: 'animateMotion', |
| 1068 | }, |
| 1069 | { |
| 1070 | name: 'keySplines', |
| 1071 | read: getSVGAttribute('keySplines'), |
| 1072 | containerTagName: 'svg', |
| 1073 | tagName: 'animate', |
| 1074 | }, |
| 1075 | { |
| 1076 | name: 'keyTimes', |
| 1077 | read: getSVGAttribute('keyTimes'), |
| 1078 | containerTagName: 'svg', |
| 1079 | tagName: 'animate', |
| 1080 | }, |
| 1081 | {name: 'keyType', read: getAttribute('keyType')}, |
| 1082 | {name: 'kind', tagName: 'track', overrideStringValue: 'captions'}, |
| 1083 | {name: 'label', tagName: 'track'}, |
| 1084 | {name: 'LANG', read: getProperty('lang')}, |
| 1085 | {name: 'lang'}, |
| 1086 | {name: 'lang', containerTagName: 'document', tagName: 'html'}, |
| 1087 | {name: 'length', read: getAttribute('length')}, |
| 1088 | { |
| 1089 | name: 'lengthAdjust', |
| 1090 | read: getSVGProperty('lengthAdjust'), |
| 1091 | containerTagName: 'svg', |
| 1092 | tagName: 'text', |
| 1093 | overrideStringValue: 'spacingAndGlyphs', |
| 1094 | }, |
| 1095 | { |
| 1096 | name: 'letter-spacing', |
| 1097 | containerTagName: 'svg', |
| 1098 | tagName: 'text', |
| 1099 | read: getSVGAttribute('letter-spacing'), |
| 1100 | }, |
| 1101 | { |
| 1102 | name: 'letterSpacing', |
| 1103 | containerTagName: 'svg', |
| 1104 | tagName: 'text', |
| 1105 | read: getSVGAttribute('letter-spacing'), |
| 1106 | }, |
| 1107 | { |
| 1108 | name: 'lighting-color', |
| 1109 | containerTagName: 'svg', |
| 1110 | tagName: 'feDiffuseLighting', |
| 1111 | read: getSVGAttribute('lighting-color'), |
| 1112 | }, |
| 1113 | { |
| 1114 | name: 'lightingColor', |
| 1115 | containerTagName: 'svg', |
| 1116 | tagName: 'feDiffuseLighting', |
| 1117 | read: getSVGAttribute('lighting-color'), |
| 1118 | }, |
| 1119 | { |
| 1120 | name: 'limitingConeAngle', |
| 1121 | read: getSVGProperty('limitingConeAngle'), |
| 1122 | containerTagName: 'svg', |
| 1123 | tagName: 'feSpotLight', |
| 1124 | }, |
| 1125 | {name: 'list', read: getAttribute('list')}, // TODO: This should match the ID of a datalist element and then read property. |
| 1126 | { |
| 1127 | name: 'local', |
| 1128 | read: getSVGAttribute('local'), |
| 1129 | containerTagName: 'svg', |
| 1130 | tagName: 'color-profile', |
| 1131 | }, |
| 1132 | {name: 'loop', tagName: 'audio'}, |
| 1133 | {name: 'low', tagName: 'meter'}, |
| 1134 | {name: 'manifest', read: getAttribute('manifest')}, |
| 1135 | {name: 'marginHeight', containerTagName: 'frameset', tagName: 'frame'}, |
| 1136 | {name: 'marginWidth', containerTagName: 'frameset', tagName: 'frame'}, |
| 1137 | { |
| 1138 | name: 'marker-end', |
| 1139 | containerTagName: 'svg', |
| 1140 | tagName: 'line', |
| 1141 | read: getSVGAttribute('marker-end'), |
| 1142 | }, |
| 1143 | { |
| 1144 | name: 'marker-mid', |
| 1145 | containerTagName: 'svg', |
| 1146 | tagName: 'line', |
| 1147 | read: getSVGAttribute('marker-mid'), |
| 1148 | }, |
| 1149 | { |
| 1150 | name: 'marker-start', |
| 1151 | containerTagName: 'svg', |
| 1152 | tagName: 'line', |
| 1153 | read: getSVGAttribute('marker-start'), |
| 1154 | }, |
| 1155 | { |
| 1156 | name: 'markerEnd', |
| 1157 | containerTagName: 'svg', |
| 1158 | tagName: 'line', |
| 1159 | read: getSVGAttribute('marker-end'), |
| 1160 | }, |
| 1161 | { |
| 1162 | name: 'markerHeight', |
| 1163 | read: getSVGProperty('markerHeight'), |
| 1164 | containerTagName: 'svg', |
| 1165 | tagName: 'marker', |
| 1166 | }, |
| 1167 | { |
| 1168 | name: 'markerMid', |
| 1169 | containerTagName: 'svg', |
| 1170 | tagName: 'line', |
| 1171 | read: getSVGAttribute('marker-mid'), |
| 1172 | }, |
| 1173 | { |
| 1174 | name: 'markerStart', |
| 1175 | containerTagName: 'svg', |
| 1176 | tagName: 'line', |
| 1177 | read: getSVGAttribute('marker-start'), |
| 1178 | }, |
| 1179 | { |
| 1180 | name: 'markerUnits', |
| 1181 | read: getSVGProperty('markerUnits'), |
| 1182 | containerTagName: 'svg', |
| 1183 | tagName: 'marker', |
| 1184 | }, |
| 1185 | { |
| 1186 | name: 'markerWidth', |
| 1187 | read: getSVGProperty('markerWidth'), |
| 1188 | containerTagName: 'svg', |
| 1189 | tagName: 'marker', |
| 1190 | }, |
| 1191 | { |
| 1192 | name: 'mask', |
| 1193 | containerTagName: 'svg', |
| 1194 | tagName: 'path', |
| 1195 | read: getSVGAttribute('mask'), |
| 1196 | }, |
| 1197 | { |
| 1198 | name: 'maskContentUnits', |
| 1199 | read: getSVGProperty('maskContentUnits'), |
| 1200 | containerTagName: 'svg', |
| 1201 | tagName: 'mask', |
| 1202 | overrideStringValue: 'objectBoundingBox', |
| 1203 | }, |
| 1204 | { |
| 1205 | name: 'maskUnits', |
| 1206 | read: getSVGProperty('maskUnits'), |
| 1207 | containerTagName: 'svg', |
| 1208 | tagName: 'mask', |
| 1209 | overrideStringValue: 'userSpaceOnUse', |
| 1210 | }, |
| 1211 | { |
| 1212 | name: 'mathematical', |
| 1213 | read: getSVGAttribute('mathematical'), |
| 1214 | containerTagName: 'svg', |
| 1215 | tagName: 'font-face', |
| 1216 | }, |
| 1217 | {name: 'max', tagName: 'input'}, |
| 1218 | {name: 'max', tagName: 'meter'}, |
| 1219 | {name: 'max', tagName: 'progress'}, |
| 1220 | { |
| 1221 | name: 'max', |
| 1222 | containerTagName: 'svg', |
| 1223 | tagName: 'animate', |
| 1224 | read: getSVGAttribute('max'), |
| 1225 | }, |
| 1226 | {name: 'maxLength', tagName: 'textarea'}, |
| 1227 | {name: 'media', tagName: 'link'}, |
| 1228 | { |
| 1229 | name: 'media', |
| 1230 | containerTagName: 'svg', |
| 1231 | tagName: 'style', |
| 1232 | read: getSVGProperty('media'), |
| 1233 | }, |
| 1234 | {name: 'mediaGroup', tagName: 'video', read: getAttribute('mediagroup')}, // TODO: Not yet implemented in Chrome. |
| 1235 | {name: 'method', tagName: 'form', overrideStringValue: 'POST'}, |
| 1236 | { |
| 1237 | name: 'method', |
| 1238 | containerTagName: 'svg', |
| 1239 | tagName: 'textPath', |
| 1240 | read: getSVGProperty('method'), |
| 1241 | overrideStringValue: 'stretch', |
| 1242 | }, |
| 1243 | {name: 'min', tagName: 'input'}, |
| 1244 | {name: 'min', tagName: 'meter'}, |
| 1245 | { |
| 1246 | name: 'min', |
| 1247 | containerTagName: 'svg', |
| 1248 | tagName: 'animate', |
| 1249 | read: getSVGAttribute('min'), |
| 1250 | }, |
| 1251 | {name: 'minLength', tagName: 'input'}, |
| 1252 | { |
| 1253 | name: 'mode', |
| 1254 | read: getSVGProperty('mode'), |
| 1255 | containerTagName: 'svg', |
| 1256 | tagName: 'feBlend', |
| 1257 | overrideStringValue: 'multiply', |
| 1258 | }, |
| 1259 | {name: 'multiple', tagName: 'select'}, |
| 1260 | {name: 'muted', tagName: 'video'}, |
| 1261 | {name: 'name', tagName: 'input'}, |
| 1262 | { |
| 1263 | name: 'name', |
| 1264 | containerTagName: 'svg', |
| 1265 | tagName: 'color-profile', |
| 1266 | read: getSVGAttribute('color-profile'), |
| 1267 | }, |
| 1268 | {name: 'noModule', tagName: 'script'}, |
| 1269 | {name: 'nonce', read: getAttribute('nonce')}, |
| 1270 | {name: 'noValidate', tagName: 'form'}, |
| 1271 | { |
| 1272 | name: 'numOctaves', |
| 1273 | read: getSVGProperty('numOctaves'), |
| 1274 | containerTagName: 'svg', |
| 1275 | tagName: 'feTurbulence', |
| 1276 | }, |
| 1277 | { |
| 1278 | name: 'offset', |
| 1279 | read: getSVGProperty('offset'), |
| 1280 | containerTagName: 'svg', |
| 1281 | tagName: 'stop', |
| 1282 | }, |
| 1283 | {name: 'on-click'}, // TODO: Check for event subscriptions |
| 1284 | {name: 'on-unknownevent'}, // TODO: Check for event subscriptions |
| 1285 | {name: 'onclick'}, // TODO: Check for event subscriptions |
| 1286 | {name: 'onClick'}, // TODO: Check for event subscriptions |
| 1287 | {name: 'onunknownevent'}, // TODO: Check for event subscriptions |
| 1288 | {name: 'onUnknownEvent'}, // TODO: Check for event subscriptions |
| 1289 | { |
| 1290 | name: 'opacity', |
| 1291 | containerTagName: 'svg', |
| 1292 | tagName: 'path', |
| 1293 | read: getSVGAttribute('opacity'), |
| 1294 | }, |
| 1295 | {name: 'open', tagName: 'details'}, |
| 1296 | { |
| 1297 | name: 'operator', |
| 1298 | read: getSVGProperty('operator'), |
| 1299 | containerTagName: 'svg', |
| 1300 | tagName: 'feComposite', |
| 1301 | overrideStringValue: 'xor', |
| 1302 | }, |
| 1303 | {name: 'optimum', tagName: 'meter'}, |
| 1304 | { |
| 1305 | name: 'order', |
| 1306 | read: getSVGAttribute('order'), |
| 1307 | containerTagName: 'svg', |
| 1308 | tagName: 'feConvolveMatrix', |
| 1309 | }, |
| 1310 | { |
| 1311 | name: 'orient', |
| 1312 | read: getSVGAttribute('orient'), |
| 1313 | containerTagName: 'svg', |
| 1314 | tagName: 'marker', |
| 1315 | }, |
| 1316 | { |
| 1317 | name: 'orientation', |
| 1318 | read: getSVGAttribute('orientation'), |
| 1319 | containerTagName: 'svg', |
| 1320 | tagName: 'glyph', |
| 1321 | }, |
| 1322 | { |
| 1323 | name: 'origin', |
| 1324 | read: getSVGAttribute('origin'), |
| 1325 | containerTagName: 'svg', |
| 1326 | tagName: 'animateMotion', |
| 1327 | }, |
| 1328 | { |
| 1329 | name: 'overflow', |
| 1330 | containerTagName: 'svg', |
| 1331 | tagName: 'path', |
| 1332 | read: getSVGAttribute('overflow'), |
| 1333 | }, |
| 1334 | { |
| 1335 | name: 'overline-position', |
| 1336 | read: getSVGAttribute('overline-position'), |
| 1337 | containerTagName: 'svg', |
| 1338 | tagName: 'font-face', |
| 1339 | }, |
| 1340 | { |
| 1341 | name: 'overline-thickness', |
| 1342 | read: getSVGAttribute('overline-thickness'), |
| 1343 | containerTagName: 'svg', |
| 1344 | tagName: 'font-face', |
| 1345 | }, |
| 1346 | { |
| 1347 | name: 'overlinePosition', |
| 1348 | read: getSVGAttribute('overline-position'), |
| 1349 | containerTagName: 'svg', |
| 1350 | tagName: 'font-face', |
| 1351 | }, |
| 1352 | { |
| 1353 | name: 'overlineThickness', |
| 1354 | read: getSVGAttribute('overline-thickness'), |
| 1355 | containerTagName: 'svg', |
| 1356 | tagName: 'font-face', |
| 1357 | }, |
| 1358 | { |
| 1359 | name: 'paint-order', |
| 1360 | containerTagName: 'svg', |
| 1361 | tagName: 'path', |
| 1362 | read: getSVGAttribute('paint-order'), |
| 1363 | }, |
| 1364 | { |
| 1365 | name: 'paintOrder', |
| 1366 | containerTagName: 'svg', |
| 1367 | tagName: 'path', |
| 1368 | read: getSVGAttribute('paint-order'), |
| 1369 | }, |
| 1370 | { |
| 1371 | name: 'panose-1', |
| 1372 | read: getSVGAttribute('panose-1'), |
| 1373 | containerTagName: 'svg', |
| 1374 | tagName: 'font-face', |
| 1375 | }, |
| 1376 | { |
| 1377 | name: 'panose1', |
| 1378 | containerTagName: 'svg', |
| 1379 | tagName: 'font-face', |
| 1380 | read: getSVGAttribute('panose-1'), |
| 1381 | }, |
| 1382 | { |
| 1383 | name: 'pathLength', |
| 1384 | read: getSVGProperty('pathLength'), |
| 1385 | containerTagName: 'svg', |
| 1386 | tagName: 'path', |
| 1387 | }, |
| 1388 | {name: 'pattern', tagName: 'input'}, |
| 1389 | { |
| 1390 | name: 'patternContentUnits', |
| 1391 | read: getSVGProperty('patternContentUnits'), |
| 1392 | containerTagName: 'svg', |
| 1393 | tagName: 'pattern', |
| 1394 | overrideStringValue: 'objectBoundingBox', |
| 1395 | }, |
| 1396 | { |
| 1397 | name: 'patternTransform', |
| 1398 | read: getSVGProperty('patternTransform'), |
| 1399 | containerTagName: 'svg', |
| 1400 | tagName: 'pattern', |
| 1401 | overrideStringValue: |
| 1402 | 'translate(-10,-20) scale(2) rotate(45) translate(5,10)', |
| 1403 | }, |
| 1404 | { |
| 1405 | name: 'patternUnits', |
| 1406 | read: getSVGProperty('patternUnits'), |
| 1407 | containerTagName: 'svg', |
| 1408 | tagName: 'pattern', |
| 1409 | overrideStringValue: 'userSpaceOnUse', |
| 1410 | }, |
| 1411 | {name: 'placeholder', tagName: 'input'}, |
| 1412 | {name: 'playsInline', read: getAttribute('playsinline')}, |
| 1413 | { |
| 1414 | name: 'pointer-events', |
| 1415 | containerTagName: 'svg', |
| 1416 | tagName: 'path', |
| 1417 | read: getSVGAttribute('pointer-events'), |
| 1418 | }, |
| 1419 | { |
| 1420 | name: 'pointerEvents', |
| 1421 | containerTagName: 'svg', |
| 1422 | tagName: 'path', |
| 1423 | read: getSVGAttribute('pointer-events'), |
| 1424 | }, |
| 1425 | { |
| 1426 | name: 'points', |
| 1427 | read: getSVGProperty('points'), |
| 1428 | containerTagName: 'svg', |
| 1429 | tagName: 'polygon', |
| 1430 | overrideStringValue: '350,75 379,161 469,161', |
| 1431 | }, |
| 1432 | { |
| 1433 | name: 'pointsAtX', |
| 1434 | read: getSVGProperty('pointsAtX'), |
| 1435 | containerTagName: 'svg', |
| 1436 | tagName: 'feSpotLight', |
| 1437 | }, |
| 1438 | { |
| 1439 | name: 'pointsAtY', |
| 1440 | read: getSVGProperty('pointsAtY'), |
| 1441 | containerTagName: 'svg', |
| 1442 | tagName: 'feSpotLight', |
| 1443 | }, |
| 1444 | { |
| 1445 | name: 'pointsAtZ', |
| 1446 | read: getSVGProperty('pointsAtZ'), |
| 1447 | containerTagName: 'svg', |
| 1448 | tagName: 'feSpotLight', |
| 1449 | }, |
| 1450 | {name: 'popover', overrideStringValue: 'manual'}, |
| 1451 | { |
| 1452 | name: 'popoverTarget', |
| 1453 | read: element => { |
| 1454 | document.body.appendChild(element); |
| 1455 | try { |
| 1456 | // trigger and target need to be connected for `popoverTargetElement` to read the actual value. |
| 1457 | return element.popoverTargetElement; |
| 1458 | } finally { |
| 1459 | document.body.removeChild(element); |
| 1460 | } |
| 1461 | }, |
| 1462 | overrideStringValue: 'popover-target', |
| 1463 | tagName: 'button', |
| 1464 | }, |
| 1465 | {name: 'popoverTargetAction', overrideStringValue: 'show', tagName: 'button'}, |
| 1466 | { |
| 1467 | name: 'poster', |
| 1468 | tagName: 'video', |
| 1469 | overrideStringValue: 'https://reactjs.com', |
| 1470 | }, |
| 1471 | {name: 'prefix', read: getAttribute('prefix')}, |
| 1472 | {name: 'preload', tagName: 'video', overrideStringValue: 'none'}, |
| 1473 | { |
| 1474 | name: 'preserveAlpha', |
| 1475 | read: getSVGProperty('preserveAlpha'), |
| 1476 | containerTagName: 'svg', |
| 1477 | tagName: 'feConvolveMatrix', |
| 1478 | }, |
| 1479 | { |
| 1480 | name: 'preserveAspectRatio', |
| 1481 | read: getSVGProperty('preserveAspectRatio'), |
| 1482 | containerTagName: 'svg', |
| 1483 | tagName: 'feImage', |
| 1484 | overrideStringValue: 'xMinYMin slice', |
| 1485 | }, |
| 1486 | { |
| 1487 | name: 'primitiveUnits', |
| 1488 | read: getSVGProperty('primitiveUnits'), |
| 1489 | containerTagName: 'svg', |
| 1490 | tagName: 'filter', |
| 1491 | overrideStringValue: 'objectBoundingBox', |
| 1492 | }, |
| 1493 | {name: 'profile', read: getAttribute('profile')}, |
| 1494 | {name: 'property', read: getAttribute('property')}, |
| 1495 | {name: 'props', read: getAttribute('props')}, |
| 1496 | { |
| 1497 | name: 'r', |
| 1498 | read: getSVGProperty('r'), |
| 1499 | containerTagName: 'svg', |
| 1500 | tagName: 'circle', |
| 1501 | overrideStringValue: '10pt', |
| 1502 | }, |
| 1503 | {name: 'radioGroup', tagName: 'command', read: getAttribute('radiogroup')}, |
| 1504 | { |
| 1505 | name: 'radius', |
| 1506 | read: getSVGAttribute('radius'), |
| 1507 | containerTagName: 'svg', |
| 1508 | tagName: 'feMorphology', |
| 1509 | }, |
| 1510 | {name: 'readOnly', tagName: 'input'}, |
| 1511 | {name: 'referrerPolicy', tagName: 'iframe'}, |
| 1512 | { |
| 1513 | name: 'refX', |
| 1514 | read: getSVGProperty('refX'), |
| 1515 | containerTagName: 'svg', |
| 1516 | tagName: 'marker', |
| 1517 | overrideStringValue: '5em', |
| 1518 | }, |
| 1519 | { |
| 1520 | name: 'refY', |
| 1521 | read: getSVGProperty('refY'), |
| 1522 | containerTagName: 'svg', |
| 1523 | tagName: 'marker', |
| 1524 | overrideStringValue: '6em', |
| 1525 | }, |
| 1526 | {name: 'rel', tagName: 'a'}, |
| 1527 | { |
| 1528 | name: 'rendering-intent', |
| 1529 | read: getSVGAttribute('rendering-intent'), |
| 1530 | containerTagName: 'svg', |
| 1531 | tagName: 'color-profile', |
| 1532 | }, |
| 1533 | { |
| 1534 | name: 'renderingIntent', |
| 1535 | read: getSVGAttribute('rendering-intent'), |
| 1536 | containerTagName: 'svg', |
| 1537 | tagName: 'color-profile', |
| 1538 | }, |
| 1539 | { |
| 1540 | name: 'repeatCount', |
| 1541 | read: getSVGAttribute('repeatcount'), |
| 1542 | containerTagName: 'svg', |
| 1543 | tagName: 'animate', |
| 1544 | }, |
| 1545 | { |
| 1546 | name: 'repeatDur', |
| 1547 | read: getSVGAttribute('repeatdur'), |
| 1548 | containerTagName: 'svg', |
| 1549 | tagName: 'animate', |
| 1550 | }, |
| 1551 | {name: 'required', tagName: 'input'}, |
| 1552 | { |
| 1553 | name: 'requiredExtensions', |
| 1554 | read: getSVGProperty('requiredExtensions'), |
| 1555 | containerTagName: 'svg', |
| 1556 | tagName: 'a', |
| 1557 | }, |
| 1558 | { |
| 1559 | name: 'requiredFeatures', |
| 1560 | read: getSVGAttribute('requiredFeatures'), |
| 1561 | containerTagName: 'svg', |
| 1562 | tagName: 'a', |
| 1563 | }, |
| 1564 | {name: 'resource', read: getAttribute('resource')}, |
| 1565 | { |
| 1566 | name: 'restart', |
| 1567 | read: getSVGAttribute('resource'), |
| 1568 | containerTagName: 'svg', |
| 1569 | tagName: 'animate', |
| 1570 | }, |
| 1571 | { |
| 1572 | name: 'result', |
| 1573 | read: getSVGProperty('result'), |
| 1574 | containerTagName: 'svg', |
| 1575 | tagName: 'feBlend', |
| 1576 | }, |
| 1577 | {name: 'results', tagName: 'input', read: getAttribute('results')}, // TODO: Should use property but it's not supported in Chrome. |
| 1578 | {name: 'reversed', tagName: 'ol'}, |
| 1579 | {name: 'role', read: getAttribute('role')}, |
| 1580 | { |
| 1581 | name: 'rotate', |
| 1582 | read: getSVGAttribute('role'), |
| 1583 | containerTagName: 'svg', |
| 1584 | tagName: 'altGlyph', |
| 1585 | }, |
| 1586 | {name: 'rows', tagName: 'textarea'}, |
| 1587 | {name: 'rowSpan', containerTagName: 'tr', tagName: 'td'}, |
| 1588 | { |
| 1589 | name: 'rx', |
| 1590 | read: getSVGProperty('rx'), |
| 1591 | containerTagName: 'svg', |
| 1592 | tagName: 'ellipse', |
| 1593 | overrideStringValue: '1px', |
| 1594 | }, |
| 1595 | { |
| 1596 | name: 'ry', |
| 1597 | read: getSVGProperty('ry'), |
| 1598 | containerTagName: 'svg', |
| 1599 | tagName: 'ellipse', |
| 1600 | overrideStringValue: '2px', |
| 1601 | }, |
| 1602 | { |
| 1603 | name: 'sandbox', |
| 1604 | tagName: 'iframe', |
| 1605 | overrideStringValue: 'allow-forms allow-scripts', |
| 1606 | }, |
| 1607 | { |
| 1608 | name: 'scale', |
| 1609 | read: getSVGProperty('scale'), |
| 1610 | containerTagName: 'svg', |
| 1611 | tagName: 'feDisplacementMap', |
| 1612 | }, |
| 1613 | { |
| 1614 | name: 'scope', |
| 1615 | containerTagName: 'tr', |
| 1616 | tagName: 'th', |
| 1617 | overrideStringValue: 'row', |
| 1618 | }, |
| 1619 | {name: 'scoped', tagName: 'style', read: getAttribute('scoped')}, |
| 1620 | {name: 'scrolling', tagName: 'iframe', overrideStringValue: 'no'}, |
| 1621 | {name: 'seamless', tagName: 'iframe', read: getAttribute('seamless')}, |
| 1622 | {name: 'security', tagName: 'iframe', read: getAttribute('security')}, |
| 1623 | { |
| 1624 | name: 'seed', |
| 1625 | read: getSVGProperty('seed'), |
| 1626 | containerTagName: 'svg', |
| 1627 | tagName: 'feTurbulence', |
| 1628 | }, |
| 1629 | {name: 'selected', tagName: 'option', containerTagName: 'select'}, |
| 1630 | {name: 'selectedIndex', tagName: 'select'}, |
| 1631 | {name: 'shape', tagName: 'a'}, |
| 1632 | { |
| 1633 | name: 'shape-rendering', |
| 1634 | tagName: 'svg', |
| 1635 | read: getSVGAttribute('shape-rendering'), |
| 1636 | }, |
| 1637 | { |
| 1638 | name: 'shapeRendering', |
| 1639 | tagName: 'svg', |
| 1640 | read: getSVGAttribute('shape-rendering'), |
| 1641 | }, |
| 1642 | {name: 'size', tagName: 'input'}, |
| 1643 | {name: 'sizes', tagName: 'link'}, |
| 1644 | { |
| 1645 | name: 'slope', |
| 1646 | read: getSVGAttribute('slope'), |
| 1647 | containerTagName: 'svg', |
| 1648 | tagName: 'font-face', |
| 1649 | }, |
| 1650 | { |
| 1651 | name: 'spacing', |
| 1652 | read: getSVGProperty('spacing'), |
| 1653 | containerTagName: 'svg', |
| 1654 | tagName: 'textPath', |
| 1655 | overrideStringValue: 'auto', |
| 1656 | }, |
| 1657 | {name: 'span', containerTagName: 'colgroup', tagName: 'col'}, |
| 1658 | { |
| 1659 | name: 'specularConstant', |
| 1660 | read: getSVGProperty('specularConstant'), |
| 1661 | containerTagName: 'svg', |
| 1662 | tagName: 'feSpecularLighting', |
| 1663 | }, |
| 1664 | { |
| 1665 | name: 'specularExponent', |
| 1666 | read: getSVGProperty('specularConstant'), |
| 1667 | containerTagName: 'svg', |
| 1668 | tagName: 'feSpecularLighting', |
| 1669 | }, |
| 1670 | {name: 'speed', read: getAttribute('speed')}, |
| 1671 | { |
| 1672 | name: 'spellCheck', |
| 1673 | overrideStringValue: 'false', |
| 1674 | tagName: 'input', |
| 1675 | read: getProperty('spellcheck'), |
| 1676 | }, |
| 1677 | { |
| 1678 | name: 'spellcheck', |
| 1679 | overrideStringValue: 'false', |
| 1680 | tagName: 'input', |
| 1681 | read: getProperty('spellcheck'), |
| 1682 | }, |
| 1683 | { |
| 1684 | name: 'spreadMethod', |
| 1685 | read: getSVGProperty('spreadMethod'), |
| 1686 | containerTagName: 'svg', |
| 1687 | tagName: 'linearGradient', |
| 1688 | overrideStringValue: 'reflect', |
| 1689 | }, |
| 1690 | {name: 'src', tagName: 'img', overrideStringValue: 'https://reactjs.com'}, |
| 1691 | { |
| 1692 | name: 'srcDoc', |
| 1693 | tagName: 'iframe', |
| 1694 | overrideStringValue: '<p>Hi</p>', |
| 1695 | read: getProperty('srcdoc'), |
| 1696 | }, |
| 1697 | { |
| 1698 | name: 'srcdoc', |
| 1699 | tagName: 'iframe', |
| 1700 | overrideStringValue: '<p>Hi</p>', |
| 1701 | read: getProperty('srcdoc'), |
| 1702 | }, |
| 1703 | { |
| 1704 | name: 'srcLang', |
| 1705 | containerTagName: 'audio', |
| 1706 | tagName: 'track', |
| 1707 | overrideStringValue: 'en', |
| 1708 | read: getProperty('srclang'), |
| 1709 | }, |
| 1710 | { |
| 1711 | name: 'srclang', |
| 1712 | containerTagName: 'audio', |
| 1713 | tagName: 'track', |
| 1714 | overrideStringValue: 'en', |
| 1715 | read: getProperty('srclang'), |
| 1716 | }, |
| 1717 | {name: 'srcSet', tagName: 'img'}, |
| 1718 | {name: 'srcset', tagName: 'img'}, |
| 1719 | {name: 'start', tagName: 'ol'}, |
| 1720 | { |
| 1721 | name: 'startOffset', |
| 1722 | read: getSVGProperty('startOffset'), |
| 1723 | containerTagName: 'svg', |
| 1724 | tagName: 'textPath', |
| 1725 | }, |
| 1726 | {name: 'state', read: getAttribute('state')}, |
| 1727 | { |
| 1728 | name: 'stdDeviation', |
| 1729 | read: getSVGAttribute('stdDeviation'), |
| 1730 | containerTagName: 'svg', |
| 1731 | tagName: 'feGaussianBlur', |
| 1732 | }, |
| 1733 | { |
| 1734 | name: 'stemh', |
| 1735 | read: getSVGAttribute('stemh'), |
| 1736 | containerTagName: 'svg', |
| 1737 | tagName: 'font-face', |
| 1738 | }, |
| 1739 | { |
| 1740 | name: 'stemv', |
| 1741 | read: getSVGAttribute('stemv'), |
| 1742 | containerTagName: 'svg', |
| 1743 | tagName: 'font-face', |
| 1744 | }, |
| 1745 | {name: 'step', read: getAttribute('step')}, |
| 1746 | { |
| 1747 | name: 'stitchTiles', |
| 1748 | read: getSVGProperty('stitchTiles'), |
| 1749 | containerTagName: 'svg', |
| 1750 | tagName: 'feTurbulence', |
| 1751 | overrideStringValue: 'stitch', |
| 1752 | }, |
| 1753 | { |
| 1754 | name: 'stop-color', |
| 1755 | containerTagName: 'svg', |
| 1756 | tagName: 'stop', |
| 1757 | read: getSVGAttribute('stop-color'), |
| 1758 | }, |
| 1759 | { |
| 1760 | name: 'stop-opacity', |
| 1761 | containerTagName: 'svg', |
| 1762 | tagName: 'stop', |
| 1763 | read: getSVGAttribute('stop-opacity'), |
| 1764 | }, |
| 1765 | { |
| 1766 | name: 'stopColor', |
| 1767 | containerTagName: 'svg', |
| 1768 | tagName: 'stop', |
| 1769 | read: getSVGAttribute('stop-color'), |
| 1770 | }, |
| 1771 | { |
| 1772 | name: 'stopOpacity', |
| 1773 | containerTagName: 'svg', |
| 1774 | tagName: 'stop', |
| 1775 | read: getSVGAttribute('stop-opacity'), |
| 1776 | }, |
| 1777 | { |
| 1778 | name: 'strikethrough-position', |
| 1779 | read: getSVGAttribute('strikethrough-position'), |
| 1780 | containerTagName: 'svg', |
| 1781 | tagName: 'font-face', |
| 1782 | }, |
| 1783 | { |
| 1784 | name: 'strikethrough-thickness', |
| 1785 | read: getSVGAttribute('strikethrough-thickness'), |
| 1786 | containerTagName: 'svg', |
| 1787 | tagName: 'font-face', |
| 1788 | }, |
| 1789 | { |
| 1790 | name: 'strikethroughPosition', |
| 1791 | read: getSVGAttribute('strikethrough-position'), |
| 1792 | containerTagName: 'svg', |
| 1793 | tagName: 'font-face', |
| 1794 | }, |
| 1795 | { |
| 1796 | name: 'strikethroughThickness', |
| 1797 | read: getSVGAttribute('strikethrough-thickness'), |
| 1798 | containerTagName: 'svg', |
| 1799 | tagName: 'font-face', |
| 1800 | }, |
| 1801 | { |
| 1802 | name: 'string', |
| 1803 | read: getSVGAttribute('string'), |
| 1804 | containerTagName: 'svg', |
| 1805 | tagName: 'font-face-format', |
| 1806 | }, |
| 1807 | { |
| 1808 | name: 'stroke', |
| 1809 | containerTagName: 'svg', |
| 1810 | tagName: 'path', |
| 1811 | read: getSVGAttribute('stroke'), |
| 1812 | }, |
| 1813 | { |
| 1814 | name: 'stroke-dasharray', |
| 1815 | containerTagName: 'svg', |
| 1816 | tagName: 'path', |
| 1817 | read: getSVGAttribute('stroke-dasharray'), |
| 1818 | }, |
| 1819 | { |
| 1820 | name: 'stroke-Dasharray', |
| 1821 | containerTagName: 'svg', |
| 1822 | tagName: 'path', |
| 1823 | read: getSVGAttribute('stroke-dasharray'), |
| 1824 | }, |
| 1825 | { |
| 1826 | name: 'stroke-dashoffset', |
| 1827 | containerTagName: 'svg', |
| 1828 | tagName: 'path', |
| 1829 | read: getSVGAttribute('stroke-dashoffset'), |
| 1830 | }, |
| 1831 | { |
| 1832 | name: 'stroke-linecap', |
| 1833 | containerTagName: 'svg', |
| 1834 | tagName: 'path', |
| 1835 | read: getSVGAttribute('stroke-linecap'), |
| 1836 | }, |
| 1837 | { |
| 1838 | name: 'stroke-linejoin', |
| 1839 | containerTagName: 'svg', |
| 1840 | tagName: 'path', |
| 1841 | read: getSVGAttribute('stroke-linejoin'), |
| 1842 | }, |
| 1843 | { |
| 1844 | name: 'stroke-miterlimit', |
| 1845 | containerTagName: 'svg', |
| 1846 | tagName: 'path', |
| 1847 | read: getSVGAttribute('stroke-miterlimit'), |
| 1848 | }, |
| 1849 | { |
| 1850 | name: 'stroke-opacity', |
| 1851 | containerTagName: 'svg', |
| 1852 | tagName: 'path', |
| 1853 | read: getSVGAttribute('stroke-opacity'), |
| 1854 | }, |
| 1855 | { |
| 1856 | name: 'stroke-width', |
| 1857 | containerTagName: 'svg', |
| 1858 | tagName: 'path', |
| 1859 | read: getSVGAttribute('stroke-width'), |
| 1860 | }, |
| 1861 | { |
| 1862 | name: 'strokeDasharray', |
| 1863 | containerTagName: 'svg', |
| 1864 | tagName: 'path', |
| 1865 | read: getSVGAttribute('stroke-dasharray'), |
| 1866 | }, |
| 1867 | { |
| 1868 | name: 'strokeDashoffset', |
| 1869 | containerTagName: 'svg', |
| 1870 | tagName: 'path', |
| 1871 | read: getSVGAttribute('stroke-dashoffset'), |
| 1872 | }, |
| 1873 | { |
| 1874 | name: 'strokeLinecap', |
| 1875 | containerTagName: 'svg', |
| 1876 | tagName: 'path', |
| 1877 | read: getSVGAttribute('stroke-linecap'), |
| 1878 | }, |
| 1879 | { |
| 1880 | name: 'strokeLinejoin', |
| 1881 | containerTagName: 'svg', |
| 1882 | tagName: 'path', |
| 1883 | read: getSVGAttribute('stroke-linejoin'), |
| 1884 | }, |
| 1885 | { |
| 1886 | name: 'strokeMiterlimit', |
| 1887 | containerTagName: 'svg', |
| 1888 | tagName: 'path', |
| 1889 | read: getSVGAttribute('stroke-miterlimit'), |
| 1890 | }, |
| 1891 | { |
| 1892 | name: 'strokeOpacity', |
| 1893 | containerTagName: 'svg', |
| 1894 | tagName: 'path', |
| 1895 | read: getSVGAttribute('stroke-opacity'), |
| 1896 | }, |
| 1897 | { |
| 1898 | name: 'strokeWidth', |
| 1899 | containerTagName: 'svg', |
| 1900 | tagName: 'path', |
| 1901 | read: getSVGAttribute('stroke-width'), |
| 1902 | }, |
| 1903 | {name: 'style'}, |
| 1904 | {name: 'summary', tagName: 'table'}, |
| 1905 | { |
| 1906 | name: 'suppressContentEditableWarning', |
| 1907 | read: getAttribute('suppresscontenteditablewarning'), |
| 1908 | }, |
| 1909 | { |
| 1910 | name: 'surfaceScale', |
| 1911 | read: getSVGProperty('surfaceScale'), |
| 1912 | containerTagName: 'svg', |
| 1913 | tagName: 'feDiffuseLighting', |
| 1914 | }, |
| 1915 | { |
| 1916 | name: 'systemLanguage', |
| 1917 | overrideStringValue: 'en', |
| 1918 | read: getSVGProperty('systemLanguage'), |
| 1919 | containerTagName: 'svg', |
| 1920 | tagName: 'a', |
| 1921 | }, |
| 1922 | {name: 'tabIndex'}, |
| 1923 | { |
| 1924 | name: 'tabIndex', |
| 1925 | read: getSVGProperty('tabIndex'), |
| 1926 | tagName: 'svg', |
| 1927 | }, |
| 1928 | { |
| 1929 | name: 'tableValues', |
| 1930 | read: getSVGProperty('tableValues'), |
| 1931 | containerTagName: 'svg', |
| 1932 | tagName: 'feFuncA', |
| 1933 | overrideStringValue: '0 1 2 3', |
| 1934 | }, |
| 1935 | { |
| 1936 | name: 'target', |
| 1937 | read: getSVGProperty('target'), |
| 1938 | containerTagName: 'svg', |
| 1939 | tagName: 'a', |
| 1940 | }, |
| 1941 | { |
| 1942 | name: 'targetX', |
| 1943 | read: getSVGProperty('targetX'), |
| 1944 | containerTagName: 'svg', |
| 1945 | tagName: 'feConvolveMatrix', |
| 1946 | }, |
| 1947 | { |
| 1948 | name: 'targetY', |
| 1949 | read: getSVGProperty('targetY'), |
| 1950 | containerTagName: 'svg', |
| 1951 | tagName: 'feConvolveMatrix', |
| 1952 | }, |
| 1953 | { |
| 1954 | name: 'text-anchor', |
| 1955 | containerTagName: 'svg', |
| 1956 | tagName: 'text', |
| 1957 | read: getSVGAttribute('text-anchor'), |
| 1958 | }, |
| 1959 | { |
| 1960 | name: 'text-decoration', |
| 1961 | containerTagName: 'svg', |
| 1962 | tagName: 'text', |
| 1963 | read: getSVGAttribute('text-decoration'), |
| 1964 | }, |
| 1965 | { |
| 1966 | name: 'text-rendering', |
| 1967 | tagName: 'svg', |
| 1968 | read: getSVGAttribute('text-rendering'), |
| 1969 | }, |
| 1970 | { |
| 1971 | name: 'textAnchor', |
| 1972 | containerTagName: 'svg', |
| 1973 | tagName: 'text', |
| 1974 | read: getSVGAttribute('text-anchor'), |
| 1975 | }, |
| 1976 | { |
| 1977 | name: 'textDecoration', |
| 1978 | containerTagName: 'svg', |
| 1979 | tagName: 'text', |
| 1980 | read: getSVGAttribute('text-decoration'), |
| 1981 | }, |
| 1982 | { |
| 1983 | name: 'textLength', |
| 1984 | read: getSVGProperty('textLength'), |
| 1985 | containerTagName: 'svg', |
| 1986 | tagName: 'text', |
| 1987 | }, |
| 1988 | { |
| 1989 | name: 'textRendering', |
| 1990 | tagName: 'svg', |
| 1991 | read: getSVGAttribute('text-rendering'), |
| 1992 | }, |
| 1993 | {name: 'title'}, |
| 1994 | { |
| 1995 | name: 'to', |
| 1996 | read: getSVGAttribute('to'), |
| 1997 | containerTagName: 'svg', |
| 1998 | tagName: 'set', |
| 1999 | }, |
| 2000 | { |
| 2001 | name: 'transform', |
| 2002 | read: getSVGProperty('transform'), |
| 2003 | containerTagName: 'svg', |
| 2004 | tagName: 'a', |
| 2005 | overrideStringValue: |
| 2006 | 'translate(-10,-20) scale(2) rotate(45) translate(5,10)', |
| 2007 | }, |
| 2008 | { |
| 2009 | name: 'transform-origin', |
| 2010 | tagName: 'svg', |
| 2011 | read: getSVGAttribute('transform-origin'), |
| 2012 | }, |
| 2013 | { |
| 2014 | name: 'transformOrigin', |
| 2015 | tagName: 'svg', |
| 2016 | read: getSVGAttribute('transform-origin'), |
| 2017 | }, |
| 2018 | {name: 'type', tagName: 'button', overrideStringValue: 'reset'}, |
| 2019 | { |
| 2020 | name: 'type', |
| 2021 | containerTagName: 'svg', |
| 2022 | tagName: 'feFuncA', |
| 2023 | read: getSVGProperty('type'), |
| 2024 | overrideStringValue: 'discrete', |
| 2025 | }, |
| 2026 | {name: 'typeof', read: getAttribute('typeof')}, |
| 2027 | { |
| 2028 | name: 'u1', |
| 2029 | read: getSVGAttribute('u1'), |
| 2030 | containerTagName: 'svg', |
| 2031 | tagName: 'hkern', |
| 2032 | }, |
| 2033 | { |
| 2034 | name: 'u2', |
| 2035 | read: getSVGAttribute('u2'), |
| 2036 | containerTagName: 'svg', |
| 2037 | tagName: 'hkern', |
| 2038 | }, |
| 2039 | { |
| 2040 | name: 'underline-position', |
| 2041 | read: getSVGAttribute('underline-position'), |
| 2042 | containerTagName: 'svg', |
| 2043 | tagName: 'font-face', |
| 2044 | }, |
| 2045 | { |
| 2046 | name: 'underline-thickness', |
| 2047 | read: getSVGAttribute('underline-thickness'), |
| 2048 | containerTagName: 'svg', |
| 2049 | tagName: 'font-face', |
| 2050 | }, |
| 2051 | { |
| 2052 | name: 'underlinePosition', |
| 2053 | read: getSVGAttribute('underline-position'), |
| 2054 | containerTagName: 'svg', |
| 2055 | tagName: 'font-face', |
| 2056 | }, |
| 2057 | { |
| 2058 | name: 'underlineThickness', |
| 2059 | read: getSVGAttribute('underline-thickness'), |
| 2060 | containerTagName: 'svg', |
| 2061 | tagName: 'font-face', |
| 2062 | }, |
| 2063 | { |
| 2064 | name: 'unicode', |
| 2065 | read: getSVGAttribute('unicode'), |
| 2066 | containerTagName: 'svg', |
| 2067 | tagName: 'glyph', |
| 2068 | }, |
| 2069 | { |
| 2070 | name: 'unicode-bidi', |
| 2071 | containerTagName: 'svg', |
| 2072 | tagName: 'text', |
| 2073 | read: getSVGAttribute('unicode-bidi'), |
| 2074 | }, |
| 2075 | { |
| 2076 | name: 'unicode-range', |
| 2077 | read: getSVGAttribute('unicode-range'), |
| 2078 | containerTagName: 'svg', |
| 2079 | tagName: 'font-face', |
| 2080 | }, |
| 2081 | { |
| 2082 | name: 'unicodeBidi', |
| 2083 | containerTagName: 'svg', |
| 2084 | tagName: 'text', |
| 2085 | read: getSVGAttribute('unicode-bidi'), |
| 2086 | }, |
| 2087 | { |
| 2088 | name: 'unicodeRange', |
| 2089 | read: getSVGAttribute('unicode-range'), |
| 2090 | containerTagName: 'svg', |
| 2091 | tagName: 'font-face', |
| 2092 | }, |
| 2093 | { |
| 2094 | name: 'units-per-em', |
| 2095 | read: getSVGAttribute('units-per-em'), |
| 2096 | containerTagName: 'svg', |
| 2097 | tagName: 'font-face', |
| 2098 | }, |
| 2099 | { |
| 2100 | name: 'unitsPerEm', |
| 2101 | read: getSVGAttribute('unites-per-em'), |
| 2102 | containerTagName: 'svg', |
| 2103 | tagName: 'font-face', |
| 2104 | }, |
| 2105 | {name: 'unknown', read: getAttribute('unknown')}, |
| 2106 | { |
| 2107 | name: 'unselectable', |
| 2108 | read: getAttribute('unselectable'), |
| 2109 | tagName: 'span', |
| 2110 | overrideStringValue: 'on', |
| 2111 | }, |
| 2112 | {name: 'useMap', tagName: 'img'}, |
| 2113 | { |
| 2114 | name: 'v-alphabetic', |
| 2115 | read: getSVGAttribute('v-alphabetic'), |
| 2116 | containerTagName: 'svg', |
| 2117 | tagName: 'font-face', |
| 2118 | }, |
| 2119 | { |
| 2120 | name: 'v-hanging', |
| 2121 | read: getSVGAttribute('v-hanging'), |
| 2122 | containerTagName: 'svg', |
| 2123 | tagName: 'font-face', |
| 2124 | }, |
| 2125 | { |
| 2126 | name: 'v-ideographic', |
| 2127 | read: getSVGAttribute('v-ideographic'), |
| 2128 | containerTagName: 'svg', |
| 2129 | tagName: 'font-face', |
| 2130 | }, |
| 2131 | { |
| 2132 | name: 'v-mathematical', |
| 2133 | read: getSVGAttribute('v-mathematical'), |
| 2134 | containerTagName: 'svg', |
| 2135 | tagName: 'font-face', |
| 2136 | }, |
| 2137 | { |
| 2138 | name: 'vAlphabetic', |
| 2139 | read: getSVGAttribute('v-alphabetic'), |
| 2140 | containerTagName: 'svg', |
| 2141 | tagName: 'font-face', |
| 2142 | }, |
| 2143 | {name: 'value', tagName: 'input', extraProps: {onChange() {}}}, |
| 2144 | {name: 'value', tagName: 'input', type: 'email', extraProps: {onChange() {}}}, |
| 2145 | { |
| 2146 | name: 'value', |
| 2147 | tagName: 'input', |
| 2148 | type: 'number', |
| 2149 | extraProps: {onChange() {}}, |
| 2150 | }, |
| 2151 | {name: 'value', tagName: 'textarea', extraProps: {onChange() {}}}, |
| 2152 | { |
| 2153 | name: 'value', |
| 2154 | containerTagName: 'select', |
| 2155 | tagName: 'option', |
| 2156 | extraProps: {onChange() {}}, |
| 2157 | }, |
| 2158 | { |
| 2159 | name: 'Value', |
| 2160 | containerTagName: 'select', |
| 2161 | tagName: 'option', |
| 2162 | read: getProperty('value'), |
| 2163 | }, |
| 2164 | { |
| 2165 | name: 'values', |
| 2166 | read: getSVGProperty('values'), |
| 2167 | containerTagName: 'svg', |
| 2168 | tagName: 'feColorMatrix', |
| 2169 | overrideStringValue: '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0', |
| 2170 | }, |
| 2171 | { |
| 2172 | name: 'vector-effect', |
| 2173 | containerTagName: 'svg', |
| 2174 | tagName: 'line', |
| 2175 | read: getSVGAttribute('vector-effect'), |
| 2176 | }, |
| 2177 | { |
| 2178 | name: 'vectorEffect', |
| 2179 | containerTagName: 'svg', |
| 2180 | tagName: 'line', |
| 2181 | read: getSVGAttribute('vector-effect'), |
| 2182 | }, |
| 2183 | {name: 'version', containerTagName: 'document', tagName: 'html'}, |
| 2184 | {name: 'version', tagName: 'svg', read: getSVGAttribute('version')}, |
| 2185 | { |
| 2186 | name: 'vert-adv-y', |
| 2187 | read: getSVGAttribute('vert-origin-y'), |
| 2188 | containerTagName: 'svg', |
| 2189 | tagName: 'font', |
| 2190 | }, |
| 2191 | { |
| 2192 | name: 'vert-origin-x', |
| 2193 | read: getSVGAttribute('vert-origin-y'), |
| 2194 | containerTagName: 'svg', |
| 2195 | tagName: 'font', |
| 2196 | }, |
| 2197 | { |
| 2198 | name: 'vert-origin-y', |
| 2199 | read: getSVGAttribute('vert-origin-y'), |
| 2200 | containerTagName: 'svg', |
| 2201 | tagName: 'font', |
| 2202 | }, |
| 2203 | { |
| 2204 | name: 'vertAdvY', |
| 2205 | read: getSVGAttribute('vert-adv-y'), |
| 2206 | containerTagName: 'svg', |
| 2207 | tagName: 'font', |
| 2208 | }, |
| 2209 | { |
| 2210 | name: 'vertOriginX', |
| 2211 | read: getSVGAttribute('vert-origin-x'), |
| 2212 | containerTagName: 'svg', |
| 2213 | tagName: 'font', |
| 2214 | }, |
| 2215 | { |
| 2216 | name: 'vertOriginY', |
| 2217 | read: getSVGAttribute('vert-origin-y'), |
| 2218 | containerTagName: 'svg', |
| 2219 | tagName: 'font', |
| 2220 | }, |
| 2221 | { |
| 2222 | name: 'vHanging', |
| 2223 | read: getSVGAttribute('v-hanging'), |
| 2224 | containerTagName: 'svg', |
| 2225 | tagName: 'font-face', |
| 2226 | }, |
| 2227 | { |
| 2228 | name: 'vIdeographic', |
| 2229 | read: getSVGAttribute('v-ideographic'), |
| 2230 | containerTagName: 'svg', |
| 2231 | tagName: 'font-face', |
| 2232 | }, |
| 2233 | { |
| 2234 | name: 'viewBox', |
| 2235 | read: getSVGProperty('viewBox'), |
| 2236 | containerTagName: 'svg', |
| 2237 | tagName: 'marker', |
| 2238 | overrideStringValue: '0 0 1500 1000', |
| 2239 | }, |
| 2240 | { |
| 2241 | name: 'viewTarget', |
| 2242 | read: getSVGAttribute('viewTarget'), |
| 2243 | containerTagName: 'svg', |
| 2244 | tagName: 'view', |
| 2245 | }, |
| 2246 | {name: 'visibility', read: getAttribute('visibility')}, |
| 2247 | { |
| 2248 | name: 'visibility', |
| 2249 | containerTagName: 'svg', |
| 2250 | tagName: 'path', |
| 2251 | read: getSVGAttribute('visibility'), |
| 2252 | }, |
| 2253 | { |
| 2254 | name: 'vMathematical', |
| 2255 | read: getSVGAttribute('v-mathematical'), |
| 2256 | containerTagName: 'svg', |
| 2257 | tagName: 'font-face', |
| 2258 | }, |
| 2259 | {name: 'vocab', read: getAttribute('vocab')}, |
| 2260 | {name: 'width', tagName: 'img'}, |
| 2261 | { |
| 2262 | name: 'width', |
| 2263 | containerTagName: 'svg', |
| 2264 | tagName: 'rect', |
| 2265 | read: getSVGProperty('width'), |
| 2266 | }, |
| 2267 | { |
| 2268 | name: 'widths', |
| 2269 | read: getSVGAttribute('widths'), |
| 2270 | containerTagName: 'svg', |
| 2271 | tagName: 'font-face', |
| 2272 | }, |
| 2273 | {name: 'wmode', read: getAttribute('wmode'), tagName: 'embed'}, |
| 2274 | { |
| 2275 | name: 'word-spacing', |
| 2276 | containerTagName: 'svg', |
| 2277 | tagName: 'text', |
| 2278 | read: getSVGAttribute('word-spacing'), |
| 2279 | }, |
| 2280 | { |
| 2281 | name: 'wordSpacing', |
| 2282 | containerTagName: 'svg', |
| 2283 | tagName: 'text', |
| 2284 | read: getSVGAttribute('word-spacing'), |
| 2285 | }, |
| 2286 | {name: 'wrap', tagName: 'textarea'}, |
| 2287 | { |
| 2288 | name: 'writing-mode', |
| 2289 | containerTagName: 'svg', |
| 2290 | tagName: 'text', |
| 2291 | read: getSVGAttribute('writing-mode'), |
| 2292 | }, |
| 2293 | { |
| 2294 | name: 'writingMode', |
| 2295 | containerTagName: 'svg', |
| 2296 | tagName: 'text', |
| 2297 | read: getSVGAttribute('writing-mode'), |
| 2298 | }, |
| 2299 | { |
| 2300 | name: 'x', |
| 2301 | read: getSVGAttribute('x'), |
| 2302 | containerTagName: 'svg', |
| 2303 | tagName: 'altGlyph', |
| 2304 | }, |
| 2305 | { |
| 2306 | name: 'x-height', |
| 2307 | read: getSVGAttribute('x-height'), |
| 2308 | containerTagName: 'svg', |
| 2309 | tagName: 'font-face', |
| 2310 | }, |
| 2311 | { |
| 2312 | name: 'x1', |
| 2313 | read: getSVGProperty('x1'), |
| 2314 | containerTagName: 'svg', |
| 2315 | tagName: 'line', |
| 2316 | }, |
| 2317 | { |
| 2318 | name: 'x2', |
| 2319 | read: getSVGProperty('x2'), |
| 2320 | containerTagName: 'svg', |
| 2321 | tagName: 'line', |
| 2322 | }, |
| 2323 | { |
| 2324 | name: 'xChannelSelector', |
| 2325 | read: getSVGProperty('xChannelSelector'), |
| 2326 | containerTagName: 'svg', |
| 2327 | tagName: 'feDisplacementMap', |
| 2328 | overrideStringValue: 'R', |
| 2329 | }, |
| 2330 | { |
| 2331 | name: 'xHeight', |
| 2332 | read: getSVGAttribute('x-height'), |
| 2333 | containerTagName: 'svg', |
| 2334 | tagName: 'font-face', |
| 2335 | }, |
| 2336 | {name: 'XLink:Actuate', read: getAttribute('XLink:Actuate')}, |
| 2337 | {name: 'xlink:actuate', read: getAttribute('xlink:actuate')}, |
| 2338 | {name: 'xlink:arcrole', read: getAttribute('xlink:arcrole')}, |
| 2339 | {name: 'xlink:href', read: getAttribute('xlink:href')}, |
| 2340 | {name: 'xlink:role', read: getAttribute('xlink:role')}, |
| 2341 | {name: 'xlink:show', read: getAttribute('xlink:show')}, |
| 2342 | {name: 'xlink:title', read: getAttribute('xlink:title')}, |
| 2343 | {name: 'xlink:type', read: getAttribute('xlink:type')}, |
| 2344 | {name: 'xlinkActuate', read: getAttribute('xlink:actuate')}, |
| 2345 | {name: 'XlinkActuate', read: getAttribute('Xlink:actuate')}, |
| 2346 | {name: 'xlinkArcrole', read: getAttribute('xlink:arcrole')}, |
| 2347 | {name: 'xlinkHref', read: getAttribute('xlink:href')}, |
| 2348 | {name: 'xlinkRole', read: getAttribute('xlink:role')}, |
| 2349 | {name: 'xlinkShow', read: getAttribute('xlink:show')}, |
| 2350 | {name: 'xlinkTitle', read: getAttribute('xlink:title')}, |
| 2351 | {name: 'xlinkType', read: getAttribute('xlink:type')}, |
| 2352 | {name: 'xml:base', read: getAttribute('xml:base')}, |
| 2353 | {name: 'xml:lang', read: getAttribute('xml:lang')}, |
| 2354 | {name: 'xml:space', read: getAttribute('xml:space')}, |
| 2355 | {name: 'xmlBase', read: getAttribute('xml:base')}, |
| 2356 | {name: 'xmlLang', read: getAttribute('xml:lang')}, |
| 2357 | {name: 'xmlns', read: getProperty('namespaceURI'), tagName: 'svg'}, |
| 2358 | {name: 'xmlns:xlink', read: getAttribute('xmlns:xlink')}, |
| 2359 | {name: 'xmlnsXlink', read: getAttribute('xmlns:xlink')}, |
| 2360 | {name: 'xmlSpace', read: getAttribute('xml:space')}, |
| 2361 | { |
| 2362 | name: 'y', |
| 2363 | read: getSVGAttribute('y'), |
| 2364 | containerTagName: 'svg', |
| 2365 | tagName: 'altGlyph', |
| 2366 | }, |
| 2367 | { |
| 2368 | name: 'y1', |
| 2369 | read: getSVGProperty('y1'), |
| 2370 | containerTagName: 'svg', |
| 2371 | tagName: 'line', |
| 2372 | }, |
| 2373 | { |
| 2374 | name: 'y2', |
| 2375 | read: getSVGProperty('y2'), |
| 2376 | containerTagName: 'svg', |
| 2377 | tagName: 'line', |
| 2378 | }, |
| 2379 | { |
| 2380 | name: 'yChannelSelector', |
| 2381 | read: getSVGProperty('yChannelSelector'), |
| 2382 | containerTagName: 'svg', |
| 2383 | tagName: 'feDisplacementMap', |
| 2384 | overrideStringValue: 'B', |
| 2385 | }, |
| 2386 | { |
| 2387 | name: 'z', |
| 2388 | read: getSVGProperty('z'), |
| 2389 | containerTagName: 'svg', |
| 2390 | tagName: 'fePointLight', |
| 2391 | }, |
| 2392 | {name: 'zoomAndPan', read: getSVGProperty('zoomAndPan'), tagName: 'svg'}, |
| 2393 | ]; |
| 2394 | |
| 2395 | attributes.forEach(attr => { |
| 2396 | attr.read = attr.read || getProperty(attr.name); |
| 2397 | }); |
| 2398 | |
| 2399 | export default attributes; |