UNPKG

svelisy

Version:

svelisy - DaisyUI components built with Svelte 🌼

48 lines (47 loc) • 1.79 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ // This file taken from rgossiaux/svelte-headlessui // Copyright 2020-present Hunter Perrin export function useActions(node, actions) { const actionReturns = []; if (actions) { for (let i = 0; i < actions.length; i++) { const actionEntry = actions[i]; const action = Array.isArray(actionEntry) ? actionEntry[0] : actionEntry; if (Array.isArray(actionEntry) && actionEntry.length > 1) { actionReturns.push(action(node, actionEntry[1])); } else { actionReturns.push(action(node)); } } } return { update(actions) { if (((actions && actions.length) || 0) != actionReturns.length) { throw new Error('You must not change the length of an actions array.'); } if (actions) { for (let i = 0; i < actions.length; i++) { const returnEntry = actionReturns[i]; if (returnEntry && returnEntry.update) { const actionEntry = actions[i]; if (Array.isArray(actionEntry) && actionEntry.length > 1) { returnEntry.update(actionEntry[1]); } else { returnEntry.update(); } } } } }, destroy() { for (let i = 0; i < actionReturns.length; i++) { const returnEntry = actionReturns[i]; if (returnEntry && returnEntry.destroy) { returnEntry.destroy(); } } } }; }