Vanilla Disintegratev1.0.0
RU
На этой странице

Экспорт по умолчанию — тонкий фасад над захватом, рендерингом, звуком, layout, подготовкой и хранилищем удалённых элементов.

Конструктор

import Disintegrator from 'vanilla-disintegrate/snapdom';

const effects = new Disintegrator(options);
ОпцияТипПо умолчанию
effectEffectSelectiondust
effectsRecord<string, EffectDefinition>{}
soundboolean | SoundDefinitionfalse
layoutboolean | LayoutOptionstrue
preparationboolean | PreparationOptionsfalse
respectReducedMotionbooleantrue
captureSnapshotCaptureSnapDOM on /snapdom
overlayRootHTMLElement | () => HTMLElementdocument.body
zIndex, randomчисло, функциянастройки библиотеки
onTrigger, onStart, onComplete, onErrorcallbacks

remove(target, options?)

Измеряет и отсоединяет элемент, синхронно возвращая EffectOperation.

const operation = effects.remove('.card', {
  effect: 'scatter',
  retain: true,
  sound: true,
  layout: { duration: 260 },
  detach: (element) => element.remove(),
});

target может быть HTMLElement или CSS-селектором. Отсутствующий селектор вызывает ошибку до старта операции.

detach заменяет стандартный commit через element.remove(). Используйте его, когда реактивный рендерер должен удалить узел через собственное состояние. Если callback выбросит ошибку, она попадёт в onError, а библиотека безопасно выполнит обычное удаление.

restore(target, options?)

Анимирует подключённый измеримый элемент в текущей геометрии.

const operation = effects.restore(element, {
  effect: 'scatter',
  sound: true,
});

Отсоединённый элемент или нулевой размер приводят к синхронной ошибке.

Хранилище

const element = effects.take(removalId); // HTMLElement | null
const discarded = effects.discard(removalId); // boolean
const count = effects.discardAll(); // number

Подготовка снимков

const unregister = effects.register(elements);
const results = await effects.prepare(elements);
effects.invalidate(elements);
effects.clearPrepared();

register() следует фоновой политике, а prepare() захватывает сразу, даже если фоновая подготовка выключена.

destroy()

Останавливает операции и observers, освобождает снимки и сохранённые узлы. Повторный вызов безопасен; новые операции после уничтожения запрещены.

EffectOperation

interface EffectOperation {
  readonly operation: 'remove' | 'restore';
  readonly removalId: RemovalId | null;
  readonly finished: Promise<{
    operation: 'remove' | 'restore';
    status: 'completed' | 'cancelled' | 'skipped';
    removalId: RemovalId | null;
  }>;
  cancel(): void;
}

Объект намеренно не имеет свойства element. Настройки конкретной операции имеют приоритет над настройками экземпляра.

Редактировать страницу на GitHub