├── .editorconfig ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── crawl.js ├── funding.yml ├── index.js ├── license ├── package.json ├── readme.md ├── test.js └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | jobs: 2 | main: 3 | name: ${{matrix.node}} 4 | runs-on: ubuntu-latest 5 | steps: 6 | - uses: actions/checkout@v4 7 | - uses: actions/setup-node@v4 8 | with: 9 | node-version: ${{matrix.node}} 10 | - run: npm install 11 | - run: npm test 12 | - uses: codecov/codecov-action@v3 13 | strategy: 14 | matrix: 15 | node: 16 | - lts/hydrogen 17 | - node 18 | name: main 19 | on: 20 | - pull_request 21 | - push 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.d.ts 2 | *.d.ts.map 3 | *.log 4 | .DS_Store 5 | coverage/ 6 | node_modules/ 7 | yarn.lock 8 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | ignore-scripts=true 2 | package-lock=false 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.md 2 | coverage/ 3 | -------------------------------------------------------------------------------- /crawl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @typedef {Record>} InfoMap 3 | */ 4 | 5 | import assert from 'node:assert/strict' 6 | import fs from 'node:fs/promises' 7 | import {ariaAttributes} from 'aria-attributes' 8 | import {fromHtml} from 'hast-util-from-html' 9 | import {isEventHandler} from 'hast-util-is-event-handler' 10 | import {select, selectAll} from 'hast-util-select' 11 | import {toString} from 'hast-util-to-string' 12 | import {fetch} from 'undici' 13 | 14 | const maps = await Promise.all([requestSvg1(), requestSvgTiny(), requestSvg2()]) 15 | 16 | // Missing from the spec, see: svg-element-attributes#4 17 | maps[0].symbol.add('x').add('y').add('width').add('height') 18 | 19 | /** @type {Set} */ 20 | const globals = new Set() 21 | 22 | // Figure out globals. 23 | // We have to do this per map: the maps have different tag names. 24 | for (const map of maps) { 25 | const tagNames = Object.keys(map) 26 | /** @type {Set} */ 27 | const all = new Set() 28 | 29 | // Track all attributes. 30 | for (const tagName of tagNames) { 31 | for (const attribute of map[tagName]) { 32 | if (!ignoreAttribute(attribute)) { 33 | all.add(attribute) 34 | } 35 | } 36 | } 37 | 38 | for (const attribute of all) { 39 | let global = true 40 | 41 | for (const tagName of tagNames) { 42 | if (!map[tagName].has(attribute)) { 43 | global = false 44 | break 45 | } 46 | } 47 | 48 | if (global) { 49 | globals.add(attribute) 50 | } 51 | } 52 | } 53 | 54 | /** @type {InfoMap} */ 55 | const merged = {} 56 | 57 | for (const map of maps) { 58 | const tagNames = Object.keys(map) 59 | 60 | for (const tagName of tagNames) { 61 | const attributes = map[tagName] 62 | let mergedAttributes = merged[tagName] 63 | 64 | if (!mergedAttributes) { 65 | mergedAttributes = new Set() 66 | merged[tagName] = mergedAttributes 67 | } 68 | 69 | for (const attribute of attributes) { 70 | if (globals.has(attribute) || ignoreAttribute(attribute)) { 71 | continue 72 | } 73 | 74 | mergedAttributes.add(attribute) 75 | } 76 | } 77 | } 78 | 79 | /** @type {Record>} */ 80 | const result = {'*': [...globals].sort()} 81 | const tagNames = Object.keys(merged).sort() 82 | 83 | for (const tagName of tagNames) { 84 | result[tagName] = [...merged[tagName]].sort() 85 | } 86 | 87 | await fs.writeFile( 88 | 'index.js', 89 | [ 90 | '/**', 91 | ' * Map of SVG elements to allowed attributes.', 92 | ' *', 93 | ' * @type {Record>}', 94 | ' */', 95 | 'export const svgElementAttributes = ' + 96 | JSON.stringify(result, undefined, 2), 97 | '' 98 | ].join('\n') 99 | ) 100 | 101 | async function requestSvg1() { 102 | const response = await fetch('https://www.w3.org/TR/SVG11/attindex.html') 103 | const text = await response.text() 104 | 105 | /** @type {InfoMap} */ 106 | const map = {} 107 | const rows = selectAll('.property-table tr', fromHtml(text)) 108 | 109 | if (rows.length === 0) { 110 | throw new Error('Couldn’t find rows in SVG 1') 111 | } 112 | 113 | for (const row of rows) { 114 | const attributes = selectAll('.attr-name', row) 115 | const elements = selectAll('.element-name', row) 116 | 117 | for (const element of elements) { 118 | const value = toString(element).replaceAll(/[‘’]/g, '') 119 | let list = map[value] 120 | 121 | if (!list) { 122 | list = new Set() 123 | map[value] = list 124 | } 125 | 126 | for (const attribute of attributes) { 127 | list.add(toString(attribute).replaceAll(/[‘’]/g, '')) 128 | } 129 | } 130 | } 131 | 132 | return map 133 | } 134 | 135 | async function requestSvgTiny() { 136 | const response = await fetch( 137 | 'https://www.w3.org/TR/SVGTiny12/attributeTable.html' 138 | ) 139 | const text = await response.text() 140 | /** @type {InfoMap} */ 141 | const map = {} 142 | const rows = selectAll('#attributes .attribute', fromHtml(text)) 143 | 144 | if (rows.length === 0) { 145 | throw new Error('Couldn’t find nodes in SVG Tiny') 146 | } 147 | 148 | for (const row of rows) { 149 | const name = select('.attribute-name', row) 150 | assert(name, 'expected `name`') 151 | const attribute = toString(name) 152 | const elements = selectAll('.element', row) 153 | 154 | for (const element of elements) { 155 | const value = toString(element) 156 | 157 | if (!Object.hasOwn(map, value)) { 158 | map[value] = new Set() 159 | } 160 | 161 | map[value].add(attribute) 162 | } 163 | } 164 | 165 | return map 166 | } 167 | 168 | async function requestSvg2() { 169 | const response = await fetch('https://www.w3.org/TR/SVG2/attindex.html') 170 | const text = await response.text() 171 | /** @type {InfoMap} */ 172 | const map = {} 173 | const rows = selectAll('tbody tr', fromHtml(text)) 174 | 175 | if (rows.length === 0) { 176 | throw new Error('Couldn’t find rows in SVG 2') 177 | } 178 | 179 | for (const row of rows) { 180 | const name = select('.attr-name span', row) 181 | assert(name, 'expected `name`') 182 | const attribute = toString(name) 183 | const elements = selectAll('.element-name span', row) 184 | 185 | for (const element of elements) { 186 | const value = toString(element) 187 | 188 | if (!Object.hasOwn(map, value)) { 189 | map[value] = new Set() 190 | } 191 | 192 | map[value].add(attribute) 193 | } 194 | } 195 | 196 | return map 197 | } 198 | 199 | /** 200 | * @param {string} attribute 201 | * Key. 202 | * @returns {boolean} 203 | * Whether the attribute should be ignored. 204 | */ 205 | function ignoreAttribute(attribute) { 206 | if (ariaAttributes.includes(attribute) || isEventHandler(attribute)) { 207 | return true 208 | } 209 | 210 | const colonIndex = attribute.indexOf(':') 211 | const namespace = 212 | colonIndex === -1 ? undefined : attribute.slice(0, colonIndex) 213 | 214 | // Ignore some namespaces. 215 | if (namespace === 'ev' || namespace === 'xlink' || namespace === 'xml') { 216 | return true 217 | } 218 | 219 | return false 220 | } 221 | -------------------------------------------------------------------------------- /funding.yml: -------------------------------------------------------------------------------- 1 | github: wooorm 2 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Map of SVG elements to allowed attributes. 3 | * 4 | * @type {Record>} 5 | */ 6 | export const svgElementAttributes = { 7 | '*': [ 8 | 'about', 9 | 'class', 10 | 'content', 11 | 'datatype', 12 | 'id', 13 | 'lang', 14 | 'property', 15 | 'rel', 16 | 'resource', 17 | 'rev', 18 | 'style', 19 | 'tabindex', 20 | 'typeof' 21 | ], 22 | a: [ 23 | 'alignment-baseline', 24 | 'baseline-shift', 25 | 'clip', 26 | 'clip-path', 27 | 'clip-rule', 28 | 'color', 29 | 'color-interpolation', 30 | 'color-interpolation-filters', 31 | 'color-profile', 32 | 'color-rendering', 33 | 'cursor', 34 | 'direction', 35 | 'display', 36 | 'dominant-baseline', 37 | 'download', 38 | 'enable-background', 39 | 'externalResourcesRequired', 40 | 'fill', 41 | 'fill-opacity', 42 | 'fill-rule', 43 | 'filter', 44 | 'flood-color', 45 | 'flood-opacity', 46 | 'focusHighlight', 47 | 'focusable', 48 | 'font-family', 49 | 'font-size', 50 | 'font-size-adjust', 51 | 'font-stretch', 52 | 'font-style', 53 | 'font-variant', 54 | 'font-weight', 55 | 'glyph-orientation-horizontal', 56 | 'glyph-orientation-vertical', 57 | 'href', 58 | 'hreflang', 59 | 'image-rendering', 60 | 'kerning', 61 | 'letter-spacing', 62 | 'lighting-color', 63 | 'marker-end', 64 | 'marker-mid', 65 | 'marker-start', 66 | 'mask', 67 | 'nav-down', 68 | 'nav-down-left', 69 | 'nav-down-right', 70 | 'nav-left', 71 | 'nav-next', 72 | 'nav-prev', 73 | 'nav-right', 74 | 'nav-up', 75 | 'nav-up-left', 76 | 'nav-up-right', 77 | 'opacity', 78 | 'overflow', 79 | 'ping', 80 | 'pointer-events', 81 | 'referrerpolicy', 82 | 'requiredExtensions', 83 | 'requiredFeatures', 84 | 'requiredFonts', 85 | 'requiredFormats', 86 | 'shape-rendering', 87 | 'stop-color', 88 | 'stop-opacity', 89 | 'stroke', 90 | 'stroke-dasharray', 91 | 'stroke-dashoffset', 92 | 'stroke-linecap', 93 | 'stroke-linejoin', 94 | 'stroke-miterlimit', 95 | 'stroke-opacity', 96 | 'stroke-width', 97 | 'systemLanguage', 98 | 'target', 99 | 'text-anchor', 100 | 'text-decoration', 101 | 'text-rendering', 102 | 'transform', 103 | 'type', 104 | 'unicode-bidi', 105 | 'visibility', 106 | 'word-spacing', 107 | 'writing-mode' 108 | ], 109 | altGlyph: [ 110 | 'alignment-baseline', 111 | 'baseline-shift', 112 | 'clip', 113 | 'clip-path', 114 | 'clip-rule', 115 | 'color', 116 | 'color-interpolation', 117 | 'color-interpolation-filters', 118 | 'color-profile', 119 | 'color-rendering', 120 | 'cursor', 121 | 'direction', 122 | 'display', 123 | 'dominant-baseline', 124 | 'dx', 125 | 'dy', 126 | 'enable-background', 127 | 'externalResourcesRequired', 128 | 'fill', 129 | 'fill-opacity', 130 | 'fill-rule', 131 | 'filter', 132 | 'flood-color', 133 | 'flood-opacity', 134 | 'font-family', 135 | 'font-size', 136 | 'font-size-adjust', 137 | 'font-stretch', 138 | 'font-style', 139 | 'font-variant', 140 | 'font-weight', 141 | 'format', 142 | 'glyph-orientation-horizontal', 143 | 'glyph-orientation-vertical', 144 | 'glyphRef', 145 | 'image-rendering', 146 | 'kerning', 147 | 'letter-spacing', 148 | 'lighting-color', 149 | 'marker-end', 150 | 'marker-mid', 151 | 'marker-start', 152 | 'mask', 153 | 'opacity', 154 | 'overflow', 155 | 'pointer-events', 156 | 'requiredExtensions', 157 | 'requiredFeatures', 158 | 'rotate', 159 | 'shape-rendering', 160 | 'stop-color', 161 | 'stop-opacity', 162 | 'stroke', 163 | 'stroke-dasharray', 164 | 'stroke-dashoffset', 165 | 'stroke-linecap', 166 | 'stroke-linejoin', 167 | 'stroke-miterlimit', 168 | 'stroke-opacity', 169 | 'stroke-width', 170 | 'systemLanguage', 171 | 'text-anchor', 172 | 'text-decoration', 173 | 'text-rendering', 174 | 'unicode-bidi', 175 | 'visibility', 176 | 'word-spacing', 177 | 'writing-mode', 178 | 'x', 179 | 'y' 180 | ], 181 | altGlyphDef: [], 182 | altGlyphItem: [], 183 | animate: [ 184 | 'accumulate', 185 | 'additive', 186 | 'alignment-baseline', 187 | 'attributeName', 188 | 'attributeType', 189 | 'baseline-shift', 190 | 'begin', 191 | 'by', 192 | 'calcMode', 193 | 'clip', 194 | 'clip-path', 195 | 'clip-rule', 196 | 'color', 197 | 'color-interpolation', 198 | 'color-interpolation-filters', 199 | 'color-profile', 200 | 'color-rendering', 201 | 'cursor', 202 | 'direction', 203 | 'display', 204 | 'dominant-baseline', 205 | 'dur', 206 | 'enable-background', 207 | 'end', 208 | 'externalResourcesRequired', 209 | 'fill', 210 | 'fill-opacity', 211 | 'fill-rule', 212 | 'filter', 213 | 'flood-color', 214 | 'flood-opacity', 215 | 'font-family', 216 | 'font-size', 217 | 'font-size-adjust', 218 | 'font-stretch', 219 | 'font-style', 220 | 'font-variant', 221 | 'font-weight', 222 | 'from', 223 | 'glyph-orientation-horizontal', 224 | 'glyph-orientation-vertical', 225 | 'href', 226 | 'image-rendering', 227 | 'kerning', 228 | 'keySplines', 229 | 'keyTimes', 230 | 'letter-spacing', 231 | 'lighting-color', 232 | 'marker-end', 233 | 'marker-mid', 234 | 'marker-start', 235 | 'mask', 236 | 'max', 237 | 'min', 238 | 'opacity', 239 | 'overflow', 240 | 'pointer-events', 241 | 'repeatCount', 242 | 'repeatDur', 243 | 'requiredExtensions', 244 | 'requiredFeatures', 245 | 'requiredFonts', 246 | 'requiredFormats', 247 | 'restart', 248 | 'shape-rendering', 249 | 'stop-color', 250 | 'stop-opacity', 251 | 'stroke', 252 | 'stroke-dasharray', 253 | 'stroke-dashoffset', 254 | 'stroke-linecap', 255 | 'stroke-linejoin', 256 | 'stroke-miterlimit', 257 | 'stroke-opacity', 258 | 'stroke-width', 259 | 'systemLanguage', 260 | 'text-anchor', 261 | 'text-decoration', 262 | 'text-rendering', 263 | 'to', 264 | 'unicode-bidi', 265 | 'values', 266 | 'visibility', 267 | 'word-spacing', 268 | 'writing-mode' 269 | ], 270 | animateColor: [ 271 | 'accumulate', 272 | 'additive', 273 | 'alignment-baseline', 274 | 'attributeName', 275 | 'attributeType', 276 | 'baseline-shift', 277 | 'begin', 278 | 'by', 279 | 'calcMode', 280 | 'clip', 281 | 'clip-path', 282 | 'clip-rule', 283 | 'color', 284 | 'color-interpolation', 285 | 'color-interpolation-filters', 286 | 'color-profile', 287 | 'color-rendering', 288 | 'cursor', 289 | 'direction', 290 | 'display', 291 | 'dominant-baseline', 292 | 'dur', 293 | 'enable-background', 294 | 'end', 295 | 'externalResourcesRequired', 296 | 'fill', 297 | 'fill-opacity', 298 | 'fill-rule', 299 | 'filter', 300 | 'flood-color', 301 | 'flood-opacity', 302 | 'font-family', 303 | 'font-size', 304 | 'font-size-adjust', 305 | 'font-stretch', 306 | 'font-style', 307 | 'font-variant', 308 | 'font-weight', 309 | 'from', 310 | 'glyph-orientation-horizontal', 311 | 'glyph-orientation-vertical', 312 | 'image-rendering', 313 | 'kerning', 314 | 'keySplines', 315 | 'keyTimes', 316 | 'letter-spacing', 317 | 'lighting-color', 318 | 'marker-end', 319 | 'marker-mid', 320 | 'marker-start', 321 | 'mask', 322 | 'max', 323 | 'min', 324 | 'opacity', 325 | 'overflow', 326 | 'pointer-events', 327 | 'repeatCount', 328 | 'repeatDur', 329 | 'requiredExtensions', 330 | 'requiredFeatures', 331 | 'requiredFonts', 332 | 'requiredFormats', 333 | 'restart', 334 | 'shape-rendering', 335 | 'stop-color', 336 | 'stop-opacity', 337 | 'stroke', 338 | 'stroke-dasharray', 339 | 'stroke-dashoffset', 340 | 'stroke-linecap', 341 | 'stroke-linejoin', 342 | 'stroke-miterlimit', 343 | 'stroke-opacity', 344 | 'stroke-width', 345 | 'systemLanguage', 346 | 'text-anchor', 347 | 'text-decoration', 348 | 'text-rendering', 349 | 'to', 350 | 'unicode-bidi', 351 | 'values', 352 | 'visibility', 353 | 'word-spacing', 354 | 'writing-mode' 355 | ], 356 | animateMotion: [ 357 | 'accumulate', 358 | 'additive', 359 | 'begin', 360 | 'by', 361 | 'calcMode', 362 | 'dur', 363 | 'end', 364 | 'externalResourcesRequired', 365 | 'fill', 366 | 'from', 367 | 'href', 368 | 'keyPoints', 369 | 'keySplines', 370 | 'keyTimes', 371 | 'max', 372 | 'min', 373 | 'origin', 374 | 'path', 375 | 'repeatCount', 376 | 'repeatDur', 377 | 'requiredExtensions', 378 | 'requiredFeatures', 379 | 'requiredFonts', 380 | 'requiredFormats', 381 | 'restart', 382 | 'rotate', 383 | 'systemLanguage', 384 | 'to', 385 | 'values' 386 | ], 387 | animateTransform: [ 388 | 'accumulate', 389 | 'additive', 390 | 'attributeName', 391 | 'attributeType', 392 | 'begin', 393 | 'by', 394 | 'calcMode', 395 | 'dur', 396 | 'end', 397 | 'externalResourcesRequired', 398 | 'fill', 399 | 'from', 400 | 'href', 401 | 'keySplines', 402 | 'keyTimes', 403 | 'max', 404 | 'min', 405 | 'repeatCount', 406 | 'repeatDur', 407 | 'requiredExtensions', 408 | 'requiredFeatures', 409 | 'requiredFonts', 410 | 'requiredFormats', 411 | 'restart', 412 | 'systemLanguage', 413 | 'to', 414 | 'type', 415 | 'values' 416 | ], 417 | animation: [ 418 | 'begin', 419 | 'dur', 420 | 'end', 421 | 'externalResourcesRequired', 422 | 'fill', 423 | 'focusHighlight', 424 | 'focusable', 425 | 'height', 426 | 'initialVisibility', 427 | 'max', 428 | 'min', 429 | 'nav-down', 430 | 'nav-down-left', 431 | 'nav-down-right', 432 | 'nav-left', 433 | 'nav-next', 434 | 'nav-prev', 435 | 'nav-right', 436 | 'nav-up', 437 | 'nav-up-left', 438 | 'nav-up-right', 439 | 'preserveAspectRatio', 440 | 'repeatCount', 441 | 'repeatDur', 442 | 'requiredExtensions', 443 | 'requiredFeatures', 444 | 'requiredFonts', 445 | 'requiredFormats', 446 | 'restart', 447 | 'syncBehavior', 448 | 'syncMaster', 449 | 'syncTolerance', 450 | 'systemLanguage', 451 | 'transform', 452 | 'width', 453 | 'x', 454 | 'y' 455 | ], 456 | audio: [ 457 | 'begin', 458 | 'dur', 459 | 'end', 460 | 'externalResourcesRequired', 461 | 'fill', 462 | 'max', 463 | 'min', 464 | 'repeatCount', 465 | 'repeatDur', 466 | 'requiredExtensions', 467 | 'requiredFeatures', 468 | 'requiredFonts', 469 | 'requiredFormats', 470 | 'restart', 471 | 'syncBehavior', 472 | 'syncMaster', 473 | 'syncTolerance', 474 | 'systemLanguage', 475 | 'type' 476 | ], 477 | canvas: ['preserveAspectRatio', 'requiredExtensions', 'systemLanguage'], 478 | circle: [ 479 | 'alignment-baseline', 480 | 'baseline-shift', 481 | 'clip', 482 | 'clip-path', 483 | 'clip-rule', 484 | 'color', 485 | 'color-interpolation', 486 | 'color-interpolation-filters', 487 | 'color-profile', 488 | 'color-rendering', 489 | 'cursor', 490 | 'cx', 491 | 'cy', 492 | 'direction', 493 | 'display', 494 | 'dominant-baseline', 495 | 'enable-background', 496 | 'externalResourcesRequired', 497 | 'fill', 498 | 'fill-opacity', 499 | 'fill-rule', 500 | 'filter', 501 | 'flood-color', 502 | 'flood-opacity', 503 | 'focusHighlight', 504 | 'focusable', 505 | 'font-family', 506 | 'font-size', 507 | 'font-size-adjust', 508 | 'font-stretch', 509 | 'font-style', 510 | 'font-variant', 511 | 'font-weight', 512 | 'glyph-orientation-horizontal', 513 | 'glyph-orientation-vertical', 514 | 'image-rendering', 515 | 'kerning', 516 | 'letter-spacing', 517 | 'lighting-color', 518 | 'marker-end', 519 | 'marker-mid', 520 | 'marker-start', 521 | 'mask', 522 | 'nav-down', 523 | 'nav-down-left', 524 | 'nav-down-right', 525 | 'nav-left', 526 | 'nav-next', 527 | 'nav-prev', 528 | 'nav-right', 529 | 'nav-up', 530 | 'nav-up-left', 531 | 'nav-up-right', 532 | 'opacity', 533 | 'overflow', 534 | 'pathLength', 535 | 'pointer-events', 536 | 'r', 537 | 'requiredExtensions', 538 | 'requiredFeatures', 539 | 'requiredFonts', 540 | 'requiredFormats', 541 | 'shape-rendering', 542 | 'stop-color', 543 | 'stop-opacity', 544 | 'stroke', 545 | 'stroke-dasharray', 546 | 'stroke-dashoffset', 547 | 'stroke-linecap', 548 | 'stroke-linejoin', 549 | 'stroke-miterlimit', 550 | 'stroke-opacity', 551 | 'stroke-width', 552 | 'systemLanguage', 553 | 'text-anchor', 554 | 'text-decoration', 555 | 'text-rendering', 556 | 'transform', 557 | 'unicode-bidi', 558 | 'visibility', 559 | 'word-spacing', 560 | 'writing-mode' 561 | ], 562 | clipPath: [ 563 | 'alignment-baseline', 564 | 'baseline-shift', 565 | 'clip', 566 | 'clip-path', 567 | 'clip-rule', 568 | 'clipPathUnits', 569 | 'color', 570 | 'color-interpolation', 571 | 'color-interpolation-filters', 572 | 'color-profile', 573 | 'color-rendering', 574 | 'cursor', 575 | 'direction', 576 | 'display', 577 | 'dominant-baseline', 578 | 'enable-background', 579 | 'externalResourcesRequired', 580 | 'fill', 581 | 'fill-opacity', 582 | 'fill-rule', 583 | 'filter', 584 | 'flood-color', 585 | 'flood-opacity', 586 | 'font-family', 587 | 'font-size', 588 | 'font-size-adjust', 589 | 'font-stretch', 590 | 'font-style', 591 | 'font-variant', 592 | 'font-weight', 593 | 'glyph-orientation-horizontal', 594 | 'glyph-orientation-vertical', 595 | 'image-rendering', 596 | 'kerning', 597 | 'letter-spacing', 598 | 'lighting-color', 599 | 'marker-end', 600 | 'marker-mid', 601 | 'marker-start', 602 | 'mask', 603 | 'opacity', 604 | 'overflow', 605 | 'pointer-events', 606 | 'requiredExtensions', 607 | 'requiredFeatures', 608 | 'shape-rendering', 609 | 'stop-color', 610 | 'stop-opacity', 611 | 'stroke', 612 | 'stroke-dasharray', 613 | 'stroke-dashoffset', 614 | 'stroke-linecap', 615 | 'stroke-linejoin', 616 | 'stroke-miterlimit', 617 | 'stroke-opacity', 618 | 'stroke-width', 619 | 'systemLanguage', 620 | 'text-anchor', 621 | 'text-decoration', 622 | 'text-rendering', 623 | 'transform', 624 | 'unicode-bidi', 625 | 'visibility', 626 | 'word-spacing', 627 | 'writing-mode' 628 | ], 629 | 'color-profile': ['local', 'name', 'rendering-intent'], 630 | cursor: [ 631 | 'externalResourcesRequired', 632 | 'requiredExtensions', 633 | 'requiredFeatures', 634 | 'systemLanguage', 635 | 'x', 636 | 'y' 637 | ], 638 | defs: [ 639 | 'alignment-baseline', 640 | 'baseline-shift', 641 | 'clip', 642 | 'clip-path', 643 | 'clip-rule', 644 | 'color', 645 | 'color-interpolation', 646 | 'color-interpolation-filters', 647 | 'color-profile', 648 | 'color-rendering', 649 | 'cursor', 650 | 'direction', 651 | 'display', 652 | 'dominant-baseline', 653 | 'enable-background', 654 | 'externalResourcesRequired', 655 | 'fill', 656 | 'fill-opacity', 657 | 'fill-rule', 658 | 'filter', 659 | 'flood-color', 660 | 'flood-opacity', 661 | 'font-family', 662 | 'font-size', 663 | 'font-size-adjust', 664 | 'font-stretch', 665 | 'font-style', 666 | 'font-variant', 667 | 'font-weight', 668 | 'glyph-orientation-horizontal', 669 | 'glyph-orientation-vertical', 670 | 'image-rendering', 671 | 'kerning', 672 | 'letter-spacing', 673 | 'lighting-color', 674 | 'marker-end', 675 | 'marker-mid', 676 | 'marker-start', 677 | 'mask', 678 | 'opacity', 679 | 'overflow', 680 | 'pointer-events', 681 | 'requiredExtensions', 682 | 'requiredFeatures', 683 | 'shape-rendering', 684 | 'stop-color', 685 | 'stop-opacity', 686 | 'stroke', 687 | 'stroke-dasharray', 688 | 'stroke-dashoffset', 689 | 'stroke-linecap', 690 | 'stroke-linejoin', 691 | 'stroke-miterlimit', 692 | 'stroke-opacity', 693 | 'stroke-width', 694 | 'systemLanguage', 695 | 'text-anchor', 696 | 'text-decoration', 697 | 'text-rendering', 698 | 'transform', 699 | 'unicode-bidi', 700 | 'visibility', 701 | 'word-spacing', 702 | 'writing-mode' 703 | ], 704 | desc: [ 705 | 'requiredExtensions', 706 | 'requiredFeatures', 707 | 'requiredFonts', 708 | 'requiredFormats', 709 | 'systemLanguage' 710 | ], 711 | discard: [ 712 | 'begin', 713 | 'href', 714 | 'requiredExtensions', 715 | 'requiredFeatures', 716 | 'requiredFonts', 717 | 'requiredFormats', 718 | 'systemLanguage' 719 | ], 720 | ellipse: [ 721 | 'alignment-baseline', 722 | 'baseline-shift', 723 | 'clip', 724 | 'clip-path', 725 | 'clip-rule', 726 | 'color', 727 | 'color-interpolation', 728 | 'color-interpolation-filters', 729 | 'color-profile', 730 | 'color-rendering', 731 | 'cursor', 732 | 'cx', 733 | 'cy', 734 | 'direction', 735 | 'display', 736 | 'dominant-baseline', 737 | 'enable-background', 738 | 'externalResourcesRequired', 739 | 'fill', 740 | 'fill-opacity', 741 | 'fill-rule', 742 | 'filter', 743 | 'flood-color', 744 | 'flood-opacity', 745 | 'focusHighlight', 746 | 'focusable', 747 | 'font-family', 748 | 'font-size', 749 | 'font-size-adjust', 750 | 'font-stretch', 751 | 'font-style', 752 | 'font-variant', 753 | 'font-weight', 754 | 'glyph-orientation-horizontal', 755 | 'glyph-orientation-vertical', 756 | 'image-rendering', 757 | 'kerning', 758 | 'letter-spacing', 759 | 'lighting-color', 760 | 'marker-end', 761 | 'marker-mid', 762 | 'marker-start', 763 | 'mask', 764 | 'nav-down', 765 | 'nav-down-left', 766 | 'nav-down-right', 767 | 'nav-left', 768 | 'nav-next', 769 | 'nav-prev', 770 | 'nav-right', 771 | 'nav-up', 772 | 'nav-up-left', 773 | 'nav-up-right', 774 | 'opacity', 775 | 'overflow', 776 | 'pathLength', 777 | 'pointer-events', 778 | 'requiredExtensions', 779 | 'requiredFeatures', 780 | 'requiredFonts', 781 | 'requiredFormats', 782 | 'rx', 783 | 'ry', 784 | 'shape-rendering', 785 | 'stop-color', 786 | 'stop-opacity', 787 | 'stroke', 788 | 'stroke-dasharray', 789 | 'stroke-dashoffset', 790 | 'stroke-linecap', 791 | 'stroke-linejoin', 792 | 'stroke-miterlimit', 793 | 'stroke-opacity', 794 | 'stroke-width', 795 | 'systemLanguage', 796 | 'text-anchor', 797 | 'text-decoration', 798 | 'text-rendering', 799 | 'transform', 800 | 'unicode-bidi', 801 | 'visibility', 802 | 'word-spacing', 803 | 'writing-mode' 804 | ], 805 | feBlend: [ 806 | 'alignment-baseline', 807 | 'baseline-shift', 808 | 'clip', 809 | 'clip-path', 810 | 'clip-rule', 811 | 'color', 812 | 'color-interpolation', 813 | 'color-interpolation-filters', 814 | 'color-profile', 815 | 'color-rendering', 816 | 'cursor', 817 | 'direction', 818 | 'display', 819 | 'dominant-baseline', 820 | 'enable-background', 821 | 'fill', 822 | 'fill-opacity', 823 | 'fill-rule', 824 | 'filter', 825 | 'flood-color', 826 | 'flood-opacity', 827 | 'font-family', 828 | 'font-size', 829 | 'font-size-adjust', 830 | 'font-stretch', 831 | 'font-style', 832 | 'font-variant', 833 | 'font-weight', 834 | 'glyph-orientation-horizontal', 835 | 'glyph-orientation-vertical', 836 | 'height', 837 | 'image-rendering', 838 | 'in', 839 | 'in2', 840 | 'kerning', 841 | 'letter-spacing', 842 | 'lighting-color', 843 | 'marker-end', 844 | 'marker-mid', 845 | 'marker-start', 846 | 'mask', 847 | 'mode', 848 | 'opacity', 849 | 'overflow', 850 | 'pointer-events', 851 | 'result', 852 | 'shape-rendering', 853 | 'stop-color', 854 | 'stop-opacity', 855 | 'stroke', 856 | 'stroke-dasharray', 857 | 'stroke-dashoffset', 858 | 'stroke-linecap', 859 | 'stroke-linejoin', 860 | 'stroke-miterlimit', 861 | 'stroke-opacity', 862 | 'stroke-width', 863 | 'text-anchor', 864 | 'text-decoration', 865 | 'text-rendering', 866 | 'unicode-bidi', 867 | 'visibility', 868 | 'width', 869 | 'word-spacing', 870 | 'writing-mode', 871 | 'x', 872 | 'y' 873 | ], 874 | feColorMatrix: [ 875 | 'alignment-baseline', 876 | 'baseline-shift', 877 | 'clip', 878 | 'clip-path', 879 | 'clip-rule', 880 | 'color', 881 | 'color-interpolation', 882 | 'color-interpolation-filters', 883 | 'color-profile', 884 | 'color-rendering', 885 | 'cursor', 886 | 'direction', 887 | 'display', 888 | 'dominant-baseline', 889 | 'enable-background', 890 | 'fill', 891 | 'fill-opacity', 892 | 'fill-rule', 893 | 'filter', 894 | 'flood-color', 895 | 'flood-opacity', 896 | 'font-family', 897 | 'font-size', 898 | 'font-size-adjust', 899 | 'font-stretch', 900 | 'font-style', 901 | 'font-variant', 902 | 'font-weight', 903 | 'glyph-orientation-horizontal', 904 | 'glyph-orientation-vertical', 905 | 'height', 906 | 'image-rendering', 907 | 'in', 908 | 'kerning', 909 | 'letter-spacing', 910 | 'lighting-color', 911 | 'marker-end', 912 | 'marker-mid', 913 | 'marker-start', 914 | 'mask', 915 | 'opacity', 916 | 'overflow', 917 | 'pointer-events', 918 | 'result', 919 | 'shape-rendering', 920 | 'stop-color', 921 | 'stop-opacity', 922 | 'stroke', 923 | 'stroke-dasharray', 924 | 'stroke-dashoffset', 925 | 'stroke-linecap', 926 | 'stroke-linejoin', 927 | 'stroke-miterlimit', 928 | 'stroke-opacity', 929 | 'stroke-width', 930 | 'text-anchor', 931 | 'text-decoration', 932 | 'text-rendering', 933 | 'type', 934 | 'unicode-bidi', 935 | 'values', 936 | 'visibility', 937 | 'width', 938 | 'word-spacing', 939 | 'writing-mode', 940 | 'x', 941 | 'y' 942 | ], 943 | feComponentTransfer: [ 944 | 'alignment-baseline', 945 | 'baseline-shift', 946 | 'clip', 947 | 'clip-path', 948 | 'clip-rule', 949 | 'color', 950 | 'color-interpolation', 951 | 'color-interpolation-filters', 952 | 'color-profile', 953 | 'color-rendering', 954 | 'cursor', 955 | 'direction', 956 | 'display', 957 | 'dominant-baseline', 958 | 'enable-background', 959 | 'fill', 960 | 'fill-opacity', 961 | 'fill-rule', 962 | 'filter', 963 | 'flood-color', 964 | 'flood-opacity', 965 | 'font-family', 966 | 'font-size', 967 | 'font-size-adjust', 968 | 'font-stretch', 969 | 'font-style', 970 | 'font-variant', 971 | 'font-weight', 972 | 'glyph-orientation-horizontal', 973 | 'glyph-orientation-vertical', 974 | 'height', 975 | 'image-rendering', 976 | 'in', 977 | 'kerning', 978 | 'letter-spacing', 979 | 'lighting-color', 980 | 'marker-end', 981 | 'marker-mid', 982 | 'marker-start', 983 | 'mask', 984 | 'opacity', 985 | 'overflow', 986 | 'pointer-events', 987 | 'result', 988 | 'shape-rendering', 989 | 'stop-color', 990 | 'stop-opacity', 991 | 'stroke', 992 | 'stroke-dasharray', 993 | 'stroke-dashoffset', 994 | 'stroke-linecap', 995 | 'stroke-linejoin', 996 | 'stroke-miterlimit', 997 | 'stroke-opacity', 998 | 'stroke-width', 999 | 'text-anchor', 1000 | 'text-decoration', 1001 | 'text-rendering', 1002 | 'unicode-bidi', 1003 | 'visibility', 1004 | 'width', 1005 | 'word-spacing', 1006 | 'writing-mode', 1007 | 'x', 1008 | 'y' 1009 | ], 1010 | feComposite: [ 1011 | 'alignment-baseline', 1012 | 'baseline-shift', 1013 | 'clip', 1014 | 'clip-path', 1015 | 'clip-rule', 1016 | 'color', 1017 | 'color-interpolation', 1018 | 'color-interpolation-filters', 1019 | 'color-profile', 1020 | 'color-rendering', 1021 | 'cursor', 1022 | 'direction', 1023 | 'display', 1024 | 'dominant-baseline', 1025 | 'enable-background', 1026 | 'fill', 1027 | 'fill-opacity', 1028 | 'fill-rule', 1029 | 'filter', 1030 | 'flood-color', 1031 | 'flood-opacity', 1032 | 'font-family', 1033 | 'font-size', 1034 | 'font-size-adjust', 1035 | 'font-stretch', 1036 | 'font-style', 1037 | 'font-variant', 1038 | 'font-weight', 1039 | 'glyph-orientation-horizontal', 1040 | 'glyph-orientation-vertical', 1041 | 'height', 1042 | 'image-rendering', 1043 | 'in', 1044 | 'in2', 1045 | 'k1', 1046 | 'k2', 1047 | 'k3', 1048 | 'k4', 1049 | 'kerning', 1050 | 'letter-spacing', 1051 | 'lighting-color', 1052 | 'marker-end', 1053 | 'marker-mid', 1054 | 'marker-start', 1055 | 'mask', 1056 | 'opacity', 1057 | 'operator', 1058 | 'overflow', 1059 | 'pointer-events', 1060 | 'result', 1061 | 'shape-rendering', 1062 | 'stop-color', 1063 | 'stop-opacity', 1064 | 'stroke', 1065 | 'stroke-dasharray', 1066 | 'stroke-dashoffset', 1067 | 'stroke-linecap', 1068 | 'stroke-linejoin', 1069 | 'stroke-miterlimit', 1070 | 'stroke-opacity', 1071 | 'stroke-width', 1072 | 'text-anchor', 1073 | 'text-decoration', 1074 | 'text-rendering', 1075 | 'unicode-bidi', 1076 | 'visibility', 1077 | 'width', 1078 | 'word-spacing', 1079 | 'writing-mode', 1080 | 'x', 1081 | 'y' 1082 | ], 1083 | feConvolveMatrix: [ 1084 | 'alignment-baseline', 1085 | 'baseline-shift', 1086 | 'bias', 1087 | 'clip', 1088 | 'clip-path', 1089 | 'clip-rule', 1090 | 'color', 1091 | 'color-interpolation', 1092 | 'color-interpolation-filters', 1093 | 'color-profile', 1094 | 'color-rendering', 1095 | 'cursor', 1096 | 'direction', 1097 | 'display', 1098 | 'divisor', 1099 | 'dominant-baseline', 1100 | 'edgeMode', 1101 | 'enable-background', 1102 | 'fill', 1103 | 'fill-opacity', 1104 | 'fill-rule', 1105 | 'filter', 1106 | 'flood-color', 1107 | 'flood-opacity', 1108 | 'font-family', 1109 | 'font-size', 1110 | 'font-size-adjust', 1111 | 'font-stretch', 1112 | 'font-style', 1113 | 'font-variant', 1114 | 'font-weight', 1115 | 'glyph-orientation-horizontal', 1116 | 'glyph-orientation-vertical', 1117 | 'height', 1118 | 'image-rendering', 1119 | 'in', 1120 | 'kernelMatrix', 1121 | 'kernelUnitLength', 1122 | 'kerning', 1123 | 'letter-spacing', 1124 | 'lighting-color', 1125 | 'marker-end', 1126 | 'marker-mid', 1127 | 'marker-start', 1128 | 'mask', 1129 | 'opacity', 1130 | 'order', 1131 | 'overflow', 1132 | 'pointer-events', 1133 | 'preserveAlpha', 1134 | 'result', 1135 | 'shape-rendering', 1136 | 'stop-color', 1137 | 'stop-opacity', 1138 | 'stroke', 1139 | 'stroke-dasharray', 1140 | 'stroke-dashoffset', 1141 | 'stroke-linecap', 1142 | 'stroke-linejoin', 1143 | 'stroke-miterlimit', 1144 | 'stroke-opacity', 1145 | 'stroke-width', 1146 | 'targetX', 1147 | 'targetY', 1148 | 'text-anchor', 1149 | 'text-decoration', 1150 | 'text-rendering', 1151 | 'unicode-bidi', 1152 | 'visibility', 1153 | 'width', 1154 | 'word-spacing', 1155 | 'writing-mode', 1156 | 'x', 1157 | 'y' 1158 | ], 1159 | feDiffuseLighting: [ 1160 | 'alignment-baseline', 1161 | 'baseline-shift', 1162 | 'clip', 1163 | 'clip-path', 1164 | 'clip-rule', 1165 | 'color', 1166 | 'color-interpolation', 1167 | 'color-interpolation-filters', 1168 | 'color-profile', 1169 | 'color-rendering', 1170 | 'cursor', 1171 | 'diffuseConstant', 1172 | 'direction', 1173 | 'display', 1174 | 'dominant-baseline', 1175 | 'enable-background', 1176 | 'fill', 1177 | 'fill-opacity', 1178 | 'fill-rule', 1179 | 'filter', 1180 | 'flood-color', 1181 | 'flood-opacity', 1182 | 'font-family', 1183 | 'font-size', 1184 | 'font-size-adjust', 1185 | 'font-stretch', 1186 | 'font-style', 1187 | 'font-variant', 1188 | 'font-weight', 1189 | 'glyph-orientation-horizontal', 1190 | 'glyph-orientation-vertical', 1191 | 'height', 1192 | 'image-rendering', 1193 | 'in', 1194 | 'kernelUnitLength', 1195 | 'kerning', 1196 | 'letter-spacing', 1197 | 'lighting-color', 1198 | 'marker-end', 1199 | 'marker-mid', 1200 | 'marker-start', 1201 | 'mask', 1202 | 'opacity', 1203 | 'overflow', 1204 | 'pointer-events', 1205 | 'result', 1206 | 'shape-rendering', 1207 | 'stop-color', 1208 | 'stop-opacity', 1209 | 'stroke', 1210 | 'stroke-dasharray', 1211 | 'stroke-dashoffset', 1212 | 'stroke-linecap', 1213 | 'stroke-linejoin', 1214 | 'stroke-miterlimit', 1215 | 'stroke-opacity', 1216 | 'stroke-width', 1217 | 'surfaceScale', 1218 | 'text-anchor', 1219 | 'text-decoration', 1220 | 'text-rendering', 1221 | 'unicode-bidi', 1222 | 'visibility', 1223 | 'width', 1224 | 'word-spacing', 1225 | 'writing-mode', 1226 | 'x', 1227 | 'y' 1228 | ], 1229 | feDisplacementMap: [ 1230 | 'alignment-baseline', 1231 | 'baseline-shift', 1232 | 'clip', 1233 | 'clip-path', 1234 | 'clip-rule', 1235 | 'color', 1236 | 'color-interpolation', 1237 | 'color-interpolation-filters', 1238 | 'color-profile', 1239 | 'color-rendering', 1240 | 'cursor', 1241 | 'direction', 1242 | 'display', 1243 | 'dominant-baseline', 1244 | 'enable-background', 1245 | 'fill', 1246 | 'fill-opacity', 1247 | 'fill-rule', 1248 | 'filter', 1249 | 'flood-color', 1250 | 'flood-opacity', 1251 | 'font-family', 1252 | 'font-size', 1253 | 'font-size-adjust', 1254 | 'font-stretch', 1255 | 'font-style', 1256 | 'font-variant', 1257 | 'font-weight', 1258 | 'glyph-orientation-horizontal', 1259 | 'glyph-orientation-vertical', 1260 | 'height', 1261 | 'image-rendering', 1262 | 'in', 1263 | 'in2', 1264 | 'kerning', 1265 | 'letter-spacing', 1266 | 'lighting-color', 1267 | 'marker-end', 1268 | 'marker-mid', 1269 | 'marker-start', 1270 | 'mask', 1271 | 'opacity', 1272 | 'overflow', 1273 | 'pointer-events', 1274 | 'result', 1275 | 'scale', 1276 | 'shape-rendering', 1277 | 'stop-color', 1278 | 'stop-opacity', 1279 | 'stroke', 1280 | 'stroke-dasharray', 1281 | 'stroke-dashoffset', 1282 | 'stroke-linecap', 1283 | 'stroke-linejoin', 1284 | 'stroke-miterlimit', 1285 | 'stroke-opacity', 1286 | 'stroke-width', 1287 | 'text-anchor', 1288 | 'text-decoration', 1289 | 'text-rendering', 1290 | 'unicode-bidi', 1291 | 'visibility', 1292 | 'width', 1293 | 'word-spacing', 1294 | 'writing-mode', 1295 | 'x', 1296 | 'xChannelSelector', 1297 | 'y', 1298 | 'yChannelSelector' 1299 | ], 1300 | feDistantLight: ['azimuth', 'elevation'], 1301 | feDropShadow: [ 1302 | 'dx', 1303 | 'dy', 1304 | 'height', 1305 | 'in', 1306 | 'result', 1307 | 'stdDeviation', 1308 | 'width', 1309 | 'x', 1310 | 'y' 1311 | ], 1312 | feFlood: [ 1313 | 'alignment-baseline', 1314 | 'baseline-shift', 1315 | 'clip', 1316 | 'clip-path', 1317 | 'clip-rule', 1318 | 'color', 1319 | 'color-interpolation', 1320 | 'color-interpolation-filters', 1321 | 'color-profile', 1322 | 'color-rendering', 1323 | 'cursor', 1324 | 'direction', 1325 | 'display', 1326 | 'dominant-baseline', 1327 | 'enable-background', 1328 | 'fill', 1329 | 'fill-opacity', 1330 | 'fill-rule', 1331 | 'filter', 1332 | 'flood-color', 1333 | 'flood-opacity', 1334 | 'font-family', 1335 | 'font-size', 1336 | 'font-size-adjust', 1337 | 'font-stretch', 1338 | 'font-style', 1339 | 'font-variant', 1340 | 'font-weight', 1341 | 'glyph-orientation-horizontal', 1342 | 'glyph-orientation-vertical', 1343 | 'height', 1344 | 'image-rendering', 1345 | 'kerning', 1346 | 'letter-spacing', 1347 | 'lighting-color', 1348 | 'marker-end', 1349 | 'marker-mid', 1350 | 'marker-start', 1351 | 'mask', 1352 | 'opacity', 1353 | 'overflow', 1354 | 'pointer-events', 1355 | 'result', 1356 | 'shape-rendering', 1357 | 'stop-color', 1358 | 'stop-opacity', 1359 | 'stroke', 1360 | 'stroke-dasharray', 1361 | 'stroke-dashoffset', 1362 | 'stroke-linecap', 1363 | 'stroke-linejoin', 1364 | 'stroke-miterlimit', 1365 | 'stroke-opacity', 1366 | 'stroke-width', 1367 | 'text-anchor', 1368 | 'text-decoration', 1369 | 'text-rendering', 1370 | 'unicode-bidi', 1371 | 'visibility', 1372 | 'width', 1373 | 'word-spacing', 1374 | 'writing-mode', 1375 | 'x', 1376 | 'y' 1377 | ], 1378 | feFuncA: [ 1379 | 'amplitude', 1380 | 'exponent', 1381 | 'intercept', 1382 | 'offset', 1383 | 'slope', 1384 | 'tableValues', 1385 | 'type' 1386 | ], 1387 | feFuncB: [ 1388 | 'amplitude', 1389 | 'exponent', 1390 | 'intercept', 1391 | 'offset', 1392 | 'slope', 1393 | 'tableValues', 1394 | 'type' 1395 | ], 1396 | feFuncG: [ 1397 | 'amplitude', 1398 | 'exponent', 1399 | 'intercept', 1400 | 'offset', 1401 | 'slope', 1402 | 'tableValues', 1403 | 'type' 1404 | ], 1405 | feFuncR: [ 1406 | 'amplitude', 1407 | 'exponent', 1408 | 'intercept', 1409 | 'offset', 1410 | 'slope', 1411 | 'tableValues', 1412 | 'type' 1413 | ], 1414 | feGaussianBlur: [ 1415 | 'alignment-baseline', 1416 | 'baseline-shift', 1417 | 'clip', 1418 | 'clip-path', 1419 | 'clip-rule', 1420 | 'color', 1421 | 'color-interpolation', 1422 | 'color-interpolation-filters', 1423 | 'color-profile', 1424 | 'color-rendering', 1425 | 'cursor', 1426 | 'direction', 1427 | 'display', 1428 | 'dominant-baseline', 1429 | 'edgeMode', 1430 | 'enable-background', 1431 | 'fill', 1432 | 'fill-opacity', 1433 | 'fill-rule', 1434 | 'filter', 1435 | 'flood-color', 1436 | 'flood-opacity', 1437 | 'font-family', 1438 | 'font-size', 1439 | 'font-size-adjust', 1440 | 'font-stretch', 1441 | 'font-style', 1442 | 'font-variant', 1443 | 'font-weight', 1444 | 'glyph-orientation-horizontal', 1445 | 'glyph-orientation-vertical', 1446 | 'height', 1447 | 'image-rendering', 1448 | 'in', 1449 | 'kerning', 1450 | 'letter-spacing', 1451 | 'lighting-color', 1452 | 'marker-end', 1453 | 'marker-mid', 1454 | 'marker-start', 1455 | 'mask', 1456 | 'opacity', 1457 | 'overflow', 1458 | 'pointer-events', 1459 | 'result', 1460 | 'shape-rendering', 1461 | 'stdDeviation', 1462 | 'stop-color', 1463 | 'stop-opacity', 1464 | 'stroke', 1465 | 'stroke-dasharray', 1466 | 'stroke-dashoffset', 1467 | 'stroke-linecap', 1468 | 'stroke-linejoin', 1469 | 'stroke-miterlimit', 1470 | 'stroke-opacity', 1471 | 'stroke-width', 1472 | 'text-anchor', 1473 | 'text-decoration', 1474 | 'text-rendering', 1475 | 'unicode-bidi', 1476 | 'visibility', 1477 | 'width', 1478 | 'word-spacing', 1479 | 'writing-mode', 1480 | 'x', 1481 | 'y' 1482 | ], 1483 | feImage: [ 1484 | 'alignment-baseline', 1485 | 'baseline-shift', 1486 | 'clip', 1487 | 'clip-path', 1488 | 'clip-rule', 1489 | 'color', 1490 | 'color-interpolation', 1491 | 'color-interpolation-filters', 1492 | 'color-profile', 1493 | 'color-rendering', 1494 | 'crossorigin', 1495 | 'cursor', 1496 | 'direction', 1497 | 'display', 1498 | 'dominant-baseline', 1499 | 'enable-background', 1500 | 'externalResourcesRequired', 1501 | 'fill', 1502 | 'fill-opacity', 1503 | 'fill-rule', 1504 | 'filter', 1505 | 'flood-color', 1506 | 'flood-opacity', 1507 | 'font-family', 1508 | 'font-size', 1509 | 'font-size-adjust', 1510 | 'font-stretch', 1511 | 'font-style', 1512 | 'font-variant', 1513 | 'font-weight', 1514 | 'glyph-orientation-horizontal', 1515 | 'glyph-orientation-vertical', 1516 | 'height', 1517 | 'href', 1518 | 'image-rendering', 1519 | 'kerning', 1520 | 'letter-spacing', 1521 | 'lighting-color', 1522 | 'marker-end', 1523 | 'marker-mid', 1524 | 'marker-start', 1525 | 'mask', 1526 | 'opacity', 1527 | 'overflow', 1528 | 'pointer-events', 1529 | 'preserveAspectRatio', 1530 | 'result', 1531 | 'shape-rendering', 1532 | 'stop-color', 1533 | 'stop-opacity', 1534 | 'stroke', 1535 | 'stroke-dasharray', 1536 | 'stroke-dashoffset', 1537 | 'stroke-linecap', 1538 | 'stroke-linejoin', 1539 | 'stroke-miterlimit', 1540 | 'stroke-opacity', 1541 | 'stroke-width', 1542 | 'text-anchor', 1543 | 'text-decoration', 1544 | 'text-rendering', 1545 | 'unicode-bidi', 1546 | 'visibility', 1547 | 'width', 1548 | 'word-spacing', 1549 | 'writing-mode', 1550 | 'x', 1551 | 'y' 1552 | ], 1553 | feMerge: [ 1554 | 'alignment-baseline', 1555 | 'baseline-shift', 1556 | 'clip', 1557 | 'clip-path', 1558 | 'clip-rule', 1559 | 'color', 1560 | 'color-interpolation', 1561 | 'color-interpolation-filters', 1562 | 'color-profile', 1563 | 'color-rendering', 1564 | 'cursor', 1565 | 'direction', 1566 | 'display', 1567 | 'dominant-baseline', 1568 | 'enable-background', 1569 | 'fill', 1570 | 'fill-opacity', 1571 | 'fill-rule', 1572 | 'filter', 1573 | 'flood-color', 1574 | 'flood-opacity', 1575 | 'font-family', 1576 | 'font-size', 1577 | 'font-size-adjust', 1578 | 'font-stretch', 1579 | 'font-style', 1580 | 'font-variant', 1581 | 'font-weight', 1582 | 'glyph-orientation-horizontal', 1583 | 'glyph-orientation-vertical', 1584 | 'height', 1585 | 'image-rendering', 1586 | 'kerning', 1587 | 'letter-spacing', 1588 | 'lighting-color', 1589 | 'marker-end', 1590 | 'marker-mid', 1591 | 'marker-start', 1592 | 'mask', 1593 | 'opacity', 1594 | 'overflow', 1595 | 'pointer-events', 1596 | 'result', 1597 | 'shape-rendering', 1598 | 'stop-color', 1599 | 'stop-opacity', 1600 | 'stroke', 1601 | 'stroke-dasharray', 1602 | 'stroke-dashoffset', 1603 | 'stroke-linecap', 1604 | 'stroke-linejoin', 1605 | 'stroke-miterlimit', 1606 | 'stroke-opacity', 1607 | 'stroke-width', 1608 | 'text-anchor', 1609 | 'text-decoration', 1610 | 'text-rendering', 1611 | 'unicode-bidi', 1612 | 'visibility', 1613 | 'width', 1614 | 'word-spacing', 1615 | 'writing-mode', 1616 | 'x', 1617 | 'y' 1618 | ], 1619 | feMergeNode: ['in'], 1620 | feMorphology: [ 1621 | 'alignment-baseline', 1622 | 'baseline-shift', 1623 | 'clip', 1624 | 'clip-path', 1625 | 'clip-rule', 1626 | 'color', 1627 | 'color-interpolation', 1628 | 'color-interpolation-filters', 1629 | 'color-profile', 1630 | 'color-rendering', 1631 | 'cursor', 1632 | 'direction', 1633 | 'display', 1634 | 'dominant-baseline', 1635 | 'enable-background', 1636 | 'fill', 1637 | 'fill-opacity', 1638 | 'fill-rule', 1639 | 'filter', 1640 | 'flood-color', 1641 | 'flood-opacity', 1642 | 'font-family', 1643 | 'font-size', 1644 | 'font-size-adjust', 1645 | 'font-stretch', 1646 | 'font-style', 1647 | 'font-variant', 1648 | 'font-weight', 1649 | 'glyph-orientation-horizontal', 1650 | 'glyph-orientation-vertical', 1651 | 'height', 1652 | 'image-rendering', 1653 | 'in', 1654 | 'kerning', 1655 | 'letter-spacing', 1656 | 'lighting-color', 1657 | 'marker-end', 1658 | 'marker-mid', 1659 | 'marker-start', 1660 | 'mask', 1661 | 'opacity', 1662 | 'operator', 1663 | 'overflow', 1664 | 'pointer-events', 1665 | 'radius', 1666 | 'result', 1667 | 'shape-rendering', 1668 | 'stop-color', 1669 | 'stop-opacity', 1670 | 'stroke', 1671 | 'stroke-dasharray', 1672 | 'stroke-dashoffset', 1673 | 'stroke-linecap', 1674 | 'stroke-linejoin', 1675 | 'stroke-miterlimit', 1676 | 'stroke-opacity', 1677 | 'stroke-width', 1678 | 'text-anchor', 1679 | 'text-decoration', 1680 | 'text-rendering', 1681 | 'unicode-bidi', 1682 | 'visibility', 1683 | 'width', 1684 | 'word-spacing', 1685 | 'writing-mode', 1686 | 'x', 1687 | 'y' 1688 | ], 1689 | feOffset: [ 1690 | 'alignment-baseline', 1691 | 'baseline-shift', 1692 | 'clip', 1693 | 'clip-path', 1694 | 'clip-rule', 1695 | 'color', 1696 | 'color-interpolation', 1697 | 'color-interpolation-filters', 1698 | 'color-profile', 1699 | 'color-rendering', 1700 | 'cursor', 1701 | 'direction', 1702 | 'display', 1703 | 'dominant-baseline', 1704 | 'dx', 1705 | 'dy', 1706 | 'enable-background', 1707 | 'fill', 1708 | 'fill-opacity', 1709 | 'fill-rule', 1710 | 'filter', 1711 | 'flood-color', 1712 | 'flood-opacity', 1713 | 'font-family', 1714 | 'font-size', 1715 | 'font-size-adjust', 1716 | 'font-stretch', 1717 | 'font-style', 1718 | 'font-variant', 1719 | 'font-weight', 1720 | 'glyph-orientation-horizontal', 1721 | 'glyph-orientation-vertical', 1722 | 'height', 1723 | 'image-rendering', 1724 | 'in', 1725 | 'kerning', 1726 | 'letter-spacing', 1727 | 'lighting-color', 1728 | 'marker-end', 1729 | 'marker-mid', 1730 | 'marker-start', 1731 | 'mask', 1732 | 'opacity', 1733 | 'overflow', 1734 | 'pointer-events', 1735 | 'result', 1736 | 'shape-rendering', 1737 | 'stop-color', 1738 | 'stop-opacity', 1739 | 'stroke', 1740 | 'stroke-dasharray', 1741 | 'stroke-dashoffset', 1742 | 'stroke-linecap', 1743 | 'stroke-linejoin', 1744 | 'stroke-miterlimit', 1745 | 'stroke-opacity', 1746 | 'stroke-width', 1747 | 'text-anchor', 1748 | 'text-decoration', 1749 | 'text-rendering', 1750 | 'unicode-bidi', 1751 | 'visibility', 1752 | 'width', 1753 | 'word-spacing', 1754 | 'writing-mode', 1755 | 'x', 1756 | 'y' 1757 | ], 1758 | fePointLight: ['x', 'y', 'z'], 1759 | feSpecularLighting: [ 1760 | 'alignment-baseline', 1761 | 'baseline-shift', 1762 | 'clip', 1763 | 'clip-path', 1764 | 'clip-rule', 1765 | 'color', 1766 | 'color-interpolation', 1767 | 'color-interpolation-filters', 1768 | 'color-profile', 1769 | 'color-rendering', 1770 | 'cursor', 1771 | 'direction', 1772 | 'display', 1773 | 'dominant-baseline', 1774 | 'enable-background', 1775 | 'fill', 1776 | 'fill-opacity', 1777 | 'fill-rule', 1778 | 'filter', 1779 | 'flood-color', 1780 | 'flood-opacity', 1781 | 'font-family', 1782 | 'font-size', 1783 | 'font-size-adjust', 1784 | 'font-stretch', 1785 | 'font-style', 1786 | 'font-variant', 1787 | 'font-weight', 1788 | 'glyph-orientation-horizontal', 1789 | 'glyph-orientation-vertical', 1790 | 'height', 1791 | 'image-rendering', 1792 | 'in', 1793 | 'kernelUnitLength', 1794 | 'kerning', 1795 | 'letter-spacing', 1796 | 'lighting-color', 1797 | 'marker-end', 1798 | 'marker-mid', 1799 | 'marker-start', 1800 | 'mask', 1801 | 'opacity', 1802 | 'overflow', 1803 | 'pointer-events', 1804 | 'result', 1805 | 'shape-rendering', 1806 | 'specularConstant', 1807 | 'specularExponent', 1808 | 'stop-color', 1809 | 'stop-opacity', 1810 | 'stroke', 1811 | 'stroke-dasharray', 1812 | 'stroke-dashoffset', 1813 | 'stroke-linecap', 1814 | 'stroke-linejoin', 1815 | 'stroke-miterlimit', 1816 | 'stroke-opacity', 1817 | 'stroke-width', 1818 | 'surfaceScale', 1819 | 'text-anchor', 1820 | 'text-decoration', 1821 | 'text-rendering', 1822 | 'unicode-bidi', 1823 | 'visibility', 1824 | 'width', 1825 | 'word-spacing', 1826 | 'writing-mode', 1827 | 'x', 1828 | 'y' 1829 | ], 1830 | feSpotLight: [ 1831 | 'limitingConeAngle', 1832 | 'pointsAtX', 1833 | 'pointsAtY', 1834 | 'pointsAtZ', 1835 | 'specularExponent', 1836 | 'x', 1837 | 'y', 1838 | 'z' 1839 | ], 1840 | feTile: [ 1841 | 'alignment-baseline', 1842 | 'baseline-shift', 1843 | 'clip', 1844 | 'clip-path', 1845 | 'clip-rule', 1846 | 'color', 1847 | 'color-interpolation', 1848 | 'color-interpolation-filters', 1849 | 'color-profile', 1850 | 'color-rendering', 1851 | 'cursor', 1852 | 'direction', 1853 | 'display', 1854 | 'dominant-baseline', 1855 | 'enable-background', 1856 | 'fill', 1857 | 'fill-opacity', 1858 | 'fill-rule', 1859 | 'filter', 1860 | 'flood-color', 1861 | 'flood-opacity', 1862 | 'font-family', 1863 | 'font-size', 1864 | 'font-size-adjust', 1865 | 'font-stretch', 1866 | 'font-style', 1867 | 'font-variant', 1868 | 'font-weight', 1869 | 'glyph-orientation-horizontal', 1870 | 'glyph-orientation-vertical', 1871 | 'height', 1872 | 'image-rendering', 1873 | 'in', 1874 | 'kerning', 1875 | 'letter-spacing', 1876 | 'lighting-color', 1877 | 'marker-end', 1878 | 'marker-mid', 1879 | 'marker-start', 1880 | 'mask', 1881 | 'opacity', 1882 | 'overflow', 1883 | 'pointer-events', 1884 | 'result', 1885 | 'shape-rendering', 1886 | 'stop-color', 1887 | 'stop-opacity', 1888 | 'stroke', 1889 | 'stroke-dasharray', 1890 | 'stroke-dashoffset', 1891 | 'stroke-linecap', 1892 | 'stroke-linejoin', 1893 | 'stroke-miterlimit', 1894 | 'stroke-opacity', 1895 | 'stroke-width', 1896 | 'text-anchor', 1897 | 'text-decoration', 1898 | 'text-rendering', 1899 | 'unicode-bidi', 1900 | 'visibility', 1901 | 'width', 1902 | 'word-spacing', 1903 | 'writing-mode', 1904 | 'x', 1905 | 'y' 1906 | ], 1907 | feTurbulence: [ 1908 | 'alignment-baseline', 1909 | 'baseFrequency', 1910 | 'baseline-shift', 1911 | 'clip', 1912 | 'clip-path', 1913 | 'clip-rule', 1914 | 'color', 1915 | 'color-interpolation', 1916 | 'color-interpolation-filters', 1917 | 'color-profile', 1918 | 'color-rendering', 1919 | 'cursor', 1920 | 'direction', 1921 | 'display', 1922 | 'dominant-baseline', 1923 | 'enable-background', 1924 | 'fill', 1925 | 'fill-opacity', 1926 | 'fill-rule', 1927 | 'filter', 1928 | 'flood-color', 1929 | 'flood-opacity', 1930 | 'font-family', 1931 | 'font-size', 1932 | 'font-size-adjust', 1933 | 'font-stretch', 1934 | 'font-style', 1935 | 'font-variant', 1936 | 'font-weight', 1937 | 'glyph-orientation-horizontal', 1938 | 'glyph-orientation-vertical', 1939 | 'height', 1940 | 'image-rendering', 1941 | 'kerning', 1942 | 'letter-spacing', 1943 | 'lighting-color', 1944 | 'marker-end', 1945 | 'marker-mid', 1946 | 'marker-start', 1947 | 'mask', 1948 | 'numOctaves', 1949 | 'opacity', 1950 | 'overflow', 1951 | 'pointer-events', 1952 | 'result', 1953 | 'seed', 1954 | 'shape-rendering', 1955 | 'stitchTiles', 1956 | 'stop-color', 1957 | 'stop-opacity', 1958 | 'stroke', 1959 | 'stroke-dasharray', 1960 | 'stroke-dashoffset', 1961 | 'stroke-linecap', 1962 | 'stroke-linejoin', 1963 | 'stroke-miterlimit', 1964 | 'stroke-opacity', 1965 | 'stroke-width', 1966 | 'text-anchor', 1967 | 'text-decoration', 1968 | 'text-rendering', 1969 | 'type', 1970 | 'unicode-bidi', 1971 | 'visibility', 1972 | 'width', 1973 | 'word-spacing', 1974 | 'writing-mode', 1975 | 'x', 1976 | 'y' 1977 | ], 1978 | filter: [ 1979 | 'alignment-baseline', 1980 | 'baseline-shift', 1981 | 'clip', 1982 | 'clip-path', 1983 | 'clip-rule', 1984 | 'color', 1985 | 'color-interpolation', 1986 | 'color-interpolation-filters', 1987 | 'color-profile', 1988 | 'color-rendering', 1989 | 'cursor', 1990 | 'direction', 1991 | 'display', 1992 | 'dominant-baseline', 1993 | 'enable-background', 1994 | 'externalResourcesRequired', 1995 | 'fill', 1996 | 'fill-opacity', 1997 | 'fill-rule', 1998 | 'filter', 1999 | 'filterRes', 2000 | 'filterUnits', 2001 | 'flood-color', 2002 | 'flood-opacity', 2003 | 'font-family', 2004 | 'font-size', 2005 | 'font-size-adjust', 2006 | 'font-stretch', 2007 | 'font-style', 2008 | 'font-variant', 2009 | 'font-weight', 2010 | 'glyph-orientation-horizontal', 2011 | 'glyph-orientation-vertical', 2012 | 'height', 2013 | 'image-rendering', 2014 | 'kerning', 2015 | 'letter-spacing', 2016 | 'lighting-color', 2017 | 'marker-end', 2018 | 'marker-mid', 2019 | 'marker-start', 2020 | 'mask', 2021 | 'opacity', 2022 | 'overflow', 2023 | 'pointer-events', 2024 | 'primitiveUnits', 2025 | 'shape-rendering', 2026 | 'stop-color', 2027 | 'stop-opacity', 2028 | 'stroke', 2029 | 'stroke-dasharray', 2030 | 'stroke-dashoffset', 2031 | 'stroke-linecap', 2032 | 'stroke-linejoin', 2033 | 'stroke-miterlimit', 2034 | 'stroke-opacity', 2035 | 'stroke-width', 2036 | 'text-anchor', 2037 | 'text-decoration', 2038 | 'text-rendering', 2039 | 'unicode-bidi', 2040 | 'visibility', 2041 | 'width', 2042 | 'word-spacing', 2043 | 'writing-mode', 2044 | 'x', 2045 | 'y' 2046 | ], 2047 | font: [ 2048 | 'alignment-baseline', 2049 | 'baseline-shift', 2050 | 'clip', 2051 | 'clip-path', 2052 | 'clip-rule', 2053 | 'color', 2054 | 'color-interpolation', 2055 | 'color-interpolation-filters', 2056 | 'color-profile', 2057 | 'color-rendering', 2058 | 'cursor', 2059 | 'direction', 2060 | 'display', 2061 | 'dominant-baseline', 2062 | 'enable-background', 2063 | 'externalResourcesRequired', 2064 | 'fill', 2065 | 'fill-opacity', 2066 | 'fill-rule', 2067 | 'filter', 2068 | 'flood-color', 2069 | 'flood-opacity', 2070 | 'font-family', 2071 | 'font-size', 2072 | 'font-size-adjust', 2073 | 'font-stretch', 2074 | 'font-style', 2075 | 'font-variant', 2076 | 'font-weight', 2077 | 'glyph-orientation-horizontal', 2078 | 'glyph-orientation-vertical', 2079 | 'horiz-adv-x', 2080 | 'horiz-origin-x', 2081 | 'horiz-origin-y', 2082 | 'image-rendering', 2083 | 'kerning', 2084 | 'letter-spacing', 2085 | 'lighting-color', 2086 | 'marker-end', 2087 | 'marker-mid', 2088 | 'marker-start', 2089 | 'mask', 2090 | 'opacity', 2091 | 'overflow', 2092 | 'pointer-events', 2093 | 'shape-rendering', 2094 | 'stop-color', 2095 | 'stop-opacity', 2096 | 'stroke', 2097 | 'stroke-dasharray', 2098 | 'stroke-dashoffset', 2099 | 'stroke-linecap', 2100 | 'stroke-linejoin', 2101 | 'stroke-miterlimit', 2102 | 'stroke-opacity', 2103 | 'stroke-width', 2104 | 'text-anchor', 2105 | 'text-decoration', 2106 | 'text-rendering', 2107 | 'unicode-bidi', 2108 | 'vert-adv-y', 2109 | 'vert-origin-x', 2110 | 'vert-origin-y', 2111 | 'visibility', 2112 | 'word-spacing', 2113 | 'writing-mode' 2114 | ], 2115 | 'font-face': [ 2116 | 'accent-height', 2117 | 'alphabetic', 2118 | 'ascent', 2119 | 'bbox', 2120 | 'cap-height', 2121 | 'descent', 2122 | 'externalResourcesRequired', 2123 | 'font-family', 2124 | 'font-size', 2125 | 'font-stretch', 2126 | 'font-style', 2127 | 'font-variant', 2128 | 'font-weight', 2129 | 'hanging', 2130 | 'ideographic', 2131 | 'mathematical', 2132 | 'overline-position', 2133 | 'overline-thickness', 2134 | 'panose-1', 2135 | 'slope', 2136 | 'stemh', 2137 | 'stemv', 2138 | 'strikethrough-position', 2139 | 'strikethrough-thickness', 2140 | 'underline-position', 2141 | 'underline-thickness', 2142 | 'unicode-range', 2143 | 'units-per-em', 2144 | 'v-alphabetic', 2145 | 'v-hanging', 2146 | 'v-ideographic', 2147 | 'v-mathematical', 2148 | 'widths', 2149 | 'x-height' 2150 | ], 2151 | 'font-face-format': ['string'], 2152 | 'font-face-name': ['name'], 2153 | 'font-face-src': [], 2154 | 'font-face-uri': ['externalResourcesRequired'], 2155 | foreignObject: [ 2156 | 'alignment-baseline', 2157 | 'baseline-shift', 2158 | 'clip', 2159 | 'clip-path', 2160 | 'clip-rule', 2161 | 'color', 2162 | 'color-interpolation', 2163 | 'color-interpolation-filters', 2164 | 'color-profile', 2165 | 'color-rendering', 2166 | 'cursor', 2167 | 'direction', 2168 | 'display', 2169 | 'dominant-baseline', 2170 | 'enable-background', 2171 | 'externalResourcesRequired', 2172 | 'fill', 2173 | 'fill-opacity', 2174 | 'fill-rule', 2175 | 'filter', 2176 | 'flood-color', 2177 | 'flood-opacity', 2178 | 'focusHighlight', 2179 | 'focusable', 2180 | 'font-family', 2181 | 'font-size', 2182 | 'font-size-adjust', 2183 | 'font-stretch', 2184 | 'font-style', 2185 | 'font-variant', 2186 | 'font-weight', 2187 | 'glyph-orientation-horizontal', 2188 | 'glyph-orientation-vertical', 2189 | 'height', 2190 | 'image-rendering', 2191 | 'kerning', 2192 | 'letter-spacing', 2193 | 'lighting-color', 2194 | 'marker-end', 2195 | 'marker-mid', 2196 | 'marker-start', 2197 | 'mask', 2198 | 'nav-down', 2199 | 'nav-down-left', 2200 | 'nav-down-right', 2201 | 'nav-left', 2202 | 'nav-next', 2203 | 'nav-prev', 2204 | 'nav-right', 2205 | 'nav-up', 2206 | 'nav-up-left', 2207 | 'nav-up-right', 2208 | 'opacity', 2209 | 'overflow', 2210 | 'pointer-events', 2211 | 'requiredExtensions', 2212 | 'requiredFeatures', 2213 | 'requiredFonts', 2214 | 'requiredFormats', 2215 | 'shape-rendering', 2216 | 'stop-color', 2217 | 'stop-opacity', 2218 | 'stroke', 2219 | 'stroke-dasharray', 2220 | 'stroke-dashoffset', 2221 | 'stroke-linecap', 2222 | 'stroke-linejoin', 2223 | 'stroke-miterlimit', 2224 | 'stroke-opacity', 2225 | 'stroke-width', 2226 | 'systemLanguage', 2227 | 'text-anchor', 2228 | 'text-decoration', 2229 | 'text-rendering', 2230 | 'transform', 2231 | 'unicode-bidi', 2232 | 'visibility', 2233 | 'width', 2234 | 'word-spacing', 2235 | 'writing-mode', 2236 | 'x', 2237 | 'y' 2238 | ], 2239 | g: [ 2240 | 'alignment-baseline', 2241 | 'baseline-shift', 2242 | 'clip', 2243 | 'clip-path', 2244 | 'clip-rule', 2245 | 'color', 2246 | 'color-interpolation', 2247 | 'color-interpolation-filters', 2248 | 'color-profile', 2249 | 'color-rendering', 2250 | 'cursor', 2251 | 'direction', 2252 | 'display', 2253 | 'dominant-baseline', 2254 | 'enable-background', 2255 | 'externalResourcesRequired', 2256 | 'fill', 2257 | 'fill-opacity', 2258 | 'fill-rule', 2259 | 'filter', 2260 | 'flood-color', 2261 | 'flood-opacity', 2262 | 'focusHighlight', 2263 | 'focusable', 2264 | 'font-family', 2265 | 'font-size', 2266 | 'font-size-adjust', 2267 | 'font-stretch', 2268 | 'font-style', 2269 | 'font-variant', 2270 | 'font-weight', 2271 | 'glyph-orientation-horizontal', 2272 | 'glyph-orientation-vertical', 2273 | 'image-rendering', 2274 | 'kerning', 2275 | 'letter-spacing', 2276 | 'lighting-color', 2277 | 'marker-end', 2278 | 'marker-mid', 2279 | 'marker-start', 2280 | 'mask', 2281 | 'nav-down', 2282 | 'nav-down-left', 2283 | 'nav-down-right', 2284 | 'nav-left', 2285 | 'nav-next', 2286 | 'nav-prev', 2287 | 'nav-right', 2288 | 'nav-up', 2289 | 'nav-up-left', 2290 | 'nav-up-right', 2291 | 'opacity', 2292 | 'overflow', 2293 | 'pointer-events', 2294 | 'requiredExtensions', 2295 | 'requiredFeatures', 2296 | 'requiredFonts', 2297 | 'requiredFormats', 2298 | 'shape-rendering', 2299 | 'stop-color', 2300 | 'stop-opacity', 2301 | 'stroke', 2302 | 'stroke-dasharray', 2303 | 'stroke-dashoffset', 2304 | 'stroke-linecap', 2305 | 'stroke-linejoin', 2306 | 'stroke-miterlimit', 2307 | 'stroke-opacity', 2308 | 'stroke-width', 2309 | 'systemLanguage', 2310 | 'text-anchor', 2311 | 'text-decoration', 2312 | 'text-rendering', 2313 | 'transform', 2314 | 'unicode-bidi', 2315 | 'visibility', 2316 | 'word-spacing', 2317 | 'writing-mode' 2318 | ], 2319 | glyph: [ 2320 | 'alignment-baseline', 2321 | 'arabic-form', 2322 | 'baseline-shift', 2323 | 'clip', 2324 | 'clip-path', 2325 | 'clip-rule', 2326 | 'color', 2327 | 'color-interpolation', 2328 | 'color-interpolation-filters', 2329 | 'color-profile', 2330 | 'color-rendering', 2331 | 'cursor', 2332 | 'd', 2333 | 'direction', 2334 | 'display', 2335 | 'dominant-baseline', 2336 | 'enable-background', 2337 | 'fill', 2338 | 'fill-opacity', 2339 | 'fill-rule', 2340 | 'filter', 2341 | 'flood-color', 2342 | 'flood-opacity', 2343 | 'font-family', 2344 | 'font-size', 2345 | 'font-size-adjust', 2346 | 'font-stretch', 2347 | 'font-style', 2348 | 'font-variant', 2349 | 'font-weight', 2350 | 'glyph-name', 2351 | 'glyph-orientation-horizontal', 2352 | 'glyph-orientation-vertical', 2353 | 'horiz-adv-x', 2354 | 'image-rendering', 2355 | 'kerning', 2356 | 'letter-spacing', 2357 | 'lighting-color', 2358 | 'marker-end', 2359 | 'marker-mid', 2360 | 'marker-start', 2361 | 'mask', 2362 | 'opacity', 2363 | 'orientation', 2364 | 'overflow', 2365 | 'pointer-events', 2366 | 'shape-rendering', 2367 | 'stop-color', 2368 | 'stop-opacity', 2369 | 'stroke', 2370 | 'stroke-dasharray', 2371 | 'stroke-dashoffset', 2372 | 'stroke-linecap', 2373 | 'stroke-linejoin', 2374 | 'stroke-miterlimit', 2375 | 'stroke-opacity', 2376 | 'stroke-width', 2377 | 'text-anchor', 2378 | 'text-decoration', 2379 | 'text-rendering', 2380 | 'unicode', 2381 | 'unicode-bidi', 2382 | 'vert-adv-y', 2383 | 'vert-origin-x', 2384 | 'vert-origin-y', 2385 | 'visibility', 2386 | 'word-spacing', 2387 | 'writing-mode' 2388 | ], 2389 | glyphRef: [ 2390 | 'alignment-baseline', 2391 | 'baseline-shift', 2392 | 'clip', 2393 | 'clip-path', 2394 | 'clip-rule', 2395 | 'color', 2396 | 'color-interpolation', 2397 | 'color-interpolation-filters', 2398 | 'color-profile', 2399 | 'color-rendering', 2400 | 'cursor', 2401 | 'direction', 2402 | 'display', 2403 | 'dominant-baseline', 2404 | 'dx', 2405 | 'dy', 2406 | 'enable-background', 2407 | 'fill', 2408 | 'fill-opacity', 2409 | 'fill-rule', 2410 | 'filter', 2411 | 'flood-color', 2412 | 'flood-opacity', 2413 | 'font-family', 2414 | 'font-size', 2415 | 'font-size-adjust', 2416 | 'font-stretch', 2417 | 'font-style', 2418 | 'font-variant', 2419 | 'font-weight', 2420 | 'format', 2421 | 'glyph-orientation-horizontal', 2422 | 'glyph-orientation-vertical', 2423 | 'glyphRef', 2424 | 'image-rendering', 2425 | 'kerning', 2426 | 'letter-spacing', 2427 | 'lighting-color', 2428 | 'marker-end', 2429 | 'marker-mid', 2430 | 'marker-start', 2431 | 'mask', 2432 | 'opacity', 2433 | 'overflow', 2434 | 'pointer-events', 2435 | 'shape-rendering', 2436 | 'stop-color', 2437 | 'stop-opacity', 2438 | 'stroke', 2439 | 'stroke-dasharray', 2440 | 'stroke-dashoffset', 2441 | 'stroke-linecap', 2442 | 'stroke-linejoin', 2443 | 'stroke-miterlimit', 2444 | 'stroke-opacity', 2445 | 'stroke-width', 2446 | 'text-anchor', 2447 | 'text-decoration', 2448 | 'text-rendering', 2449 | 'unicode-bidi', 2450 | 'visibility', 2451 | 'word-spacing', 2452 | 'writing-mode', 2453 | 'x', 2454 | 'y' 2455 | ], 2456 | handler: ['externalResourcesRequired', 'type'], 2457 | hkern: ['g1', 'g2', 'k', 'u1', 'u2'], 2458 | iframe: ['requiredExtensions', 'systemLanguage'], 2459 | image: [ 2460 | 'alignment-baseline', 2461 | 'baseline-shift', 2462 | 'clip', 2463 | 'clip-path', 2464 | 'clip-rule', 2465 | 'color', 2466 | 'color-interpolation', 2467 | 'color-interpolation-filters', 2468 | 'color-profile', 2469 | 'color-rendering', 2470 | 'crossorigin', 2471 | 'cursor', 2472 | 'direction', 2473 | 'display', 2474 | 'dominant-baseline', 2475 | 'enable-background', 2476 | 'externalResourcesRequired', 2477 | 'fill', 2478 | 'fill-opacity', 2479 | 'fill-rule', 2480 | 'filter', 2481 | 'flood-color', 2482 | 'flood-opacity', 2483 | 'focusHighlight', 2484 | 'focusable', 2485 | 'font-family', 2486 | 'font-size', 2487 | 'font-size-adjust', 2488 | 'font-stretch', 2489 | 'font-style', 2490 | 'font-variant', 2491 | 'font-weight', 2492 | 'glyph-orientation-horizontal', 2493 | 'glyph-orientation-vertical', 2494 | 'height', 2495 | 'href', 2496 | 'image-rendering', 2497 | 'kerning', 2498 | 'letter-spacing', 2499 | 'lighting-color', 2500 | 'marker-end', 2501 | 'marker-mid', 2502 | 'marker-start', 2503 | 'mask', 2504 | 'nav-down', 2505 | 'nav-down-left', 2506 | 'nav-down-right', 2507 | 'nav-left', 2508 | 'nav-next', 2509 | 'nav-prev', 2510 | 'nav-right', 2511 | 'nav-up', 2512 | 'nav-up-left', 2513 | 'nav-up-right', 2514 | 'opacity', 2515 | 'overflow', 2516 | 'pointer-events', 2517 | 'preserveAspectRatio', 2518 | 'requiredExtensions', 2519 | 'requiredFeatures', 2520 | 'requiredFonts', 2521 | 'requiredFormats', 2522 | 'shape-rendering', 2523 | 'stop-color', 2524 | 'stop-opacity', 2525 | 'stroke', 2526 | 'stroke-dasharray', 2527 | 'stroke-dashoffset', 2528 | 'stroke-linecap', 2529 | 'stroke-linejoin', 2530 | 'stroke-miterlimit', 2531 | 'stroke-opacity', 2532 | 'stroke-width', 2533 | 'systemLanguage', 2534 | 'text-anchor', 2535 | 'text-decoration', 2536 | 'text-rendering', 2537 | 'transform', 2538 | 'type', 2539 | 'unicode-bidi', 2540 | 'visibility', 2541 | 'width', 2542 | 'word-spacing', 2543 | 'writing-mode', 2544 | 'x', 2545 | 'y' 2546 | ], 2547 | line: [ 2548 | 'alignment-baseline', 2549 | 'baseline-shift', 2550 | 'clip', 2551 | 'clip-path', 2552 | 'clip-rule', 2553 | 'color', 2554 | 'color-interpolation', 2555 | 'color-interpolation-filters', 2556 | 'color-profile', 2557 | 'color-rendering', 2558 | 'cursor', 2559 | 'direction', 2560 | 'display', 2561 | 'dominant-baseline', 2562 | 'enable-background', 2563 | 'externalResourcesRequired', 2564 | 'fill', 2565 | 'fill-opacity', 2566 | 'fill-rule', 2567 | 'filter', 2568 | 'flood-color', 2569 | 'flood-opacity', 2570 | 'focusHighlight', 2571 | 'focusable', 2572 | 'font-family', 2573 | 'font-size', 2574 | 'font-size-adjust', 2575 | 'font-stretch', 2576 | 'font-style', 2577 | 'font-variant', 2578 | 'font-weight', 2579 | 'glyph-orientation-horizontal', 2580 | 'glyph-orientation-vertical', 2581 | 'image-rendering', 2582 | 'kerning', 2583 | 'letter-spacing', 2584 | 'lighting-color', 2585 | 'marker-end', 2586 | 'marker-mid', 2587 | 'marker-start', 2588 | 'mask', 2589 | 'nav-down', 2590 | 'nav-down-left', 2591 | 'nav-down-right', 2592 | 'nav-left', 2593 | 'nav-next', 2594 | 'nav-prev', 2595 | 'nav-right', 2596 | 'nav-up', 2597 | 'nav-up-left', 2598 | 'nav-up-right', 2599 | 'opacity', 2600 | 'overflow', 2601 | 'pathLength', 2602 | 'pointer-events', 2603 | 'requiredExtensions', 2604 | 'requiredFeatures', 2605 | 'requiredFonts', 2606 | 'requiredFormats', 2607 | 'shape-rendering', 2608 | 'stop-color', 2609 | 'stop-opacity', 2610 | 'stroke', 2611 | 'stroke-dasharray', 2612 | 'stroke-dashoffset', 2613 | 'stroke-linecap', 2614 | 'stroke-linejoin', 2615 | 'stroke-miterlimit', 2616 | 'stroke-opacity', 2617 | 'stroke-width', 2618 | 'systemLanguage', 2619 | 'text-anchor', 2620 | 'text-decoration', 2621 | 'text-rendering', 2622 | 'transform', 2623 | 'unicode-bidi', 2624 | 'visibility', 2625 | 'word-spacing', 2626 | 'writing-mode', 2627 | 'x1', 2628 | 'x2', 2629 | 'y1', 2630 | 'y2' 2631 | ], 2632 | linearGradient: [ 2633 | 'alignment-baseline', 2634 | 'baseline-shift', 2635 | 'clip', 2636 | 'clip-path', 2637 | 'clip-rule', 2638 | 'color', 2639 | 'color-interpolation', 2640 | 'color-interpolation-filters', 2641 | 'color-profile', 2642 | 'color-rendering', 2643 | 'cursor', 2644 | 'direction', 2645 | 'display', 2646 | 'dominant-baseline', 2647 | 'enable-background', 2648 | 'externalResourcesRequired', 2649 | 'fill', 2650 | 'fill-opacity', 2651 | 'fill-rule', 2652 | 'filter', 2653 | 'flood-color', 2654 | 'flood-opacity', 2655 | 'font-family', 2656 | 'font-size', 2657 | 'font-size-adjust', 2658 | 'font-stretch', 2659 | 'font-style', 2660 | 'font-variant', 2661 | 'font-weight', 2662 | 'glyph-orientation-horizontal', 2663 | 'glyph-orientation-vertical', 2664 | 'gradientTransform', 2665 | 'gradientUnits', 2666 | 'href', 2667 | 'image-rendering', 2668 | 'kerning', 2669 | 'letter-spacing', 2670 | 'lighting-color', 2671 | 'marker-end', 2672 | 'marker-mid', 2673 | 'marker-start', 2674 | 'mask', 2675 | 'opacity', 2676 | 'overflow', 2677 | 'pointer-events', 2678 | 'shape-rendering', 2679 | 'spreadMethod', 2680 | 'stop-color', 2681 | 'stop-opacity', 2682 | 'stroke', 2683 | 'stroke-dasharray', 2684 | 'stroke-dashoffset', 2685 | 'stroke-linecap', 2686 | 'stroke-linejoin', 2687 | 'stroke-miterlimit', 2688 | 'stroke-opacity', 2689 | 'stroke-width', 2690 | 'text-anchor', 2691 | 'text-decoration', 2692 | 'text-rendering', 2693 | 'unicode-bidi', 2694 | 'visibility', 2695 | 'word-spacing', 2696 | 'writing-mode', 2697 | 'x1', 2698 | 'x2', 2699 | 'y1', 2700 | 'y2' 2701 | ], 2702 | listener: [ 2703 | 'defaultAction', 2704 | 'event', 2705 | 'handler', 2706 | 'observer', 2707 | 'phase', 2708 | 'propagate', 2709 | 'target' 2710 | ], 2711 | marker: [ 2712 | 'alignment-baseline', 2713 | 'baseline-shift', 2714 | 'clip', 2715 | 'clip-path', 2716 | 'clip-rule', 2717 | 'color', 2718 | 'color-interpolation', 2719 | 'color-interpolation-filters', 2720 | 'color-profile', 2721 | 'color-rendering', 2722 | 'cursor', 2723 | 'direction', 2724 | 'display', 2725 | 'dominant-baseline', 2726 | 'enable-background', 2727 | 'externalResourcesRequired', 2728 | 'fill', 2729 | 'fill-opacity', 2730 | 'fill-rule', 2731 | 'filter', 2732 | 'flood-color', 2733 | 'flood-opacity', 2734 | 'font-family', 2735 | 'font-size', 2736 | 'font-size-adjust', 2737 | 'font-stretch', 2738 | 'font-style', 2739 | 'font-variant', 2740 | 'font-weight', 2741 | 'glyph-orientation-horizontal', 2742 | 'glyph-orientation-vertical', 2743 | 'image-rendering', 2744 | 'kerning', 2745 | 'letter-spacing', 2746 | 'lighting-color', 2747 | 'marker-end', 2748 | 'marker-mid', 2749 | 'marker-start', 2750 | 'markerHeight', 2751 | 'markerUnits', 2752 | 'markerWidth', 2753 | 'mask', 2754 | 'opacity', 2755 | 'orient', 2756 | 'overflow', 2757 | 'pointer-events', 2758 | 'preserveAspectRatio', 2759 | 'refX', 2760 | 'refY', 2761 | 'shape-rendering', 2762 | 'stop-color', 2763 | 'stop-opacity', 2764 | 'stroke', 2765 | 'stroke-dasharray', 2766 | 'stroke-dashoffset', 2767 | 'stroke-linecap', 2768 | 'stroke-linejoin', 2769 | 'stroke-miterlimit', 2770 | 'stroke-opacity', 2771 | 'stroke-width', 2772 | 'text-anchor', 2773 | 'text-decoration', 2774 | 'text-rendering', 2775 | 'unicode-bidi', 2776 | 'viewBox', 2777 | 'visibility', 2778 | 'word-spacing', 2779 | 'writing-mode' 2780 | ], 2781 | mask: [ 2782 | 'alignment-baseline', 2783 | 'baseline-shift', 2784 | 'clip', 2785 | 'clip-path', 2786 | 'clip-rule', 2787 | 'color', 2788 | 'color-interpolation', 2789 | 'color-interpolation-filters', 2790 | 'color-profile', 2791 | 'color-rendering', 2792 | 'cursor', 2793 | 'direction', 2794 | 'display', 2795 | 'dominant-baseline', 2796 | 'enable-background', 2797 | 'externalResourcesRequired', 2798 | 'fill', 2799 | 'fill-opacity', 2800 | 'fill-rule', 2801 | 'filter', 2802 | 'flood-color', 2803 | 'flood-opacity', 2804 | 'font-family', 2805 | 'font-size', 2806 | 'font-size-adjust', 2807 | 'font-stretch', 2808 | 'font-style', 2809 | 'font-variant', 2810 | 'font-weight', 2811 | 'glyph-orientation-horizontal', 2812 | 'glyph-orientation-vertical', 2813 | 'height', 2814 | 'image-rendering', 2815 | 'kerning', 2816 | 'letter-spacing', 2817 | 'lighting-color', 2818 | 'marker-end', 2819 | 'marker-mid', 2820 | 'marker-start', 2821 | 'mask', 2822 | 'maskContentUnits', 2823 | 'maskUnits', 2824 | 'opacity', 2825 | 'overflow', 2826 | 'pointer-events', 2827 | 'requiredExtensions', 2828 | 'requiredFeatures', 2829 | 'shape-rendering', 2830 | 'stop-color', 2831 | 'stop-opacity', 2832 | 'stroke', 2833 | 'stroke-dasharray', 2834 | 'stroke-dashoffset', 2835 | 'stroke-linecap', 2836 | 'stroke-linejoin', 2837 | 'stroke-miterlimit', 2838 | 'stroke-opacity', 2839 | 'stroke-width', 2840 | 'systemLanguage', 2841 | 'text-anchor', 2842 | 'text-decoration', 2843 | 'text-rendering', 2844 | 'unicode-bidi', 2845 | 'visibility', 2846 | 'width', 2847 | 'word-spacing', 2848 | 'writing-mode', 2849 | 'x', 2850 | 'y' 2851 | ], 2852 | metadata: [ 2853 | 'requiredExtensions', 2854 | 'requiredFeatures', 2855 | 'requiredFonts', 2856 | 'requiredFormats', 2857 | 'systemLanguage' 2858 | ], 2859 | 'missing-glyph': [ 2860 | 'alignment-baseline', 2861 | 'baseline-shift', 2862 | 'clip', 2863 | 'clip-path', 2864 | 'clip-rule', 2865 | 'color', 2866 | 'color-interpolation', 2867 | 'color-interpolation-filters', 2868 | 'color-profile', 2869 | 'color-rendering', 2870 | 'cursor', 2871 | 'd', 2872 | 'direction', 2873 | 'display', 2874 | 'dominant-baseline', 2875 | 'enable-background', 2876 | 'fill', 2877 | 'fill-opacity', 2878 | 'fill-rule', 2879 | 'filter', 2880 | 'flood-color', 2881 | 'flood-opacity', 2882 | 'font-family', 2883 | 'font-size', 2884 | 'font-size-adjust', 2885 | 'font-stretch', 2886 | 'font-style', 2887 | 'font-variant', 2888 | 'font-weight', 2889 | 'glyph-orientation-horizontal', 2890 | 'glyph-orientation-vertical', 2891 | 'horiz-adv-x', 2892 | 'image-rendering', 2893 | 'kerning', 2894 | 'letter-spacing', 2895 | 'lighting-color', 2896 | 'marker-end', 2897 | 'marker-mid', 2898 | 'marker-start', 2899 | 'mask', 2900 | 'opacity', 2901 | 'overflow', 2902 | 'pointer-events', 2903 | 'shape-rendering', 2904 | 'stop-color', 2905 | 'stop-opacity', 2906 | 'stroke', 2907 | 'stroke-dasharray', 2908 | 'stroke-dashoffset', 2909 | 'stroke-linecap', 2910 | 'stroke-linejoin', 2911 | 'stroke-miterlimit', 2912 | 'stroke-opacity', 2913 | 'stroke-width', 2914 | 'text-anchor', 2915 | 'text-decoration', 2916 | 'text-rendering', 2917 | 'unicode-bidi', 2918 | 'vert-adv-y', 2919 | 'vert-origin-x', 2920 | 'vert-origin-y', 2921 | 'visibility', 2922 | 'word-spacing', 2923 | 'writing-mode' 2924 | ], 2925 | mpath: ['externalResourcesRequired', 'href'], 2926 | path: [ 2927 | 'alignment-baseline', 2928 | 'baseline-shift', 2929 | 'clip', 2930 | 'clip-path', 2931 | 'clip-rule', 2932 | 'color', 2933 | 'color-interpolation', 2934 | 'color-interpolation-filters', 2935 | 'color-profile', 2936 | 'color-rendering', 2937 | 'cursor', 2938 | 'd', 2939 | 'direction', 2940 | 'display', 2941 | 'dominant-baseline', 2942 | 'enable-background', 2943 | 'externalResourcesRequired', 2944 | 'fill', 2945 | 'fill-opacity', 2946 | 'fill-rule', 2947 | 'filter', 2948 | 'flood-color', 2949 | 'flood-opacity', 2950 | 'focusHighlight', 2951 | 'focusable', 2952 | 'font-family', 2953 | 'font-size', 2954 | 'font-size-adjust', 2955 | 'font-stretch', 2956 | 'font-style', 2957 | 'font-variant', 2958 | 'font-weight', 2959 | 'glyph-orientation-horizontal', 2960 | 'glyph-orientation-vertical', 2961 | 'image-rendering', 2962 | 'kerning', 2963 | 'letter-spacing', 2964 | 'lighting-color', 2965 | 'marker-end', 2966 | 'marker-mid', 2967 | 'marker-start', 2968 | 'mask', 2969 | 'nav-down', 2970 | 'nav-down-left', 2971 | 'nav-down-right', 2972 | 'nav-left', 2973 | 'nav-next', 2974 | 'nav-prev', 2975 | 'nav-right', 2976 | 'nav-up', 2977 | 'nav-up-left', 2978 | 'nav-up-right', 2979 | 'opacity', 2980 | 'overflow', 2981 | 'pathLength', 2982 | 'pointer-events', 2983 | 'requiredExtensions', 2984 | 'requiredFeatures', 2985 | 'requiredFonts', 2986 | 'requiredFormats', 2987 | 'shape-rendering', 2988 | 'stop-color', 2989 | 'stop-opacity', 2990 | 'stroke', 2991 | 'stroke-dasharray', 2992 | 'stroke-dashoffset', 2993 | 'stroke-linecap', 2994 | 'stroke-linejoin', 2995 | 'stroke-miterlimit', 2996 | 'stroke-opacity', 2997 | 'stroke-width', 2998 | 'systemLanguage', 2999 | 'text-anchor', 3000 | 'text-decoration', 3001 | 'text-rendering', 3002 | 'transform', 3003 | 'unicode-bidi', 3004 | 'visibility', 3005 | 'word-spacing', 3006 | 'writing-mode' 3007 | ], 3008 | pattern: [ 3009 | 'alignment-baseline', 3010 | 'baseline-shift', 3011 | 'clip', 3012 | 'clip-path', 3013 | 'clip-rule', 3014 | 'color', 3015 | 'color-interpolation', 3016 | 'color-interpolation-filters', 3017 | 'color-profile', 3018 | 'color-rendering', 3019 | 'cursor', 3020 | 'direction', 3021 | 'display', 3022 | 'dominant-baseline', 3023 | 'enable-background', 3024 | 'externalResourcesRequired', 3025 | 'fill', 3026 | 'fill-opacity', 3027 | 'fill-rule', 3028 | 'filter', 3029 | 'flood-color', 3030 | 'flood-opacity', 3031 | 'font-family', 3032 | 'font-size', 3033 | 'font-size-adjust', 3034 | 'font-stretch', 3035 | 'font-style', 3036 | 'font-variant', 3037 | 'font-weight', 3038 | 'glyph-orientation-horizontal', 3039 | 'glyph-orientation-vertical', 3040 | 'height', 3041 | 'href', 3042 | 'image-rendering', 3043 | 'kerning', 3044 | 'letter-spacing', 3045 | 'lighting-color', 3046 | 'marker-end', 3047 | 'marker-mid', 3048 | 'marker-start', 3049 | 'mask', 3050 | 'opacity', 3051 | 'overflow', 3052 | 'patternContentUnits', 3053 | 'patternTransform', 3054 | 'patternUnits', 3055 | 'pointer-events', 3056 | 'preserveAspectRatio', 3057 | 'requiredExtensions', 3058 | 'requiredFeatures', 3059 | 'shape-rendering', 3060 | 'stop-color', 3061 | 'stop-opacity', 3062 | 'stroke', 3063 | 'stroke-dasharray', 3064 | 'stroke-dashoffset', 3065 | 'stroke-linecap', 3066 | 'stroke-linejoin', 3067 | 'stroke-miterlimit', 3068 | 'stroke-opacity', 3069 | 'stroke-width', 3070 | 'systemLanguage', 3071 | 'text-anchor', 3072 | 'text-decoration', 3073 | 'text-rendering', 3074 | 'unicode-bidi', 3075 | 'viewBox', 3076 | 'visibility', 3077 | 'width', 3078 | 'word-spacing', 3079 | 'writing-mode', 3080 | 'x', 3081 | 'y' 3082 | ], 3083 | polygon: [ 3084 | 'alignment-baseline', 3085 | 'baseline-shift', 3086 | 'clip', 3087 | 'clip-path', 3088 | 'clip-rule', 3089 | 'color', 3090 | 'color-interpolation', 3091 | 'color-interpolation-filters', 3092 | 'color-profile', 3093 | 'color-rendering', 3094 | 'cursor', 3095 | 'direction', 3096 | 'display', 3097 | 'dominant-baseline', 3098 | 'enable-background', 3099 | 'externalResourcesRequired', 3100 | 'fill', 3101 | 'fill-opacity', 3102 | 'fill-rule', 3103 | 'filter', 3104 | 'flood-color', 3105 | 'flood-opacity', 3106 | 'focusHighlight', 3107 | 'focusable', 3108 | 'font-family', 3109 | 'font-size', 3110 | 'font-size-adjust', 3111 | 'font-stretch', 3112 | 'font-style', 3113 | 'font-variant', 3114 | 'font-weight', 3115 | 'glyph-orientation-horizontal', 3116 | 'glyph-orientation-vertical', 3117 | 'image-rendering', 3118 | 'kerning', 3119 | 'letter-spacing', 3120 | 'lighting-color', 3121 | 'marker-end', 3122 | 'marker-mid', 3123 | 'marker-start', 3124 | 'mask', 3125 | 'nav-down', 3126 | 'nav-down-left', 3127 | 'nav-down-right', 3128 | 'nav-left', 3129 | 'nav-next', 3130 | 'nav-prev', 3131 | 'nav-right', 3132 | 'nav-up', 3133 | 'nav-up-left', 3134 | 'nav-up-right', 3135 | 'opacity', 3136 | 'overflow', 3137 | 'pathLength', 3138 | 'pointer-events', 3139 | 'points', 3140 | 'requiredExtensions', 3141 | 'requiredFeatures', 3142 | 'requiredFonts', 3143 | 'requiredFormats', 3144 | 'shape-rendering', 3145 | 'stop-color', 3146 | 'stop-opacity', 3147 | 'stroke', 3148 | 'stroke-dasharray', 3149 | 'stroke-dashoffset', 3150 | 'stroke-linecap', 3151 | 'stroke-linejoin', 3152 | 'stroke-miterlimit', 3153 | 'stroke-opacity', 3154 | 'stroke-width', 3155 | 'systemLanguage', 3156 | 'text-anchor', 3157 | 'text-decoration', 3158 | 'text-rendering', 3159 | 'transform', 3160 | 'unicode-bidi', 3161 | 'visibility', 3162 | 'word-spacing', 3163 | 'writing-mode' 3164 | ], 3165 | polyline: [ 3166 | 'alignment-baseline', 3167 | 'baseline-shift', 3168 | 'clip', 3169 | 'clip-path', 3170 | 'clip-rule', 3171 | 'color', 3172 | 'color-interpolation', 3173 | 'color-interpolation-filters', 3174 | 'color-profile', 3175 | 'color-rendering', 3176 | 'cursor', 3177 | 'direction', 3178 | 'display', 3179 | 'dominant-baseline', 3180 | 'enable-background', 3181 | 'externalResourcesRequired', 3182 | 'fill', 3183 | 'fill-opacity', 3184 | 'fill-rule', 3185 | 'filter', 3186 | 'flood-color', 3187 | 'flood-opacity', 3188 | 'focusHighlight', 3189 | 'focusable', 3190 | 'font-family', 3191 | 'font-size', 3192 | 'font-size-adjust', 3193 | 'font-stretch', 3194 | 'font-style', 3195 | 'font-variant', 3196 | 'font-weight', 3197 | 'glyph-orientation-horizontal', 3198 | 'glyph-orientation-vertical', 3199 | 'image-rendering', 3200 | 'kerning', 3201 | 'letter-spacing', 3202 | 'lighting-color', 3203 | 'marker-end', 3204 | 'marker-mid', 3205 | 'marker-start', 3206 | 'mask', 3207 | 'nav-down', 3208 | 'nav-down-left', 3209 | 'nav-down-right', 3210 | 'nav-left', 3211 | 'nav-next', 3212 | 'nav-prev', 3213 | 'nav-right', 3214 | 'nav-up', 3215 | 'nav-up-left', 3216 | 'nav-up-right', 3217 | 'opacity', 3218 | 'overflow', 3219 | 'pathLength', 3220 | 'pointer-events', 3221 | 'points', 3222 | 'requiredExtensions', 3223 | 'requiredFeatures', 3224 | 'requiredFonts', 3225 | 'requiredFormats', 3226 | 'shape-rendering', 3227 | 'stop-color', 3228 | 'stop-opacity', 3229 | 'stroke', 3230 | 'stroke-dasharray', 3231 | 'stroke-dashoffset', 3232 | 'stroke-linecap', 3233 | 'stroke-linejoin', 3234 | 'stroke-miterlimit', 3235 | 'stroke-opacity', 3236 | 'stroke-width', 3237 | 'systemLanguage', 3238 | 'text-anchor', 3239 | 'text-decoration', 3240 | 'text-rendering', 3241 | 'transform', 3242 | 'unicode-bidi', 3243 | 'visibility', 3244 | 'word-spacing', 3245 | 'writing-mode' 3246 | ], 3247 | prefetch: [ 3248 | 'bandwidth', 3249 | 'mediaCharacterEncoding', 3250 | 'mediaContentEncodings', 3251 | 'mediaSize', 3252 | 'mediaTime' 3253 | ], 3254 | radialGradient: [ 3255 | 'alignment-baseline', 3256 | 'baseline-shift', 3257 | 'clip', 3258 | 'clip-path', 3259 | 'clip-rule', 3260 | 'color', 3261 | 'color-interpolation', 3262 | 'color-interpolation-filters', 3263 | 'color-profile', 3264 | 'color-rendering', 3265 | 'cursor', 3266 | 'cx', 3267 | 'cy', 3268 | 'direction', 3269 | 'display', 3270 | 'dominant-baseline', 3271 | 'enable-background', 3272 | 'externalResourcesRequired', 3273 | 'fill', 3274 | 'fill-opacity', 3275 | 'fill-rule', 3276 | 'filter', 3277 | 'flood-color', 3278 | 'flood-opacity', 3279 | 'font-family', 3280 | 'font-size', 3281 | 'font-size-adjust', 3282 | 'font-stretch', 3283 | 'font-style', 3284 | 'font-variant', 3285 | 'font-weight', 3286 | 'fr', 3287 | 'fx', 3288 | 'fy', 3289 | 'glyph-orientation-horizontal', 3290 | 'glyph-orientation-vertical', 3291 | 'gradientTransform', 3292 | 'gradientUnits', 3293 | 'href', 3294 | 'image-rendering', 3295 | 'kerning', 3296 | 'letter-spacing', 3297 | 'lighting-color', 3298 | 'marker-end', 3299 | 'marker-mid', 3300 | 'marker-start', 3301 | 'mask', 3302 | 'opacity', 3303 | 'overflow', 3304 | 'pointer-events', 3305 | 'r', 3306 | 'shape-rendering', 3307 | 'spreadMethod', 3308 | 'stop-color', 3309 | 'stop-opacity', 3310 | 'stroke', 3311 | 'stroke-dasharray', 3312 | 'stroke-dashoffset', 3313 | 'stroke-linecap', 3314 | 'stroke-linejoin', 3315 | 'stroke-miterlimit', 3316 | 'stroke-opacity', 3317 | 'stroke-width', 3318 | 'text-anchor', 3319 | 'text-decoration', 3320 | 'text-rendering', 3321 | 'unicode-bidi', 3322 | 'visibility', 3323 | 'word-spacing', 3324 | 'writing-mode' 3325 | ], 3326 | rect: [ 3327 | 'alignment-baseline', 3328 | 'baseline-shift', 3329 | 'clip', 3330 | 'clip-path', 3331 | 'clip-rule', 3332 | 'color', 3333 | 'color-interpolation', 3334 | 'color-interpolation-filters', 3335 | 'color-profile', 3336 | 'color-rendering', 3337 | 'cursor', 3338 | 'direction', 3339 | 'display', 3340 | 'dominant-baseline', 3341 | 'enable-background', 3342 | 'externalResourcesRequired', 3343 | 'fill', 3344 | 'fill-opacity', 3345 | 'fill-rule', 3346 | 'filter', 3347 | 'flood-color', 3348 | 'flood-opacity', 3349 | 'focusHighlight', 3350 | 'focusable', 3351 | 'font-family', 3352 | 'font-size', 3353 | 'font-size-adjust', 3354 | 'font-stretch', 3355 | 'font-style', 3356 | 'font-variant', 3357 | 'font-weight', 3358 | 'glyph-orientation-horizontal', 3359 | 'glyph-orientation-vertical', 3360 | 'height', 3361 | 'image-rendering', 3362 | 'kerning', 3363 | 'letter-spacing', 3364 | 'lighting-color', 3365 | 'marker-end', 3366 | 'marker-mid', 3367 | 'marker-start', 3368 | 'mask', 3369 | 'nav-down', 3370 | 'nav-down-left', 3371 | 'nav-down-right', 3372 | 'nav-left', 3373 | 'nav-next', 3374 | 'nav-prev', 3375 | 'nav-right', 3376 | 'nav-up', 3377 | 'nav-up-left', 3378 | 'nav-up-right', 3379 | 'opacity', 3380 | 'overflow', 3381 | 'pathLength', 3382 | 'pointer-events', 3383 | 'requiredExtensions', 3384 | 'requiredFeatures', 3385 | 'requiredFonts', 3386 | 'requiredFormats', 3387 | 'rx', 3388 | 'ry', 3389 | 'shape-rendering', 3390 | 'stop-color', 3391 | 'stop-opacity', 3392 | 'stroke', 3393 | 'stroke-dasharray', 3394 | 'stroke-dashoffset', 3395 | 'stroke-linecap', 3396 | 'stroke-linejoin', 3397 | 'stroke-miterlimit', 3398 | 'stroke-opacity', 3399 | 'stroke-width', 3400 | 'systemLanguage', 3401 | 'text-anchor', 3402 | 'text-decoration', 3403 | 'text-rendering', 3404 | 'transform', 3405 | 'unicode-bidi', 3406 | 'visibility', 3407 | 'width', 3408 | 'word-spacing', 3409 | 'writing-mode', 3410 | 'x', 3411 | 'y' 3412 | ], 3413 | script: ['crossorigin', 'externalResourcesRequired', 'href', 'type'], 3414 | set: [ 3415 | 'attributeName', 3416 | 'attributeType', 3417 | 'begin', 3418 | 'dur', 3419 | 'end', 3420 | 'externalResourcesRequired', 3421 | 'fill', 3422 | 'href', 3423 | 'max', 3424 | 'min', 3425 | 'repeatCount', 3426 | 'repeatDur', 3427 | 'requiredExtensions', 3428 | 'requiredFeatures', 3429 | 'requiredFonts', 3430 | 'requiredFormats', 3431 | 'restart', 3432 | 'systemLanguage', 3433 | 'to' 3434 | ], 3435 | solidColor: [], 3436 | stop: [ 3437 | 'alignment-baseline', 3438 | 'baseline-shift', 3439 | 'clip', 3440 | 'clip-path', 3441 | 'clip-rule', 3442 | 'color', 3443 | 'color-interpolation', 3444 | 'color-interpolation-filters', 3445 | 'color-profile', 3446 | 'color-rendering', 3447 | 'cursor', 3448 | 'direction', 3449 | 'display', 3450 | 'dominant-baseline', 3451 | 'enable-background', 3452 | 'fill', 3453 | 'fill-opacity', 3454 | 'fill-rule', 3455 | 'filter', 3456 | 'flood-color', 3457 | 'flood-opacity', 3458 | 'font-family', 3459 | 'font-size', 3460 | 'font-size-adjust', 3461 | 'font-stretch', 3462 | 'font-style', 3463 | 'font-variant', 3464 | 'font-weight', 3465 | 'glyph-orientation-horizontal', 3466 | 'glyph-orientation-vertical', 3467 | 'image-rendering', 3468 | 'kerning', 3469 | 'letter-spacing', 3470 | 'lighting-color', 3471 | 'marker-end', 3472 | 'marker-mid', 3473 | 'marker-start', 3474 | 'mask', 3475 | 'offset', 3476 | 'opacity', 3477 | 'overflow', 3478 | 'pointer-events', 3479 | 'shape-rendering', 3480 | 'stop-color', 3481 | 'stop-opacity', 3482 | 'stroke', 3483 | 'stroke-dasharray', 3484 | 'stroke-dashoffset', 3485 | 'stroke-linecap', 3486 | 'stroke-linejoin', 3487 | 'stroke-miterlimit', 3488 | 'stroke-opacity', 3489 | 'stroke-width', 3490 | 'text-anchor', 3491 | 'text-decoration', 3492 | 'text-rendering', 3493 | 'unicode-bidi', 3494 | 'visibility', 3495 | 'word-spacing', 3496 | 'writing-mode' 3497 | ], 3498 | style: ['media', 'title', 'type'], 3499 | svg: [ 3500 | 'alignment-baseline', 3501 | 'baseProfile', 3502 | 'baseline-shift', 3503 | 'clip', 3504 | 'clip-path', 3505 | 'clip-rule', 3506 | 'color', 3507 | 'color-interpolation', 3508 | 'color-interpolation-filters', 3509 | 'color-profile', 3510 | 'color-rendering', 3511 | 'contentScriptType', 3512 | 'contentStyleType', 3513 | 'cursor', 3514 | 'direction', 3515 | 'display', 3516 | 'dominant-baseline', 3517 | 'enable-background', 3518 | 'externalResourcesRequired', 3519 | 'fill', 3520 | 'fill-opacity', 3521 | 'fill-rule', 3522 | 'filter', 3523 | 'flood-color', 3524 | 'flood-opacity', 3525 | 'focusHighlight', 3526 | 'focusable', 3527 | 'font-family', 3528 | 'font-size', 3529 | 'font-size-adjust', 3530 | 'font-stretch', 3531 | 'font-style', 3532 | 'font-variant', 3533 | 'font-weight', 3534 | 'glyph-orientation-horizontal', 3535 | 'glyph-orientation-vertical', 3536 | 'height', 3537 | 'image-rendering', 3538 | 'kerning', 3539 | 'letter-spacing', 3540 | 'lighting-color', 3541 | 'marker-end', 3542 | 'marker-mid', 3543 | 'marker-start', 3544 | 'mask', 3545 | 'nav-down', 3546 | 'nav-down-left', 3547 | 'nav-down-right', 3548 | 'nav-left', 3549 | 'nav-next', 3550 | 'nav-prev', 3551 | 'nav-right', 3552 | 'nav-up', 3553 | 'nav-up-left', 3554 | 'nav-up-right', 3555 | 'opacity', 3556 | 'overflow', 3557 | 'playbackOrder', 3558 | 'playbackorder', 3559 | 'pointer-events', 3560 | 'preserveAspectRatio', 3561 | 'requiredExtensions', 3562 | 'requiredFeatures', 3563 | 'shape-rendering', 3564 | 'snapshotTime', 3565 | 'stop-color', 3566 | 'stop-opacity', 3567 | 'stroke', 3568 | 'stroke-dasharray', 3569 | 'stroke-dashoffset', 3570 | 'stroke-linecap', 3571 | 'stroke-linejoin', 3572 | 'stroke-miterlimit', 3573 | 'stroke-opacity', 3574 | 'stroke-width', 3575 | 'syncBehaviorDefault', 3576 | 'syncToleranceDefault', 3577 | 'systemLanguage', 3578 | 'text-anchor', 3579 | 'text-decoration', 3580 | 'text-rendering', 3581 | 'timelineBegin', 3582 | 'timelinebegin', 3583 | 'transform', 3584 | 'unicode-bidi', 3585 | 'version', 3586 | 'viewBox', 3587 | 'visibility', 3588 | 'width', 3589 | 'word-spacing', 3590 | 'writing-mode', 3591 | 'x', 3592 | 'y', 3593 | 'zoomAndPan' 3594 | ], 3595 | switch: [ 3596 | 'alignment-baseline', 3597 | 'baseline-shift', 3598 | 'clip', 3599 | 'clip-path', 3600 | 'clip-rule', 3601 | 'color', 3602 | 'color-interpolation', 3603 | 'color-interpolation-filters', 3604 | 'color-profile', 3605 | 'color-rendering', 3606 | 'cursor', 3607 | 'direction', 3608 | 'display', 3609 | 'dominant-baseline', 3610 | 'enable-background', 3611 | 'externalResourcesRequired', 3612 | 'fill', 3613 | 'fill-opacity', 3614 | 'fill-rule', 3615 | 'filter', 3616 | 'flood-color', 3617 | 'flood-opacity', 3618 | 'focusHighlight', 3619 | 'focusable', 3620 | 'font-family', 3621 | 'font-size', 3622 | 'font-size-adjust', 3623 | 'font-stretch', 3624 | 'font-style', 3625 | 'font-variant', 3626 | 'font-weight', 3627 | 'glyph-orientation-horizontal', 3628 | 'glyph-orientation-vertical', 3629 | 'image-rendering', 3630 | 'kerning', 3631 | 'letter-spacing', 3632 | 'lighting-color', 3633 | 'marker-end', 3634 | 'marker-mid', 3635 | 'marker-start', 3636 | 'mask', 3637 | 'nav-down', 3638 | 'nav-down-left', 3639 | 'nav-down-right', 3640 | 'nav-left', 3641 | 'nav-next', 3642 | 'nav-prev', 3643 | 'nav-right', 3644 | 'nav-up', 3645 | 'nav-up-left', 3646 | 'nav-up-right', 3647 | 'opacity', 3648 | 'overflow', 3649 | 'pointer-events', 3650 | 'requiredExtensions', 3651 | 'requiredFeatures', 3652 | 'requiredFonts', 3653 | 'requiredFormats', 3654 | 'shape-rendering', 3655 | 'stop-color', 3656 | 'stop-opacity', 3657 | 'stroke', 3658 | 'stroke-dasharray', 3659 | 'stroke-dashoffset', 3660 | 'stroke-linecap', 3661 | 'stroke-linejoin', 3662 | 'stroke-miterlimit', 3663 | 'stroke-opacity', 3664 | 'stroke-width', 3665 | 'systemLanguage', 3666 | 'text-anchor', 3667 | 'text-decoration', 3668 | 'text-rendering', 3669 | 'transform', 3670 | 'unicode-bidi', 3671 | 'visibility', 3672 | 'word-spacing', 3673 | 'writing-mode' 3674 | ], 3675 | symbol: [ 3676 | 'alignment-baseline', 3677 | 'baseline-shift', 3678 | 'clip', 3679 | 'clip-path', 3680 | 'clip-rule', 3681 | 'color', 3682 | 'color-interpolation', 3683 | 'color-interpolation-filters', 3684 | 'color-profile', 3685 | 'color-rendering', 3686 | 'cursor', 3687 | 'direction', 3688 | 'display', 3689 | 'dominant-baseline', 3690 | 'enable-background', 3691 | 'externalResourcesRequired', 3692 | 'fill', 3693 | 'fill-opacity', 3694 | 'fill-rule', 3695 | 'filter', 3696 | 'flood-color', 3697 | 'flood-opacity', 3698 | 'font-family', 3699 | 'font-size', 3700 | 'font-size-adjust', 3701 | 'font-stretch', 3702 | 'font-style', 3703 | 'font-variant', 3704 | 'font-weight', 3705 | 'glyph-orientation-horizontal', 3706 | 'glyph-orientation-vertical', 3707 | 'height', 3708 | 'image-rendering', 3709 | 'kerning', 3710 | 'letter-spacing', 3711 | 'lighting-color', 3712 | 'marker-end', 3713 | 'marker-mid', 3714 | 'marker-start', 3715 | 'mask', 3716 | 'opacity', 3717 | 'overflow', 3718 | 'pointer-events', 3719 | 'preserveAspectRatio', 3720 | 'refX', 3721 | 'refY', 3722 | 'shape-rendering', 3723 | 'stop-color', 3724 | 'stop-opacity', 3725 | 'stroke', 3726 | 'stroke-dasharray', 3727 | 'stroke-dashoffset', 3728 | 'stroke-linecap', 3729 | 'stroke-linejoin', 3730 | 'stroke-miterlimit', 3731 | 'stroke-opacity', 3732 | 'stroke-width', 3733 | 'text-anchor', 3734 | 'text-decoration', 3735 | 'text-rendering', 3736 | 'unicode-bidi', 3737 | 'viewBox', 3738 | 'visibility', 3739 | 'width', 3740 | 'word-spacing', 3741 | 'writing-mode', 3742 | 'x', 3743 | 'y' 3744 | ], 3745 | tbreak: [ 3746 | 'requiredExtensions', 3747 | 'requiredFeatures', 3748 | 'requiredFonts', 3749 | 'requiredFormats', 3750 | 'systemLanguage' 3751 | ], 3752 | text: [ 3753 | 'alignment-baseline', 3754 | 'baseline-shift', 3755 | 'clip', 3756 | 'clip-path', 3757 | 'clip-rule', 3758 | 'color', 3759 | 'color-interpolation', 3760 | 'color-interpolation-filters', 3761 | 'color-profile', 3762 | 'color-rendering', 3763 | 'cursor', 3764 | 'direction', 3765 | 'display', 3766 | 'dominant-baseline', 3767 | 'dx', 3768 | 'dy', 3769 | 'editable', 3770 | 'enable-background', 3771 | 'externalResourcesRequired', 3772 | 'fill', 3773 | 'fill-opacity', 3774 | 'fill-rule', 3775 | 'filter', 3776 | 'flood-color', 3777 | 'flood-opacity', 3778 | 'focusHighlight', 3779 | 'focusable', 3780 | 'font-family', 3781 | 'font-size', 3782 | 'font-size-adjust', 3783 | 'font-stretch', 3784 | 'font-style', 3785 | 'font-variant', 3786 | 'font-weight', 3787 | 'glyph-orientation-horizontal', 3788 | 'glyph-orientation-vertical', 3789 | 'image-rendering', 3790 | 'kerning', 3791 | 'lengthAdjust', 3792 | 'letter-spacing', 3793 | 'lighting-color', 3794 | 'marker-end', 3795 | 'marker-mid', 3796 | 'marker-start', 3797 | 'mask', 3798 | 'nav-down', 3799 | 'nav-down-left', 3800 | 'nav-down-right', 3801 | 'nav-left', 3802 | 'nav-next', 3803 | 'nav-prev', 3804 | 'nav-right', 3805 | 'nav-up', 3806 | 'nav-up-left', 3807 | 'nav-up-right', 3808 | 'opacity', 3809 | 'overflow', 3810 | 'pointer-events', 3811 | 'requiredExtensions', 3812 | 'requiredFeatures', 3813 | 'requiredFonts', 3814 | 'requiredFormats', 3815 | 'rotate', 3816 | 'shape-rendering', 3817 | 'stop-color', 3818 | 'stop-opacity', 3819 | 'stroke', 3820 | 'stroke-dasharray', 3821 | 'stroke-dashoffset', 3822 | 'stroke-linecap', 3823 | 'stroke-linejoin', 3824 | 'stroke-miterlimit', 3825 | 'stroke-opacity', 3826 | 'stroke-width', 3827 | 'systemLanguage', 3828 | 'text-anchor', 3829 | 'text-decoration', 3830 | 'text-rendering', 3831 | 'textLength', 3832 | 'transform', 3833 | 'unicode-bidi', 3834 | 'visibility', 3835 | 'word-spacing', 3836 | 'writing-mode', 3837 | 'x', 3838 | 'y' 3839 | ], 3840 | textArea: [ 3841 | 'editable', 3842 | 'focusHighlight', 3843 | 'focusable', 3844 | 'height', 3845 | 'nav-down', 3846 | 'nav-down-left', 3847 | 'nav-down-right', 3848 | 'nav-left', 3849 | 'nav-next', 3850 | 'nav-prev', 3851 | 'nav-right', 3852 | 'nav-up', 3853 | 'nav-up-left', 3854 | 'nav-up-right', 3855 | 'requiredExtensions', 3856 | 'requiredFeatures', 3857 | 'requiredFonts', 3858 | 'requiredFormats', 3859 | 'systemLanguage', 3860 | 'transform', 3861 | 'width', 3862 | 'x', 3863 | 'y' 3864 | ], 3865 | textPath: [ 3866 | 'alignment-baseline', 3867 | 'baseline-shift', 3868 | 'clip', 3869 | 'clip-path', 3870 | 'clip-rule', 3871 | 'color', 3872 | 'color-interpolation', 3873 | 'color-interpolation-filters', 3874 | 'color-profile', 3875 | 'color-rendering', 3876 | 'cursor', 3877 | 'direction', 3878 | 'display', 3879 | 'dominant-baseline', 3880 | 'enable-background', 3881 | 'externalResourcesRequired', 3882 | 'fill', 3883 | 'fill-opacity', 3884 | 'fill-rule', 3885 | 'filter', 3886 | 'flood-color', 3887 | 'flood-opacity', 3888 | 'font-family', 3889 | 'font-size', 3890 | 'font-size-adjust', 3891 | 'font-stretch', 3892 | 'font-style', 3893 | 'font-variant', 3894 | 'font-weight', 3895 | 'glyph-orientation-horizontal', 3896 | 'glyph-orientation-vertical', 3897 | 'href', 3898 | 'image-rendering', 3899 | 'kerning', 3900 | 'lengthAdjust', 3901 | 'letter-spacing', 3902 | 'lighting-color', 3903 | 'marker-end', 3904 | 'marker-mid', 3905 | 'marker-start', 3906 | 'mask', 3907 | 'method', 3908 | 'opacity', 3909 | 'overflow', 3910 | 'path', 3911 | 'pointer-events', 3912 | 'requiredExtensions', 3913 | 'requiredFeatures', 3914 | 'shape-rendering', 3915 | 'side', 3916 | 'spacing', 3917 | 'startOffset', 3918 | 'stop-color', 3919 | 'stop-opacity', 3920 | 'stroke', 3921 | 'stroke-dasharray', 3922 | 'stroke-dashoffset', 3923 | 'stroke-linecap', 3924 | 'stroke-linejoin', 3925 | 'stroke-miterlimit', 3926 | 'stroke-opacity', 3927 | 'stroke-width', 3928 | 'systemLanguage', 3929 | 'text-anchor', 3930 | 'text-decoration', 3931 | 'text-rendering', 3932 | 'textLength', 3933 | 'unicode-bidi', 3934 | 'visibility', 3935 | 'word-spacing', 3936 | 'writing-mode' 3937 | ], 3938 | title: [ 3939 | 'requiredExtensions', 3940 | 'requiredFeatures', 3941 | 'requiredFonts', 3942 | 'requiredFormats', 3943 | 'systemLanguage' 3944 | ], 3945 | tref: [ 3946 | 'alignment-baseline', 3947 | 'baseline-shift', 3948 | 'clip', 3949 | 'clip-path', 3950 | 'clip-rule', 3951 | 'color', 3952 | 'color-interpolation', 3953 | 'color-interpolation-filters', 3954 | 'color-profile', 3955 | 'color-rendering', 3956 | 'cursor', 3957 | 'direction', 3958 | 'display', 3959 | 'dominant-baseline', 3960 | 'dx', 3961 | 'dy', 3962 | 'enable-background', 3963 | 'externalResourcesRequired', 3964 | 'fill', 3965 | 'fill-opacity', 3966 | 'fill-rule', 3967 | 'filter', 3968 | 'flood-color', 3969 | 'flood-opacity', 3970 | 'font-family', 3971 | 'font-size', 3972 | 'font-size-adjust', 3973 | 'font-stretch', 3974 | 'font-style', 3975 | 'font-variant', 3976 | 'font-weight', 3977 | 'glyph-orientation-horizontal', 3978 | 'glyph-orientation-vertical', 3979 | 'image-rendering', 3980 | 'kerning', 3981 | 'lengthAdjust', 3982 | 'letter-spacing', 3983 | 'lighting-color', 3984 | 'marker-end', 3985 | 'marker-mid', 3986 | 'marker-start', 3987 | 'mask', 3988 | 'opacity', 3989 | 'overflow', 3990 | 'pointer-events', 3991 | 'requiredExtensions', 3992 | 'requiredFeatures', 3993 | 'rotate', 3994 | 'shape-rendering', 3995 | 'stop-color', 3996 | 'stop-opacity', 3997 | 'stroke', 3998 | 'stroke-dasharray', 3999 | 'stroke-dashoffset', 4000 | 'stroke-linecap', 4001 | 'stroke-linejoin', 4002 | 'stroke-miterlimit', 4003 | 'stroke-opacity', 4004 | 'stroke-width', 4005 | 'systemLanguage', 4006 | 'text-anchor', 4007 | 'text-decoration', 4008 | 'text-rendering', 4009 | 'textLength', 4010 | 'unicode-bidi', 4011 | 'visibility', 4012 | 'word-spacing', 4013 | 'writing-mode', 4014 | 'x', 4015 | 'y' 4016 | ], 4017 | tspan: [ 4018 | 'alignment-baseline', 4019 | 'baseline-shift', 4020 | 'clip', 4021 | 'clip-path', 4022 | 'clip-rule', 4023 | 'color', 4024 | 'color-interpolation', 4025 | 'color-interpolation-filters', 4026 | 'color-profile', 4027 | 'color-rendering', 4028 | 'cursor', 4029 | 'direction', 4030 | 'display', 4031 | 'dominant-baseline', 4032 | 'dx', 4033 | 'dy', 4034 | 'enable-background', 4035 | 'externalResourcesRequired', 4036 | 'fill', 4037 | 'fill-opacity', 4038 | 'fill-rule', 4039 | 'filter', 4040 | 'flood-color', 4041 | 'flood-opacity', 4042 | 'focusHighlight', 4043 | 'focusable', 4044 | 'font-family', 4045 | 'font-size', 4046 | 'font-size-adjust', 4047 | 'font-stretch', 4048 | 'font-style', 4049 | 'font-variant', 4050 | 'font-weight', 4051 | 'glyph-orientation-horizontal', 4052 | 'glyph-orientation-vertical', 4053 | 'image-rendering', 4054 | 'kerning', 4055 | 'lengthAdjust', 4056 | 'letter-spacing', 4057 | 'lighting-color', 4058 | 'marker-end', 4059 | 'marker-mid', 4060 | 'marker-start', 4061 | 'mask', 4062 | 'nav-down', 4063 | 'nav-down-left', 4064 | 'nav-down-right', 4065 | 'nav-left', 4066 | 'nav-next', 4067 | 'nav-prev', 4068 | 'nav-right', 4069 | 'nav-up', 4070 | 'nav-up-left', 4071 | 'nav-up-right', 4072 | 'opacity', 4073 | 'overflow', 4074 | 'pointer-events', 4075 | 'requiredExtensions', 4076 | 'requiredFeatures', 4077 | 'requiredFonts', 4078 | 'requiredFormats', 4079 | 'rotate', 4080 | 'shape-rendering', 4081 | 'stop-color', 4082 | 'stop-opacity', 4083 | 'stroke', 4084 | 'stroke-dasharray', 4085 | 'stroke-dashoffset', 4086 | 'stroke-linecap', 4087 | 'stroke-linejoin', 4088 | 'stroke-miterlimit', 4089 | 'stroke-opacity', 4090 | 'stroke-width', 4091 | 'systemLanguage', 4092 | 'text-anchor', 4093 | 'text-decoration', 4094 | 'text-rendering', 4095 | 'textLength', 4096 | 'unicode-bidi', 4097 | 'visibility', 4098 | 'word-spacing', 4099 | 'writing-mode', 4100 | 'x', 4101 | 'y' 4102 | ], 4103 | unknown: ['requiredExtensions', 'systemLanguage'], 4104 | use: [ 4105 | 'alignment-baseline', 4106 | 'baseline-shift', 4107 | 'clip', 4108 | 'clip-path', 4109 | 'clip-rule', 4110 | 'color', 4111 | 'color-interpolation', 4112 | 'color-interpolation-filters', 4113 | 'color-profile', 4114 | 'color-rendering', 4115 | 'cursor', 4116 | 'direction', 4117 | 'display', 4118 | 'dominant-baseline', 4119 | 'enable-background', 4120 | 'externalResourcesRequired', 4121 | 'fill', 4122 | 'fill-opacity', 4123 | 'fill-rule', 4124 | 'filter', 4125 | 'flood-color', 4126 | 'flood-opacity', 4127 | 'focusHighlight', 4128 | 'focusable', 4129 | 'font-family', 4130 | 'font-size', 4131 | 'font-size-adjust', 4132 | 'font-stretch', 4133 | 'font-style', 4134 | 'font-variant', 4135 | 'font-weight', 4136 | 'glyph-orientation-horizontal', 4137 | 'glyph-orientation-vertical', 4138 | 'height', 4139 | 'href', 4140 | 'image-rendering', 4141 | 'kerning', 4142 | 'letter-spacing', 4143 | 'lighting-color', 4144 | 'marker-end', 4145 | 'marker-mid', 4146 | 'marker-start', 4147 | 'mask', 4148 | 'nav-down', 4149 | 'nav-down-left', 4150 | 'nav-down-right', 4151 | 'nav-left', 4152 | 'nav-next', 4153 | 'nav-prev', 4154 | 'nav-right', 4155 | 'nav-up', 4156 | 'nav-up-left', 4157 | 'nav-up-right', 4158 | 'opacity', 4159 | 'overflow', 4160 | 'pointer-events', 4161 | 'requiredExtensions', 4162 | 'requiredFeatures', 4163 | 'requiredFonts', 4164 | 'requiredFormats', 4165 | 'shape-rendering', 4166 | 'stop-color', 4167 | 'stop-opacity', 4168 | 'stroke', 4169 | 'stroke-dasharray', 4170 | 'stroke-dashoffset', 4171 | 'stroke-linecap', 4172 | 'stroke-linejoin', 4173 | 'stroke-miterlimit', 4174 | 'stroke-opacity', 4175 | 'stroke-width', 4176 | 'systemLanguage', 4177 | 'text-anchor', 4178 | 'text-decoration', 4179 | 'text-rendering', 4180 | 'transform', 4181 | 'unicode-bidi', 4182 | 'visibility', 4183 | 'width', 4184 | 'word-spacing', 4185 | 'writing-mode', 4186 | 'x', 4187 | 'y' 4188 | ], 4189 | video: [ 4190 | 'begin', 4191 | 'dur', 4192 | 'end', 4193 | 'externalResourcesRequired', 4194 | 'fill', 4195 | 'focusHighlight', 4196 | 'focusable', 4197 | 'height', 4198 | 'initialVisibility', 4199 | 'max', 4200 | 'min', 4201 | 'nav-down', 4202 | 'nav-down-left', 4203 | 'nav-down-right', 4204 | 'nav-left', 4205 | 'nav-next', 4206 | 'nav-prev', 4207 | 'nav-right', 4208 | 'nav-up', 4209 | 'nav-up-left', 4210 | 'nav-up-right', 4211 | 'overlay', 4212 | 'preserveAspectRatio', 4213 | 'repeatCount', 4214 | 'repeatDur', 4215 | 'requiredExtensions', 4216 | 'requiredFeatures', 4217 | 'requiredFonts', 4218 | 'requiredFormats', 4219 | 'restart', 4220 | 'syncBehavior', 4221 | 'syncMaster', 4222 | 'syncTolerance', 4223 | 'systemLanguage', 4224 | 'transform', 4225 | 'transformBehavior', 4226 | 'type', 4227 | 'width', 4228 | 'x', 4229 | 'y' 4230 | ], 4231 | view: [ 4232 | 'externalResourcesRequired', 4233 | 'preserveAspectRatio', 4234 | 'viewBox', 4235 | 'viewTarget', 4236 | 'zoomAndPan' 4237 | ], 4238 | vkern: ['g1', 'g2', 'k', 'u1', 'u2'] 4239 | } 4240 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2017 Titus Wormer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svg-element-attributes", 3 | "version": "2.1.0", 4 | "description": "Map of SVG elements to allowed attributes", 5 | "license": "MIT", 6 | "keywords": [ 7 | "attribute", 8 | "element", 9 | "name", 10 | "property", 11 | "svg", 12 | "tag", 13 | "w3c" 14 | ], 15 | "repository": "wooorm/svg-element-attributes", 16 | "bugs": "https://github.com/wooorm/svg-element-attributes/issues", 17 | "funding": { 18 | "type": "github", 19 | "url": "https://github.com/sponsors/wooorm" 20 | }, 21 | "author": "Titus Wormer (https://wooorm.com)", 22 | "contributors": [ 23 | "Titus Wormer (https://wooorm.com)" 24 | ], 25 | "sideEffects": false, 26 | "type": "module", 27 | "main": "index.js", 28 | "types": "index.d.ts", 29 | "files": [ 30 | "index.d.ts", 31 | "index.js" 32 | ], 33 | "devDependencies": { 34 | "@types/node": "^20.0.0", 35 | "aria-attributes": "^2.0.0", 36 | "c8": "^9.0.0", 37 | "hast-util-from-html": "^2.0.0", 38 | "hast-util-is-event-handler": "^3.0.0", 39 | "hast-util-select": "^6.0.0", 40 | "hast-util-to-string": "^3.0.0", 41 | "prettier": "^3.0.0", 42 | "remark-cli": "^11.0.0", 43 | "remark-preset-wooorm": "^9.0.0", 44 | "type-coverage": "^2.0.0", 45 | "typescript": "^5.0.0", 46 | "undici": "^6.0.0", 47 | "xo": "^0.56.0" 48 | }, 49 | "scripts": { 50 | "build": "tsc --build --clean && tsc --build && type-coverage", 51 | "crawl": "node --conditions development crawl.js", 52 | "format": "remark . --frail --output --quiet && prettier . --log-level warn --write && xo --fix", 53 | "prepack": "npm run build && npm run format", 54 | "test-api": "node --conditions development test.js", 55 | "test-coverage": "c8 --100 --reporter lcov npm run test-api", 56 | "test": "npm run crawl && npm run build && npm run format && npm run test-coverage" 57 | }, 58 | "prettier": { 59 | "bracketSpacing": false, 60 | "semi": false, 61 | "singleQuote": true, 62 | "tabWidth": 2, 63 | "trailingComma": "none", 64 | "useTabs": false 65 | }, 66 | "remarkConfig": { 67 | "plugins": [ 68 | "remark-preset-wooorm" 69 | ] 70 | }, 71 | "typeCoverage": { 72 | "atLeast": 100, 73 | "detail": true, 74 | "strict": true 75 | }, 76 | "xo": { 77 | "prettier": true, 78 | "overrides": [ 79 | { 80 | "files": [ 81 | "test.js" 82 | ], 83 | "rules": { 84 | "no-await-in-loop": "off" 85 | } 86 | } 87 | ] 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # svg-element-attributes 2 | 3 | [![Build][badge-build-image]][badge-build-url] 4 | [![Coverage][badge-coverage-image]][badge-coverage-url] 5 | [![Downloads][badge-downloads-image]][badge-downloads-url] 6 | [![Size][badge-size-image]][badge-size-url] 7 | 8 | Map of SVG elements to allowed attributes. 9 | 10 | ## Contents 11 | 12 | * [What is this?](#what-is-this) 13 | * [When should I use this?](#when-should-i-use-this) 14 | * [Install](#install) 15 | * [Use](#use) 16 | * [API](#api) 17 | * [`svgElementAttributes`](#svgelementattributes) 18 | * [Compatibility](#compatibility) 19 | * [Security](#security) 20 | * [Related](#related) 21 | * [Contribute](#contribute) 22 | * [License](#license) 23 | 24 | ## What is this? 25 | 26 | This is a map of tag names to lists of allowed attributes. 27 | Global attributes are stored at the special tag name `*`. 28 | All attributes from [SVG 1.1][w3-svg-1.1], [SVG Tiny 1.2][w3-svg-1.2], and 29 | [SVG 2][w3-svg-2.0] are included. 30 | 31 | > 👉 **Note**: Includes deprecated attributes. 32 | 33 | > 👉 **Note**: ARIA (`role`, `aria-*`), event (`ev:event`, `on*`), or `xml:*` 34 | > and `xlink:*` attributes are not included. 35 | 36 | ## When should I use this? 37 | 38 | You can use this to figure out if certain attributes are allowed on certain 39 | SVG elements. 40 | 41 | ## Install 42 | 43 | This package is [ESM only][github-gist-esm]. 44 | In Node.js (version 16+), 45 | install with [npm][npm-install]: 46 | 47 | ```sh 48 | npm install svg-element-attributes 49 | ``` 50 | 51 | In Deno with [`esm.sh`][esm-sh]: 52 | 53 | ```js 54 | import {svgElementAttributes} from 'https://esm.sh/svg-element-attributes@2' 55 | ``` 56 | 57 | In browsers with [`esm.sh`][esm-sh]: 58 | 59 | ```html 60 | 63 | ``` 64 | 65 | ## Use 66 | 67 | ```js 68 | import {svgElementAttributes} from 'svg-element-attributes' 69 | 70 | console.log(svgElementAttributes['*']) 71 | console.log(svgElementAttributes.circle) 72 | ``` 73 | 74 | Yields: 75 | 76 | ```js 77 | [ 78 | 'about', 79 | 'class', 80 | 'content', 81 | 'datatype', 82 | 'id', 83 | 'lang', 84 | 'property', 85 | 'rel', 86 | 'resource', 87 | 'rev', 88 | 'tabindex', 89 | 'typeof' ] 90 | [ 91 | 'alignment-baseline', 92 | 'baseline-shift', 93 | 'clip', 94 | 'clip-path', 95 | 'clip-rule', 96 | // … 97 | 'transform', 98 | 'unicode-bidi', 99 | 'visibility', 100 | 'word-spacing', 101 | 'writing-mode' ] 102 | ``` 103 | 104 | ## API 105 | 106 | This package exports the identifier 107 | [`svgElementAttributes`][api-svg-element-attributes]. 108 | There is no default export. 109 | 110 | It exports no [TypeScript][] types. 111 | 112 | ### `svgElementAttributes` 113 | 114 | Map of SVG elements to allowed attributes (`Record>`). 115 | 116 | ## Compatibility 117 | 118 | This projects is compatible with maintained versions of Node.js. 119 | 120 | When we cut a new major release, 121 | we drop support for unmaintained versions of Node. 122 | This means we try to keep the current release line, 123 | `svg-element-attributes@2`, 124 | compatible with Node.js 12. 125 | 126 | ## Security 127 | 128 | This package is safe. 129 | 130 | ## Related 131 | 132 | * [`wooorm/web-namespaces`](https://github.com/wooorm/web-namespaces) 133 | — list of web namespaces 134 | * [`wooorm/html-tag-names`](https://github.com/wooorm/html-tag-names) 135 | — list of HTML tag names 136 | * [`wooorm/mathml-tag-names`](https://github.com/wooorm/mathml-tag-names) 137 | — list of MathML tag names 138 | * [`wooorm/svg-tag-names`](https://github.com/wooorm/svg-tag-names) 139 | — list of SVG tag names 140 | * [`wooorm/html-void-elements`](https://github.com/wooorm/html-void-elements) 141 | — list of void HTML tag names 142 | * [`wooorm/html-element-attributes`](https://github.com/wooorm/html-element-attributes) 143 | — map of HTML elements to attributes 144 | * [`wooorm/aria-attributes`](https://github.com/wooorm/aria-attributes) 145 | — list of ARIA attributes 146 | 147 | ## Contribute 148 | 149 | Yes please! 150 | See [How to Contribute to Open Source][open-source-guide-contribute]. 151 | 152 | ## License 153 | 154 | [MIT][file-license] © [Titus Wormer][wooorm] 155 | 156 | 157 | 158 | [api-svg-element-attributes]: #svgelementattributes 159 | 160 | [badge-build-image]: https://github.com/wooorm/svg-element-attributes/workflows/main/badge.svg 161 | 162 | [badge-build-url]: https://github.com/wooorm/svg-element-attributes/actions 163 | 164 | [badge-coverage-image]: https://img.shields.io/codecov/c/github/wooorm/svg-element-attributes.svg 165 | 166 | [badge-coverage-url]: https://codecov.io/github/wooorm/svg-element-attributes 167 | 168 | [badge-downloads-image]: https://img.shields.io/npm/dm/svg-element-attributes.svg 169 | 170 | [badge-downloads-url]: https://www.npmjs.com/package/svg-element-attributes 171 | 172 | [badge-size-image]: https://img.shields.io/bundlejs/size/svg-element-attributes 173 | 174 | [badge-size-url]: https://bundlejs.com/?q=svg-element-attributes 175 | 176 | [esm-sh]: https://esm.sh 177 | 178 | [file-license]: license 179 | 180 | [github-gist-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c 181 | 182 | [npm-install]: https://docs.npmjs.com/cli/install 183 | 184 | [open-source-guide-contribute]: https://opensource.guide/how-to-contribute/ 185 | 186 | [typescript]: https://www.typescriptlang.org 187 | 188 | [w3-svg-1.1]: https://www.w3.org/TR/SVG/attindex.html 189 | 190 | [w3-svg-1.2]: https://www.w3.org/TR/SVGTiny12/attributeTable.html 191 | 192 | [w3-svg-2.0]: https://www.w3.org/TR/SVG2/attindex.html 193 | 194 | [wooorm]: https://wooorm.com 195 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import assert from 'node:assert/strict' 2 | import test from 'node:test' 3 | import {svgElementAttributes} from './index.js' 4 | 5 | test('svgElementAttributes', async function (t) { 6 | await t.test('should expose the public api', async function () { 7 | assert.deepEqual(Object.keys(await import('./index.js')).sort(), [ 8 | 'svgElementAttributes' 9 | ]) 10 | }) 11 | 12 | await t.test('should be an `object`', async function () { 13 | assert.equal(typeof svgElementAttributes, 'object') 14 | }) 15 | 16 | await t.test('values', async function (t) { 17 | const tagNames = Object.keys(svgElementAttributes) 18 | 19 | for (const tagName of tagNames) { 20 | await t.test(tagName, async function () { 21 | const attributes = svgElementAttributes[tagName] 22 | 23 | for (const attribute of attributes) { 24 | assert.equal(typeof attribute, 'string') 25 | assert.equal(attribute, attribute.trim()) 26 | assert.match(attribute, /^[a-z][a-z\d-]*$/i) 27 | } 28 | 29 | assert.ok(Array.isArray(attributes)) 30 | }) 31 | } 32 | }) 33 | }) 34 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "checkJs": true, 4 | "customConditions": ["development"], 5 | "declaration": true, 6 | "declarationMap": true, 7 | "emitDeclarationOnly": true, 8 | "exactOptionalPropertyTypes": true, 9 | "lib": ["es2022"], 10 | "module": "node16", 11 | "strict": true, 12 | "target": "es2020" 13 | }, 14 | "exclude": ["coverage/", "node_modules/"], 15 | "include": ["**/*.js"] 16 | } 17 | --------------------------------------------------------------------------------