{"version":3,"file":"index.mjs","sources":["../../../v1/src/index.js"],"sourcesContent":["/**\n *\n * module contains utility functions\n * for dealing with Idyll's internal representation\n * of an AST. The ast object is an array of nodes,\n * where each node is defined like:\n *\n * [ name, [\n *      [property1, [valueType, value ]],\n *       [property2, [valueType, value ]]\n *    ], [\n *  child1,\n *  child2,\n *  ...\n * ] ]\n *\n */\n\nconst appendNode = function(ast, node) {\n  return appendNodes(ast, [node]);\n};\n\nconst appendNodes = function(ast, nodes) {\n  return [].concat(ast, nodes);\n};\n\n/**\n * function that returns the names of the passed node\n * @param {*} node\n * @return {String} name of the node\n */\nconst getNodeName = function(node) {\n  return node[0];\n};\n\nconst createNode = function(name, props, children) {\n  let node = [name, [], children || []];\n  node = setProperties(node, props || {});\n  return node;\n};\n\n/**\n * Creates a textnode with the text passed\n * @param {*} text      the text inside a textnode\n */\nconst createTextNode = function(text) {\n  if (typeof text === 'string') {\n    return text;\n  }\n};\n\nconst getChildren = function(node) {\n  if (typeof node === 'string') {\n    return [];\n  }\n  if (typeof node[2] === 'string') {\n    return [node[2]];\n  }\n  return node[2] || [];\n};\n\nconst getText = function(node) {\n  const texts = [];\n  walkNodes(node, n => {\n    if (typeof n === 'string') {\n      texts.push(n);\n    }\n  });\n  return texts.join(' ');\n};\n\nconst walkNodes = function(ast, f) {\n  (ast || []).forEach(node => {\n    walkNodes(getChildren(node), f);\n    f(node);\n  });\n};\n\n/**\n * function to do a depth first traversal on the ast tree.\n * @param {*} ast     Array that forms the tree structure\n * @param {*} f       call-back function\n */\nconst walkNodesBreadthFirst = function(ast, f) {\n  let childAst = [];\n  (ast || []).forEach(node => {\n    f(node);\n    childAst = childAst.concat(getChildren(node));\n  });\n  if (childAst.length !== 0) {\n    walkNodesBreadthFirst(childAst, f);\n  }\n};\nconst findNodes = function(ast, filter) {\n  var result = [];\n  walkNodes(ast, node => {\n    if (filter(node)) result.push(node);\n  });\n  return result;\n};\n\nconst modifyChildren = function(node, modifier) {\n  if (typeof node === 'string') {\n    return node;\n  }\n  node[2] = getChildren(node).map(child => {\n    return modifier(child);\n  });\n  return node;\n};\n\n// TODO: wrap string in array so that the reduce doesn't err\nconst getNodesByName = function(ast, name) {\n  const handleNode = (acc, node) => {\n    if (node[0].toLowerCase() === name.toLowerCase()) {\n      acc.push(node);\n    }\n\n    const children = getChildren(node);\n\n    if (!children || typeof children === 'string') {\n      return acc;\n    }\n\n    return children.reduce(handleNode, acc);\n  };\n\n  // if (typeof ast === 'string') {\n  //   ast = [ast];\n  // }\n\n  return ast.reduce(handleNode, []);\n};\n\nconst filterChildren = function(node, filter) {\n  if (typeof node === 'string') {\n    return node;\n  }\n  node[2] = getChildren(node).filter(child => {\n    return filter(child);\n  });\n  return node;\n};\n\nconst filterNodes = function(ast, filter) {\n  return ast.filter(filter).map(node => {\n    if (typeof node === 'string') {\n      return node;\n    }\n\n    node[2] = filterNodes(node[2] || [], filter);\n    return node;\n  });\n};\n\nconst modifyNodesByName = function(ast, name, modifier) {\n  const handleNode = node => {\n    if (typeof node === 'string') {\n      return node;\n    }\n    if (node[0].toLowerCase() === name.toLowerCase()) {\n      node = modifier(node);\n    }\n\n    node = modifyChildren(node, handleNode);\n    return node;\n  };\n\n  ast = ast.map(node => {\n    return handleNode(node);\n  });\n  return ast;\n};\n\nconst getProperty = function(node, key) {\n  if (typeof node === 'string') {\n    return null;\n  }\n  let retProp;\n  node[1].forEach(element => {\n    if (element[0] === key) {\n      retProp = element[1];\n    }\n  });\n  return retProp;\n};\n\nconst getProperties = function(node) {\n  if (typeof node === 'string') {\n    return [];\n  }\n  return node[1] || [];\n};\n\nconst getPropertiesByType = function(node, type) {\n  if (typeof node === 'string') {\n    return [];\n  }\n  return (node[1] || []).filter(([propName, [propType, propValue]]) => {\n    return propType === type;\n  });\n};\n\nconst prependNode = function(ast, node) {\n  return prependNodes(ast, [node]);\n};\n\nconst prependNodes = function(ast, nodes) {\n  return [].concat(nodes, ast);\n};\n\nconst removeNodesByName = function(ast, name) {\n  return filterNodes(ast, node => {\n    if (typeof node === 'string') {\n      return true;\n    }\n    if (node[0].toLowerCase() === name.toLowerCase()) {\n      return false;\n    }\n    return true;\n  });\n};\n\nconst setProperty = function(node, key, value) {\n  if (typeof node === 'string') {\n    console.warn('Cannot setPropery on string node.');\n    return node;\n  }\n\n  let hasSet = false;\n  const isArr = Array.isArray(value);\n  node[1] = node[1].map(element => {\n    if (element[0] === key) {\n      hasSet = true;\n      return [element[0], isArr ? value : ['value', value]];\n    }\n    return element;\n  });\n  if (!hasSet) {\n    node[1] = node[1].concat([[key, isArr ? value : ['value', value]]]);\n  }\n\n  return node;\n};\n\nconst setProperties = function(node, properties) {\n  if (typeof node === 'string') {\n    console.warn('Cannot setProperties of string node.');\n    return node;\n  }\n  Object.keys(properties).forEach(key => {\n    node = setProperty(node, key, properties[key]);\n  });\n  return node;\n};\n\nconst removeProperty = function(node, key) {\n  if (typeof node === 'string') {\n    console.warn('Cannot removePropery of string node.');\n    return node;\n  }\n  node[1] = node[1].filter(([propName, propVal]) => {\n    if (propName === key) {\n      return false;\n    }\n    return true;\n  });\n  return node;\n};\n\nexport {\n  appendNode,\n  appendNodes,\n  createNode,\n  createTextNode,\n  walkNodesBreadthFirst,\n  getChildren,\n  getNodesByName,\n  filterChildren,\n  filterNodes,\n  modifyChildren,\n  modifyNodesByName,\n  getNodeName,\n  getProperty,\n  getProperties,\n  getPropertiesByType,\n  getText,\n  prependNode,\n  prependNodes,\n  removeNodesByName,\n  setProperties,\n  setProperty,\n  removeProperty,\n  walkNodes,\n  findNodes\n};\n"],"names":["appendNode","ast","node","appendNodes","nodes","concat","getNodeName","createNode","name","props","children","setProperties","createTextNode","text","getChildren","getText","texts","walkNodes","n","push","join","f","forEach","walkNodesBreadthFirst","childAst","length","findNodes","filter","result","modifyChildren","modifier","map","child","getNodesByName","handleNode","acc","toLowerCase","reduce","filterChildren","filterNodes","modifyNodesByName","getProperty","key","retProp","element","getProperties","getPropertiesByType","type","propType","prependNode","prependNodes","removeNodesByName","setProperty","value","console","warn","hasSet","isArr","Array","isArray","properties","Object","keys","removeProperty","propName"],"mappings":"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"}