UNPKG

@awcrotwell/motion

Version:

Motion allows you to build reactive, real-time frontend UI components in your Amber application using pure Crystal that are reusable, testable & encapsulated. For brevity, we will call them MotionComponents.

27 lines (26 loc) 818 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.beforeDocumentUnload = exports.documentLoaded = void 0; function once(target, event, callback) { target.addEventListener(event, function handler(event) { target.removeEventListener(event, handler); callback(event); }); } exports.documentLoaded = new Promise((resolve) => { if (/^loaded|^i|^c/i.test(document.readyState)) { resolve(); } else { once(document, 'DOMContentLoaded', resolve); } }); exports.beforeDocumentUnload = new Promise((resolve) => { window.addEventListener('beforeunload', () => { once(window, 'beforeunload', ({ defaultPrevented }) => { if (!defaultPrevented) { resolve(); } }); }, true); });