Hierarchy

  • ClusterBehavior<this> & Omit<SwitchServerLogic,
        | "events"
        | "cluster"
        | "state"
        | "initialize"
        | typeof asyncDispose> & Omit<{} & {}, never> & {
        cluster: Of<{
            attributes: {
                currentPosition: Attribute<number, any>;
                numberOfPositions: FixedAttribute<number, any>;
            };
            extensions: readonly [{
                component: {
                    attributes: {
                        multiPressMax: FixedAttribute<number, any>;
                    };
                    events: {
                        multiPressComplete: Event<TypeFromFields<(...)>, any>;
                        multiPressOngoing: Event<TypeFromFields<(...)>, any>;
                    };
                };
                flags: {
                    momentarySwitchMultiPress: true;
                };
            }, {
                component: {
                    events: {
                        switchLatched: Event<TypeFromFields<(...)>, any>;
                    };
                };
                flags: {
                    latchingSwitch: true;
                };
            }, {
                component: {
                    events: {
                        initialPress: Event<TypeFromFields<(...)>, any>;
                    };
                };
                flags: {
                    momentarySwitch: true;
                };
            }, {
                component: {
                    events: {
                        longPress: Event<TypeFromFields<(...)>, any>;
                        longRelease: Event<TypeFromFields<(...)>, any>;
                    };
                };
                flags: {
                    momentarySwitchLongPress: true;
                };
            }, {
                component: {
                    events: {
                        shortRelease: Event<TypeFromFields<(...)>, any>;
                    };
                };
                flags: {
                    momentarySwitchRelease: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchRelease: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchLongPress: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitchLongPress: true;
                    momentarySwitchRelease: false;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchMultiPress: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitchMultiPress: true;
                    momentarySwitchRelease: false;
                };
            }, {
                component: false;
                flags: {
                    latchingSwitch: true;
                    momentarySwitch: true;
                };
            }, {
                component: false;
                flags: {
                    latchingSwitch: false;
                    momentarySwitch: false;
                };
            }];
            features: {
                latchingSwitch: BitFlag;
                momentarySwitch: BitFlag;
                momentarySwitchLongPress: BitFlag;
                momentarySwitchMultiPress: BitFlag;
                momentarySwitchRelease: BitFlag;
            };
            id: 59;
            name: "Switch";
            revision: 1;
        }>;
        events: ClusterEvents<Of<{
            attributes: {
                currentPosition: Attribute<number, any>;
                numberOfPositions: FixedAttribute<number, any>;
            };
            extensions: readonly [{
                component: {
                    attributes: {
                        multiPressMax: FixedAttribute<(...), (...)>;
                    };
                    events: {
                        multiPressComplete: Event<(...), (...)>;
                        multiPressOngoing: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitchMultiPress: true;
                };
            }, {
                component: {
                    events: {
                        switchLatched: Event<(...), (...)>;
                    };
                };
                flags: {
                    latchingSwitch: true;
                };
            }, {
                component: {
                    events: {
                        initialPress: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitch: true;
                };
            }, {
                component: {
                    events: {
                        longPress: Event<(...), (...)>;
                        longRelease: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitchLongPress: true;
                };
            }, {
                component: {
                    events: {
                        shortRelease: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitchRelease: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchRelease: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchLongPress: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitchLongPress: true;
                    momentarySwitchRelease: false;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchMultiPress: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitchMultiPress: true;
                    momentarySwitchRelease: false;
                };
            }, {
                component: false;
                flags: {
                    latchingSwitch: true;
                    momentarySwitch: true;
                };
            }, {
                component: false;
                flags: {
                    latchingSwitch: false;
                    momentarySwitch: false;
                };
            }];
            features: {
                latchingSwitch: BitFlag;
                momentarySwitch: BitFlag;
                momentarySwitchLongPress: BitFlag;
                momentarySwitchMultiPress: BitFlag;
                momentarySwitchRelease: BitFlag;
            };
            id: 59;
            name: "Switch";
            revision: 1;
        }>, typeof SwitchServerLogic>;
        features: TypeFromBitSchema<{
            latchingSwitch: BitFlag;
            momentarySwitch: BitFlag;
            momentarySwitchLongPress: BitFlag;
            momentarySwitchMultiPress: BitFlag;
            momentarySwitchRelease: BitFlag;
        }>;
        state: ClusterState<Of<{
            attributes: {
                currentPosition: Attribute<number, any>;
                numberOfPositions: FixedAttribute<number, any>;
            };
            extensions: readonly [{
                component: {
                    attributes: {
                        multiPressMax: FixedAttribute<(...), (...)>;
                    };
                    events: {
                        multiPressComplete: Event<(...), (...)>;
                        multiPressOngoing: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitchMultiPress: true;
                };
            }, {
                component: {
                    events: {
                        switchLatched: Event<(...), (...)>;
                    };
                };
                flags: {
                    latchingSwitch: true;
                };
            }, {
                component: {
                    events: {
                        initialPress: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitch: true;
                };
            }, {
                component: {
                    events: {
                        longPress: Event<(...), (...)>;
                        longRelease: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitchLongPress: true;
                };
            }, {
                component: {
                    events: {
                        shortRelease: Event<(...), (...)>;
                    };
                };
                flags: {
                    momentarySwitchRelease: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchRelease: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchLongPress: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitchLongPress: true;
                    momentarySwitchRelease: false;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitch: false;
                    momentarySwitchMultiPress: true;
                };
            }, {
                component: false;
                flags: {
                    momentarySwitchMultiPress: true;
                    momentarySwitchRelease: false;
                };
            }, {
                component: false;
                flags: {
                    latchingSwitch: true;
                    momentarySwitch: true;
                };
            }, {
                component: false;
                flags: {
                    latchingSwitch: false;
                    momentarySwitch: false;
                };
            }];
            features: {
                latchingSwitch: BitFlag;
                momentarySwitch: BitFlag;
                momentarySwitchLongPress: BitFlag;
                momentarySwitchMultiPress: BitFlag;
                momentarySwitchRelease: BitFlag;
            };
            id: 59;
            name: "Switch";
            revision: 1;
        }>, typeof SwitchServerLogic>;
        [asyncDispose](): MaybePromise<void>;
    }
    • SwitchServer

Constructors

Properties

[reference]: Datasource<StateType>
agent: Agent
cluster: never

The implemented cluster.

context: ActionContext
endpoint: Endpoint<Empty>
events: EventEmitter & Omit<Events,
    | "multiPressOngoing"
    | "multiPressComplete"
    | "switchLatched"
    | "initialPress"
    | "longPress"
    | "longRelease"
    | "shortRelease"
    | "numberOfPositions$Changing"
    | "currentPosition$Changing"
    | "numberOfPositions$Changed"
    | "currentPosition$Changed"
    | "multiPressMax$Changing"
    | "multiPressMax$Changed"> & {
    currentPosition$Changing: ClusterEvents.AttributeObservable<Attribute<number, any>>;
    numberOfPositions$Changing: ClusterEvents.AttributeObservable<FixedAttribute<number, any>>;
} & {} & {
    currentPosition$Changed: ClusterEvents.AttributeObservable<Attribute<number, any>>;
    numberOfPositions$Changed: ClusterEvents.AttributeObservable<FixedAttribute<number, any>>;
} & {} & {} & {}

Access the behavior's events.

features: TypeFromBitSchema<{
    latchingSwitch: BitFlag;
    momentarySwitch: BitFlag;
    momentarySwitchLongPress: BitFlag;
    momentarySwitchMultiPress: BitFlag;
    momentarySwitchRelease: BitFlag;
}> & TypeFromBitSchema<{
    latchingSwitch: BitFlag;
    momentarySwitch: BitFlag;
    momentarySwitchLongPress: BitFlag;
    momentarySwitchMultiPress: BitFlag;
    momentarySwitchRelease: BitFlag;
}>

Supported features as a flag object.

schema: Schema = schema
session: SecureSession
state: Omit<State, "multiPressMax" | "numberOfPositions" | "currentPosition"> & {
    currentPosition: number;
} & {} & {
    numberOfPositions: number;
} & {}

Access the behavior's state.

Type declaration

  • ReadonlycurrentPosition: number

    Indicates the position of the switch. The valid range is zero to NumberOfPositions-1. CurrentPosition value 0 shall be assigned to the default position of the switch: for example the "open" state of a rocker switch, or the "idle" state of a push button switch.

    MatterSpecification.v13.Cluster § 1.13.5.2

Type declaration

  • ReadonlynumberOfPositions: number

    Indicates the maximum number of positions the switch has. Any kind of switch has a minimum of 2 positions. Also see Multi Position Details for the case NumberOfPositions>2.

    MatterSpecification.v13.Cluster § 1.13.5.1

cluster: Of<{
    attributes: {
        currentPosition: Attribute<number, any>;
        numberOfPositions: FixedAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                multiPressMax: FixedAttribute<number, any>;
            };
            events: {
                multiPressComplete: Event<TypeFromFields<{
                    previousPosition: FieldType<number>;
                    totalNumberOfPressesCounted: FieldType<number>;
                }>, any>;
                multiPressOngoing: Event<TypeFromFields<{
                    currentNumberOfPressesCounted: FieldType<number>;
                    newPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchMultiPress: true;
        };
    }, {
        component: {
            events: {
                switchLatched: Event<TypeFromFields<{
                    newPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            latchingSwitch: true;
        };
    }, {
        component: {
            events: {
                initialPress: Event<TypeFromFields<{
                    newPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitch: true;
        };
    }, {
        component: {
            events: {
                longPress: Event<TypeFromFields<{
                    newPosition: FieldType<number>;
                }>, any>;
                longRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchLongPress: true;
        };
    }, {
        component: {
            events: {
                shortRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchLongPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchLongPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchMultiPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchMultiPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: true;
            momentarySwitch: true;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: false;
            momentarySwitch: false;
        };
    }];
    features: {
        latchingSwitch: BitFlag;
        momentarySwitch: BitFlag;
        momentarySwitchLongPress: BitFlag;
        momentarySwitchMultiPress: BitFlag;
        momentarySwitchRelease: BitFlag;
    };
    id: 59;
    name: "Switch";
    revision: 1;
}>

Base cluster state include all attribute values but may be extended by subclasses.

Type declaration

  • Readonlyattributes: {
        currentPosition: Attribute<number, any>;
        numberOfPositions: FixedAttribute<number, any>;
    }
    • ReadonlycurrentPosition: Attribute<number, any>

      Indicates the position of the switch. The valid range is zero to NumberOfPositions-1. CurrentPosition value 0 shall be assigned to the default position of the switch: for example the "open" state of a rocker switch, or the "idle" state of a push button switch.

      MatterSpecification.v13.Cluster § 1.13.5.2

    • ReadonlynumberOfPositions: FixedAttribute<number, any>

      Indicates the maximum number of positions the switch has. Any kind of switch has a minimum of 2 positions. Also see Multi Position Details for the case NumberOfPositions>2.

      MatterSpecification.v13.Cluster § 1.13.5.1

  • Readonlyextensions: readonly [{
        component: {
            attributes: {
                multiPressMax: FixedAttribute<number, any>;
            };
            events: {
                multiPressComplete: Event<TypeFromFields<{
                    previousPosition: FieldType<number>;
                    totalNumberOfPressesCounted: FieldType<number>;
                }>, any>;
                multiPressOngoing: Event<TypeFromFields<{
                    currentNumberOfPressesCounted: FieldType<number>;
                    newPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchMultiPress: true;
        };
    }, {
        component: {
            events: {
                switchLatched: Event<TypeFromFields<{
                    newPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            latchingSwitch: true;
        };
    }, {
        component: {
            events: {
                initialPress: Event<TypeFromFields<{
                    newPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitch: true;
        };
    }, {
        component: {
            events: {
                longPress: Event<TypeFromFields<{
                    newPosition: FieldType<number>;
                }>, any>;
                longRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchLongPress: true;
        };
    }, {
        component: {
            events: {
                shortRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<number>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchLongPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchLongPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchMultiPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchMultiPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: true;
            momentarySwitch: true;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: false;
            momentarySwitch: false;
        };
    }]

    This metadata controls which SwitchCluster elements matter.js activates for specific feature combinations.

  • Readonlyfeatures: {
        latchingSwitch: BitFlag;
        momentarySwitch: BitFlag;
        momentarySwitchLongPress: BitFlag;
        momentarySwitchMultiPress: BitFlag;
        momentarySwitchRelease: BitFlag;
    }
    • ReadonlylatchingSwitch: BitFlag

      LatchingSwitch

      This feature is for a switch that maintains its position after being pressed (or turned).

      MatterSpecification.v13.Cluster § 1.13.4.1

    • ReadonlymomentarySwitch: BitFlag

      MomentarySwitch

      This feature is for a switch that does not maintain its position after being pressed (or turned). After releasing, it goes back to its idle position.

      MatterSpecification.v13.Cluster § 1.13.4.2

    • ReadonlymomentarySwitchLongPress: BitFlag

      MomentarySwitchLongPress

      This feature is for a momentary switch that can distinguish and report long presses from short presses. When this feature flag MSL is present, MS and MSR shall be present as well.

      MatterSpecification.v13.Cluster § 1.13.4.4

    • ReadonlymomentarySwitchMultiPress: BitFlag

      MomentarySwitchMultiPress

      This feature is for a momentary switch that can distinguish and report double press and potentially multiple presses with more events, such as triple press, etc. When this feature flag MSM is present, MS and MSR shall be present as well.

      MatterSpecification.v13.Cluster § 1.13.4.5

    • ReadonlymomentarySwitchRelease: BitFlag

      MomentarySwitchRelease

      This feature is for a momentary switch that can distinguish and report release events. When this feature flag MSR is present, MS shall be present as well.

      MatterSpecification.v13.Cluster § 1.13.4.3

  • Readonlyid: 59
  • Readonlyname: "Switch"
  • Readonlyrevision: 1
defaults: ClusterState.Type<Of<{
    attributes: {
        currentPosition: Attribute<number, any>;
        numberOfPositions: FixedAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                multiPressMax: FixedAttribute<number, any>;
            };
            events: {
                multiPressComplete: Event<TypeFromFields<{
                    previousPosition: FieldType<(...)>;
                    totalNumberOfPressesCounted: FieldType<(...)>;
                }>, any>;
                multiPressOngoing: Event<TypeFromFields<{
                    currentNumberOfPressesCounted: FieldType<(...)>;
                    newPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchMultiPress: true;
        };
    }, {
        component: {
            events: {
                switchLatched: Event<TypeFromFields<{
                    newPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            latchingSwitch: true;
        };
    }, {
        component: {
            events: {
                initialPress: Event<TypeFromFields<{
                    newPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitch: true;
        };
    }, {
        component: {
            events: {
                longPress: Event<TypeFromFields<{
                    newPosition: FieldType<(...)>;
                }>, any>;
                longRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchLongPress: true;
        };
    }, {
        component: {
            events: {
                shortRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchLongPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchLongPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchMultiPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchMultiPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: true;
            momentarySwitch: true;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: false;
            momentarySwitch: false;
        };
    }];
    features: {
        latchingSwitch: BitFlag;
        momentarySwitch: BitFlag;
        momentarySwitchLongPress: BitFlag;
        momentarySwitchMultiPress: BitFlag;
        momentarySwitchRelease: BitFlag;
    };
    id: 59;
    name: "Switch";
    revision: 1;
}>, typeof SwitchServerLogic>
dependencies?: Iterable<Type, any, any>
early: boolean
Events: ClusterEvents.Type<Of<{
    attributes: {
        currentPosition: Attribute<number, any>;
        numberOfPositions: FixedAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                multiPressMax: FixedAttribute<number, any>;
            };
            events: {
                multiPressComplete: Event<TypeFromFields<{
                    previousPosition: FieldType<(...)>;
                    totalNumberOfPressesCounted: FieldType<(...)>;
                }>, any>;
                multiPressOngoing: Event<TypeFromFields<{
                    currentNumberOfPressesCounted: FieldType<(...)>;
                    newPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchMultiPress: true;
        };
    }, {
        component: {
            events: {
                switchLatched: Event<TypeFromFields<{
                    newPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            latchingSwitch: true;
        };
    }, {
        component: {
            events: {
                initialPress: Event<TypeFromFields<{
                    newPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitch: true;
        };
    }, {
        component: {
            events: {
                longPress: Event<TypeFromFields<{
                    newPosition: FieldType<(...)>;
                }>, any>;
                longRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchLongPress: true;
        };
    }, {
        component: {
            events: {
                shortRelease: Event<TypeFromFields<{
                    previousPosition: FieldType<(...)>;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchLongPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchLongPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchMultiPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchMultiPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: true;
            momentarySwitch: true;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: false;
            momentarySwitch: false;
        };
    }];
    features: {
        latchingSwitch: BitFlag;
        momentarySwitch: BitFlag;
        momentarySwitchLongPress: BitFlag;
        momentarySwitchMultiPress: BitFlag;
        momentarySwitchRelease: BitFlag;
    };
    id: 59;
    name: "Switch";
    revision: 1;
}>, typeof SwitchServerLogic>
ExtensionInterface: {}
id

The behavior ID for ClusterBehaviors is the name of the cluster.

Interface: {
    components: never[];
}
Internal: typeof Internal
name: string
schema?: Schema
State: (new () => ClusterState.Type<Of<{
    attributes: {
        currentPosition: Attribute<number, any>;
        numberOfPositions: FixedAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                multiPressMax: FixedAttribute<number, any>;
            };
            events: {
                multiPressComplete: Event<TypeFromFields<{
                    previousPosition: ...;
                    totalNumberOfPressesCounted: ...;
                }>, any>;
                multiPressOngoing: Event<TypeFromFields<{
                    currentNumberOfPressesCounted: ...;
                    newPosition: ...;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchMultiPress: true;
        };
    }, {
        component: {
            events: {
                switchLatched: Event<TypeFromFields<{
                    newPosition: ...;
                }>, any>;
            };
        };
        flags: {
            latchingSwitch: true;
        };
    }, {
        component: {
            events: {
                initialPress: Event<TypeFromFields<{
                    newPosition: ...;
                }>, any>;
            };
        };
        flags: {
            momentarySwitch: true;
        };
    }, {
        component: {
            events: {
                longPress: Event<TypeFromFields<{
                    newPosition: ...;
                }>, any>;
                longRelease: Event<TypeFromFields<{
                    previousPosition: ...;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchLongPress: true;
        };
    }, {
        component: {
            events: {
                shortRelease: Event<TypeFromFields<{
                    previousPosition: ...;
                }>, any>;
            };
        };
        flags: {
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchRelease: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchLongPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchLongPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            momentarySwitch: false;
            momentarySwitchMultiPress: true;
        };
    }, {
        component: false;
        flags: {
            momentarySwitchMultiPress: true;
            momentarySwitchRelease: false;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: true;
            momentarySwitch: true;
        };
    }, {
        component: false;
        flags: {
            latchingSwitch: false;
            momentarySwitch: false;
        };
    }];
    features: {
        latchingSwitch: BitFlag;
        momentarySwitch: BitFlag;
        momentarySwitchLongPress: BitFlag;
        momentarySwitchMultiPress: BitFlag;
        momentarySwitchRelease: BitFlag;
    };
    id: 59;
    name: "Switch";
    revision: 1;
}>, typeof SwitchServerLogic>)
supervisor: RootSupervisor
supports: ((other: Type) => boolean)

Type declaration

    • (other): boolean
    • Does this behavior support functionality of a specific implementation?

      Parameters

      Returns boolean

Methods

  • Parameters

    • fn: (() => void)

      the elevated logic

        • (): void
        • Returns void

    Returns void

  • Create a generic callback function that has the same properties as a Reactor.

    Like a reactor, the callback's "this" will be bound to an active Behavior instance. Because of this: The reactor MUST be a real JS function - arrow functions will not work!

    Type Parameters

    • A extends any[]
    • R

    Parameters

    Returns ((...args: A) => undefined | R)

      • (...args): undefined | R
      • Parameters

        • Rest...args: A

        Returns undefined | R

  • Behaviors are ephemeral and should not perform initialization in their constructor. They can override this method instead.

    This method may be synchronous or asyncronous. If asynchronous, the behavior will not be available for external use until initialization completes.

    Parameters

    • Optional_options: {}

      Returns MaybePromise

    • Install a Reactor.

      Important: The reactor MUST be a real JS function - arrow functions will not work!

      Type Parameters

      Parameters

      Returns void