UNPKG

38.6 kBSource Map (JSON)View Raw
1{"version":3,"sources":["css.tsx"],"names":["React","Component","useEffect","useMemo","useState","camelCase","err","fetchText","parse","SvgAst","csstree","List","cssSelect","isTag","node","getParent","parent","getChildren","children","getName","elem","tag","getText","_node","getAttributeValue","name","props","removeSubsets","nodes","idx","length","ancestor","replace","includes","splice","existsOne","predicate","elems","some","getSiblings","hasAttrib","hasOwnProperty","findOne","i","l","findAll","result","j","push","adapter","cssSelectOpts","xmlMode","querySelectorAll","query","flattenToSelectors","cssAst","selectors","walk","visit","enter","rule","type","prelude","atrule","each","item","pseudos","pseudoItem","list","childType","filterByMqs","filter","atPrelude","first","mq","generate","useMqs","filterByPseudos","usePseudos","fromArray","map","pseudo","data","cleanPseudos","forEach","remove","specificity","selector","A","B","C","toLowerCase","charAt","compareSpecificity","aSpecificity","bSpecificity","selectorWithSpecificity","bySelectorSpecificity","a","b","pass","arr","len","chk","dbl","r","e","li","ri","exec","buffer","Array","tmp","sortSelectors","specs","s","declarationParseProps","context","parseValue","CSSStyleDeclaration","ast","styles","style","priority","Map","declarations","property","value","important","trim","set","styleError","message","console","warn","parseError","initStyle","selectedEl","closestElem","elemName","parseProps","parseCustomProperty","inlineStyles","document","styleElements","element","styleString","join","selectorsMq","selectorsPseudo","sortedSelectors","reverse","selectorStr","matched","camel","val","current","get","undefined","selectError","constructor","SyntaxError","SvgCss","xml","override","SvgCssUri","uri","setXml","then","catch","SvgWithCss","state","prevProps","setState","error","SvgWithCssUri","fetch"],"mappings":"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","sourcesContent":["import React, { Component, useEffect, useMemo, useState } from 'react';\nimport {\n camelCase,\n err,\n fetchText,\n JsxAST,\n Middleware,\n parse,\n Styles,\n SvgAst,\n UriProps,\n UriState,\n XmlAST,\n XmlProps,\n XmlState,\n} from './xml';\nimport csstree, {\n Atrule,\n AtrulePrelude,\n CssNode,\n Declaration,\n DeclarationList,\n List,\n ListItem,\n PseudoClassSelector,\n Rule,\n Selector,\n SelectorList,\n} from 'css-tree';\nimport cssSelect, { Adapter, Options, Predicate, Query } from 'css-select';\n\n/*\n * Style element inlining experiment based on SVGO\n * https://github.com/svg/svgo/blob/11f9c797411a8de966aacc4cb83dbb3e471757bc/plugins/inlineStyles.js\n * */\n\n/**\n * DOMUtils API for rnsvg AST (used by css-select)\n */\n// is the node a tag?\n// isTag: ( node:Node ) => isTag:Boolean\nfunction isTag(node: XmlAST | string): node is XmlAST {\n return typeof node === 'object';\n}\n\n// get the parent of the node\n// getParent: ( node:Node ) => parentNode:Node\n// returns null when no parent exists\nfunction getParent(node: XmlAST | string): XmlAST {\n return ((typeof node === 'object' && node.parent) || null) as XmlAST;\n}\n\n// get the node's children\n// getChildren: ( node:Node ) => children:[Node]\nfunction getChildren(node: XmlAST | string): Array<XmlAST | string> {\n return (typeof node === 'object' && node.children) || [];\n}\n\n// get the name of the tag'\n// getName: ( elem:ElementNode ) => tagName:String\nfunction getName(elem: XmlAST): string {\n return elem.tag;\n}\n\n// get the text content of the node, and its children if it has any\n// getText: ( node:Node ) => text:String\n// returns empty string when there is no text\nfunction getText(_node: XmlAST | string): string {\n return '';\n}\n\n// get the attribute value\n// getAttributeValue: ( elem:ElementNode, name:String ) => value:String\n// returns null when attribute doesn't exist\nfunction getAttributeValue(elem: XmlAST, name: string): string {\n return (elem.props[name] || null) as string;\n}\n\n// takes an array of nodes, and removes any duplicates, as well as any nodes\n// whose ancestors are also in the array\nfunction removeSubsets(nodes: Array<XmlAST | string>): Array<XmlAST | string> {\n let idx = nodes.length,\n node,\n ancestor,\n replace;\n\n // Check if each node (or one of its ancestors) is already contained in the\n // array.\n while (--idx > -1) {\n node = ancestor = nodes[idx];\n\n // Temporarily remove the node under consideration\n delete nodes[idx];\n replace = true;\n\n while (ancestor) {\n if (nodes.includes(ancestor)) {\n replace = false;\n nodes.splice(idx, 1);\n break;\n }\n ancestor = (typeof ancestor === 'object' && ancestor.parent) || null;\n }\n\n // If the node has been found to be unique, re-insert it.\n if (replace) {\n nodes[idx] = node;\n }\n }\n\n return nodes;\n}\n\n// does at least one of passed element nodes pass the test predicate?\nfunction existsOne(\n predicate: Predicate<XmlAST>,\n elems: Array<XmlAST | string>,\n): boolean {\n return elems.some(\n elem =>\n typeof elem === 'object' &&\n (predicate(elem) || existsOne(predicate, elem.children)),\n );\n}\n\n/*\n get the siblings of the node. Note that unlike jQuery's `siblings` method,\n this is expected to include the current node as well\n*/\nfunction getSiblings(node: XmlAST | string): Array<XmlAST | string> {\n const parent = typeof node === 'object' && node.parent;\n return (parent && parent.children) || [];\n}\n\n// does the element have the named attribute?\nfunction hasAttrib(elem: XmlAST, name: string): boolean {\n return elem.props.hasOwnProperty(name);\n}\n\n// finds the first node in the array that matches the test predicate, or one\n// of its children\nfunction findOne(\n predicate: Predicate<XmlAST>,\n elems: Array<XmlAST | string>,\n): XmlAST | undefined {\n let elem: XmlAST | undefined;\n\n for (let i = 0, l = elems.length; i < l && !elem; i++) {\n const node = elems[i];\n if (typeof node === 'string') {\n } else if (predicate(node)) {\n elem = node;\n } else {\n const { children } = node;\n if (children.length !== 0) {\n elem = findOne(predicate, children);\n }\n }\n }\n\n return elem;\n}\n\n// finds all of the element nodes in the array that match the test predicate,\n// as well as any of their children that match it\nfunction findAll(\n predicate: Predicate<XmlAST>,\n nodes: Array<XmlAST | string>,\n result: Array<XmlAST> = [],\n): Array<XmlAST> {\n for (let i = 0, j = nodes.length; i < j; i++) {\n const node = nodes[i];\n if (typeof node !== 'object') {\n continue;\n }\n if (predicate(node)) {\n result.push(node);\n }\n const { children } = node;\n if (children.length !== 0) {\n findAll(predicate, children, result);\n }\n }\n\n return result;\n}\n\nconst adapter: Adapter<XmlAST | string, XmlAST> = {\n removeSubsets,\n existsOne,\n getSiblings,\n hasAttrib,\n findOne,\n findAll,\n isTag,\n getParent,\n getChildren,\n getName,\n getText,\n getAttributeValue,\n};\n\nconst cssSelectOpts: Options<XmlAST | string, XmlAST> = {\n xmlMode: true,\n adapter,\n};\n\n/**\n * Evaluate a string of CSS selectors against the element and returns matched elements.\n *\n * @param {Query} query can be either a CSS selector string or a compiled query function.\n * @param {Array<XmlAST> | XmlAST} elems Elements to query. If it is an element, its children will be queried.\n * @return {Array<XmlAST>} All matching elements.\n */\nfunction querySelectorAll(query: Query, elems: XmlAST | XmlAST[]): XmlAST[] {\n return cssSelect(query, elems, cssSelectOpts);\n}\n\ntype FlatPseudoSelector = {\n item: ListItem<CssNode>;\n list: List<CssNode>;\n};\ntype FlatPseudoSelectorList = FlatPseudoSelector[];\ntype FlatSelector = {\n item: ListItem<CssNode>;\n atrule: Atrule | null;\n rule: CssNode;\n pseudos: FlatPseudoSelectorList;\n};\ntype FlatSelectorList = FlatSelector[];\n\n/**\n * Flatten a CSS AST to a selectors list.\n *\n * @param {Object} cssAst css-tree AST to flatten\n * @param {Array} selectors\n */\nfunction flattenToSelectors(cssAst: CssNode, selectors: FlatSelectorList) {\n csstree.walk(cssAst, {\n visit: 'Rule',\n enter(rule: CssNode) {\n const { type, prelude } = rule as Rule;\n if (type !== 'Rule') {\n return;\n }\n const atrule = this.atrule;\n (prelude as SelectorList).children.each((node, item) => {\n const { children } = node as Selector;\n const pseudos: FlatPseudoSelectorList = [];\n selectors.push({\n item,\n atrule,\n rule,\n pseudos,\n });\n children.each(({ type: childType }, pseudoItem, list) => {\n if (\n childType === 'PseudoClassSelector' ||\n childType === 'PseudoElementSelector'\n ) {\n pseudos.push({\n item: pseudoItem,\n list,\n });\n }\n });\n });\n },\n });\n}\n\n/**\n * Filter selectors by Media Query.\n *\n * @param {Array} selectors to filter\n * @return {Array} Filtered selectors that match the passed media queries\n */\nfunction filterByMqs(selectors: FlatSelectorList) {\n return selectors.filter(({ atrule }) => {\n if (atrule === null) {\n return true;\n }\n const { name, prelude } = atrule;\n const atPrelude = prelude as AtrulePrelude;\n const first = atPrelude && atPrelude.children.first();\n const mq = first && first.type === 'MediaQueryList';\n const query = mq ? csstree.generate(atPrelude) : name;\n return useMqs.includes(query);\n });\n}\n// useMqs Array with strings of media queries that should pass (<name> <expression>)\nconst useMqs = ['', 'screen'];\n\n/**\n * Filter selectors by the pseudo-elements and/or -classes they contain.\n *\n * @param {Array} selectors to filter\n * @return {Array} Filtered selectors that match the passed pseudo-elements and/or -classes\n */\nfunction filterByPseudos(selectors: FlatSelectorList) {\n return selectors.filter(({ pseudos }) =>\n usePseudos.includes(\n csstree.generate({\n type: 'Selector',\n children: new List<CssNode>().fromArray(\n pseudos.map(pseudo => pseudo.item.data),\n ),\n }),\n ),\n );\n}\n// usePseudos Array with strings of single or sequence of pseudo-elements and/or -classes that should pass\nconst usePseudos = [''];\n\n/**\n * Remove pseudo-elements and/or -classes from the selectors for proper matching.\n *\n * @param {Array} selectors to clean\n * @return {Array} Selectors without pseudo-elements and/or -classes\n */\nfunction cleanPseudos(selectors: FlatSelectorList) {\n selectors.forEach(({ pseudos }) =>\n pseudos.forEach(pseudo => pseudo.list.remove(pseudo.item)),\n );\n}\n\ntype Specificity = [number, number, number];\nfunction specificity(selector: Selector): Specificity {\n let A = 0;\n let B = 0;\n let C = 0;\n\n selector.children.each(function walk(node: CssNode) {\n switch (node.type) {\n case 'SelectorList':\n case 'Selector':\n node.children.each(walk);\n break;\n\n case 'IdSelector':\n A++;\n break;\n\n case 'ClassSelector':\n case 'AttributeSelector':\n B++;\n break;\n\n case 'PseudoClassSelector':\n switch (node.name.toLowerCase()) {\n case 'not':\n const children = (node as PseudoClassSelector).children;\n children && children.each(walk);\n break;\n\n case 'before':\n case 'after':\n case 'first-line':\n case 'first-letter':\n C++;\n break;\n\n // TODO: support for :nth-*(.. of <SelectorList>), :matches(), :has()\n\n default:\n B++;\n }\n break;\n\n case 'PseudoElementSelector':\n C++;\n break;\n\n case 'TypeSelector':\n // ignore universal selector\n const { name } = node;\n if (name.charAt(name.length - 1) !== '*') {\n C++;\n }\n break;\n }\n });\n\n return [A, B, C];\n}\n\n/**\n * Compares two selector specificities.\n * extracted from https://github.com/keeganstreet/specificity/blob/master/specificity.js#L211\n *\n * @param {Array} aSpecificity Specificity of selector A\n * @param {Array} bSpecificity Specificity of selector B\n * @return {Number} Score of selector specificity A compared to selector specificity B\n */\nfunction compareSpecificity(\n aSpecificity: Specificity,\n bSpecificity: Specificity,\n): number {\n for (let i = 0; i < 4; i += 1) {\n if (aSpecificity[i] < bSpecificity[i]) {\n return -1;\n } else if (aSpecificity[i] > bSpecificity[i]) {\n return 1;\n }\n }\n return 0;\n}\n\ntype Spec = {\n selector: FlatSelector;\n specificity: Specificity;\n};\nfunction selectorWithSpecificity(selector: FlatSelector): Spec {\n return {\n selector,\n specificity: specificity(selector.item.data as Selector),\n };\n}\n\n/**\n * Compare two simple selectors.\n *\n * @param {Object} a Simple selector A\n * @param {Object} b Simple selector B\n * @return {Number} Score of selector A compared to selector B\n */\nfunction bySelectorSpecificity(a: Spec, b: Spec): number {\n return compareSpecificity(a.specificity, b.specificity);\n}\n\n// Run a single pass with the given chunk size.\nfunction pass(arr: Spec[], len: number, chk: number, result: Spec[]) {\n // Step size / double chunk size.\n const dbl = chk * 2;\n // Bounds of the left and right chunks.\n let l, r, e;\n // Iterators over the left and right chunk.\n let li, ri;\n\n // Iterate over pairs of chunks.\n let i = 0;\n for (l = 0; l < len; l += dbl) {\n r = l + chk;\n e = r + chk;\n if (r > len) {\n r = len;\n }\n if (e > len) {\n e = len;\n }\n\n // Iterate both chunks in parallel.\n li = l;\n ri = r;\n while (true) {\n // Compare the chunks.\n if (li < r && ri < e) {\n // This works for a regular `sort()` compatible comparator,\n // but also for a simple comparator like: `a > b`\n if (bySelectorSpecificity(arr[li], arr[ri]) <= 0) {\n result[i++] = arr[li++];\n } else {\n result[i++] = arr[ri++];\n }\n }\n // Nothing to compare, just flush what's left.\n else if (li < r) {\n result[i++] = arr[li++];\n } else if (ri < e) {\n result[i++] = arr[ri++];\n }\n // Both iterators are at the chunk ends.\n else {\n break;\n }\n }\n }\n}\n\n// Execute the sort using the input array and a second buffer as work space.\n// Returns one of those two, containing the final result.\nfunction exec(arr: Spec[], len: number): Spec[] {\n // Rather than dividing input, simply iterate chunks of 1, 2, 4, 8, etc.\n // Chunks are the size of the left or right hand in merge sort.\n // Stop when the left-hand covers all of the array.\n let buffer = new Array(len);\n for (let chk = 1; chk < len; chk *= 2) {\n pass(arr, len, chk, buffer);\n const tmp = arr;\n arr = buffer;\n buffer = tmp;\n }\n return arr;\n}\n\n/**\n * Sort selectors stably by their specificity.\n *\n * @param {Array} selectors to be sorted\n * @return {Array} Stable sorted selectors\n */\nfunction sortSelectors(selectors: FlatSelectorList) {\n // Short-circuit when there's nothing to sort.\n const len = selectors.length;\n if (len <= 1) {\n return selectors;\n }\n const specs = selectors.map(selectorWithSpecificity);\n return exec(specs, len).map(s => s.selector);\n}\n\nconst declarationParseProps = {\n context: 'declarationList',\n parseValue: false,\n};\nfunction CSSStyleDeclaration(ast: XmlAST) {\n const { props, styles } = ast;\n if (!props.style) {\n props.style = {};\n }\n const style = props.style as Styles;\n const priority = new Map();\n ast.style = style;\n ast.priority = priority;\n if (!styles || styles.length === 0) {\n return;\n }\n try {\n const declarations = csstree.parse(\n styles,\n declarationParseProps,\n ) as DeclarationList;\n declarations.children.each(node => {\n try {\n const { property, value, important } = node as Declaration;\n const name = property.trim();\n priority.set(name, important);\n style[camelCase(name)] = csstree.generate(value).trim();\n } catch (styleError) {\n if (styleError.message !== 'Unknown node type: undefined') {\n console.warn(\n \"Warning: Parse error when parsing inline styles, style properties of this element cannot be used. The raw styles can still be get/set using .attr('style').value. Error details: \" +\n styleError,\n );\n }\n }\n });\n } catch (parseError) {\n console.warn(\n \"Warning: Parse error when parsing inline styles, style properties of this element cannot be used. The raw styles can still be get/set using .attr('style').value. Error details: \" +\n parseError,\n );\n }\n}\n\ninterface StyledAST extends XmlAST {\n style: Styles;\n priority: Map<string, boolean | undefined>;\n}\nfunction initStyle(selectedEl: XmlAST): StyledAST {\n if (!selectedEl.style) {\n CSSStyleDeclaration(selectedEl);\n }\n return selectedEl as StyledAST;\n}\n\n/**\n * Find the closest ancestor of the current element.\n * @param node\n * @param elemName\n * @return {?Object}\n */\nfunction closestElem(node: XmlAST, elemName: string) {\n let elem: XmlAST | null = node;\n while ((elem = elem.parent) && elem.tag !== elemName) {}\n return elem;\n}\n\nconst parseProps = {\n parseValue: false,\n parseCustomProperty: false,\n};\n\n/**\n * Moves + merges styles from style elements to element styles\n *\n * Options\n * useMqs (default: ['', 'screen'])\n * what media queries to be used\n * empty string element for styles outside media queries\n *\n * usePseudos (default: [''])\n * what pseudo-classes/-elements to be used\n * empty string element for all non-pseudo-classes and/or -elements\n *\n * @param {Object} document document element\n *\n * @author strarsis <strarsis@gmail.com>\n * @author modified by: msand <msand@abo.fi>\n */\nexport const inlineStyles: Middleware = function inlineStyles(\n document: XmlAST,\n) {\n // collect <style/>s\n const styleElements = querySelectorAll('style', document);\n\n //no <styles/>s, nothing to do\n if (styleElements.length === 0) {\n return document;\n }\n\n const selectors: FlatSelectorList = [];\n\n for (let element of styleElements) {\n const { children } = element;\n if (!children.length || closestElem(element, 'foreignObject')) {\n // skip empty <style/>s or <foreignObject> content.\n continue;\n }\n\n // collect <style/>s and their css ast\n try {\n const styleString = children.join('');\n flattenToSelectors(csstree.parse(styleString, parseProps), selectors);\n } catch (parseError) {\n console.warn(\n 'Warning: Parse error of styles of <style/> element, skipped. Error details: ' +\n parseError,\n );\n }\n }\n\n // filter for mediaqueries to be used or without any mediaquery\n const selectorsMq = filterByMqs(selectors);\n\n // filter for pseudo elements to be used\n const selectorsPseudo = filterByPseudos(selectorsMq);\n\n // remove PseudoClass from its SimpleSelector for proper matching\n cleanPseudos(selectorsPseudo);\n\n // stable sort selectors\n const sortedSelectors = sortSelectors(selectorsPseudo).reverse();\n\n // match selectors\n for (let { rule, item } of sortedSelectors) {\n if (rule === null) {\n continue;\n }\n const selectorStr = csstree.generate(item.data);\n try {\n // apply <style/> to matched elements\n const matched = querySelectorAll(selectorStr, document).map(initStyle);\n if (matched.length === 0) {\n continue;\n }\n csstree.walk(rule, {\n visit: 'Declaration',\n enter(node: CssNode) {\n const { property, value, important } = node as Declaration;\n // existing inline styles have higher priority\n // no inline styles, external styles, external styles used\n // inline styles, external styles same priority as inline styles, inline styles used\n // inline styles, external styles higher priority than inline styles, external styles used\n const name = property.trim();\n const camel = camelCase(name);\n const val = csstree.generate(value).trim();\n for (let element of matched) {\n const { style, priority } = element;\n const current = priority.get(name);\n if (current === undefined || current < important) {\n priority.set(name, important as boolean);\n style[camel] = val;\n }\n }\n },\n });\n } catch (selectError) {\n if (selectError.constructor === SyntaxError) {\n console.warn(\n 'Warning: Syntax error when trying to select \\n\\n' +\n selectorStr +\n '\\n\\n, skipped. Error details: ' +\n selectError,\n );\n continue;\n }\n throw selectError;\n }\n }\n\n return document;\n};\n\nexport function SvgCss(props: XmlProps) {\n const { xml, override } = props;\n const ast = useMemo<JsxAST | null>(\n () => (xml !== null ? parse(xml, inlineStyles) : null),\n [xml],\n );\n return <SvgAst ast={ast} override={override || props} />;\n}\n\nexport function SvgCssUri(props: UriProps) {\n const { uri } = props;\n const [xml, setXml] = useState<string | null>(null);\n useEffect(() => {\n uri\n ? fetchText(uri)\n .then(setXml)\n .catch(err)\n : setXml(null);\n }, [uri]);\n return <SvgCss xml={xml} override={props} />;\n}\n\n// Extending Component is required for Animated support.\n\nexport class SvgWithCss extends Component<XmlProps, XmlState> {\n state = { ast: null };\n componentDidMount() {\n this.parse(this.props.xml);\n }\n componentDidUpdate(prevProps: { xml: string | null }) {\n const { xml } = this.props;\n if (xml !== prevProps.xml) {\n this.parse(xml);\n }\n }\n parse(xml: string | null) {\n try {\n this.setState({ ast: xml ? parse(xml, inlineStyles) : null });\n } catch (e) {\n console.error(e);\n }\n }\n render() {\n const {\n props,\n state: { ast },\n } = this;\n return <SvgAst ast={ast} override={props.override || props} />;\n }\n}\n\nexport class SvgWithCssUri extends Component<UriProps, UriState> {\n state = { xml: null };\n componentDidMount() {\n this.fetch(this.props.uri);\n }\n componentDidUpdate(prevProps: { uri: string | null }) {\n const { uri } = this.props;\n if (uri !== prevProps.uri) {\n this.fetch(uri);\n }\n }\n async fetch(uri: string | null) {\n try {\n this.setState({ xml: uri ? await fetchText(uri) : null });\n } catch (e) {\n console.error(e);\n }\n }\n render() {\n const {\n props,\n state: { xml },\n } = this;\n return <SvgWithCss xml={xml} override={props} />;\n }\n}\n"]}
\No newline at end of file