@jay-js/system
Version:
A powerful and flexible TypeScript library for UI, state management, lazy loading, routing and managing draggable elements in modern web applications.
62 lines (61 loc) • 2.16 kB
JavaScript
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _async_to_generator(fn) {
return function() {
var self = this, args = arguments;
return new Promise(function(resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
import { renderRoute } from "./renderRoute.js";
import { resolvedRoutes } from "./routerDefineOptions.js";
export function getTarget(route) {
return _getTarget.apply(this, arguments);
}
function _getTarget() {
_getTarget = _async_to_generator(function*(route) {
if (route.parentLayoutId) {
const parentLayout = document.querySelector(`[data-layout-id="${route.parentLayoutId}"]`);
if (parentLayout) {
const outlet = parentLayout.querySelector("[data-router=\"outlet\"]");
if (outlet) {
return outlet;
}
}
if (!parentLayout) {
const parentLayoutRoute = resolvedRoutes.get(route.parentLayoutId);
if (parentLayoutRoute) {
const parentLayoutRouteRendered = yield renderRoute(parentLayoutRoute);
if (parentLayoutRouteRendered) {
const outlet = parentLayoutRouteRendered.querySelector("[data-router=\"outlet\"]");
if (outlet) {
return outlet;
}
}
}
}
}
return route.target;
});
return _getTarget.apply(this, arguments);
}