UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

18 lines (17 loc) 659 B
import isArray from '../../is/isArray'; export default function collapsable({ initialIsCollapsed = false } = {}) { return function decorate(target) { if (isArray(target)) { return target.map((entity) => enrichToBeCollapsable(entity, initialIsCollapsed)); } return enrichToBeCollapsable(target, initialIsCollapsed); }; } function enrichToBeCollapsable(target, initialIsCollapsed) { const enrichedTarget = target; enrichedTarget.isCollapsed = initialIsCollapsed; enrichedTarget.toggleCollapse = () => { enrichedTarget.isCollapsed = !enrichedTarget.isCollapsed; }; return enrichedTarget; }