import { PageItem } from "../../../event/core/event-runner"; import { DataLayerFrontClickEvent } from "./datalayer-front-click"; import { DataLayerFrontViewEvent } from "./datalayer-front-view"; import { DataLayerSearchClickEvent } from "./datalayer-search-click"; import { DataLayerSearchQueryEvent } from "./datalayer-search-query"; /** * Event types for datalayer events. * * @enum {string} */ enum DataLayerEventType { SearchQuery = "biggy.search.query", SearchClick = "biggy.search.click", FrontView = "biggy.front.view", FrontClick = "biggy.front.click", } type DataLayerEvent = | DataLayerFrontClickEvent | DataLayerFrontViewEvent | DataLayerSearchClickEvent | DataLayerSearchQueryEvent; /** * Construct a `DataLayerEvent` from an layer. * * @export * @param {*} item * @return {DataLayerEvent} */ export function fromItem(item: PageItem): DataLayerEvent { if (!item || !item.event || !item.biggy) { return; } switch (item.event) { case DataLayerEventType.SearchQuery: return new DataLayerSearchQueryEvent(item.biggy); case DataLayerEventType.SearchClick: return new DataLayerSearchClickEvent(item.biggy); case DataLayerEventType.FrontView: return new DataLayerFrontViewEvent(item.biggy); case DataLayerEventType.FrontClick: return new DataLayerFrontClickEvent(item.biggy); default: return; } }