timepiece/node_modules/lit-html/development/directives/choose.js

41 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-05-14 14:54:12 +00:00
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* Chooses and evaluates a template function from a list based on matching
* the given `value` to a case.
*
* Cases are structured as `[caseValue, func]`. `value` is matched to
* `caseValue` by strict equality. The first match is selected. Case values
* can be of any type including primitives, objects, and symbols.
*
* This is similar to a switch statement, but as an expression and without
* fallthrough.
*
* @example
*
* ```ts
* render() {
* return html`
* ${choose(this.section, [
* ['home', () => html`<h1>Home</h1>`],
* ['about', () => html`<h1>About</h1>`]
* ],
* () => html`<h1>Error</h1>`)}
* `;
* }
* ```
*/
export const choose = (value, cases, defaultCase) => {
for (const c of cases) {
const caseValue = c[0];
if (caseValue === value) {
const fn = c[1];
return fn();
}
}
return defaultCase === null || defaultCase === void 0 ? void 0 : defaultCase();
};
//# sourceMappingURL=choose.js.map