UNPKG

@klevu/core

Version:

Typescript SDK that simplifies development on Klevu backend. Klevu provides advanced AI-powered search and discovery solutions for online retailers.

46 lines (45 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KlevuLastSearches = void 0; const KlevuDomEvents_js_1 = require("../events/KlevuDomEvents.js"); const index_js_1 = require("../utils/index.js"); const SAVE_KEY = "klevu-last-searches"; let lastSearches = []; if ((0, index_js_1.isBrowser)()) { const res = index_js_1.KlevuStorage.getItem(SAVE_KEY); if (res) { lastSearches = JSON.parse(res); } } const MAX_COUNT = 5; exports.KlevuLastSearches = { /** * Saves last searched term. If there is previous it's moved to as last item * * @param term searched term */ save: (term) => { const lastIndex = lastSearches.findIndex((ls) => ls.term === term); if (lastIndex > -1) { lastSearches.splice(lastIndex, 1); } lastSearches.push({ timestamp: new Date().getTime(), term: term, }); if (lastSearches.length > MAX_COUNT * 2) { lastSearches = lastSearches.slice(MAX_COUNT * -2); } if ((0, index_js_1.isBrowser)()) { document.dispatchEvent(new CustomEvent(KlevuDomEvents_js_1.KlevuDomEvents.LastSearchUpdate)); index_js_1.KlevuStorage.setItem(SAVE_KEY, JSON.stringify(lastSearches)); } }, /** * * @returns five latests searches */ get: () => { return lastSearches.slice(MAX_COUNT * -1); }, };