update
This commit is contained in:
@@ -2,8 +2,39 @@ import type { TemplateResult } from 'lit';
|
||||
|
||||
export type TTemplateFactory = () => TemplateResult | Promise<TemplateResult>;
|
||||
|
||||
// Demo can be a single function or an array of functions
|
||||
export type TDemoDefinition = TTemplateFactory | TTemplateFactory[];
|
||||
|
||||
export const resolveTemplateFactory = async (
|
||||
factoryArg: TTemplateFactory
|
||||
): Promise<TemplateResult> => {
|
||||
return await Promise.resolve(factoryArg());
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the number of demos for an element
|
||||
*/
|
||||
export const getDemoCount = (demo: TDemoDefinition): number => {
|
||||
if (Array.isArray(demo)) {
|
||||
return demo.length;
|
||||
}
|
||||
return 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get a specific demo by index (0-based internally, displayed as 1-based)
|
||||
*/
|
||||
export const getDemoAtIndex = (demo: TDemoDefinition, index: number): TTemplateFactory | null => {
|
||||
if (Array.isArray(demo)) {
|
||||
return demo[index] ?? null;
|
||||
}
|
||||
// Single demo - only index 0 is valid
|
||||
return index === 0 ? demo : null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if an element has multiple demos
|
||||
*/
|
||||
export const hasMultipleDemos = (demo: TDemoDefinition): boolean => {
|
||||
return Array.isArray(demo) && demo.length > 1;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user