docs: function View(configuration = {}) {
      let { visibility, axis, direction, target, offset } = configuration
  
  
      // Error Handling
      if (!target) {
          console.error('[in-view] -> target property must be an element')
          return
      }
  
      if (target.offsetParent === null)
          return false
  
  
      // Default values
      visibility = visibility || 'visible'
      axis = axis || 'y'
      direction = direction || 'linear'
      offset = offset || {}
  
      offset.top = offset.top || 0
      offset.bottom = offset.bottom || 0
      offset.right = offset.right || 0
      offset.left = offset.left || 0
  
      // New config with default values
      configuration = {
          visibility, axis, direction, offset, target
      }
  
  
      // Error Handling
      if (!/^(visible|entire)$/.test(visibility)) {
          console.error(`[in-view] -> visibility take only value: 'visible' or 'entire'`)
          return
      }
  
      if (!/^(x|y|both)$/.test(axis)) {
          console.error(`[in-view] -> axis take only value: 'x', 'y' or 'both'`)
          return
      }
  
      if (!/^(linear|end|start)$/.test(direction)) {
          console.error(`[in-view] -> direction take only value: 'linear', 'end' or 'start'`)
          return
      }
  
      if (offset.toString() !== '[object Object]') {
          console.error(`[in-view] -> offset must be a plain object and can include properties: top, left, bottom, right with number values`)
          return
      }
  
  
  
      // rect data of target and screen
      const { top, bottom, left, right, width, height } = target.getBoundingClientRect()
      const { clientHeight, clientWidth } = document.documentElement
      const { innerHeight, innerWidth } = window
  
  
  
      // return booleans for visible and entire state of visibility
      const results = {
          visible: {
              top: top + height - offset.top >= 0,
              left: left + width - offset.left >= 0,
              bottom: bottom - height - offset.bottom <= (innerHeight || clientHeight),
              right: right - width - offset.right <= (innerWidth || clientWidth)
          },
  
          entire: {
              top: top - offset.top >= 0,
              left: left - offset.left >= 0,
              bottom: bottom - offset.bottom <= (innerHeight || clientHeight),
              right: right - offset.right <= (innerWidth || clientWidth)
          }
      }
  
      // Return boolean
      return getResult(configuration, results)
  
  }