diff options
Diffstat (limited to 'alpinejs/packages/alpinejs/src/lifecycle.js')
-rw-r--r-- | alpinejs/packages/alpinejs/src/lifecycle.js | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/alpinejs/packages/alpinejs/src/lifecycle.js b/alpinejs/packages/alpinejs/src/lifecycle.js deleted file mode 100644 index cbf079f..0000000 --- a/alpinejs/packages/alpinejs/src/lifecycle.js +++ /dev/null @@ -1,75 +0,0 @@ -import { startObservingMutations, onAttributesAdded, onElAdded, onElRemoved, cleanupAttributes } from "./mutation" -import { deferHandlingDirectives, directives } from "./directives" -import { dispatch } from './utils/dispatch' -import { nextTick } from "./nextTick" -import { walk } from "./utils/walk" -import { warn } from './utils/warn' - -export function start() { - if (! document.body) warn('Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine\'s `<script>` tag?') - - dispatch(document, 'alpine:init') - dispatch(document, 'alpine:initializing') - - startObservingMutations() - - onElAdded(el => initTree(el, walk)) - onElRemoved(el => nextTick(() => destroyTree(el))) - - onAttributesAdded((el, attrs) => { - directives(el, attrs).forEach(handle => handle()) - }) - - let outNestedComponents = el => ! closestRoot(el.parentElement, true) - Array.from(document.querySelectorAll(allSelectors())) - .filter(outNestedComponents) - .forEach(el => { - initTree(el) - }) - - dispatch(document, 'alpine:initialized') -} - -let rootSelectorCallbacks = [] -let initSelectorCallbacks = [] - -export function rootSelectors() { - return rootSelectorCallbacks.map(fn => fn()) -} - -export function allSelectors() { - return rootSelectorCallbacks.concat(initSelectorCallbacks).map(fn => fn()) -} - -export function addRootSelector(selectorCallback) { rootSelectorCallbacks.push(selectorCallback) } -export function addInitSelector(selectorCallback) { initSelectorCallbacks.push(selectorCallback) } - -export function closestRoot(el, includeInitSelectors = false) { - if (!el) return - - const selectors = includeInitSelectors ? allSelectors() : rootSelectors() - - if (selectors.some(selector => el.matches(selector))) return el - - if (! el.parentElement) return - - return closestRoot(el.parentElement, includeInitSelectors) -} - -export function isRoot(el) { - return rootSelectors().some(selector => el.matches(selector)) -} - -export function initTree(el, walker = walk) { - deferHandlingDirectives(() => { - walker(el, (el, skip) => { - directives(el, el.attributes).forEach(handle => handle()) - - el._x_ignore && skip() - }) - }) -} - -export function destroyTree(root) { - walk(root, el => cleanupAttributes(el)) -} |