Files
lucent-laravel/front/js/main.js
T

74 lines
2.4 KiB
JavaScript
Raw Normal View History

2026-01-08 13:10:18 +02:00
import * as Turbo from "@hotwired/turbo";
2026-01-07 21:42:18 +02:00
// import "../sass/app.scss";
2026-01-08 13:10:18 +02:00
import { mount, unmount } from "svelte";
2026-01-07 21:42:18 +02:00
import "../css/app.css";
import Register from "./svelte/account/Register.svelte";
2026-01-08 18:13:17 +02:00
import LoginEntry from "./entry/LoginEntry/LoginEntry.svelte";
import VerifyEntry from "./entry/VerifyEntry/VerifyEntry.svelte";
2026-01-07 21:42:18 +02:00
import Profile from "./svelte/account/Profile.svelte";
import SetupIndex from "./svelte/setup/Index.svelte";
import Members from "./svelte/members/Members.svelte";
import RecordNotFound from "./svelte/records/NotFound.svelte";
import RecordEdit from "./svelte/records/Edit.svelte";
import ContentIndex from "./svelte/content/Index.svelte";
import HomeEntry from "./entry/HomeEntry/HomeEntry.svelte";
2026-01-07 23:49:55 +02:00
import SchemaEntry from "./entry/SchemaEntry/SchemaEntry.svelte";
2026-01-08 13:10:18 +02:00
import FieldCreateEntry from "./entry/FieldCreateEntry/FieldCreateEntry.svelte";
2026-01-08 15:19:08 +02:00
import FieldEditEntry from "./entry/FieldEditEntry/FieldEditEntry.svelte";
import SchemaEditEntry from "./entry/SchemaEditEntry/SchemaEditEntry.svelte";
2026-01-07 21:42:18 +02:00
import BuildReport from "./svelte/build/Report.svelte";
2026-01-08 13:10:18 +02:00
import { createApp } from "./app";
2023-10-02 23:10:49 +03:00
const entryComponents = {
2026-01-07 21:42:18 +02:00
members: Members,
recordEdit: RecordEdit,
recordNotFound: RecordNotFound,
contentIndex: ContentIndex,
homeIndex: HomeEntry,
buildReport: BuildReport,
register: Register,
2026-01-08 18:13:17 +02:00
login: LoginEntry,
verify: VerifyEntry,
2026-01-07 21:42:18 +02:00
profile: Profile,
setup: SetupIndex,
2026-01-07 23:49:55 +02:00
schemas: SchemaEntry,
2026-01-08 13:10:18 +02:00
fieldCreate: FieldCreateEntry,
2026-01-08 15:19:08 +02:00
fieldEdit: FieldEditEntry,
schemaEdit: SchemaEditEntry,
2023-10-02 23:10:49 +03:00
};
2026-01-08 13:10:18 +02:00
Turbo.start();
2023-10-02 23:10:49 +03:00
let loadedComponents = [];
let loadSvelte = function () {
2026-01-08 13:10:18 +02:00
Turbo.cache.clear();
2026-01-07 21:42:18 +02:00
loadedComponents.map((comp) => unmount(comp));
loadedComponents = [];
const elements = document.body.querySelectorAll(".lucent-component");
if (elements.length === 0) {
return;
}
const loadElement = function (element) {
const jsonData = document.getElementById("json-data").innerHTML;
2023-10-02 23:10:49 +03:00
2026-01-07 21:42:18 +02:00
const props = JSON.parse(jsonData);
const [__, view] = Object.entries(entryComponents).find(
([key, _]) => props.view === key,
);
if (!view) {
return [];
2023-10-02 23:10:49 +03:00
}
2026-01-07 21:42:18 +02:00
// props.axios = axiosInstance;
2026-01-08 13:10:18 +02:00
createApp(props.channel);
2026-01-07 21:42:18 +02:00
const compOptions = {
target: element,
props: props,
2023-10-02 23:10:49 +03:00
};
2026-01-07 21:42:18 +02:00
loadedComponents = [...loadedComponents, mount(view, compOptions)];
};
Array.from(elements).map(loadElement);
2023-10-02 23:10:49 +03:00
};
2026-01-08 13:10:18 +02:00
document.addEventListener("turbo:load", loadSvelte);