UNPKG

1.75 kBTypeScriptView Raw
1import { GlimmerTreeChanges } from '../../dom/changes';
2// eslint-disable-next-line node/no-extraneous-import
3import { UpdatableTag } from '@glimmer/validator';
4import { SimpleElement } from '@simple-dom/interface';
5import { Owner } from '../../runtime';
6import { Destroyable } from '../../core';
7import { ModifierDefinitionState, ModifierInstanceState } from '../../runtime/modifier';
8import { CapturedArguments } from '../../runtime/arguments';
9
10export interface InternalModifierManager<
11 TModifierInstanceState = ModifierInstanceState,
12 TModifierDefinitionState extends ModifierDefinitionState = ModifierDefinitionState
13> {
14 // Create is meant to only produce the state bucket
15 create(
16 owner: Owner,
17 element: SimpleElement,
18 state: TModifierDefinitionState,
19 args: CapturedArguments
20 ): TModifierInstanceState;
21
22 // Convert the opaque modifier into a `RevisionTag` that determins when
23 // the modifier's update hooks need to be called (if at all).
24 getTag(modifier: TModifierInstanceState): UpdatableTag | null;
25
26 getDebugName(Modifier: TModifierDefinitionState): string;
27
28 // At initial render, the modifier gets a chance to install itself on the
29 // element it is managing. It can also return a bucket of state that
30 // it could use at update time. From the perspective of Glimmer, this
31 // is an opaque token.
32 install(modifier: TModifierInstanceState): void;
33
34 // When the modifier's tag has invalidated, the manager's `update` hook is
35 // called.
36 update(modifier: TModifierInstanceState): void;
37
38 // Convert the opaque token into an object that implements Destroyable.
39 // If it returns null, the modifier will not be destroyed.
40 getDestroyable(modifier: TModifierInstanceState): Destroyable | null;
41}