/* Common code for components Handle cache invalidation based on keywords */ const setupOnSaveReset = (component: any, { keywords = [] as string[] } = {}) => { const setup = () => { if (!keywords.length) return; const keywordSet = new Set(keywords); component.saveListener = (e: Event) => { const resource = e.detail.id || e.detail.resource?.["@id"]; if (!resource) return; const isMatch = Array.from(keywordSet).some((keyword) => { const idx = resource.indexOf(keyword); return idx !== -1 && (idx === 0 || resource[idx - 1] === "/"); }); if (isMatch) { component._setValue({ target: { value: "" } }); } }; component._subscriptions.add(["save", component.saveListener]); component._subscribe(); }; if (document.readyState !== "complete") { const listener = () => { if (document.readyState === "complete") { document.removeEventListener("readystatechange", listener); setup(); } }; document.addEventListener("readystatechange", listener); } else { setup(); } }; export default setupOnSaveReset;