/**
 * StackView component
 *
 * Generated by coz on 2016-12-04,
 * from a template provided by apeman-asset-templates.
 *
 * @function StackView
 */
'use strict'

import React from 'react'
import defineDebug from 'debug'
import { forGA } from '../../wrappers'
import { viewPathname } from 'ore-fol-helpers'

const debug = defineDebug('project:fragment:stack-view')

/** @lends StackView */
const StackView = ({ name, params, way, stackName, shared, bundle }) => {
  const views = require('../../views') // require here to avoid circular import
  const View = views[ name ] || views[ `${name}View` ]
  if (!View) {
    console.warn(`Unknown view: ${name}`)
    return null
  }
  return (
    <View stacked
          { ...shared }
          { ...bundle }
          { ...params }
          { ...{ way, stackName, params, viewName: name } }
    />
  )
}

export default forGA(
  (ga, { name: viewName, stackName, params, way }) => {
    let pathname = viewPathname(stackName, viewName, params)
    ga.set({
      page: pathname,
      params: params,
      way: way
    })
    ga.pageview(pathname)
  }
)(StackView)
