def all()

in common/app/layout/slices/Container.scala [27:69]


  def all(adFree: Boolean = false): Map[String, Container] =
    Map(
      ("dynamic/fast", Dynamic(DynamicFast)),
      ("dynamic/slow", Dynamic(DynamicSlow)),
      ("dynamic/package", Dynamic(DynamicPackage)),
      ("dynamic/slow-mpu", Dynamic(DynamicSlowMPU(omitMPU = false, adFree = adFree))),
      ("fixed/video", Video),
      ("fixed/video/vertical", VerticalVideo),
      ("nav/list", NavList),
      ("nav/media-list", NavMediaList),
      ("news/most-popular", MostPopular),
      ("flexible/special", Flexible(FlexibleSpecial)),
      ("flexible/general", Flexible(FlexibleGeneral)),
    ) ++ FixedContainers.all.mapV(Fixed.apply) ++ EmailLayouts.all.mapV(Email.apply) ++ ScrollableContainers.all.mapV(
      Scrollable.apply,
    )

  /** So that we don't blow up at runtime, which would SUCK */
  val default = Fixed(FixedContainers.fixedSmallSlowIV)

  def resolve(id: String, adFree: Boolean = false): Container = all(adFree).getOrElse(id, default)

  def fromConfig(collectionConfig: CollectionConfig): Container =
    resolve(collectionConfig.collectionType)

  def storiesCount(collectionConfig: CollectionConfig, items: Seq[PressedContent]): Option[Int] = {
    resolve(collectionConfig.collectionType) match {
      case Dynamic(dynamicContainer) =>
        dynamicContainer
          .slicesFor(items.map(Story.fromFaciaContent))
          .map(Front.itemsVisible)
      case Fixed(fixedContainer) => Some(Front.itemsVisible(fixedContainer.slices))
      case Email(_)              => Some(EmailContentContainer.storiesCount(collectionConfig))
      // scrollable feature containers are capped at 3 stories
      case _ if collectionConfig.collectionType == "scrollable/feature" => Some(3)
      // scrollable small and medium containers are capped at 4 stories
      case _ if collectionConfig.collectionType == "scrollable/small"  => Some(4)
      case _ if collectionConfig.collectionType == "scrollable/medium" => Some(4)
      // scrollable highlights containers are capped at 6 stories
      case _ if collectionConfig.collectionType == "scrollable/highlights" => Some(6)
      case _                                                               => None
    }
  }