mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-15 20:34:56 +02:00
798 lines
22 KiB
JavaScript
798 lines
22 KiB
JavaScript
'use strict';
|
|
|
|
var t = require('@babel/types');
|
|
var entities = require('entities');
|
|
|
|
function _interopNamespace(e) {
|
|
if (e && e.__esModule) return e;
|
|
var n = Object.create(null);
|
|
if (e) {
|
|
Object.keys(e).forEach(function (k) {
|
|
if (k !== 'default') {
|
|
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
Object.defineProperty(n, k, d.get ? d : {
|
|
enumerable: true,
|
|
get: function () { return e[k]; }
|
|
});
|
|
}
|
|
});
|
|
}
|
|
n["default"] = e;
|
|
return Object.freeze(n);
|
|
}
|
|
|
|
var t__namespace = /*#__PURE__*/_interopNamespace(t);
|
|
|
|
const one = (h, node, parent) => {
|
|
const type = node && node.type;
|
|
const fn = h.handlers[type];
|
|
if (!type) {
|
|
throw new Error(`Expected node, got \`${node}\``);
|
|
}
|
|
if (!fn) {
|
|
throw new Error(`Node of type ${type} is unknown`);
|
|
}
|
|
return fn(h, node, parent);
|
|
};
|
|
|
|
const all = (helpers, parent) => {
|
|
const nodes = parent.children || [];
|
|
const { length } = nodes;
|
|
const values = [];
|
|
let index = -1;
|
|
while (++index < length) {
|
|
const node = nodes[index];
|
|
if (typeof node !== "string") {
|
|
const result = one(helpers, node, parent);
|
|
values.push(result);
|
|
}
|
|
}
|
|
return values.filter(Boolean);
|
|
};
|
|
|
|
const isNumeric = (value) => {
|
|
return !Number.isNaN(value - parseFloat(value));
|
|
};
|
|
const hyphenToCamelCase = (string) => {
|
|
return string.replace(/-(.)/g, (_, chr) => chr.toUpperCase());
|
|
};
|
|
const trimEnd = (haystack, needle) => {
|
|
return haystack.endsWith(needle) ? haystack.slice(0, -needle.length) : haystack;
|
|
};
|
|
const KEBAB_REGEX = /[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g;
|
|
const kebabCase = (str) => {
|
|
return str.replace(KEBAB_REGEX, (match) => `-${match.toLowerCase()}`);
|
|
};
|
|
const SPACES_REGEXP = /[\t\r\n\u0085\u2028\u2029]+/g;
|
|
const replaceSpaces = (str) => {
|
|
return str.replace(SPACES_REGEXP, " ");
|
|
};
|
|
|
|
const PX_REGEX = /^\d+px$/;
|
|
const MS_REGEX = /^-ms-/;
|
|
const VAR_REGEX = /^--/;
|
|
const isConvertiblePixelValue = (value) => {
|
|
return PX_REGEX.test(value);
|
|
};
|
|
const formatKey = (key) => {
|
|
if (VAR_REGEX.test(key)) {
|
|
return t__namespace.stringLiteral(key);
|
|
}
|
|
key = key.toLowerCase();
|
|
if (MS_REGEX.test(key))
|
|
key = key.substr(1);
|
|
return t__namespace.identifier(hyphenToCamelCase(key));
|
|
};
|
|
const formatValue = (value) => {
|
|
if (isNumeric(value))
|
|
return t__namespace.numericLiteral(Number(value));
|
|
if (isConvertiblePixelValue(value))
|
|
return t__namespace.numericLiteral(Number(trimEnd(value, "px")));
|
|
return t__namespace.stringLiteral(value);
|
|
};
|
|
const stringToObjectStyle = (rawStyle) => {
|
|
const entries = rawStyle.split(";");
|
|
const properties = [];
|
|
let index = -1;
|
|
while (++index < entries.length) {
|
|
const entry = entries[index];
|
|
const style = entry.trim();
|
|
const firstColon = style.indexOf(":");
|
|
const value = style.substr(firstColon + 1).trim();
|
|
const key = style.substr(0, firstColon);
|
|
if (key !== "") {
|
|
const property = t__namespace.objectProperty(formatKey(key), formatValue(value));
|
|
properties.push(property);
|
|
}
|
|
}
|
|
return t__namespace.objectExpression(properties);
|
|
};
|
|
|
|
const ATTRIBUTE_MAPPING = {
|
|
accept: "accept",
|
|
acceptcharset: "acceptCharset",
|
|
"accept-charset": "acceptCharset",
|
|
accesskey: "accessKey",
|
|
action: "action",
|
|
allowfullscreen: "allowFullScreen",
|
|
alt: "alt",
|
|
as: "as",
|
|
async: "async",
|
|
autocapitalize: "autoCapitalize",
|
|
autocomplete: "autoComplete",
|
|
autocorrect: "autoCorrect",
|
|
autofocus: "autoFocus",
|
|
autoplay: "autoPlay",
|
|
autosave: "autoSave",
|
|
capture: "capture",
|
|
cellpadding: "cellPadding",
|
|
cellspacing: "cellSpacing",
|
|
challenge: "challenge",
|
|
charset: "charSet",
|
|
checked: "checked",
|
|
children: "children",
|
|
cite: "cite",
|
|
class: "className",
|
|
classid: "classID",
|
|
classname: "className",
|
|
cols: "cols",
|
|
colspan: "colSpan",
|
|
content: "content",
|
|
contenteditable: "contentEditable",
|
|
contextmenu: "contextMenu",
|
|
controls: "controls",
|
|
controlslist: "controlsList",
|
|
coords: "coords",
|
|
crossorigin: "crossOrigin",
|
|
dangerouslysetinnerhtml: "dangerouslySetInnerHTML",
|
|
data: "data",
|
|
datetime: "dateTime",
|
|
default: "default",
|
|
defaultchecked: "defaultChecked",
|
|
defaultvalue: "defaultValue",
|
|
defer: "defer",
|
|
dir: "dir",
|
|
disabled: "disabled",
|
|
download: "download",
|
|
draggable: "draggable",
|
|
enctype: "encType",
|
|
for: "htmlFor",
|
|
form: "form",
|
|
formmethod: "formMethod",
|
|
formaction: "formAction",
|
|
formenctype: "formEncType",
|
|
formnovalidate: "formNoValidate",
|
|
formtarget: "formTarget",
|
|
frameborder: "frameBorder",
|
|
headers: "headers",
|
|
height: "height",
|
|
hidden: "hidden",
|
|
high: "high",
|
|
href: "href",
|
|
hreflang: "hrefLang",
|
|
htmlfor: "htmlFor",
|
|
httpequiv: "httpEquiv",
|
|
"http-equiv": "httpEquiv",
|
|
icon: "icon",
|
|
id: "id",
|
|
innerhtml: "innerHTML",
|
|
inputmode: "inputMode",
|
|
integrity: "integrity",
|
|
is: "is",
|
|
itemid: "itemID",
|
|
itemprop: "itemProp",
|
|
itemref: "itemRef",
|
|
itemscope: "itemScope",
|
|
itemtype: "itemType",
|
|
keyparams: "keyParams",
|
|
keytype: "keyType",
|
|
kind: "kind",
|
|
label: "label",
|
|
lang: "lang",
|
|
list: "list",
|
|
loop: "loop",
|
|
low: "low",
|
|
manifest: "manifest",
|
|
marginwidth: "marginWidth",
|
|
marginheight: "marginHeight",
|
|
max: "max",
|
|
maxlength: "maxLength",
|
|
media: "media",
|
|
mediagroup: "mediaGroup",
|
|
method: "method",
|
|
min: "min",
|
|
minlength: "minLength",
|
|
multiple: "multiple",
|
|
muted: "muted",
|
|
name: "name",
|
|
nomodule: "noModule",
|
|
nonce: "nonce",
|
|
novalidate: "noValidate",
|
|
open: "open",
|
|
optimum: "optimum",
|
|
pattern: "pattern",
|
|
placeholder: "placeholder",
|
|
playsinline: "playsInline",
|
|
poster: "poster",
|
|
preload: "preload",
|
|
profile: "profile",
|
|
radiogroup: "radioGroup",
|
|
readonly: "readOnly",
|
|
referrerpolicy: "referrerPolicy",
|
|
rel: "rel",
|
|
required: "required",
|
|
reversed: "reversed",
|
|
role: "role",
|
|
rows: "rows",
|
|
rowspan: "rowSpan",
|
|
sandbox: "sandbox",
|
|
scope: "scope",
|
|
scoped: "scoped",
|
|
scrolling: "scrolling",
|
|
seamless: "seamless",
|
|
selected: "selected",
|
|
shape: "shape",
|
|
size: "size",
|
|
sizes: "sizes",
|
|
span: "span",
|
|
spellcheck: "spellCheck",
|
|
src: "src",
|
|
srcdoc: "srcDoc",
|
|
srclang: "srcLang",
|
|
srcset: "srcSet",
|
|
start: "start",
|
|
step: "step",
|
|
style: "style",
|
|
summary: "summary",
|
|
tabindex: "tabIndex",
|
|
target: "target",
|
|
title: "title",
|
|
type: "type",
|
|
usemap: "useMap",
|
|
value: "value",
|
|
width: "width",
|
|
wmode: "wmode",
|
|
wrap: "wrap",
|
|
about: "about",
|
|
accentheight: "accentHeight",
|
|
"accent-height": "accentHeight",
|
|
accumulate: "accumulate",
|
|
additive: "additive",
|
|
alignmentbaseline: "alignmentBaseline",
|
|
"alignment-baseline": "alignmentBaseline",
|
|
allowreorder: "allowReorder",
|
|
alphabetic: "alphabetic",
|
|
amplitude: "amplitude",
|
|
arabicform: "arabicForm",
|
|
"arabic-form": "arabicForm",
|
|
ascent: "ascent",
|
|
attributename: "attributeName",
|
|
attributetype: "attributeType",
|
|
autoreverse: "autoReverse",
|
|
azimuth: "azimuth",
|
|
basefrequency: "baseFrequency",
|
|
baselineshift: "baselineShift",
|
|
"baseline-shift": "baselineShift",
|
|
baseprofile: "baseProfile",
|
|
bbox: "bbox",
|
|
begin: "begin",
|
|
bias: "bias",
|
|
by: "by",
|
|
calcmode: "calcMode",
|
|
capheight: "capHeight",
|
|
"cap-height": "capHeight",
|
|
clip: "clip",
|
|
clippath: "clipPath",
|
|
"clip-path": "clipPath",
|
|
clippathunits: "clipPathUnits",
|
|
cliprule: "clipRule",
|
|
"clip-rule": "clipRule",
|
|
color: "color",
|
|
colorinterpolation: "colorInterpolation",
|
|
"color-interpolation": "colorInterpolation",
|
|
colorinterpolationfilters: "colorInterpolationFilters",
|
|
"color-interpolation-filters": "colorInterpolationFilters",
|
|
colorprofile: "colorProfile",
|
|
"color-profile": "colorProfile",
|
|
colorrendering: "colorRendering",
|
|
"color-rendering": "colorRendering",
|
|
contentscripttype: "contentScriptType",
|
|
contentstyletype: "contentStyleType",
|
|
cursor: "cursor",
|
|
cx: "cx",
|
|
cy: "cy",
|
|
d: "d",
|
|
datatype: "datatype",
|
|
decelerate: "decelerate",
|
|
descent: "descent",
|
|
diffuseconstant: "diffuseConstant",
|
|
direction: "direction",
|
|
display: "display",
|
|
divisor: "divisor",
|
|
dominantbaseline: "dominantBaseline",
|
|
"dominant-baseline": "dominantBaseline",
|
|
dur: "dur",
|
|
dx: "dx",
|
|
dy: "dy",
|
|
edgemode: "edgeMode",
|
|
elevation: "elevation",
|
|
enablebackground: "enableBackground",
|
|
"enable-background": "enableBackground",
|
|
end: "end",
|
|
exponent: "exponent",
|
|
externalresourcesrequired: "externalResourcesRequired",
|
|
fill: "fill",
|
|
fillopacity: "fillOpacity",
|
|
"fill-opacity": "fillOpacity",
|
|
fillrule: "fillRule",
|
|
"fill-rule": "fillRule",
|
|
filter: "filter",
|
|
filterres: "filterRes",
|
|
filterunits: "filterUnits",
|
|
floodopacity: "floodOpacity",
|
|
"flood-opacity": "floodOpacity",
|
|
floodcolor: "floodColor",
|
|
"flood-color": "floodColor",
|
|
focusable: "focusable",
|
|
fontfamily: "fontFamily",
|
|
"font-family": "fontFamily",
|
|
fontsize: "fontSize",
|
|
"font-size": "fontSize",
|
|
fontsizeadjust: "fontSizeAdjust",
|
|
"font-size-adjust": "fontSizeAdjust",
|
|
fontstretch: "fontStretch",
|
|
"font-stretch": "fontStretch",
|
|
fontstyle: "fontStyle",
|
|
"font-style": "fontStyle",
|
|
fontvariant: "fontVariant",
|
|
"font-variant": "fontVariant",
|
|
fontweight: "fontWeight",
|
|
"font-weight": "fontWeight",
|
|
format: "format",
|
|
from: "from",
|
|
fx: "fx",
|
|
fy: "fy",
|
|
g1: "g1",
|
|
g2: "g2",
|
|
glyphname: "glyphName",
|
|
"glyph-name": "glyphName",
|
|
glyphorientationhorizontal: "glyphOrientationHorizontal",
|
|
"glyph-orientation-horizontal": "glyphOrientationHorizontal",
|
|
glyphorientationvertical: "glyphOrientationVertical",
|
|
"glyph-orientation-vertical": "glyphOrientationVertical",
|
|
glyphref: "glyphRef",
|
|
gradienttransform: "gradientTransform",
|
|
gradientunits: "gradientUnits",
|
|
hanging: "hanging",
|
|
horizadvx: "horizAdvX",
|
|
"horiz-adv-x": "horizAdvX",
|
|
horizoriginx: "horizOriginX",
|
|
"horiz-origin-x": "horizOriginX",
|
|
ideographic: "ideographic",
|
|
imagerendering: "imageRendering",
|
|
"image-rendering": "imageRendering",
|
|
in2: "in2",
|
|
in: "in",
|
|
inlist: "inlist",
|
|
intercept: "intercept",
|
|
k1: "k1",
|
|
k2: "k2",
|
|
k3: "k3",
|
|
k4: "k4",
|
|
k: "k",
|
|
kernelmatrix: "kernelMatrix",
|
|
kernelunitlength: "kernelUnitLength",
|
|
kerning: "kerning",
|
|
keypoints: "keyPoints",
|
|
keysplines: "keySplines",
|
|
keytimes: "keyTimes",
|
|
lengthadjust: "lengthAdjust",
|
|
letterspacing: "letterSpacing",
|
|
"letter-spacing": "letterSpacing",
|
|
lightingcolor: "lightingColor",
|
|
"lighting-color": "lightingColor",
|
|
limitingconeangle: "limitingConeAngle",
|
|
local: "local",
|
|
markerend: "markerEnd",
|
|
"marker-end": "markerEnd",
|
|
markerheight: "markerHeight",
|
|
markermid: "markerMid",
|
|
"marker-mid": "markerMid",
|
|
markerstart: "markerStart",
|
|
"marker-start": "markerStart",
|
|
markerunits: "markerUnits",
|
|
markerwidth: "markerWidth",
|
|
mask: "mask",
|
|
maskcontentunits: "maskContentUnits",
|
|
maskunits: "maskUnits",
|
|
mathematical: "mathematical",
|
|
mode: "mode",
|
|
numoctaves: "numOctaves",
|
|
offset: "offset",
|
|
opacity: "opacity",
|
|
operator: "operator",
|
|
order: "order",
|
|
orient: "orient",
|
|
orientation: "orientation",
|
|
origin: "origin",
|
|
overflow: "overflow",
|
|
overlineposition: "overlinePosition",
|
|
"overline-position": "overlinePosition",
|
|
overlinethickness: "overlineThickness",
|
|
"overline-thickness": "overlineThickness",
|
|
paintorder: "paintOrder",
|
|
"paint-order": "paintOrder",
|
|
panose1: "panose1",
|
|
"panose-1": "panose1",
|
|
pathlength: "pathLength",
|
|
patterncontentunits: "patternContentUnits",
|
|
patterntransform: "patternTransform",
|
|
patternunits: "patternUnits",
|
|
pointerevents: "pointerEvents",
|
|
"pointer-events": "pointerEvents",
|
|
points: "points",
|
|
pointsatx: "pointsAtX",
|
|
pointsaty: "pointsAtY",
|
|
pointsatz: "pointsAtZ",
|
|
prefix: "prefix",
|
|
preservealpha: "preserveAlpha",
|
|
preserveaspectratio: "preserveAspectRatio",
|
|
primitiveunits: "primitiveUnits",
|
|
property: "property",
|
|
r: "r",
|
|
radius: "radius",
|
|
refx: "refX",
|
|
refy: "refY",
|
|
renderingintent: "renderingIntent",
|
|
"rendering-intent": "renderingIntent",
|
|
repeatcount: "repeatCount",
|
|
repeatdur: "repeatDur",
|
|
requiredextensions: "requiredExtensions",
|
|
requiredfeatures: "requiredFeatures",
|
|
resource: "resource",
|
|
restart: "restart",
|
|
result: "result",
|
|
results: "results",
|
|
rotate: "rotate",
|
|
rx: "rx",
|
|
ry: "ry",
|
|
scale: "scale",
|
|
security: "security",
|
|
seed: "seed",
|
|
shaperendering: "shapeRendering",
|
|
"shape-rendering": "shapeRendering",
|
|
slope: "slope",
|
|
spacing: "spacing",
|
|
specularconstant: "specularConstant",
|
|
specularexponent: "specularExponent",
|
|
speed: "speed",
|
|
spreadmethod: "spreadMethod",
|
|
startoffset: "startOffset",
|
|
stddeviation: "stdDeviation",
|
|
stemh: "stemh",
|
|
stemv: "stemv",
|
|
stitchtiles: "stitchTiles",
|
|
stopcolor: "stopColor",
|
|
"stop-color": "stopColor",
|
|
stopopacity: "stopOpacity",
|
|
"stop-opacity": "stopOpacity",
|
|
strikethroughposition: "strikethroughPosition",
|
|
"strikethrough-position": "strikethroughPosition",
|
|
strikethroughthickness: "strikethroughThickness",
|
|
"strikethrough-thickness": "strikethroughThickness",
|
|
string: "string",
|
|
stroke: "stroke",
|
|
strokedasharray: "strokeDasharray",
|
|
"stroke-dasharray": "strokeDasharray",
|
|
strokedashoffset: "strokeDashoffset",
|
|
"stroke-dashoffset": "strokeDashoffset",
|
|
strokelinecap: "strokeLinecap",
|
|
"stroke-linecap": "strokeLinecap",
|
|
strokelinejoin: "strokeLinejoin",
|
|
"stroke-linejoin": "strokeLinejoin",
|
|
strokemiterlimit: "strokeMiterlimit",
|
|
"stroke-miterlimit": "strokeMiterlimit",
|
|
strokewidth: "strokeWidth",
|
|
"stroke-width": "strokeWidth",
|
|
strokeopacity: "strokeOpacity",
|
|
"stroke-opacity": "strokeOpacity",
|
|
suppresscontenteditablewarning: "suppressContentEditableWarning",
|
|
suppresshydrationwarning: "suppressHydrationWarning",
|
|
surfacescale: "surfaceScale",
|
|
systemlanguage: "systemLanguage",
|
|
tablevalues: "tableValues",
|
|
targetx: "targetX",
|
|
targety: "targetY",
|
|
textanchor: "textAnchor",
|
|
"text-anchor": "textAnchor",
|
|
textdecoration: "textDecoration",
|
|
"text-decoration": "textDecoration",
|
|
textlength: "textLength",
|
|
textrendering: "textRendering",
|
|
"text-rendering": "textRendering",
|
|
to: "to",
|
|
transform: "transform",
|
|
typeof: "typeof",
|
|
u1: "u1",
|
|
u2: "u2",
|
|
underlineposition: "underlinePosition",
|
|
"underline-position": "underlinePosition",
|
|
underlinethickness: "underlineThickness",
|
|
"underline-thickness": "underlineThickness",
|
|
unicode: "unicode",
|
|
unicodebidi: "unicodeBidi",
|
|
"unicode-bidi": "unicodeBidi",
|
|
unicoderange: "unicodeRange",
|
|
"unicode-range": "unicodeRange",
|
|
unitsperem: "unitsPerEm",
|
|
"units-per-em": "unitsPerEm",
|
|
unselectable: "unselectable",
|
|
valphabetic: "vAlphabetic",
|
|
"v-alphabetic": "vAlphabetic",
|
|
values: "values",
|
|
vectoreffect: "vectorEffect",
|
|
"vector-effect": "vectorEffect",
|
|
version: "version",
|
|
vertadvy: "vertAdvY",
|
|
"vert-adv-y": "vertAdvY",
|
|
vertoriginx: "vertOriginX",
|
|
"vert-origin-x": "vertOriginX",
|
|
vertoriginy: "vertOriginY",
|
|
"vert-origin-y": "vertOriginY",
|
|
vhanging: "vHanging",
|
|
"v-hanging": "vHanging",
|
|
videographic: "vIdeographic",
|
|
"v-ideographic": "vIdeographic",
|
|
viewbox: "viewBox",
|
|
viewtarget: "viewTarget",
|
|
visibility: "visibility",
|
|
vmathematical: "vMathematical",
|
|
"v-mathematical": "vMathematical",
|
|
vocab: "vocab",
|
|
widths: "widths",
|
|
wordspacing: "wordSpacing",
|
|
"word-spacing": "wordSpacing",
|
|
writingmode: "writingMode",
|
|
"writing-mode": "writingMode",
|
|
x1: "x1",
|
|
x2: "x2",
|
|
x: "x",
|
|
xchannelselector: "xChannelSelector",
|
|
xheight: "xHeight",
|
|
"x-height": "xHeight",
|
|
xlinkactuate: "xlinkActuate",
|
|
"xlink:actuate": "xlinkActuate",
|
|
xlinkarcrole: "xlinkArcrole",
|
|
"xlink:arcrole": "xlinkArcrole",
|
|
xlinkhref: "xlinkHref",
|
|
"xlink:href": "xlinkHref",
|
|
xlinkrole: "xlinkRole",
|
|
"xlink:role": "xlinkRole",
|
|
xlinkshow: "xlinkShow",
|
|
"xlink:show": "xlinkShow",
|
|
xlinktitle: "xlinkTitle",
|
|
"xlink:title": "xlinkTitle",
|
|
xlinktype: "xlinkType",
|
|
"xlink:type": "xlinkType",
|
|
xmlbase: "xmlBase",
|
|
"xml:base": "xmlBase",
|
|
xmllang: "xmlLang",
|
|
"xml:lang": "xmlLang",
|
|
xmlns: "xmlns",
|
|
"xml:space": "xmlSpace",
|
|
xmlnsxlink: "xmlnsXlink",
|
|
"xmlns:xlink": "xmlnsXlink",
|
|
xmlspace: "xmlSpace",
|
|
y1: "y1",
|
|
y2: "y2",
|
|
y: "y",
|
|
ychannelselector: "yChannelSelector",
|
|
z: "z",
|
|
zoomandpan: "zoomAndPan"
|
|
};
|
|
const ELEMENT_ATTRIBUTE_MAPPING = {
|
|
input: {
|
|
checked: "defaultChecked",
|
|
value: "defaultValue",
|
|
maxlength: "maxLength"
|
|
},
|
|
form: {
|
|
enctype: "encType"
|
|
}
|
|
};
|
|
const ELEMENT_TAG_NAME_MAPPING = {
|
|
a: "a",
|
|
altglyph: "altGlyph",
|
|
altglyphdef: "altGlyphDef",
|
|
altglyphitem: "altGlyphItem",
|
|
animate: "animate",
|
|
animatecolor: "animateColor",
|
|
animatemotion: "animateMotion",
|
|
animatetransform: "animateTransform",
|
|
audio: "audio",
|
|
canvas: "canvas",
|
|
circle: "circle",
|
|
clippath: "clipPath",
|
|
"color-profile": "colorProfile",
|
|
cursor: "cursor",
|
|
defs: "defs",
|
|
desc: "desc",
|
|
discard: "discard",
|
|
ellipse: "ellipse",
|
|
feblend: "feBlend",
|
|
fecolormatrix: "feColorMatrix",
|
|
fecomponenttransfer: "feComponentTransfer",
|
|
fecomposite: "feComposite",
|
|
feconvolvematrix: "feConvolveMatrix",
|
|
fediffuselighting: "feDiffuseLighting",
|
|
fedisplacementmap: "feDisplacementMap",
|
|
fedistantlight: "feDistantLight",
|
|
fedropshadow: "feDropShadow",
|
|
feflood: "feFlood",
|
|
fefunca: "feFuncA",
|
|
fefuncb: "feFuncB",
|
|
fefuncg: "feFuncG",
|
|
fefuncr: "feFuncR",
|
|
fegaussianblur: "feGaussianBlur",
|
|
feimage: "feImage",
|
|
femerge: "feMerge",
|
|
femergenode: "feMergeNode",
|
|
femorphology: "feMorphology",
|
|
feoffset: "feOffset",
|
|
fepointlight: "fePointLight",
|
|
fespecularlighting: "feSpecularLighting",
|
|
fespotlight: "feSpotLight",
|
|
fetile: "feTile",
|
|
feturbulence: "feTurbulence",
|
|
filter: "filter",
|
|
font: "font",
|
|
"font-face": "fontFace",
|
|
"font-face-format": "fontFaceFormat",
|
|
"font-face-name": "fontFaceName",
|
|
"font-face-src": "fontFaceSrc",
|
|
"font-face-uri": "fontFaceUri",
|
|
foreignobject: "foreignObject",
|
|
g: "g",
|
|
glyph: "glyph",
|
|
glyphref: "glyphRef",
|
|
hatch: "hatch",
|
|
hatchpath: "hatchpath",
|
|
hkern: "hkern",
|
|
iframe: "iframe",
|
|
image: "image",
|
|
line: "line",
|
|
lineargradient: "linearGradient",
|
|
marker: "marker",
|
|
mask: "mask",
|
|
mesh: "mesh",
|
|
meshgradient: "meshgradient",
|
|
meshpatch: "meshpatch",
|
|
meshrow: "meshrow",
|
|
metadata: "metadata",
|
|
"missing-glyph": "missingGlyph",
|
|
mpath: "mpath",
|
|
path: "path",
|
|
pattern: "pattern",
|
|
polygon: "polygon",
|
|
polyline: "polyline",
|
|
radialgradient: "radialGradient",
|
|
rect: "rect",
|
|
script: "script",
|
|
set: "set",
|
|
solidcolor: "solidcolor",
|
|
stop: "stop",
|
|
style: "style",
|
|
svg: "svg",
|
|
switch: "switch",
|
|
symbol: "symbol",
|
|
text: "text",
|
|
textpath: "textPath",
|
|
title: "title",
|
|
tref: "tref",
|
|
tspan: "tspan",
|
|
unknown: "unknown",
|
|
use: "use",
|
|
video: "video",
|
|
view: "view",
|
|
vkern: "vkern"
|
|
};
|
|
|
|
const convertAriaAttribute = (kebabKey) => {
|
|
const [aria, ...parts] = kebabKey.split("-");
|
|
return `${aria}-${parts.join("").toLowerCase()}`;
|
|
};
|
|
const getKey = (key, node) => {
|
|
const lowerCaseKey = key.toLowerCase();
|
|
const mappedElementAttribute = ELEMENT_ATTRIBUTE_MAPPING[node.name] && ELEMENT_ATTRIBUTE_MAPPING[node.name][lowerCaseKey];
|
|
const mappedAttribute = ATTRIBUTE_MAPPING[lowerCaseKey];
|
|
if (mappedElementAttribute || mappedAttribute) {
|
|
return t__namespace.jsxIdentifier(mappedElementAttribute || mappedAttribute);
|
|
}
|
|
const kebabKey = kebabCase(key);
|
|
if (kebabKey.startsWith("aria-")) {
|
|
return t__namespace.jsxIdentifier(convertAriaAttribute(kebabKey));
|
|
}
|
|
if (kebabKey.startsWith("data-")) {
|
|
return t__namespace.jsxIdentifier(kebabKey);
|
|
}
|
|
return t__namespace.jsxIdentifier(key);
|
|
};
|
|
const getValue = (key, value) => {
|
|
if (Array.isArray(value)) {
|
|
return t__namespace.stringLiteral(replaceSpaces(value.join(" ")));
|
|
}
|
|
if (key === "style") {
|
|
return t__namespace.jsxExpressionContainer(stringToObjectStyle(value));
|
|
}
|
|
if (typeof value === "number" || isNumeric(value)) {
|
|
return t__namespace.jsxExpressionContainer(t__namespace.numericLiteral(Number(value)));
|
|
}
|
|
return t__namespace.stringLiteral(replaceSpaces(value));
|
|
};
|
|
const getAttributes = (node) => {
|
|
if (!node.properties)
|
|
return [];
|
|
const keys = Object.keys(node.properties);
|
|
const attributes = [];
|
|
let index = -1;
|
|
while (++index < keys.length) {
|
|
const key = keys[index];
|
|
const value = node.properties[key];
|
|
const attribute = t__namespace.jsxAttribute(getKey(key, node), getValue(key, value));
|
|
attributes.push(attribute);
|
|
}
|
|
return attributes;
|
|
};
|
|
|
|
const root = (h, node) => t__namespace.program(all(h, node));
|
|
const comment = (_, node, parent) => {
|
|
if (parent.type === "root" || !node.value)
|
|
return null;
|
|
const expression = t__namespace.jsxEmptyExpression();
|
|
t__namespace.addComment(expression, "inner", node.value);
|
|
return t__namespace.jsxExpressionContainer(expression);
|
|
};
|
|
const SPACE_REGEX = /^\s+$/;
|
|
const text = (h, node, parent) => {
|
|
if (parent.type === "root")
|
|
return null;
|
|
if (typeof node.value === "string" && SPACE_REGEX.test(node.value))
|
|
return null;
|
|
return t__namespace.jsxExpressionContainer(
|
|
t__namespace.stringLiteral(entities.decodeXML(String(node.value)))
|
|
);
|
|
};
|
|
const element = (h, node, parent) => {
|
|
if (!node.tagName)
|
|
return null;
|
|
const children = all(h, node);
|
|
const selfClosing = children.length === 0;
|
|
const name = ELEMENT_TAG_NAME_MAPPING[node.tagName] || node.tagName;
|
|
const openingElement = t__namespace.jsxOpeningElement(
|
|
t__namespace.jsxIdentifier(name),
|
|
getAttributes(node),
|
|
selfClosing
|
|
);
|
|
const closingElement = !selfClosing ? t__namespace.jsxClosingElement(t__namespace.jsxIdentifier(name)) : null;
|
|
const jsxElement = t__namespace.jsxElement(openingElement, closingElement, children);
|
|
if (parent.type === "root") {
|
|
return t__namespace.expressionStatement(jsxElement);
|
|
}
|
|
return jsxElement;
|
|
};
|
|
|
|
var handlers = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
root: root,
|
|
comment: comment,
|
|
text: text,
|
|
element: element
|
|
});
|
|
|
|
const helpers = { handlers };
|
|
|
|
const toBabelAST = (tree) => root(helpers, tree);
|
|
|
|
module.exports = toBabelAST;
|
|
//# sourceMappingURL=index.js.map
|