{"version":3,"file":"index.mjs","sources":["../../src/utils/schema2element.js","../../src/components/placeholder.js","../../src/components/author-tool.js","../../src/utils/index.js","../../src/runtime.js","../../src/index.js"],"sourcesContent":["import React, { createElement } from 'react';\nimport DOM from 'react-dom-factories';\nimport { paramCase, pascalCase } from 'change-case';\n\nconst _componentMap = new WeakMap();\n\nclass ReactJsonSchema {\n  constructor(componentMap) {\n    if (componentMap) this.setComponentMap(componentMap);\n  }\n\n  parseSchema(schema) {\n    let element = null;\n    let elements = null;\n    if (Array.isArray(schema)) {\n      elements = this.parseSubSchemas(schema);\n    } else {\n      element = this.createComponent(schema);\n    }\n    return element || elements;\n  }\n\n  parseSubSchemas(subSchemas = []) {\n    const Components = [];\n    let index = 0;\n    for (const subSchema of subSchemas) {\n      if (typeof subSchema === 'string') {\n        Components.push(subSchema);\n      } else {\n        subSchema.key =\n          typeof subSchema.key !== 'undefined' ? subSchema.key : index;\n        Components.push(this.parseSchema(subSchema));\n        index++;\n      }\n    }\n    return Components;\n  }\n\n  createComponent(schema) {\n    if (schema.type) {\n      if (schema.type === 'textnode') return schema.value;\n    }\n    const { component, children, ...rest } = schema;\n    const Component = this.resolveComponent(schema);\n    const Children = this.resolveComponentChildren(schema);\n    return createElement(Component, rest, Children);\n  }\n\n  resolveComponent(schema) {\n    const componentMap = this.getComponentMap();\n    let Component;\n    // bail early if there is no component name\n    if (!schema.hasOwnProperty('component')) {\n      throw new Error(\n        'ReactJsonSchema could not resolve a component due to a missing component attribute in the schema.'\n      );\n    }\n\n    // if it's already a ref bail early\n    if (schema.component === Object(schema.component)) {\n      return schema.component;\n    }\n\n    const [name, ...subs] = schema.component.split('.');\n\n    // find the def in the provided map\n    if (componentMap) {\n      Component = componentMap[name];\n      if (!Component) Component = componentMap[paramCase(name)];\n      if (!Component) Component = componentMap[pascalCase(name)];\n\n      for (let i = 0; i < subs.length; i++) {\n        Component = Component.default[subs[i]] || Component[subs[i]];\n      }\n    }\n\n    // if still nothing found it's a native DOM component or an error\n    if (!Component) {\n      if (DOM.hasOwnProperty(name)) {\n        Component = schema.component;\n      } else {\n        console.warn(\n          `Could not find an implementation for: ${schema.component}`\n        );\n        return () => (\n          <div style={{ color: 'black', border: 'solid 1px red' }}>\n            <pre>Could not find an implementation for: {schema.component}</pre>\n          </div>\n        );\n      }\n    }\n\n    // if there is a default prop (CommonJS) return that\n    return Component.default || Component;\n  }\n\n  resolveComponentChildren(schema) {\n    const children = schema.hasOwnProperty('children')\n      ? this.parseSchema(schema.children)\n      : [];\n    return children.length ? children : undefined;\n  }\n\n  getComponentMap() {\n    return _componentMap.get(this);\n  }\n\n  setComponentMap(componentMap) {\n    _componentMap.set(this, componentMap);\n  }\n}\n\nexport default ReactJsonSchema;\n","import React from 'react';\n\nexport const generatePlaceholder = (name) => {\n  return class extends React.PureComponent {\n    constructor(props) {\n      super(props);\n      console.warn(`Warning: attempting to use component named ${name}, but it wasn't found`);\n    }\n\n    render() {\n      const { idyll, updateProps, hasError, ...props } = this.props;\n      return <div {...props} />;\n    }\n  }\n}\n","import React from 'react';\nimport ReactTooltip from 'react-tooltip';\n\nclass AuthorTool extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {\n      isAuthorView: false,\n      debugHeight: 0,\n      componentHeight: 0,\n      hasPressedButton: false\n    };\n    this.handleClick = this.handleClick.bind(this);\n  }\n\n  // For all available props in metaValues, display them\n  // If runtimeValues has a value for given prop, display it\n  // Returns this in a single table row <tr>\n  handleTableValues(metaValues, runtimeValues) {\n    return metaValues.props.map(prop => {\n      const runtimeValue = runtimeValues.props[prop.name];\n      let currentPropValue = null;\n      if (runtimeValue !== undefined) {\n        if (\n          runtimeValue &&\n          {}.toString.call(runtimeValue) === '[object Function]'\n        ) {\n          currentPropValue = <em>function</em>;\n        } else {\n          currentPropValue = runtimeValue;\n        }\n      }\n      return (\n        <tr key={JSON.stringify(prop)} className=\"props-table-row\">\n          <td>{prop.name}</td>\n          <td className=\"props-table-type\">{prop.type}</td>\n          <td>{prop.example}</td>\n          <td>{currentPropValue}</td>\n        </tr>\n      );\n    });\n  }\n\n  // Returns authoring information for the prop values in table format\n  // and includes a link to the docs page at the bottom\n  handleFormatComponent(runtimeValues) {\n    const metaValues = runtimeValues.type._idyll;\n    const componentName = metaValues.name;\n\n    // Docs use lowercase component name for link\n    const componentLowerCase =\n      componentName.charAt(0).toLowerCase() + componentName.slice(1);\n    const componentDocsLink =\n      'https://idyll-lang.org/docs/components/default/' + componentLowerCase;\n\n    const showProps = this.handleTableValues(metaValues, runtimeValues);\n    const { isAuthorView, debugHeight, componentHeight } = this.state;\n    const currentDebugHeight = isAuthorView ? debugHeight : 0;\n    const marginToGive = isAuthorView ? 15 : 0;\n    // If a component's height is too small, button will overlap with table\n    // so add margin to get a minimal height (40px seems fine)\n    const marginAboveTable =\n      componentHeight < 40 && isAuthorView ? 40 - componentHeight : 0;\n    return (\n      <div\n        className=\"debug-collapse\"\n        style={{\n          height: currentDebugHeight + 'px',\n          marginBottom: marginToGive + 'px',\n          marginTop: marginAboveTable + 'px'\n        }}\n      >\n        <div\n          className=\"author-component-view\"\n          ref={inner => (this.innerHeight = inner)}\n        >\n          <table className=\"props-table\">\n            <tbody>\n              <tr className=\"props-table-row\">\n                <th>Prop</th>\n                <th>Type</th>\n                <th>Example</th>\n                <th>Current Value</th>\n              </tr>\n              {showProps}\n            </tbody>\n          </table>\n          <div className=\"icon-links\">\n            <a className=\"icon-link\" href={componentDocsLink}>\n              <img\n                className=\"icon-link-image\"\n                src=\"https://raw.githubusercontent.com/google/material-design-icons/master/action/svg/design/ic_description_24px.svg?sanitize=true\"\n              />\n            </a>\n            <a className=\"icon-link\" href={componentDocsLink}>\n              <span\n                style={{\n                  fontFamily: 'courier',\n                  fontSize: '12px',\n                  marginTop: '8px'\n                }}\n              >\n                docs\n              </span>\n            </a>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  // Flips between whether we are in the author view of a component\n  handleClick() {\n    this.setState(prevState => ({\n      isAuthorView: !prevState.isAuthorView,\n      debugHeight: this.innerHeight.getBoundingClientRect().height\n    }));\n    if (!this.state.hasPressedButton) {\n      this.setState({\n        componentHeight: this._refContainer.getBoundingClientRect().height,\n        hasPressedButton: true\n      });\n    }\n  }\n\n  // Returns an entire author view, including the component itself,\n  // a quill icon to indicate whether we're hovering in the component,\n  // and debugging information when the icon is pressed\n  render() {\n    const { idyll, updateProps, hasError, ...props } = this.props;\n    const addBorder = this.state.isAuthorView\n      ? {\n          boxShadow: '5px 5px 10px 1px lightGray',\n          transition: 'box-shadow 0.35s linear',\n          padding: '0px 10px 10px',\n          margin: '0px -10px 20px'\n        }\n      : null;\n    const putButtonBack = this.state.isAuthorView\n      ? {\n          right: '10px',\n          top: '3px'\n        }\n      : null;\n\n    return (\n      <div\n        className=\"component-debug-view\"\n        style={addBorder}\n        ref={ref => (this._refContainer = ref)}\n      >\n        {props.component}\n        <button\n          className=\"author-view-button\"\n          style={putButtonBack}\n          onClick={this.handleClick}\n          data-tip\n          data-for={props.uniqueKey}\n        />\n        <ReactTooltip\n          className=\"button-tooltip\"\n          id={props.uniqueKey}\n          type=\"info\"\n          effect=\"solid\"\n          place=\"bottom\" // TODO not showing up ?\n          disable={this.state.isAuthorView}\n        >\n          <div className=\"tooltip-header\">\n            {props.authorComponent.type._idyll.name} Component\n          </div>\n          <div className=\"tooltip-subtitle\">Click for more info</div>\n        </ReactTooltip>\n        {this.handleFormatComponent(props.authorComponent)}\n      </div>\n    );\n  }\n}\n\nexport default AuthorTool;\n","import falafel from 'falafel';\nimport { parse } from 'csv-parse/sync';\n\nconst {\n  cloneNode,\n  getChildren,\n  getNodeName,\n  getNodeType,\n  getProperties,\n  isTextNode,\n  removeNodes\n} = require('idyll-ast');\n\nconst isPropertyAccess = node => {\n  const index = node.parent.source().indexOf(`.${node.name}`);\n  if (index === -1) {\n    return false;\n  }\n  const proxyString = '__idyllStateProxy';\n  if (index >= proxyString.length) {\n    if (\n      node.parent\n        .source()\n        .substr(index - proxyString.length, proxyString.length) === proxyString\n    ) {\n      return false;\n    }\n  }\n  return true;\n};\n\nconst isObjectKey = node => {\n  return node.parent.type === 'Property' && node.parent.key === node;\n};\n\nexport const buildExpression = (acc, expr, isEventHandler) => {\n  let identifiers = [];\n  let modifiedExpression = '';\n\n  try {\n    modifiedExpression = falafel(\n      isEventHandler ? expr : `var __idyllReturnValue = ${expr || 'undefined'}`,\n      node => {\n        switch (node.type) {\n          case 'Identifier':\n            const skip = isPropertyAccess(node) || isObjectKey(node);\n            if (Object.keys(acc).indexOf(node.name) > -1) {\n              identifiers.push(node.name);\n              if (!skip) {\n                node.update('__idyllStateProxy.' + node.source());\n              }\n            }\n            break;\n        }\n      }\n    );\n  } catch (e) {\n    console.error(e);\n  }\n\n  if (!isEventHandler) {\n    return `\n    ((context) => {\n      var __idyllStateProxy = new Proxy({}, {\n        get: (_, prop) => {\n          return context[prop];\n        },\n        set: (_, prop, value) => {\n          console.warn('Warning, trying to set a value in a property expression.');\n        }\n      });\n      ${modifiedExpression};\n      return __idyllReturnValue;\n    })(this)`;\n  }\n\n  return `\n    ((context) => {\n        var __idyllExpressionExecuted = false;\n        var __idyllStateProxy = new Proxy({\n          ${identifiers\n            .map(key => {\n              return `${key}: ${\n                key !== 'refs'\n                  ? `context.__idyllCopy(context['${key}'])`\n                  : `context['${key}']`\n              }`;\n            })\n            .join(', ')}\n        }, {\n          get: (target, prop) => {\n            return target[prop];\n          },\n          set: (target, prop, value) => {\n            if (__idyllExpressionExecuted) {\n              var newState = {};\n              newState[prop] = value;\n              context.__idyllUpdate(newState);\n            }\n            target[prop] = value;\n            return true;\n          }\n        });\n        ${modifiedExpression};\n        context.__idyllUpdate({\n          ${identifiers\n            .filter(key => key !== 'refs')\n            .map(key => {\n              return `${key}: __idyllStateProxy['${key}']`;\n            })\n            .join(', ')}\n        });\n        __idyllExpressionExecuted = true;\n    })(this)\n  `;\n};\n\nexport const evalExpression = (acc, expr, key, context) => {\n  const isEventHandler =\n    key && (key.match(/^on[A-Z].*/) || key.match(/^handle[A-Z].*/));\n  let e = buildExpression(acc, expr, isEventHandler);\n  if (isEventHandler) {\n    return function() {\n      eval(e);\n    }.bind(\n      Object.assign({}, acc, context || {}, {\n        __idyllCopy: function copy(o) {\n          if (typeof o !== 'object') return o;\n          var output, v, key;\n          output = Array.isArray(o) ? [] : {};\n          for (key in o) {\n            v = o[key];\n            output[key] = typeof v === 'object' ? copy(v) : v;\n          }\n          return output;\n        }\n      })\n    );\n  }\n\n  try {\n    return function(evalString) {\n      try {\n        return eval('(' + evalString + ')');\n      } catch (err) {\n        console.warn('Error occurred in Idyll expression');\n      }\n    }.call(Object.assign({}, acc), e);\n  } catch (err) {}\n};\n\nexport const getVars = (arr, context = {}) => {\n  const formatAccumulatedValues = acc => {\n    const ret = {};\n    Object.keys(acc).forEach(key => {\n      const accVal = acc[key];\n      if (\n        typeof accVal.update !== 'undefined' &&\n        typeof accVal.value !== 'undefined'\n      ) {\n        ret[key] = accVal.value;\n      } else {\n        ret[key] = accVal;\n      }\n    });\n    return ret;\n  };\n\n  const pluck = (acc, val) => {\n    const variableType = getNodeType(val);\n    const attrs = getProperties(val) || {};\n\n    if (!attrs.name || !attrs.value) return attrs;\n\n    const nameValue = attrs.name.value;\n    const valueType = attrs.value.type;\n    const valueValue = attrs.value.value;\n\n    switch (valueType) {\n      case 'value':\n        acc[nameValue] = valueValue;\n        break;\n      case 'variable':\n        if (context.hasOwnProperty(valueValue)) {\n          acc[nameValue] = context[valueValue];\n        } else {\n          acc[nameValue] = evalExpression(context, expr);\n        }\n        break;\n      case 'expression':\n        const expr = valueValue;\n        if (variableType === 'var') {\n          acc[nameValue] = evalExpression(\n            Object.assign({}, context, formatAccumulatedValues(acc)),\n            expr\n          );\n        } else {\n          acc[nameValue] = {\n            value: evalExpression(\n              Object.assign({}, context, formatAccumulatedValues(acc)),\n              expr\n            ),\n            update: (newState, oldState, context = {}) => {\n              return evalExpression(\n                Object.assign({}, oldState, newState, context),\n                expr\n              );\n            }\n          };\n        }\n    }\n    return acc;\n  };\n\n  return arr.reduce(pluck, {});\n};\n\nexport const filterIdyllProps = (props, filterInjected) => {\n  const {\n    __vars__,\n    __expr__,\n    idyllASTNode,\n    hasHook,\n    initialState,\n    isHTMLNode,\n    refName,\n    onEnterViewFully,\n    onEnterView,\n    onExitViewFully,\n    onExitView,\n    fullWidth,\n    ...rest\n  } = props;\n  if (filterInjected) {\n    const { idyll, hasError, updateProps, ...ret } = rest;\n    return ret;\n  }\n  return rest;\n};\nexport const getData = (arr, datasets = {}) => {\n  const pluck = (acc, val) => {\n    const nameValue = getProperties(val).name.value;\n    const sourceValue = getProperties(val).source.value;\n    const async = getProperties(val).async\n      ? getProperties(val).async.value\n      : false;\n    if (async) {\n      const initialValue = getProperties(val).initialValue\n        ? JSON.parse(getProperties(val).initialValue.value)\n        : [];\n\n      let dataPromise = new Promise(res => res(initialValue));\n\n      if (typeof fetch !== 'undefined') {\n        dataPromise = fetch(sourceValue)\n          .then(res => {\n            if (res.status >= 400) {\n              throw new Error(\n                `Error Status ${\n                  res.status\n                } occurred while fetching data from ${sourceValue}. If you are using a file to load the data and not a url, make sure async is not set to true.`\n              );\n            }\n            if (sourceValue.endsWith('.csv')) {\n              return res\n                .text()\n                .then(resString =>\n                  parse(resString, {\n                    cast: true,\n                    columns: true,\n                    skip_empty_lines: true,\n                    ltrim: true,\n                    rtrim: true\n                  })\n                )\n                .catch(e => {\n                  console.error(`Error while parsing csv: ${e}`);\n                });\n            }\n            return res.json().catch(e => console.error(e));\n          })\n          .catch(e => {\n            console.error(e);\n          });\n      } else if (typeof window !== 'undefined') {\n        console.warn('Could not find fetch.');\n      }\n      acc.asyncData[nameValue] = {\n        initialValue,\n        dataPromise\n      };\n    } else {\n      acc.syncData[nameValue] = datasets[nameValue];\n    }\n\n    return acc;\n  };\n\n  return arr.reduce(pluck, { syncData: {}, asyncData: {} });\n};\n\nexport const splitAST = ast => {\n  const state = {\n    vars: [],\n    derived: [],\n    data: [],\n    elements: []\n  };\n\n  const handleNode = storeElements => {\n    return node => {\n      const type = getNodeType(node);\n      const children = getChildren(node);\n      if (type === 'var') {\n        state.vars.push(node);\n      } else if (state[type]) {\n        state[type].push(node);\n      } else if (storeElements) {\n        state.elements.push(node);\n      }\n      if (!children || (children.length === 1 && isTextNode(children[0]))) {\n        return;\n      }\n      children.forEach(handleNode(false));\n    };\n  };\n\n  ast.forEach(handleNode(true));\n  return state;\n};\n\n//Properties that add logic to components for callbacks.\nexport const hooks = [\n  'onEnterView',\n  'onEnterViewFully',\n  'onExitView',\n  'onExitViewFully'\n];\n\nexport const scrollMonitorEvents = {\n  onEnterView: 'enterViewport',\n  onEnterViewFully: 'fullyEnterViewport',\n  onExitView: 'partiallyExitViewport',\n  onExitViewFully: 'exitViewport'\n};\n\nexport const translate = ast => {\n  const attrConvert = (props, node) => {\n    let reducedProps = {\n      idyllASTNode: node\n    };\n    for (let propName in props) {\n      const name = propName;\n      const type = props[propName].type;\n      const value = props[propName].value;\n      if (type == 'variable') {\n        if (!reducedProps.__vars__) {\n          reducedProps.__vars__ = {};\n        }\n        reducedProps.__vars__[name] = value;\n      }\n      if (type == 'expression') {\n        if (!reducedProps.__expr__) {\n          reducedProps.__expr__ = {};\n        }\n        reducedProps.__expr__[name] = value;\n      }\n\n      if (hooks.includes(name)) {\n        reducedProps.hasHook = true;\n      }\n\n      reducedProps[name] = value;\n    }\n    return reducedProps;\n  };\n  const tNode = node => {\n    if (isTextNode(node)) return node;\n\n    let name = getNodeName(node);\n\n    let attrs = getProperties(node);\n    if (!attrs) {\n      attrs = {};\n    }\n    const children = getChildren(node);\n    return {\n      component: name,\n      ...attrConvert(attrs, node),\n      children: children.map(tNode)\n    };\n  };\n\n  return splitAST(getChildren(ast)).elements.map(tNode);\n};\n\nexport const mapTree = (tree, mapFn, filterFn = () => true, depth = 0) => {\n  const walkFn = depth => (acc, node) => {\n    //To check for textnodes\n    if (node.component) {\n      //To check for children\n      if (node.children) {\n        node.children = node.children.reduce(walkFn(depth + 1), []);\n      }\n    }\n\n    if (filterFn(node)) {\n      acc.push(mapFn(node, depth));\n    }\n    return acc;\n  };\n  let value = tree.reduce(walkFn(depth), []);\n  return value;\n};\n\nexport const filterASTForDocument = ast => {\n  return removeNodes(cloneNode(ast), node => getNodeName(node) === 'meta');\n};\n\nexport const findWrapTargets = (schema, state, components) => {\n  //Custom components\n  const targets = [];\n  //Name of custom components\n  const componentNames = Object.keys(components);\n\n  componentNames.forEach((component, i) => {\n    let words = component.split('-');\n    for (let i = 0; i < words.length; i++) {\n      words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);\n    }\n    componentNames[i] = words.join('').toLowerCase();\n  });\n\n  //Array of keys for the runtime state passed.\n  const stateKeys = Object.keys(state);\n\n  //Populating target with the custom components\n  //Walk the whole tree, collect and return the nodes\n  //for wrapping\n  mapTree(schema, node => {\n    if (node.component === 'textnode') {\n      return node;\n    }\n\n    //Custom components will have hooks attached to them\n    if (node.hasHook) {\n      targets.push(node);\n      return node;\n    }\n\n    if (node.component) {\n      const checkName = node.component\n        .toLowerCase()\n        .split('-')\n        .join('');\n      if (componentNames.includes(checkName)) {\n        targets.push(node);\n        return node;\n      }\n    }\n\n    const { component, children, __vars__, __expr__, ...props } = node;\n\n    const expressions = Object.keys(__expr__ || {});\n    const variables = Object.keys(__vars__ || {});\n\n    for (let prop in props) {\n      if (variables.includes(prop) || expressions.includes(prop)) {\n        targets.push(node);\n        return node;\n      }\n    }\n    return node;\n  });\n\n  return targets;\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport scrollparent from 'scrollparent';\nimport scrollMonitor from 'scrollmonitor';\nimport ReactJsonSchema from './utils/schema2element';\nimport entries from 'object.entries';\nimport values from 'object.values';\nimport { generatePlaceholder } from './components/placeholder';\nimport AuthorTool from './components/author-tool';\nimport { getChildren } from 'idyll-ast';\nimport equal from 'fast-deep-equal';\n\nimport * as layouts from 'idyll-layouts';\nimport * as themes from 'idyll-themes';\n\nimport {\n  getData,\n  getVars,\n  filterASTForDocument,\n  splitAST,\n  translate,\n  findWrapTargets,\n  filterIdyllProps,\n  mapTree,\n  evalExpression,\n  hooks,\n  scrollMonitorEvents\n} from './utils';\n\nconst updatePropsCallbacks = [];\nconst updateRefsCallbacks = [];\nconst scrollWatchers = [];\nconst scrollOffsets = {};\nconst refCache = {};\nconst evalContext = {};\nlet scrollContainer;\n\nconst getLayout = layout => {\n  return layouts[layout.trim()] || {};\n};\n\nconst getTheme = theme => {\n  return themes[theme.trim()] || {};\n};\n\nconst getRefs = () => {\n  const refs = {};\n  if (!scrollContainer) {\n    return refCache;\n  }\n\n  scrollWatchers.forEach(watcher => {\n    // left and right props assume no horizontal scrolling\n    const {\n      watchItem,\n      callbacks,\n      container,\n      recalculateLocation,\n      offsets,\n      ...watcherProps\n    } = watcher;\n    refs[watchItem.dataset.ref] = {\n      ...watcherProps,\n      ...refCache[watchItem.dataset.ref],\n      domNode: watchItem\n    };\n  });\n\n  return { ...refCache, ...refs };\n};\n\nlet wrapperKey = 0;\nconst createWrapper = ({\n  theme,\n  layout,\n  authorView,\n  textEditComponent,\n  userViewComponent,\n  userInlineViewComponent,\n  wrapTextComponents\n}) => {\n  return class Wrapper extends React.PureComponent {\n    constructor(props) {\n      super(props);\n\n      this.key = wrapperKey++;\n      this.ref = {};\n      this.onUpdateRefs = this.onUpdateRefs.bind(this);\n      this.onUpdateProps = this.onUpdateProps.bind(this);\n\n      const vars = values(props.__vars__);\n      const exps = values(props.__expr__);\n\n      this.usesRefs = exps.some(v => v && v.includes('refs.'));\n\n      this.state = { hasError: false, error: null };\n\n      // listen for props updates IF we care about them\n      if (vars.length || exps.length) {\n        // called with new doc state\n        // when any component calls updateProps()\n        updatePropsCallbacks.push(this.onUpdateProps);\n        this.state = this.onUpdateProps(\n          props.initialState,\n          Object.keys(props),\n          true\n        );\n      }\n\n      // listen for ref updates IF we care about them\n      if (props.hasHook || this.usesRefs) {\n        updateRefsCallbacks.push(this.onUpdateRefs);\n      }\n    }\n\n    componentDidCatch(error, info) {\n      this.setState({ hasError: true, error: error });\n    }\n\n    onUpdateProps(newState, changedKeys, initialRender) {\n      const { __vars__, __expr__ } = this.props;\n\n      // were there changes to any vars we track?\n      // or vars our expressions reference?\n      const shouldUpdate =\n        initialRender ||\n        changedKeys.some(k => {\n          return (\n            values(__vars__).includes(k) ||\n            values(__expr__).some(expr => expr.includes(k))\n          );\n        });\n      // if nothing we care about changed bail out and don't re-render\n      if (!shouldUpdate) return;\n\n      // update this component's state\n      const nextState = {};\n      // pull in the latest value for any tracked vars\n      Object.keys(__vars__).forEach(key => {\n        nextState[key] = newState[__vars__[key]];\n      });\n      // re-run this component's expressions using the latest doc state\n      Object.keys(__expr__).forEach(key => {\n        nextState[key] = evalExpression(\n          { ...newState, refs: getRefs() },\n          __expr__[key],\n          key,\n          evalContext\n        );\n      });\n\n      if (initialRender) {\n        return Object.assign({ hasError: false }, nextState);\n      }\n      // trigger a re-render of this component\n      // and more importantly, its wrapped component\n      this.setState(Object.assign({ hasError: false, error: null }, nextState));\n    }\n\n    onUpdateRefs(newState) {\n      const { __expr__ } = this.props;\n\n      if (this.usesRefs) {\n        const nextState = { refs: newState.refs };\n        entries(__expr__).forEach(([key, val]) => {\n          if (!val.includes('refs.')) {\n            return;\n          }\n          nextState[key] = evalExpression(newState, val, key, evalContext);\n        });\n\n        // trigger a render with latest state\n        this.setState(nextState);\n      }\n    }\n\n    componentWillUnmount() {\n      const propsIndex = updatePropsCallbacks.indexOf(this.onUpdateProps);\n      if (propsIndex > -1) updatePropsCallbacks.splice(propsIndex, 1);\n\n      const refsIndex = updateRefsCallbacks.indexOf(this.onUpdateRefs);\n      if (refsIndex > -1) updateRefsCallbacks.splice(refsIndex, 1);\n    }\n\n    render() {\n      const state = filterIdyllProps(this.state, this.props.isHTMLNode);\n      const { children, ...passThruProps } = filterIdyllProps(\n        this.props,\n        this.props.isHTMLNode\n      );\n      let childComponent = null;\n      let uniqueKey = `${this.key}-help`;\n      let returnComponent = React.Children.map(children, (c, i) => {\n        childComponent = c;\n        return React.cloneElement(c, {\n          key: `${this.key}-${i}`,\n          idyll: {\n            theme: getTheme(theme),\n            layout: getLayout(layout),\n            authorView: authorView\n          },\n          ...state,\n          ...passThruProps\n        });\n      });\n      if (this.state.hasError) {\n        returnComponent = (\n          <div style={{ border: 'solid red 1px', padding: 10 }}>\n            {this.state.error.message}\n          </div>\n        );\n      }\n      const metaData = childComponent.type._idyll;\n      if (authorView) {\n        // ensure inline elements do not have this overlay\n        if (\n          (metaData && metaData.name === 'TextContainer') ||\n          ['TextContainer', 'DragDropContainer'].includes(\n            childComponent.type.name\n          )\n        ) {\n          return returnComponent;\n        } else if (\n          textEditComponent &&\n          metaData &&\n          wrapTextComponents.includes(metaData.name.toLowerCase())\n        ) {\n          const ViewComponent = textEditComponent;\n          return (\n            <ViewComponent idyllASTNode={this.props.idyllASTNode}>\n              {childComponent}\n            </ViewComponent>\n          );\n        } else if (\n          !metaData ||\n          metaData.displayType === undefined ||\n          metaData.displayType !== 'inline'\n        ) {\n          const ViewComponent = userViewComponent || AuthorTool;\n          return (\n            <ViewComponent\n              idyllASTNode={this.props.idyllASTNode}\n              component={returnComponent}\n              authorComponent={childComponent}\n              uniqueKey={uniqueKey}\n            />\n          );\n        } else if (metaData.displayType === 'inline') {\n          const InlineViewComponent =\n            userInlineViewComponent || userViewComponent || AuthorTool;\n          return (\n            <InlineViewComponent\n              idyllASTNode={this.props.idyllASTNode}\n              component={returnComponent}\n              authorComponent={childComponent}\n              uniqueKey={uniqueKey}\n            />\n          );\n        }\n      }\n      return returnComponent;\n    }\n  };\n};\n\nconst getDerivedValues = dVars => {\n  const o = {};\n  Object.keys(dVars).forEach(key => (o[key] = dVars[key].value));\n  return o;\n};\n\nclass IdyllRuntime extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {};\n    this.scrollListener = this.scrollListener.bind(this);\n    this.initScrollListener = this.initScrollListener.bind(this);\n    const ast = filterASTForDocument(props.ast);\n\n    const { vars, derived, data, elements } = splitAST(getChildren(ast));\n    const Wrapper = createWrapper({\n      theme: props.theme,\n      layout: props.layout,\n      authorView: props.authorView,\n      textEditComponent: props.textEditComponent,\n      userViewComponent: props.userViewComponent,\n      userInlineViewComponent: props.userInlineViewComponent,\n      wrapTextComponents: props.wrapTextComponents\n    });\n\n    let hasInitialized = false;\n    let initialContext = {};\n    // Initialize a custom context\n    let _initializeCallbacks = [];\n    let _mountCallbacks = [];\n    let _updateCallbacks = [];\n\n    this._onInitializeState = () => {\n      _initializeCallbacks.forEach(cb => {\n        cb();\n      });\n    };\n    this._onMount = () => {\n      _mountCallbacks.forEach(cb => {\n        cb();\n      });\n    };\n    this._onUpdateState = newData => {\n      _updateCallbacks.forEach(cb => {\n        cb(newData);\n      });\n    };\n    if (typeof props.context === 'function') {\n      props.context({\n        update: newState => {\n          if (!hasInitialized) {\n            initialContext = Object.assign(initialContext, newState);\n          } else {\n            this.updateState(newState);\n          }\n        },\n        data: () => {\n          return this.state;\n        },\n        onInitialize: cb => {\n          _initializeCallbacks.push(cb);\n        },\n        onMount: cb => {\n          _mountCallbacks.push(cb);\n        },\n        onUpdate: cb => {\n          _updateCallbacks.push(cb);\n        }\n      });\n    }\n\n    const dataStore = getData(data, props.datasets);\n    const initialState = Object.assign(\n      {},\n      {\n        ...getVars(vars, initialContext),\n        ...dataStore.syncData\n      },\n      initialContext,\n      props.initialState ? props.initialState : {}\n    );\n\n    const { asyncData: asyncDataStore } = dataStore;\n    const asyncDataStoreKeys = Object.keys(asyncDataStore);\n    asyncDataStoreKeys.forEach(key => {\n      this.state[key] = asyncDataStore[key].initialValue;\n    });\n\n    asyncDataStoreKeys.map(key => {\n      asyncDataStore[key].dataPromise\n        .then(res => {\n          this.updateState({\n            ...this.state,\n            [key]: res\n          });\n        })\n        .catch(e => console.error('Error while resolving the data' + e));\n    });\n    const derivedVars = (this.derivedVars = getVars(derived, initialState));\n\n    let state = (this.state = {\n      ...this.state,\n      ...initialState,\n      ...getDerivedValues(derivedVars)\n    });\n\n    this.updateState = newState => {\n      // merge new doc state with old\n      const newMergedState = { ...this.state, ...newState };\n      // update derived values\n      const newDerivedValues = getDerivedValues(\n        getVars(derived, newMergedState)\n      );\n      const nextState = { ...newMergedState, ...newDerivedValues };\n\n      const changedMap = {};\n      const changedKeys = Object.keys(state).reduce((acc, k) => {\n        if (!equal(state[k], nextState[k])) {\n          acc.push(k);\n          changedMap[k] = nextState[k] || state[k];\n        }\n        return acc;\n      }, []);\n\n      // Update doc state reference.\n      // We re-use the same object here so that\n      // IdyllRuntime.state can be accurately checked in tests\n      state = Object.assign(state, nextState);\n      // pass the new doc state to all listeners aka component wrappers\n      updatePropsCallbacks.forEach(f => f(state, changedKeys));\n\n      changedKeys.length &&\n        this._onUpdateState &&\n        this._onUpdateState(changedMap);\n    };\n\n    evalContext.__idyllUpdate = this.updateState;\n    hasInitialized = true;\n    this._onInitializeState && this._onInitializeState();\n\n    // Put these in to avoid hard errors if people are on the latest\n    // CLI but haven't updated their local default components\n    const fallbackComponents = {\n      'text-container': generatePlaceholder('TextContainer'),\n      'full-width': generatePlaceholder('FullWidth')\n    };\n\n    // Components that the Document needs to function properly\n    const internalComponents = {\n      Wrapper\n    };\n\n    Object.keys(internalComponents).forEach(key => {\n      if (props.components[key]) {\n        console.warn(\n          `Warning! You are including a component named ${key}, but this is a reserved Idyll component. Please rename your component.`\n        );\n      }\n    });\n\n    const components = Object.assign(\n      fallbackComponents,\n      props.components,\n      internalComponents\n    );\n\n    const rjs = new ReactJsonSchema(components);\n    const schema = translate(ast);\n    const wrapTargets = findWrapTargets(schema, this.state, props.components);\n    let refCounter = 0;\n    const transformedSchema = mapTree(schema, (node, depth) => {\n      // console.log('mapoing ', node.component || node.type);\n      if (!node.component) {\n        if (node.type && node.type === 'textnode') return node.value;\n      }\n\n      // transform refs from strings to functions and store them\n      if (node.ref || node.hasHook) {\n        node.refName = node.ref || node.component + (refCounter++).toString();\n        node.ref = el => {\n          if (!el) return;\n          const domNode = ReactDOM.findDOMNode(el);\n          domNode.dataset.ref = node.refName;\n          scrollOffsets[node.refName] = node.scrollOffset || 0;\n          refCache[node.refName] = {\n            props: node,\n            domNode: domNode,\n            component: el\n          };\n        };\n        refCache[node.refName] = {\n          props: node,\n          domNode: null\n        };\n      }\n      //Inspect for isHTMLNode  props and to check for dynamic components.\n      if (!wrapTargets.includes(node)) {\n        if (\n          this.props.wrapTextComponents.indexOf(node.component) > -1 &&\n          this.props.textEditComponent\n        ) {\n          const { idyllASTNode, ...rest } = node;\n          return {\n            component: this.props.textEditComponent,\n            idyllASTNode: idyllASTNode,\n            children: [rest]\n          };\n        }\n\n        // Don't include the AST node reference on unwrapped components\n        const { idyllASTNode, ...rest } = node;\n        return rest;\n      }\n      let {\n        component,\n        children,\n        idyllASTNode,\n        key,\n        __vars__,\n        __expr__,\n        ...props // actual component props\n      } = node;\n      __vars__ = __vars__ || {};\n      __expr__ = __expr__ || {};\n\n      // assign the initial values for tracked vars and expressions\n      Object.keys(props).forEach(k => {\n        if (__vars__[k]) {\n          node[k] = state[__vars__[k]];\n        }\n        if (__expr__[k] !== undefined) {\n          if (hooks.indexOf(k) > -1) {\n            return;\n          }\n          node[k] = evalExpression(\n            { ...state, refs: getRefs() },\n            __expr__[k],\n            k,\n            evalContext\n          );\n        }\n      });\n      const resolvedComponent = rjs.resolveComponent(node);\n      const isHTMLNode = typeof resolvedComponent === 'string';\n\n      return {\n        component: Wrapper,\n        __vars__,\n        __expr__,\n        idyllASTNode,\n        isHTMLNode: isHTMLNode,\n        hasHook: node.hasHook,\n        refName: node.refName,\n        initialState: this.state,\n        updateProps: newProps => {\n          // init new doc state object\n          const newState = {};\n          // iterate over passed in updates\n          Object.keys(newProps).forEach(k => {\n            // if a tracked var was updated get its new value\n            if (__vars__[k]) {\n              newState[__vars__[k]] = newProps[k];\n            }\n          });\n          this.updateState(newState);\n        },\n        children: [filterIdyllProps(node, isHTMLNode)]\n      };\n    });\n\n    this.kids = rjs.parseSchema(transformedSchema);\n  }\n\n  scrollListener() {\n    const refs = getRefs();\n    updateRefsCallbacks.forEach(f => f({ ...this.state, refs }));\n  }\n\n  initScrollListener(el) {\n    if (!el) return;\n\n    let scroller = scrollparent(el);\n    if (\n      scroller === document.documentElement ||\n      scroller === document.body ||\n      scroller === window\n    ) {\n      scroller = window;\n      scrollContainer = scrollMonitor;\n    } else {\n      scrollContainer = scrollMonitor.createContainer(scroller);\n    }\n    Object.keys(refCache).forEach(key => {\n      const { props, domNode } = refCache[key];\n      const watcher = scrollContainer.create(domNode, scrollOffsets[key]);\n      hooks.forEach(hook => {\n        if (props[hook]) {\n          watcher[scrollMonitorEvents[hook]](() => {\n            evalExpression(\n              { ...this.state, refs: getRefs() },\n              props[hook],\n              hook,\n              evalContext\n            )();\n          });\n        }\n      });\n      scrollWatchers.push(watcher);\n    });\n    scroller.addEventListener('scroll', this.scrollListener);\n  }\n\n  updateDerivedVars(newState) {\n    const context = {};\n    Object.keys(this.derivedVars).forEach(dv => {\n      this.derivedVars[dv].value = this.derivedVars[dv].update(\n        newState,\n        this.state,\n        context\n      );\n      context[dv] = this.derivedVars[dv].value;\n    });\n  }\n\n  getDerivedVars() {\n    let dvs = {};\n    Object.keys(this.derivedVars).forEach(dv => {\n      dvs[dv] = this.derivedVars[dv].value;\n    });\n    return dvs;\n  }\n\n  componentDidMount() {\n    const refs = getRefs();\n    updateRefsCallbacks.forEach(f => f({ ...this.state, refs }));\n    this._onMount && this._onMount();\n  }\n\n  render() {\n    return (\n      <div className=\"idyll-root\" ref={this.initScrollListener}>\n        {this.kids}\n      </div>\n    );\n  }\n}\n\nIdyllRuntime.defaultProps = {\n  layout: 'blog',\n  theme: 'github',\n  authorView: false,\n  insertStyles: false,\n  wrapTextComponents: [\n    'p',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'ul',\n    'ol',\n    'pre',\n    'CodeHighlight'\n  ]\n};\n\nexport default IdyllRuntime;\n","import React from 'react';\nimport Runtime from './runtime';\nimport compile from 'idyll-compiler';\nimport * as layouts from 'idyll-layouts';\nimport * as themes from 'idyll-themes';\n\nconst getLayout = layout => {\n  return layouts[layout.trim()] || {};\n};\n\nconst getTheme = theme => {\n  return themes[theme.trim()] || {};\n};\n\nlet layoutNode;\nlet themeNode;\n\nconst defaultAST = {\n  id: 0,\n  type: 'component',\n  name: 'root'\n};\n\nconst hashCode = str => {\n  var hash = 0,\n    i,\n    chr;\n  if (str.length === 0) return hash;\n  for (i = 0; i < str.length; i++) {\n    chr = str.charCodeAt(i);\n    hash = (hash << 5) - hash + chr;\n    hash |= 0; // Convert to 32bit integer\n  }\n  return hash;\n};\n\nclass IdyllDocument extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      ast: props.ast || defaultAST,\n      previousAST: props.ast || defaultAST,\n      hash: props.ast ? JSON.stringify(props.ast) : '',\n      error: null\n    };\n  }\n\n  createStyleNode(str) {\n    var node = document.createElement('style');\n    node.innerHTML = str;\n    document.body.appendChild(node);\n    return node;\n  }\n\n  componentDidMount() {\n    if (!this.props.ast && this.props.markup) {\n      compile(this.props.markup, this.props.compilerOptions).then(ast => {\n        this.setState({ ast, hash: hashCode(this.props.markup), error: null });\n      });\n    }\n\n    if (this.props.injectThemeCSS) {\n      if (themeNode) {\n        themeNode.innerHTML = getTheme(this.props.theme).styles;\n      } else {\n        themeNode = this.createStyleNode(getTheme(this.props.theme).styles);\n      }\n    }\n    if (this.props.injectLayoutCSS) {\n      if (layoutNode) {\n        layoutNode.innerHTML = getLayout(this.props.layout).styles;\n      } else {\n        layoutNode = this.createStyleNode(getLayout(this.props.layout).styles);\n      }\n    }\n  }\n\n  componentDidCatch(error, info) {\n    this.props.onError && this.props.onError(error);\n    this.setState({ error: error.message });\n  }\n\n  UNSAFE_componentWillReceiveProps(newProps) {\n    if (newProps.theme !== this.props.theme && newProps.injectThemeCSS) {\n      if (themeNode) {\n        themeNode.innerHTML = getTheme(newProps.theme).styles;\n      } else {\n        themeNode = this.createStyleNode(getTheme(newProps.theme).styles);\n      }\n    }\n    if (newProps.layout !== this.props.layout && newProps.injectLayoutCSS) {\n      if (layoutNode) {\n        layoutNode.innerHTML = getLayout(newProps.layout).styles;\n      } else {\n        layoutNode = this.createStyleNode(getLayout(newProps.layout).styles);\n      }\n    }\n\n    if (newProps.ast) {\n      this.setState({ hash: JSON.stringify(newProps.ast) });\n      return;\n    }\n\n    const hash = hashCode(newProps.markup);\n    if (hash !== this.state.hash) {\n      this.setState({ previousAST: this.state.ast });\n      compile(newProps.markup, newProps.compilerOptions)\n        .then(ast => {\n          this.setState({ previousAST: ast, ast, hash, error: null });\n        })\n        .catch(this.componentDidCatch.bind(this));\n    }\n  }\n\n  getErrorComponent() {\n    if (!this.state.error) {\n      return null;\n    }\n    return React.createElement(\n      this.props.errorComponent || 'pre',\n      {\n        className: 'idyll-document-error'\n      },\n      this.state.error\n    );\n  }\n\n  render() {\n    return (\n      <div>\n        <Runtime\n          {...this.props}\n          key={this.state.hash}\n          context={context => {\n            this.idyllContext = context;\n            typeof this.props.context === 'function' &&\n              this.props.context(context);\n          }}\n          initialState={\n            this.props.initialState ||\n            (this.idyllContext ? this.idyllContext.data() : {})\n          }\n          ast={this.props.ast || this.state.ast}\n        />\n        {this.getErrorComponent()}\n      </div>\n    );\n  }\n}\n\nexport default IdyllDocument;\n"],"names":["_componentMap","WeakMap","ReactJsonSchema","componentMap","setComponentMap","schema","element","elements","Array","isArray","parseSubSchemas","createComponent","subSchemas","Components","index","subSchema","push","key","parseSchema","type","value","component","children","rest","_excluded","Component","resolveComponent","Children","resolveComponentChildren","createElement","getComponentMap","hasOwnProperty","Error","Object","split","name","subs","paramCase","pascalCase","i","length","DOM","console","warn","color","border","undefined","get","set","generatePlaceholder","_createSuper","props","idyll","updateProps","hasError","React","PureComponent","AuthorTool","state","isAuthorView","debugHeight","componentHeight","hasPressedButton","handleClick","bind","metaValues","runtimeValues","map","prop","runtimeValue","currentPropValue","toString","call","JSON","stringify","example","_idyll","componentName","componentLowerCase","charAt","toLowerCase","slice","componentDocsLink","showProps","handleTableValues","currentDebugHeight","marginToGive","marginAboveTable","height","marginBottom","marginTop","inner","innerHeight","fontFamily","fontSize","setState","prevState","getBoundingClientRect","_refContainer","addBorder","boxShadow","transition","padding","margin","putButtonBack","right","top","ref","uniqueKey","authorComponent","handleFormatComponent","require","cloneNode","getChildren","getNodeName","getNodeType","getProperties","isTextNode","removeNodes","isPropertyAccess","node","parent","source","indexOf","proxyString","substr","isObjectKey","buildExpression","acc","expr","isEventHandler","identifiers","modifiedExpression","falafel","skip","keys","update","e","error","join","filter","evalExpression","context","match","eval","assign","__idyllCopy","copy","o","output","v","evalString","err","getVars","arr","formatAccumulatedValues","ret","forEach","accVal","pluck","val","variableType","attrs","nameValue","valueType","valueValue","newState","oldState","reduce","filterIdyllProps","filterInjected","__vars__","__expr__","idyllASTNode","hasHook","initialState","isHTMLNode","refName","onEnterViewFully","onEnterView","onExitViewFully","onExitView","fullWidth","_excluded2","getData","datasets","sourceValue","async","initialValue","parse","dataPromise","Promise","res","fetch","then","status","endsWith","text","resString","cast","columns","skip_empty_lines","ltrim","rtrim","json","window","asyncData","syncData","splitAST","ast","vars","derived","data","handleNode","storeElements","hooks","scrollMonitorEvents","translate","attrConvert","reducedProps","propName","includes","tNode","_objectSpread","mapTree","tree","mapFn","filterFn","depth","walkFn","filterASTForDocument","findWrapTargets","components","targets","componentNames","words","toUpperCase","substring","checkName","_excluded3","expressions","variables","updatePropsCallbacks","updateRefsCallbacks","scrollWatchers","scrollOffsets","refCache","evalContext","scrollContainer","getLayout","layout","layouts","trim","getTheme","theme","themes","getRefs","refs","watcher","watchItem","callbacks","container","recalculateLocation","offsets","watcherProps","dataset","domNode","wrapperKey","createWrapper","authorView","textEditComponent","userViewComponent","userInlineViewComponent","wrapTextComponents","onUpdateRefs","onUpdateProps","values","exps","usesRefs","some","info","changedKeys","initialRender","shouldUpdate","k","nextState","entries","propsIndex","splice","refsIndex","passThruProps","childComponent","returnComponent","c","cloneElement","message","metaData","ViewComponent","displayType","InlineViewComponent","getDerivedValues","dVars","IdyllRuntime","scrollListener","initScrollListener","Wrapper","hasInitialized","initialContext","_initializeCallbacks","_mountCallbacks","_updateCallbacks","_onInitializeState","cb","_onMount","_onUpdateState","newData","updateState","onInitialize","onMount","onUpdate","dataStore","asyncDataStore","asyncDataStoreKeys","derivedVars","newMergedState","newDerivedValues","changedMap","equal","f","__idyllUpdate","fallbackComponents","internalComponents","rjs","wrapTargets","refCounter","transformedSchema","el","ReactDOM","findDOMNode","scrollOffset","resolvedComponent","newProps","kids","scroller","scrollparent","document","documentElement","body","scrollMonitor","createContainer","create","hook","addEventListener","dv","dvs","defaultProps","insertStyles","layoutNode","themeNode","defaultAST","id","hashCode","str","hash","chr","charCodeAt","IdyllDocument","previousAST","innerHTML","appendChild","markup","compile","compilerOptions","injectThemeCSS","styles","createStyleNode","injectLayoutCSS","onError","componentDidCatch","errorComponent","className","Runtime","idyllContext","getErrorComponent"],"mappings":"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"}