const toolTemplate = function (values, isViewer = false) { return `
To fully utilize this functionality, a product feed for your store is required.
Click here to add your store’s product feed.
"; } showModal(); setTimeout(() => { // We are using event bubling to capture clicked item instead of registering click event on all product items. var link = document.querySelector("#toFeed"); if (link !== null && link !== undefined) { link.onclick = function (e) { let o = {}; o.source = "edrone"; o.type = "feed"; o.message = "to feed"; window.parent.postMessage(o, "*"); }; } var selectButton = document.querySelector(".products-list"); if (!selectButton) { return; } selectButton.onclick = function (e) { if (e.target.id === "product-item") { let selectedProduct = {}; if (productLibrary.length === 0) { selectedProduct = data.products.find((item) => item.id === parseInt(e.target.dataset.uuid)); } else { selectedProduct = productLibrary.find((item) => item.id === parseInt(e.target.dataset.uuid)); } updateValue({ selected: selectedProduct }); } else { const parent = e.target.parentElement; if (parent && parent.id !== "product-item") { return; } let selectedProduct = {}; if (productLibrary.length === 0) { selectedProduct = data.products.find((item) => item.id === parseInt(parent.dataset.uuid)); } else { selectedProduct = productLibrary.find((item) => item.id === parseInt(parent.dataset.uuid)); } updateValue({ selected: selectedProduct }); } hideModal(); // This is a hack to close property editor right bar on selecting an item from products list. var outerBody = document.querySelector("#u_body"); outerBody.click(); }; /* Register event listeners for search */ var searchBar = document.querySelector("#search-bar"); var searchButton = document.querySelector("#search-btn"); // eslint-disable-next-line @typescript-eslint/no-unused-vars searchButton.onclick = async function (e) { let o = {}; o.source = "edrone"; o.type = "search"; o.message = searchBar.value; window.parent.postMessage(o, "*"); const list = document.querySelector("#product_library_modal .products-list"); list[removed] = "Loading...
"; }; }, 200); }; }, }), }); window.addEventListener("message", (event) => { let isProductsMessage = false; try { isProductsMessage = event.data.source === "edrone" && event.data.type === "products"; } catch (error) { isProductsMessage = false; } if (isProductsMessage) { productLibrary.length = 0; productLibrary.push(...event.data.message); const list = document.querySelector("#product_library_modal .products-list"); let filteredItem; let productsListHtml; if (list && productLibrary) { filteredItem = productLibrary; productsListHtml = productItemsTemplate({ products: productLibrary, }); if (filteredItem.length > 0) { list[removed] = productsListHtml; } else { list[removed] = "No products found. Start searching for products by their titles or ids
"; } } } });