71 lines
2.8 KiB
TypeScript
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);
|
|
}
|
|
};
|