Files
advanced-camera-card/src/condition-trigger/triggers/factory.ts
T

71 lines
2.8 KiB
TypeScript

import type { Trigger } from '../../config/schema/condition-trigger/triggers/types';
import { CallTrigger } from './triggers/call';
import { CameraTrigger } from './triggers/camera';
import { ConfigTrigger } from './triggers/config';
import { DisplayModeTrigger } from './triggers/display-mode';
import { EventTrigger } from './triggers/event';
import { ExpandTrigger } from './triggers/expand';
import { FullscreenTrigger } from './triggers/fullscreen';
import { InitializedTrigger } from './triggers/initialized';
import { InteractionTrigger } from './triggers/interaction';
import { KeyTrigger } from './triggers/key';
import { MediaLoadedTrigger } from './triggers/media-loaded';
import { MicrophoneTrigger } from './triggers/microphone';
import { NumericStateTrigger } from './triggers/numeric-state';
import { ScreenTrigger } from './triggers/screen';
import { StateTrigger } from './triggers/state';
import { TemplateTrigger } from './triggers/template';
import { TriggeredTrigger } from './triggers/triggered';
import type { TriggerEvaluator, TriggerEvaluatorContext } from './triggers/types';
import { ViewTrigger } from './triggers/view';
export const createTriggerEvaluator = (
trigger: Trigger,
context: TriggerEvaluatorContext,
): TriggerEvaluator => {
switch (trigger.trigger) {
// Stock HA triggers: read `hass.states` and emit HA `State` payloads.
case 'state':
return new StateTrigger(trigger, context);
case 'numeric_state':
return new NumericStateTrigger(trigger, context);
case 'template':
return new TemplateTrigger(trigger, context);
case 'event':
return new EventTrigger(trigger, context);
// `screen` watches window.matchMedia.
case 'screen':
return new ScreenTrigger(trigger);
// Card-state triggers: watch a field of `ConditionState`, firing on any
// change (omit the value) or when the change passes the matching condition.
case 'call':
return new CallTrigger(trigger, context);
case 'camera':
return new CameraTrigger(trigger, context);
case 'config':
return new ConfigTrigger(trigger, context);
case 'display_mode':
return new DisplayModeTrigger(trigger, context);
case 'expand':
return new ExpandTrigger(trigger, context);
case 'fullscreen':
return new FullscreenTrigger(trigger, context);
case 'initialized':
return new InitializedTrigger(trigger, context);
case 'interaction':
return new InteractionTrigger(trigger, context);
case 'key':
return new KeyTrigger(trigger, context);
case 'media_loaded':
return new MediaLoadedTrigger(trigger, context);
case 'microphone':
return new MicrophoneTrigger(trigger, context);
case 'triggered':
return new TriggeredTrigger(trigger, context);
case 'view':
return new ViewTrigger(trigger, context);
}
};