| 'use strict'; |
| |
| // http://www.w3.org/TR/SVG11/intro.html#Definitions |
| exports.elemsGroups = { |
| animation: ['animate', 'animateColor', 'animateMotion', 'animateTransform', 'set'], |
| descriptive: ['desc', 'metadata', 'title'], |
| shape: ['circle', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'rect'], |
| structural: ['defs', 'g', 'svg', 'symbol', 'use'], |
| paintServer: ['solidColor', 'linearGradient', 'radialGradient', 'meshGradient', 'pattern', 'hatch'], |
| nonRendering: ['linearGradient', 'radialGradient', 'pattern', 'clipPath', 'mask', 'marker', 'symbol', 'filter', 'solidColor'], |
| container: ['a', 'defs', 'g', 'marker', 'mask', 'missing-glyph', 'pattern', 'svg', 'switch', 'symbol', 'foreignObject'], |
| textContent: ['altGlyph', 'altGlyphDef', 'altGlyphItem', 'glyph', 'glyphRef', 'textPath', 'text', 'tref', 'tspan'], |
| textContentChild: ['altGlyph', 'textPath', 'tref', 'tspan'], |
| lightSource: ['feDiffuseLighting', 'feSpecularLighting', 'feDistantLight', 'fePointLight', 'feSpotLight'], |
| filterPrimitive: ['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feFlood', 'feGaussianBlur', 'feImage', 'feMerge', 'feMorphology', 'feOffset', 'feSpecularLighting', 'feTile', 'feTurbulence'] |
| }; |
| |
| exports.pathElems = ['path', 'glyph', 'missing-glyph']; |
| |
| // http://www.w3.org/TR/SVG11/intro.html#Definitions |
| exports.attrsGroups = { |
| animationAddition: ['additive', 'accumulate'], |
| animationAttributeTarget: ['attributeType', 'attributeName'], |
| animationEvent: ['onbegin', 'onend', 'onrepeat', 'onload'], |
| animationTiming: ['begin', 'dur', 'end', 'min', 'max', 'restart', 'repeatCount', 'repeatDur', 'fill'], |
| animationValue: ['calcMode', 'values', 'keyTimes', 'keySplines', 'from', 'to', 'by'], |
| conditionalProcessing: ['requiredFeatures', 'requiredExtensions', 'systemLanguage'], |
| core: ['id', 'tabindex', 'xml:base', 'xml:lang', 'xml:space'], |
| graphicalEvent: ['onfocusin', 'onfocusout', 'onactivate', 'onclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout', 'onload'], |
| presentation: [ |
| 'alignment-baseline', |
| 'baseline-shift', |
| 'clip', |
| 'clip-path', |
| 'clip-rule', |
| 'color', |
| 'color-interpolation', |
| 'color-interpolation-filters', |
| 'color-profile', |
| 'color-rendering', |
| 'cursor', |
| 'direction', |
| 'display', |
| 'dominant-baseline', |
| 'enable-background', |
| 'fill', |
| 'fill-opacity', |
| 'fill-rule', |
| 'filter', |
| 'flood-color', |
| 'flood-opacity', |
| 'font-family', |
| 'font-size', |
| 'font-size-adjust', |
| 'font-stretch', |
| 'font-style', |
| 'font-variant', |
| 'font-weight', |
| 'glyph-orientation-horizontal', |
| 'glyph-orientation-vertical', |
| 'image-rendering', |
| 'letter-spacing', |
| 'lighting-color', |
| 'marker-end', |
| 'marker-mid', |
| 'marker-start', |
| 'mask', |
| 'opacity', |
| 'overflow', |
| 'paint-order', |
| 'pointer-events', |
| 'shape-rendering', |
| 'stop-color', |
| 'stop-opacity', |
| 'stroke', |
| 'stroke-dasharray', |
| 'stroke-dashoffset', |
| 'stroke-linecap', |
| 'stroke-linejoin', |
| 'stroke-miterlimit', |
| 'stroke-opacity', |
| 'stroke-width', |
| 'text-anchor', |
| 'text-decoration', |
| 'text-overflow', |
| 'text-rendering', |
| 'transform', |
| 'unicode-bidi', |
| 'vector-effect', |
| 'visibility', |
| 'word-spacing', |
| 'writing-mode' |
| ], |
| xlink: ['xlink:href', 'xlink:show', 'xlink:actuate', 'xlink:type', 'xlink:role', 'xlink:arcrole', 'xlink:title'], |
| documentEvent: ['onunload', 'onabort', 'onerror', 'onresize', 'onscroll', 'onzoom'], |
| filterPrimitive: ['x', 'y', 'width', 'height', 'result'], |
| transferFunction: ['type', 'tableValues', 'slope', 'intercept', 'amplitude', 'exponent', 'offset'] |
| }; |
| |
| exports.attrsGroupsDefaults = { |
| core: {'xml:space': 'preserve'}, |
| filterPrimitive: {x: '0', y: '0', width: '100%', height: '100%'}, |
| presentation: { |
| clip: 'auto', |
| 'clip-path': 'none', |
| 'clip-rule': 'nonzero', |
| mask: 'none', |
| opacity: '1', |
| 'stop-color': '#000', |
| 'stop-opacity': '1', |
| 'fill-opacity': '1', |
| 'fill-rule': 'nonzero', |
| fill: '#000', |
| stroke: 'none', |
| 'stroke-width': '1', |
| 'stroke-linecap': 'butt', |
| 'stroke-linejoin': 'miter', |
| 'stroke-miterlimit': '4', |
| 'stroke-dasharray': 'none', |
| 'stroke-dashoffset': '0', |
| 'stroke-opacity': '1', |
| 'paint-order': 'normal', |
| 'vector-effect': 'none', |
| display: 'inline', |
| visibility: 'visible', |
| 'marker-start': 'none', |
| 'marker-mid': 'none', |
| 'marker-end': 'none', |
| 'color-interpolation': 'sRGB', |
| 'color-interpolation-filters': 'linearRGB', |
| 'color-rendering': 'auto', |
| 'shape-rendering': 'auto', |
| 'text-rendering': 'auto', |
| 'image-rendering': 'auto', |
| 'font-style': 'normal', |
| 'font-variant': 'normal', |
| 'font-weight': 'normal', |
| 'font-stretch': 'normal', |
| 'font-size': 'medium', |
| 'font-size-adjust': 'none', |
| kerning: 'auto', |
| 'letter-spacing': 'normal', |
| 'word-spacing': 'normal', |
| 'text-decoration': 'none', |
| 'text-anchor': 'start', |
| 'text-overflow': 'clip', |
| 'writing-mode': 'lr-tb', |
| 'glyph-orientation-vertical': 'auto', |
| 'glyph-orientation-horizontal': '0deg', |
| direction: 'ltr', |
| 'unicode-bidi': 'normal', |
| 'dominant-baseline': 'auto', |
| 'alignment-baseline': 'baseline', |
| 'baseline-shift': 'baseline' |
| }, |
| transferFunction: {slope: '1', intercept: '0', amplitude: '1', exponent: '1', offset: '0'} |
| }; |
| |
| // http://www.w3.org/TR/SVG11/eltindex.html |
| exports.elems = { |
| a: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'target' |
| ], |
| defaults: { |
| target: '_self' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| altGlyph: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'x', |
| 'y', |
| 'dx', |
| 'dy', |
| 'glyphRef', |
| 'format', |
| 'rotate' |
| ] |
| }, |
| altGlyphDef: { |
| attrsGroups: [ |
| 'core' |
| ], |
| content: [ |
| 'glyphRef' |
| ] |
| }, |
| altGlyphItem: { |
| attrsGroups: [ |
| 'core' |
| ], |
| content: [ |
| 'glyphRef', |
| 'altGlyphItem' |
| ] |
| }, |
| animate: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'animationAddition', |
| 'animationAttributeTarget', |
| 'animationEvent', |
| 'animationTiming', |
| 'animationValue', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'externalResourcesRequired' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| animateColor: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'animationEvent', |
| 'xlink', |
| 'animationAttributeTarget', |
| 'animationTiming', |
| 'animationValue', |
| 'animationAddition', |
| 'presentation' |
| ], |
| attrs: [ |
| 'externalResourcesRequired' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| animateMotion: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'animationEvent', |
| 'xlink', |
| 'animationTiming', |
| 'animationValue', |
| 'animationAddition' |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'path', |
| 'keyPoints', |
| 'rotate', |
| 'origin' |
| ], |
| defaults: { |
| 'rotate': '0' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'mpath' |
| ] |
| }, |
| animateTransform: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'animationEvent', |
| 'xlink', |
| 'animationAttributeTarget', |
| 'animationTiming', |
| 'animationValue', |
| 'animationAddition' |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'type' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| circle: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'cx', |
| 'cy', |
| 'r' |
| ], |
| defaults: { |
| cx: '0', |
| cy: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| clipPath: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'clipPathUnits' |
| ], |
| defaults: { |
| clipPathUnits: 'userSpaceOnUse' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape' |
| ], |
| content: [ |
| 'text', |
| 'use' |
| ] |
| }, |
| 'color-profile': { |
| attrsGroups: [ |
| 'core', |
| 'xlink' |
| ], |
| attrs: [ |
| 'local', |
| 'name', |
| 'rendering-intent' |
| ], |
| defaults: { |
| name: 'sRGB', |
| 'rendering-intent': 'auto' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| cursor: { |
| attrsGroups: [ |
| 'core', |
| 'conditionalProcessing', |
| 'xlink' |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'x', |
| 'y' |
| ], |
| defaults: { |
| x: '0', |
| y: '0' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| defs: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| desc: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ] |
| }, |
| ellipse: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'cx', |
| 'cy', |
| 'rx', |
| 'ry' |
| ], |
| defaults: { |
| cx: '0', |
| cy: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| feBlend: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| // TODO: in - 'If no value is provided and this is the first filter primitive, |
| // then this filter primitive will use SourceGraphic as its input' |
| 'in', |
| 'in2', |
| 'mode' |
| ], |
| defaults: { |
| mode: 'normal' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feColorMatrix: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'type', |
| 'values' |
| ], |
| defaults: { |
| type: 'matrix' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feComponentTransfer: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in' |
| ], |
| content: [ |
| 'feFuncA', |
| 'feFuncB', |
| 'feFuncG', |
| 'feFuncR' |
| ] |
| }, |
| feComposite: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'in2', |
| 'operator', |
| 'k1', |
| 'k2', |
| 'k3', |
| 'k4' |
| ], |
| defaults: { |
| operator: 'over', |
| k1: '0', |
| k2: '0', |
| k3: '0', |
| k4: '0' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feConvolveMatrix: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'order', |
| 'kernelMatrix', |
| // TODO: divisor - 'The default value is the sum of all values in kernelMatrix, |
| // with the exception that if the sum is zero, then the divisor is set to 1' |
| 'divisor', |
| 'bias', |
| // TODO: targetX - 'By default, the convolution matrix is centered in X over each |
| // pixel of the input image (i.e., targetX = floor ( orderX / 2 ))' |
| 'targetX', |
| 'targetY', |
| 'edgeMode', |
| // TODO: kernelUnitLength - 'The first number is the <dx> value. The second number |
| // is the <dy> value. If the <dy> value is not specified, it defaults to the same value as <dx>' |
| 'kernelUnitLength', |
| 'preserveAlpha' |
| ], |
| defaults: { |
| order: '3', |
| bias: '0', |
| edgeMode: 'duplicate', |
| preserveAlpha: 'false' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feDiffuseLighting: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'surfaceScale', |
| 'diffuseConstant', |
| 'kernelUnitLength' |
| ], |
| defaults: { |
| surfaceScale: '1', |
| diffuseConstant: '1' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| // TODO: 'exactly one light source element, in any order' |
| 'feDistantLight', |
| 'fePointLight', |
| 'feSpotLight' |
| ] |
| }, |
| feDisplacementMap: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'in2', |
| 'scale', |
| 'xChannelSelector', |
| 'yChannelSelector' |
| ], |
| defaults: { |
| scale: '0', |
| xChannelSelector: 'A', |
| yChannelSelector: 'A' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feDistantLight: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'azimuth', |
| 'elevation' |
| ], |
| defaults: { |
| azimuth: '0', |
| elevation: '0' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feFlood: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ], |
| content: [ |
| 'animate', |
| 'animateColor', |
| 'set' |
| ] |
| }, |
| feFuncA: { |
| attrsGroups: [ |
| 'core', |
| 'transferFunction' |
| ], |
| content: [ |
| 'set', |
| 'animate' |
| ] |
| }, |
| feFuncB: { |
| attrsGroups: [ |
| 'core', |
| 'transferFunction' |
| ], |
| content: [ |
| 'set', |
| 'animate' |
| ] |
| }, |
| feFuncG: { |
| attrsGroups: [ |
| 'core', |
| 'transferFunction' |
| ], |
| content: [ |
| 'set', |
| 'animate' |
| ] |
| }, |
| feFuncR: { |
| attrsGroups: [ |
| 'core', |
| 'transferFunction' |
| ], |
| content: [ |
| 'set', |
| 'animate' |
| ] |
| }, |
| feGaussianBlur: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'stdDeviation' |
| ], |
| defaults: { |
| stdDeviation: '0' |
| }, |
| content: [ |
| 'set', |
| 'animate' |
| ] |
| }, |
| feImage: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'preserveAspectRatio', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| preserveAspectRatio: 'xMidYMid meet' |
| }, |
| content: [ |
| 'animate', |
| 'animateTransform', |
| 'set' |
| ] |
| }, |
| feMerge: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ], |
| content: [ |
| 'feMergeNode' |
| ] |
| }, |
| feMergeNode: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'in' |
| ], |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feMorphology: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'operator', |
| 'radius' |
| ], |
| defaults: { |
| operator: 'erode', |
| radius: '0' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feOffset: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'dx', |
| 'dy' |
| ], |
| defaults: { |
| dx: '0', |
| dy: '0' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| fePointLight: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'x', |
| 'y', |
| 'z' |
| ], |
| defaults: { |
| x: '0', |
| y: '0', |
| z: '0' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feSpecularLighting: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in', |
| 'surfaceScale', |
| 'specularConstant', |
| 'specularExponent', |
| 'kernelUnitLength' |
| ], |
| defaults: { |
| surfaceScale: '1', |
| specularConstant: '1', |
| specularExponent: '1' |
| }, |
| contentGroups: [ |
| 'descriptive', |
| // TODO: exactly one 'light source element' |
| 'lightSource' |
| ] |
| }, |
| feSpotLight: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'x', |
| 'y', |
| 'z', |
| 'pointsAtX', |
| 'pointsAtY', |
| 'pointsAtZ', |
| 'specularExponent', |
| 'limitingConeAngle' |
| ], |
| defaults: { |
| x: '0', |
| y: '0', |
| z: '0', |
| pointsAtX: '0', |
| pointsAtY: '0', |
| pointsAtZ: '0', |
| specularExponent: '1' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feTile: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'in' |
| ], |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| feTurbulence: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'filterPrimitive' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'baseFrequency', |
| 'numOctaves', |
| 'seed', |
| 'stitchTiles', |
| 'type' |
| ], |
| defaults: { |
| baseFrequency: '0', |
| numOctaves: '1', |
| seed: '0', |
| stitchTiles: 'noStitch', |
| type: 'turbulence' |
| }, |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| filter: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'filterRes', |
| 'filterUnits', |
| 'primitiveUnits', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| primitiveUnits: 'userSpaceOnUse', |
| x: '-10%', |
| y: '-10%', |
| width: '120%', |
| height: '120%' |
| }, |
| contentGroups: [ |
| 'descriptive', |
| 'filterPrimitive' |
| ], |
| content: [ |
| 'animate', |
| 'set' |
| ] |
| }, |
| font: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'horiz-origin-x', |
| 'horiz-origin-y', |
| 'horiz-adv-x', |
| 'vert-origin-x', |
| 'vert-origin-y', |
| 'vert-adv-y' |
| ], |
| defaults: { |
| 'horiz-origin-x': '0', |
| 'horiz-origin-y': '0' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'font-face', |
| 'glyph', |
| 'hkern', |
| 'missing-glyph', |
| 'vkern' |
| ] |
| }, |
| 'font-face': { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'font-family', |
| 'font-style', |
| 'font-variant', |
| 'font-weight', |
| 'font-stretch', |
| 'font-size', |
| 'unicode-range', |
| 'units-per-em', |
| 'panose-1', |
| 'stemv', |
| 'stemh', |
| 'slope', |
| 'cap-height', |
| 'x-height', |
| 'accent-height', |
| 'ascent', |
| 'descent', |
| 'widths', |
| 'bbox', |
| 'ideographic', |
| 'alphabetic', |
| 'mathematical', |
| 'hanging', |
| 'v-ideographic', |
| 'v-alphabetic', |
| 'v-mathematical', |
| 'v-hanging', |
| 'underline-position', |
| 'underline-thickness', |
| 'strikethrough-position', |
| 'strikethrough-thickness', |
| 'overline-position', |
| 'overline-thickness' |
| ], |
| defaults: { |
| 'font-style': 'all', |
| 'font-variant': 'normal', |
| 'font-weight': 'all', |
| 'font-stretch': 'normal', |
| 'unicode-range': 'U+0-10FFFF', |
| 'units-per-em': '1000', |
| 'panose-1': '0 0 0 0 0 0 0 0 0 0', |
| 'slope': '0' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| // TODO: "at most one 'font-face-src' element" |
| 'font-face-src' |
| ] |
| }, |
| // TODO: empty content |
| 'font-face-format': { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'string' |
| ] |
| }, |
| 'font-face-name': { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'name' |
| ] |
| }, |
| 'font-face-src': { |
| attrsGroups: [ |
| 'core' |
| ], |
| content: [ |
| 'font-face-name', |
| 'font-face-uri' |
| ] |
| }, |
| 'font-face-uri': { |
| attrsGroups: [ |
| 'core', |
| 'xlink' |
| ], |
| attrs: [ |
| 'href', |
| 'xlink:href' |
| ], |
| content: [ |
| 'font-face-format' |
| ] |
| }, |
| foreignObject: { |
| attrsGroups: [ |
| 'core', |
| 'conditionalProcessing', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'x', |
| 'y', |
| 'width', |
| 'height' |
| ], |
| defaults: { |
| x: 0, |
| y: 0 |
| } |
| }, |
| g: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| glyph: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'd', |
| 'horiz-adv-x', |
| 'vert-origin-x', |
| 'vert-origin-y', |
| 'vert-adv-y', |
| 'unicode', |
| 'glyph-name', |
| 'orientation', |
| 'arabic-form', |
| 'lang' |
| ], |
| defaults: { |
| 'arabic-form': 'initial' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ], |
| }, |
| glyphRef: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'd', |
| 'horiz-adv-x', |
| 'vert-origin-x', |
| 'vert-origin-y', |
| 'vert-adv-y' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| hatch: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'x', |
| 'y', |
| 'pitch', |
| 'rotate', |
| 'hatchUnits', |
| 'hatchContentUnits', |
| 'transform' |
| ], |
| defaults: { |
| hatchUnits: 'objectBoundingBox', |
| hatchContentUnits: 'userSpaceOnUse', |
| x: '0', |
| y: '0', |
| pitch: '0', |
| rotate: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ], |
| content: [ |
| 'hatchPath' |
| ] |
| }, |
| hatchPath: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'd', |
| 'offset' |
| ], |
| defaults: { |
| offset: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| hkern: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'u1', |
| 'g1', |
| 'u2', |
| 'g2', |
| 'k' |
| ] |
| }, |
| image: { |
| attrsGroups: [ |
| 'core', |
| 'conditionalProcessing', |
| 'graphicalEvent', |
| 'xlink', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'preserveAspectRatio', |
| 'transform', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| x: '0', |
| y: '0', |
| preserveAspectRatio: 'xMidYMid meet' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| line: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'x1', |
| 'y1', |
| 'x2', |
| 'y2' |
| ], |
| defaults: { |
| x1: '0', |
| y1: '0', |
| x2: '0', |
| y2: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| linearGradient: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'x1', |
| 'y1', |
| 'x2', |
| 'y2', |
| 'gradientUnits', |
| 'gradientTransform', |
| 'spreadMethod', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| x1: '0', |
| y1: '0', |
| x2: '100%', |
| y2: '0', |
| spreadMethod: 'pad' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'animate', |
| 'animateTransform', |
| 'set', |
| 'stop' |
| ] |
| }, |
| marker: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'viewBox', |
| 'preserveAspectRatio', |
| 'refX', |
| 'refY', |
| 'markerUnits', |
| 'markerWidth', |
| 'markerHeight', |
| 'orient' |
| ], |
| defaults: { |
| markerUnits: 'strokeWidth', |
| refX: '0', |
| refY: '0', |
| markerWidth: '3', |
| markerHeight: '3' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| mask: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'maskUnits', |
| 'maskContentUnits' |
| ], |
| defaults: { |
| maskUnits: 'objectBoundingBox', |
| maskContentUnits: 'userSpaceOnUse', |
| x: '-10%', |
| y: '-10%', |
| width: '120%', |
| height: '120%' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| metadata: { |
| attrsGroups: [ |
| 'core' |
| ] |
| }, |
| 'missing-glyph': { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'd', |
| 'horiz-adv-x', |
| 'vert-origin-x', |
| 'vert-origin-y', |
| 'vert-adv-y' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| mpath: { |
| attrsGroups: [ |
| 'core', |
| 'xlink' |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'href', |
| 'xlink:href' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| path: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'd', |
| 'pathLength' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| pattern: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'viewBox', |
| 'preserveAspectRatio', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'patternUnits', |
| 'patternContentUnits', |
| 'patternTransform', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| patternUnits: 'objectBoundingBox', |
| patternContentUnits: 'userSpaceOnUse', |
| x: '0', |
| y: '0', |
| width: '0', |
| height: '0', |
| preserveAspectRatio: 'xMidYMid meet' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'paintServer', |
| 'shape', |
| 'structural' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| polygon: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'points' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| polyline: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'points' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| radialGradient: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'cx', |
| 'cy', |
| 'r', |
| 'fx', |
| 'fy', |
| 'fr', |
| 'gradientUnits', |
| 'gradientTransform', |
| 'spreadMethod', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| gradientUnits: 'objectBoundingBox', |
| cx: '50%', |
| cy: '50%', |
| r: '50%' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'animate', |
| 'animateTransform', |
| 'set', |
| 'stop' |
| ] |
| }, |
| meshGradient: { |
| attrsGroups: [ |
| 'core', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'x', |
| 'y', |
| 'gradientUnits', |
| 'transform' |
| ], |
| contentGroups: [ |
| 'descriptive', |
| 'paintServer', |
| 'animation', |
| ], |
| content: [ |
| 'meshRow' |
| ] |
| }, |
| meshRow: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'meshPatch' |
| ] |
| }, |
| meshPatch: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'stop' |
| ] |
| }, |
| rect: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'rx', |
| 'ry' |
| ], |
| defaults: { |
| x: '0', |
| y: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| script: { |
| attrsGroups: [ |
| 'core', |
| 'xlink' |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'type', |
| 'href', |
| 'xlink:href' |
| ] |
| }, |
| set: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'animation', |
| 'xlink', |
| 'animationAttributeTarget', |
| 'animationTiming', |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'to' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| solidColor: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ], |
| contentGroups: [ |
| 'paintServer' |
| ] |
| }, |
| stop: { |
| attrsGroups: [ |
| 'core', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'offset', |
| 'path' |
| ], |
| content: [ |
| 'animate', |
| 'animateColor', |
| 'set' |
| ] |
| }, |
| style: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'type', |
| 'media', |
| 'title' |
| ], |
| defaults: { |
| type: 'text/css' |
| } |
| }, |
| svg: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'documentEvent', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'viewBox', |
| 'preserveAspectRatio', |
| 'zoomAndPan', |
| 'version', |
| 'baseProfile', |
| 'contentScriptType', |
| 'contentStyleType' |
| ], |
| defaults: { |
| x: '0', |
| y: '0', |
| width: '100%', |
| height: '100%', |
| preserveAspectRatio: 'xMidYMid meet', |
| zoomAndPan: 'magnify', |
| version: '1.1', |
| baseProfile: 'none', |
| contentScriptType: 'application/ecmascript', |
| contentStyleType: 'text/css' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| switch: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform' |
| ], |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape' |
| ], |
| content: [ |
| 'a', |
| 'foreignObject', |
| 'g', |
| 'image', |
| 'svg', |
| 'switch', |
| 'text', |
| 'use' |
| ] |
| }, |
| symbol: { |
| attrsGroups: [ |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'preserveAspectRatio', |
| 'viewBox', |
| 'refX', |
| 'refY' |
| ], |
| defaults: { |
| refX: 0, |
| refY: 0 |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'shape', |
| 'structural', |
| 'paintServer' |
| ], |
| content: [ |
| 'a', |
| 'altGlyphDef', |
| 'clipPath', |
| 'color-profile', |
| 'cursor', |
| 'filter', |
| 'font', |
| 'font-face', |
| 'foreignObject', |
| 'image', |
| 'marker', |
| 'mask', |
| 'pattern', |
| 'script', |
| 'style', |
| 'switch', |
| 'text', |
| 'view' |
| ] |
| }, |
| text: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'lengthAdjust', |
| 'x', |
| 'y', |
| 'dx', |
| 'dy', |
| 'rotate', |
| 'textLength' |
| ], |
| defaults: { |
| x: '0', |
| y: '0', |
| lengthAdjust: 'spacing' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive', |
| 'textContentChild' |
| ], |
| content: [ |
| 'a' |
| ] |
| }, |
| textPath: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'href', |
| 'xlink:href', |
| 'startOffset', |
| 'method', |
| 'spacing', |
| 'd' |
| ], |
| defaults: { |
| startOffset: '0', |
| method: 'align', |
| spacing: 'exact' |
| }, |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'a', |
| 'altGlyph', |
| 'animate', |
| 'animateColor', |
| 'set', |
| 'tref', |
| 'tspan' |
| ] |
| }, |
| title: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'class', |
| 'style' |
| ] |
| }, |
| tref: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'href', |
| 'xlink:href' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'animate', |
| 'animateColor', |
| 'set' |
| ] |
| }, |
| tspan: { |
| attrsGroups: [ |
| 'conditionalProcessing', |
| 'core', |
| 'graphicalEvent', |
| 'presentation' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'x', |
| 'y', |
| 'dx', |
| 'dy', |
| 'rotate', |
| 'textLength', |
| 'lengthAdjust' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ], |
| content: [ |
| 'a', |
| 'altGlyph', |
| 'animate', |
| 'animateColor', |
| 'set', |
| 'tref', |
| 'tspan' |
| ] |
| }, |
| use: { |
| attrsGroups: [ |
| 'core', |
| 'conditionalProcessing', |
| 'graphicalEvent', |
| 'presentation', |
| 'xlink' |
| ], |
| attrs: [ |
| 'class', |
| 'style', |
| 'externalResourcesRequired', |
| 'transform', |
| 'x', |
| 'y', |
| 'width', |
| 'height', |
| 'href', |
| 'xlink:href' |
| ], |
| defaults: { |
| x: '0', |
| y: '0' |
| }, |
| contentGroups: [ |
| 'animation', |
| 'descriptive' |
| ] |
| }, |
| view: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'externalResourcesRequired', |
| 'viewBox', |
| 'preserveAspectRatio', |
| 'zoomAndPan', |
| 'viewTarget' |
| ], |
| contentGroups: [ |
| 'descriptive' |
| ] |
| }, |
| vkern: { |
| attrsGroups: [ |
| 'core' |
| ], |
| attrs: [ |
| 'u1', |
| 'g1', |
| 'u2', |
| 'g2', |
| 'k' |
| ] |
| } |
| }; |
| |
| // http://wiki.inkscape.org/wiki/index.php/Inkscape-specific_XML_attributes |
| exports.editorNamespaces = [ |
| 'http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd', |
| 'http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd', |
| 'http://www.inkscape.org/namespaces/inkscape', |
| 'http://www.bohemiancoding.com/sketch/ns', |
| 'http://ns.adobe.com/AdobeIllustrator/10.0/', |
| 'http://ns.adobe.com/Graphs/1.0/', |
| 'http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/', |
| 'http://ns.adobe.com/Variables/1.0/', |
| 'http://ns.adobe.com/SaveForWeb/1.0/', |
| 'http://ns.adobe.com/Extensibility/1.0/', |
| 'http://ns.adobe.com/Flows/1.0/', |
| 'http://ns.adobe.com/ImageReplacement/1.0/', |
| 'http://ns.adobe.com/GenericCustomNamespace/1.0/', |
| 'http://ns.adobe.com/XPath/1.0/', |
| 'http://schemas.microsoft.com/visio/2003/SVGExtensions/', |
| 'http://taptrix.com/vectorillustrator/svg_extensions', |
| 'http://www.figma.com/figma/ns', |
| 'http://purl.org/dc/elements/1.1/', |
| 'http://creativecommons.org/ns#', |
| 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', |
| 'http://www.serif.com/', |
| 'http://www.vector.evaxdesign.sk' |
| ]; |
| |
| // http://www.w3.org/TR/SVG11/linking.html#processingIRI |
| exports.referencesProps = [ |
| 'clip-path', |
| 'color-profile', |
| 'fill', |
| 'filter', |
| 'marker-start', |
| 'marker-mid', |
| 'marker-end', |
| 'mask', |
| 'stroke', |
| 'style' |
| ]; |
| |
| // http://www.w3.org/TR/SVG11/propidx.html |
| exports.inheritableAttrs = [ |
| 'clip-rule', |
| 'color', |
| 'color-interpolation', |
| 'color-interpolation-filters', |
| 'color-profile', |
| 'color-rendering', |
| 'cursor', |
| 'direction', |
| 'dominant-baseline', |
| 'fill', |
| 'fill-opacity', |
| 'fill-rule', |
| 'font', |
| 'font-family', |
| 'font-size', |
| 'font-size-adjust', |
| 'font-stretch', |
| 'font-style', |
| 'font-variant', |
| 'font-weight', |
| 'glyph-orientation-horizontal', |
| 'glyph-orientation-vertical', |
| 'image-rendering', |
| 'letter-spacing', |
| 'marker', |
| 'marker-end', |
| 'marker-mid', |
| 'marker-start', |
| 'paint-order', |
| 'pointer-events', |
| 'shape-rendering', |
| 'stroke', |
| 'stroke-dasharray', |
| 'stroke-dashoffset', |
| 'stroke-linecap', |
| 'stroke-linejoin', |
| 'stroke-miterlimit', |
| 'stroke-opacity', |
| 'stroke-width', |
| 'text-anchor', |
| 'text-rendering', |
| 'transform', |
| 'visibility', |
| 'word-spacing', |
| 'writing-mode' |
| ]; |
| |
| exports.presentationNonInheritableGroupAttrs = [ |
| 'display', |
| 'clip-path', |
| 'filter', |
| 'mask', |
| 'opacity', |
| 'text-decoration', |
| 'transform', |
| 'unicode-bidi', |
| 'visibility' |
| ]; |
| |
| // http://www.w3.org/TR/SVG11/single-page.html#types-ColorKeywords |
| exports.colorsNames = { |
| 'aliceblue': '#f0f8ff', |
| 'antiquewhite': '#faebd7', |
| 'aqua': '#0ff', |
| 'aquamarine': '#7fffd4', |
| 'azure': '#f0ffff', |
| 'beige': '#f5f5dc', |
| 'bisque': '#ffe4c4', |
| 'black': '#000', |
| 'blanchedalmond': '#ffebcd', |
| 'blue': '#00f', |
| 'blueviolet': '#8a2be2', |
| 'brown': '#a52a2a', |
| 'burlywood': '#deb887', |
| 'cadetblue': '#5f9ea0', |
| 'chartreuse': '#7fff00', |
| 'chocolate': '#d2691e', |
| 'coral': '#ff7f50', |
| 'cornflowerblue': '#6495ed', |
| 'cornsilk': '#fff8dc', |
| 'crimson': '#dc143c', |
| 'cyan': '#0ff', |
| 'darkblue': '#00008b', |
| 'darkcyan': '#008b8b', |
| 'darkgoldenrod': '#b8860b', |
| 'darkgray': '#a9a9a9', |
| 'darkgreen': '#006400', |
| 'darkgrey': '#a9a9a9', |
| 'darkkhaki': '#bdb76b', |
| 'darkmagenta': '#8b008b', |
| 'darkolivegreen': '#556b2f', |
| 'darkorange': '#ff8c00', |
| 'darkorchid': '#9932cc', |
| 'darkred': '#8b0000', |
| 'darksalmon': '#e9967a', |
| 'darkseagreen': '#8fbc8f', |
| 'darkslateblue': '#483d8b', |
| 'darkslategray': '#2f4f4f', |
| 'darkslategrey': '#2f4f4f', |
| 'darkturquoise': '#00ced1', |
| 'darkviolet': '#9400d3', |
| 'deeppink': '#ff1493', |
| 'deepskyblue': '#00bfff', |
| 'dimgray': '#696969', |
| 'dimgrey': '#696969', |
| 'dodgerblue': '#1e90ff', |
| 'firebrick': '#b22222', |
| 'floralwhite': '#fffaf0', |
| 'forestgreen': '#228b22', |
| 'fuchsia': '#f0f', |
| 'gainsboro': '#dcdcdc', |
| 'ghostwhite': '#f8f8ff', |
| 'gold': '#ffd700', |
| 'goldenrod': '#daa520', |
| 'gray': '#808080', |
| 'green': '#008000', |
| 'greenyellow': '#adff2f', |
| 'grey': '#808080', |
| 'honeydew': '#f0fff0', |
| 'hotpink': '#ff69b4', |
| 'indianred': '#cd5c5c', |
| 'indigo': '#4b0082', |
| 'ivory': '#fffff0', |
| 'khaki': '#f0e68c', |
| 'lavender': '#e6e6fa', |
| 'lavenderblush': '#fff0f5', |
| 'lawngreen': '#7cfc00', |
| 'lemonchiffon': '#fffacd', |
| 'lightblue': '#add8e6', |
| 'lightcoral': '#f08080', |
| 'lightcyan': '#e0ffff', |
| 'lightgoldenrodyellow': '#fafad2', |
| 'lightgray': '#d3d3d3', |
| 'lightgreen': '#90ee90', |
| 'lightgrey': '#d3d3d3', |
| 'lightpink': '#ffb6c1', |
| 'lightsalmon': '#ffa07a', |
| 'lightseagreen': '#20b2aa', |
| 'lightskyblue': '#87cefa', |
| 'lightslategray': '#789', |
| 'lightslategrey': '#789', |
| 'lightsteelblue': '#b0c4de', |
| 'lightyellow': '#ffffe0', |
| 'lime': '#0f0', |
| 'limegreen': '#32cd32', |
| 'linen': '#faf0e6', |
| 'magenta': '#f0f', |
| 'maroon': '#800000', |
| 'mediumaquamarine': '#66cdaa', |
| 'mediumblue': '#0000cd', |
| 'mediumorchid': '#ba55d3', |
| 'mediumpurple': '#9370db', |
| 'mediumseagreen': '#3cb371', |
| 'mediumslateblue': '#7b68ee', |
| 'mediumspringgreen': '#00fa9a', |
| 'mediumturquoise': '#48d1cc', |
| 'mediumvioletred': '#c71585', |
| 'midnightblue': '#191970', |
| 'mintcream': '#f5fffa', |
| 'mistyrose': '#ffe4e1', |
| 'moccasin': '#ffe4b5', |
| 'navajowhite': '#ffdead', |
| 'navy': '#000080', |
| 'oldlace': '#fdf5e6', |
| 'olive': '#808000', |
| 'olivedrab': '#6b8e23', |
| 'orange': '#ffa500', |
| 'orangered': '#ff4500', |
| 'orchid': '#da70d6', |
| 'palegoldenrod': '#eee8aa', |
| 'palegreen': '#98fb98', |
| 'paleturquoise': '#afeeee', |
| 'palevioletred': '#db7093', |
| 'papayawhip': '#ffefd5', |
| 'peachpuff': '#ffdab9', |
| 'peru': '#cd853f', |
| 'pink': '#ffc0cb', |
| 'plum': '#dda0dd', |
| 'powderblue': '#b0e0e6', |
| 'purple': '#800080', |
| 'rebeccapurple': '#639', |
| 'red': '#f00', |
| 'rosybrown': '#bc8f8f', |
| 'royalblue': '#4169e1', |
| 'saddlebrown': '#8b4513', |
| 'salmon': '#fa8072', |
| 'sandybrown': '#f4a460', |
| 'seagreen': '#2e8b57', |
| 'seashell': '#fff5ee', |
| 'sienna': '#a0522d', |
| 'silver': '#c0c0c0', |
| 'skyblue': '#87ceeb', |
| 'slateblue': '#6a5acd', |
| 'slategray': '#708090', |
| 'slategrey': '#708090', |
| 'snow': '#fffafa', |
| 'springgreen': '#00ff7f', |
| 'steelblue': '#4682b4', |
| 'tan': '#d2b48c', |
| 'teal': '#008080', |
| 'thistle': '#d8bfd8', |
| 'tomato': '#ff6347', |
| 'turquoise': '#40e0d0', |
| 'violet': '#ee82ee', |
| 'wheat': '#f5deb3', |
| 'white': '#fff', |
| 'whitesmoke': '#f5f5f5', |
| 'yellow': '#ff0', |
| 'yellowgreen': '#9acd32' |
| }; |
| |
| exports.colorsShortNames = { |
| '#f0ffff': 'azure', |
| '#f5f5dc': 'beige', |
| '#ffe4c4': 'bisque', |
| '#a52a2a': 'brown', |
| '#ff7f50': 'coral', |
| '#ffd700': 'gold', |
| '#808080': 'gray', |
| '#008000': 'green', |
| '#4b0082': 'indigo', |
| '#fffff0': 'ivory', |
| '#f0e68c': 'khaki', |
| '#faf0e6': 'linen', |
| '#800000': 'maroon', |
| '#000080': 'navy', |
| '#808000': 'olive', |
| '#ffa500': 'orange', |
| '#da70d6': 'orchid', |
| '#cd853f': 'peru', |
| '#ffc0cb': 'pink', |
| '#dda0dd': 'plum', |
| '#800080': 'purple', |
| '#f00': 'red', |
| '#ff0000': 'red', |
| '#fa8072': 'salmon', |
| '#a0522d': 'sienna', |
| '#c0c0c0': 'silver', |
| '#fffafa': 'snow', |
| '#d2b48c': 'tan', |
| '#008080': 'teal', |
| '#ff6347': 'tomato', |
| '#ee82ee': 'violet', |
| '#f5deb3': 'wheat' |
| }; |
| |
| // http://www.w3.org/TR/SVG11/single-page.html#types-DataTypeColor |
| exports.colorsProps = [ |
| 'color', 'fill', 'stroke', 'stop-color', 'flood-color', 'lighting-color' |
| ]; |