UNPKG

time-calculator-web-component

Version:
91 lines 2.46 kB
export type FormatMode = "H:mm" | "minutes"; export type RoundingMode = "floor" | "ceil" | "halfUp"; export type Locale = "pt-BR" | "en-US"; export type DecimalSeparator = "," | "."; export type WindowMode = "popover" | "fixed" | "modal"; export interface TimeAmount { minutes: number; } export interface EvaluateOptions { rounding?: RoundingMode; allowNegative?: boolean; maxAbsMinutes?: number | null; } export interface ParseOptions { locale?: Locale; decimalSeparator?: DecimalSeparator; } export interface Result { value: TimeAmount; formatted: string; mode: FormatMode; } export interface WindowModeConfig { mode?: WindowMode; closeOnOutsideClick?: boolean; persistPosition?: boolean; } export interface TimeCalcConfig extends EvaluateOptions, ParseOptions, WindowModeConfig { defaultMode?: FormatMode; debugError?: boolean; } export interface TimeCalcController { open(): void; close(): void; toggle(): void; isOpen(): boolean; setPosition(x: number, y: number): void; center(): void; setInput(input: string): void; getInput(): string; evaluate(): Result; format(minutes: number, mode?: FormatMode): string; on(event: "open" | "close" | "change" | "result" | "error", cb: (payload?: any) => void): () => void; config(cfg: Partial<TimeCalcConfig>): void; } export interface Token { type: TokenType; value: string; position: number; } export declare enum TokenType { TIME_HMM = "TIME_HMM", NUMBER = "NUMBER", UNIT_H = "UNIT_H", UNIT_M = "UNIT_M", PLUS = "PLUS", MINUS = "MINUS", MULTIPLY = "MULTIPLY", DIVIDE = "DIVIDE", LPAREN = "LPAREN", RPAREN = "RPAREN", EOF = "EOF" } export interface ASTNode { type: 'BinaryOp' | 'UnaryOp' | 'Duration' | 'Number'; } export interface BinaryOpNode extends ASTNode { type: 'BinaryOp'; operator: '+' | '-' | '*' | '/'; left: ASTNode; right: ASTNode; } export interface UnaryOpNode extends ASTNode { type: 'UnaryOp'; operator: '+' | '-'; operand: ASTNode; } export interface DurationNode extends ASTNode { type: 'Duration'; minutes: number; } export interface NumberNode extends ASTNode { type: 'Number'; value: number; } export type ASTNodeTypes = BinaryOpNode | UnaryOpNode | DurationNode | NumberNode; export interface ParseError { message: string; position: number; } //# sourceMappingURL=types.d.ts.map