arcanajs 2.1.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/framework/cli/webpack.config.js +32 -4
- package/framework/lib/client/index.js +2 -6
- package/framework/lib/server/ArcanaJSServer.js +16 -2
- package/framework/lib/shared/components/Body.js +2 -5
- package/framework/lib/shared/components/Link.js +2 -5
- package/framework/lib/shared/components/NavLink.js +2 -5
- package/framework/lib/shared/components/Page.js +2 -8
- package/framework/lib/shared/context/RouterContext.js +2 -5
- package/framework/lib/shared/core/ArcanaJSApp.js +6 -39
- package/package.json +1 -1
- package/framework/lib/shared/ArcanaJSApp.d.ts +0 -11
- package/framework/lib/shared/ArcanaJSApp.js +0 -79
|
@@ -9,7 +9,6 @@ const html_webpack_plugin_1 = __importDefault(require("html-webpack-plugin"));
|
|
|
9
9
|
const mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const webpack_node_externals_1 = __importDefault(require("webpack-node-externals"));
|
|
12
|
-
const isProduction = process.env.NODE_ENV === "production";
|
|
13
12
|
const cwd = process.cwd();
|
|
14
13
|
// Helper to resolve loaders from the framework's node_modules
|
|
15
14
|
const resolveLoader = (loader) => require.resolve(loader);
|
|
@@ -43,6 +42,7 @@ const findEntry = (searchPaths) => {
|
|
|
43
42
|
throw new Error(`Could not find entry point. Searched in: ${searchPaths.join(", ")}`);
|
|
44
43
|
};
|
|
45
44
|
const createClientConfig = () => {
|
|
45
|
+
const isProduction = process.env.NODE_ENV === "production";
|
|
46
46
|
const clientEntry = findEntry([
|
|
47
47
|
"src/client",
|
|
48
48
|
"src/client/index",
|
|
@@ -79,7 +79,10 @@ const createClientConfig = () => {
|
|
|
79
79
|
options: {
|
|
80
80
|
presets: [
|
|
81
81
|
resolveLoader("@babel/preset-env"),
|
|
82
|
-
|
|
82
|
+
[
|
|
83
|
+
resolveLoader("@babel/preset-react"),
|
|
84
|
+
{ runtime: "automatic" },
|
|
85
|
+
],
|
|
83
86
|
resolveLoader("@babel/preset-typescript"),
|
|
84
87
|
],
|
|
85
88
|
},
|
|
@@ -143,11 +146,26 @@ const createClientConfig = () => {
|
|
|
143
146
|
};
|
|
144
147
|
exports.createClientConfig = createClientConfig;
|
|
145
148
|
const createServerConfig = () => {
|
|
149
|
+
const isProduction = process.env.NODE_ENV === "production";
|
|
146
150
|
const serverEntry = findEntry([
|
|
147
151
|
"src/server",
|
|
148
152
|
"src/server/index",
|
|
149
153
|
"src/server/main",
|
|
150
154
|
]);
|
|
155
|
+
// View Injection Logic
|
|
156
|
+
const viewsDir = path_1.default.resolve(cwd, "src/views");
|
|
157
|
+
const hasViews = fs_1.default.existsSync(viewsDir);
|
|
158
|
+
const viewsLoaderPath = path_1.default.resolve(__dirname, "../../node_modules/.cache/arcanajs/views-loader.js");
|
|
159
|
+
// Ensure cache directory exists
|
|
160
|
+
const cacheDir = path_1.default.dirname(viewsLoaderPath);
|
|
161
|
+
if (!fs_1.default.existsSync(cacheDir)) {
|
|
162
|
+
fs_1.default.mkdirSync(cacheDir, { recursive: true });
|
|
163
|
+
}
|
|
164
|
+
// Generate the loader file
|
|
165
|
+
const loaderContent = hasViews
|
|
166
|
+
? `module.exports = require.context('${viewsDir}', true, /\\.(tsx|jsx)$/);`
|
|
167
|
+
: `module.exports = null;`;
|
|
168
|
+
fs_1.default.writeFileSync(viewsLoaderPath, loaderContent);
|
|
151
169
|
return {
|
|
152
170
|
mode: isProduction ? "production" : "development",
|
|
153
171
|
target: "node",
|
|
@@ -156,9 +174,16 @@ const createServerConfig = () => {
|
|
|
156
174
|
path: path_1.default.resolve(cwd, "dist"),
|
|
157
175
|
filename: "server.js",
|
|
158
176
|
},
|
|
159
|
-
externals: [
|
|
177
|
+
externals: [
|
|
178
|
+
(0, webpack_node_externals_1.default)({
|
|
179
|
+
allowlist: [/^arcanajs/],
|
|
180
|
+
}),
|
|
181
|
+
],
|
|
160
182
|
resolve: {
|
|
161
183
|
extensions: [".ts", ".tsx", ".js", ".jsx"],
|
|
184
|
+
alias: {
|
|
185
|
+
"arcana-views": viewsLoaderPath,
|
|
186
|
+
},
|
|
162
187
|
},
|
|
163
188
|
resolveLoader: {
|
|
164
189
|
modules: ["node_modules", path_1.default.resolve(__dirname, "../../node_modules")],
|
|
@@ -173,7 +198,10 @@ const createServerConfig = () => {
|
|
|
173
198
|
options: {
|
|
174
199
|
presets: [
|
|
175
200
|
resolveLoader("@babel/preset-env"),
|
|
176
|
-
|
|
201
|
+
[
|
|
202
|
+
resolveLoader("@babel/preset-react"),
|
|
203
|
+
{ runtime: "automatic" },
|
|
204
|
+
],
|
|
177
205
|
resolveLoader("@babel/preset-typescript"),
|
|
178
206
|
],
|
|
179
207
|
},
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.hydrateArcanaJS = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
5
|
const client_1 = require("react-dom/client");
|
|
9
6
|
const HeadContext_1 = require("../shared/context/HeadContext");
|
|
10
7
|
const ArcanaJSApp_1 = require("../shared/core/ArcanaJSApp");
|
|
@@ -29,8 +26,7 @@ const hydrateArcanaJS = (viewsOrContext, layout) => {
|
|
|
29
26
|
if (container && dataScript) {
|
|
30
27
|
try {
|
|
31
28
|
const { page, data, params, csrfToken } = JSON.parse(dataScript.textContent || "{}");
|
|
32
|
-
(0, client_1.hydrateRoot)(container,
|
|
33
|
-
react_1.default.createElement(ArcanaJSApp_1.ArcanaJSApp, { initialPage: page, initialData: data, initialParams: params, csrfToken: csrfToken, views: views, layout: layout })));
|
|
29
|
+
(0, client_1.hydrateRoot)(container, (0, jsx_runtime_1.jsx)(HeadContext_1.HeadContext.Provider, { value: headManager, children: (0, jsx_runtime_1.jsx)(ArcanaJSApp_1.ArcanaJSApp, { initialPage: page, initialData: data, initialParams: params, csrfToken: csrfToken, views: views, layout: layout }) }));
|
|
34
30
|
}
|
|
35
31
|
catch (e) {
|
|
36
32
|
console.error("Failed to parse initial data", e);
|
|
@@ -30,8 +30,22 @@ class ArcanaJSServer {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
if (!views) {
|
|
33
|
-
//
|
|
34
|
-
|
|
33
|
+
// Try to load from injected alias (Webpack)
|
|
34
|
+
try {
|
|
35
|
+
// @ts-ignore - This alias is injected by Webpack
|
|
36
|
+
const injectedViews = require("arcana-views");
|
|
37
|
+
if (injectedViews) {
|
|
38
|
+
views = {};
|
|
39
|
+
injectedViews.keys().forEach((key) => {
|
|
40
|
+
const viewName = key.replace(/^\.\/(.*)\.tsx$/, "$1");
|
|
41
|
+
views[viewName] = injectedViews(key).default;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
// Fallback to auto-discovery using fs (Server-side only, non-bundled)
|
|
47
|
+
views = this.discoverViews();
|
|
48
|
+
}
|
|
35
49
|
}
|
|
36
50
|
if (!views || Object.keys(views).length === 0) {
|
|
37
51
|
console.warn("No views found. Please check your views directory.");
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Body = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
5
|
const Body = ({ children }) => {
|
|
9
|
-
return
|
|
6
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
|
|
10
7
|
};
|
|
11
8
|
exports.Body = Body;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Link = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
5
|
const useRouter_1 = require("../hooks/useRouter");
|
|
9
6
|
const Link = ({ href, children, ...props }) => {
|
|
10
7
|
const { navigateTo } = (0, useRouter_1.useRouter)();
|
|
@@ -12,6 +9,6 @@ const Link = ({ href, children, ...props }) => {
|
|
|
12
9
|
e.preventDefault();
|
|
13
10
|
navigateTo(href);
|
|
14
11
|
};
|
|
15
|
-
return (
|
|
12
|
+
return ((0, jsx_runtime_1.jsx)("a", { href: href, onClick: handleClick, ...props, children: children }));
|
|
16
13
|
};
|
|
17
14
|
exports.Link = Link;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.NavLink = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
5
|
const Link_1 = require("./Link");
|
|
9
6
|
const useRouter_1 = require("../hooks/useRouter");
|
|
10
7
|
const NavLink = ({ href, activeClassName = "active", className = "", exact = false, children, ...props }) => {
|
|
11
8
|
const { currentUrl } = (0, useRouter_1.useRouter)();
|
|
12
9
|
const isActive = exact ? currentUrl === href : currentUrl.startsWith(href);
|
|
13
10
|
const combinedClassName = `${className} ${isActive ? activeClassName : ""}`.trim();
|
|
14
|
-
return (
|
|
11
|
+
return ((0, jsx_runtime_1.jsx)(Link_1.Link, { href: href, className: combinedClassName, ...props, children: children }));
|
|
15
12
|
};
|
|
16
13
|
exports.NavLink = NavLink;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Page = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
5
|
const PageContext_1 = require("../context/PageContext");
|
|
9
6
|
const Head_1 = require("./Head");
|
|
10
7
|
const Page = ({ data, title, children }) => {
|
|
11
|
-
return (
|
|
12
|
-
title && (react_1.default.createElement(Head_1.Head, null,
|
|
13
|
-
react_1.default.createElement("title", null, title))),
|
|
14
|
-
children));
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)(PageContext_1.PageContext.Provider, { value: data, children: [title && ((0, jsx_runtime_1.jsx)(Head_1.Head, { children: (0, jsx_runtime_1.jsx)("title", { children: title }) })), children] }));
|
|
15
9
|
};
|
|
16
10
|
exports.Page = Page;
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.RouterProvider = exports.RouterContext = void 0;
|
|
7
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
5
|
const createSingletonContext_1 = require("../utils/createSingletonContext");
|
|
9
6
|
exports.RouterContext = (0, createSingletonContext_1.createSingletonContext)("RouterContext", null);
|
|
10
7
|
const RouterProvider = ({ value, children }) => {
|
|
11
|
-
return (
|
|
8
|
+
return ((0, jsx_runtime_1.jsx)(exports.RouterContext.Provider, { value: value, children: children }));
|
|
12
9
|
};
|
|
13
10
|
exports.RouterProvider = RouterProvider;
|
|
@@ -1,40 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.ArcanaJSApp = void 0;
|
|
37
|
-
const
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
38
6
|
const Page_1 = require("../components/Page");
|
|
39
7
|
const RouterContext_1 = require("../context/RouterContext");
|
|
40
8
|
const ArcanaJSApp = ({ initialPage, initialData, initialParams = {}, initialUrl, csrfToken, views, layout: Layout, }) => {
|
|
@@ -82,17 +50,16 @@ const ArcanaJSApp = ({ initialPage, initialData, initialParams = {}, initialUrl,
|
|
|
82
50
|
}
|
|
83
51
|
};
|
|
84
52
|
const renderPage = () => {
|
|
85
|
-
const Component = views[page] || views["NotFoundPage"] || (() =>
|
|
86
|
-
return (
|
|
87
|
-
react_1.default.createElement(Component, { data: data, navigateTo: navigateTo, params: params })));
|
|
53
|
+
const Component = views[page] || views["NotFoundPage"] || (() => (0, jsx_runtime_1.jsx)("div", { children: "404 Not Found" }));
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)(Page_1.Page, { data: data, children: (0, jsx_runtime_1.jsx)(Component, { data: data, navigateTo: navigateTo, params: params }) }));
|
|
88
55
|
};
|
|
89
56
|
const content = renderPage();
|
|
90
|
-
return (
|
|
57
|
+
return ((0, jsx_runtime_1.jsx)(RouterContext_1.RouterProvider, { value: {
|
|
91
58
|
navigateTo,
|
|
92
59
|
currentPage: page,
|
|
93
60
|
currentUrl: url,
|
|
94
61
|
params,
|
|
95
62
|
csrfToken,
|
|
96
|
-
}
|
|
63
|
+
}, children: Layout ? (0, jsx_runtime_1.jsx)(Layout, { children: content }) : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: content }) }));
|
|
97
64
|
};
|
|
98
65
|
exports.ArcanaJSApp = ArcanaJSApp;
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface ArcanaJSAppProps {
|
|
3
|
-
initialPage: string;
|
|
4
|
-
initialData: any;
|
|
5
|
-
initialUrl?: string;
|
|
6
|
-
views: Record<string, React.FC<any>>;
|
|
7
|
-
layout?: React.FC<{
|
|
8
|
-
children: React.ReactNode;
|
|
9
|
-
}>;
|
|
10
|
-
}
|
|
11
|
-
export declare const ArcanaJSApp: React.FC<ArcanaJSAppProps>;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.ArcanaJSApp = void 0;
|
|
37
|
-
const react_1 = __importStar(require("react"));
|
|
38
|
-
const Page_1 = require("./components/Page");
|
|
39
|
-
const RouterContext_1 = require("./context/RouterContext");
|
|
40
|
-
const ArcanaJSApp = ({ initialPage, initialData, initialUrl, views, layout: Layout, }) => {
|
|
41
|
-
const [page, setPage] = (0, react_1.useState)(initialPage);
|
|
42
|
-
const [data, setData] = (0, react_1.useState)(initialData);
|
|
43
|
-
const [url, setUrl] = (0, react_1.useState)(initialUrl ||
|
|
44
|
-
(typeof window !== "undefined" ? window.location.pathname : "/"));
|
|
45
|
-
(0, react_1.useEffect)(() => {
|
|
46
|
-
const handlePopState = (event) => {
|
|
47
|
-
if (event.state) {
|
|
48
|
-
setPage(event.state.page);
|
|
49
|
-
setData(event.state.data);
|
|
50
|
-
setUrl(window.location.pathname);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
window.addEventListener("popstate", handlePopState);
|
|
54
|
-
return () => window.removeEventListener("popstate", handlePopState);
|
|
55
|
-
}, []);
|
|
56
|
-
const navigateTo = async (newUrl) => {
|
|
57
|
-
try {
|
|
58
|
-
const response = await fetch(newUrl, {
|
|
59
|
-
headers: { "x-arcanajs-request": "true" },
|
|
60
|
-
});
|
|
61
|
-
const json = await response.json();
|
|
62
|
-
setPage(json.page);
|
|
63
|
-
setData(json.data);
|
|
64
|
-
setUrl(newUrl);
|
|
65
|
-
window.history.pushState({ page: json.page, data: json.data }, "", newUrl);
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
console.error("Navigation failed", error);
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
const renderPage = () => {
|
|
72
|
-
const Component = views[page] || views["NotFoundPage"] || (() => react_1.default.createElement("div", null, "404 Not Found"));
|
|
73
|
-
return (react_1.default.createElement(Page_1.Page, { data: data },
|
|
74
|
-
react_1.default.createElement(Component, { data: data, navigateTo: navigateTo })));
|
|
75
|
-
};
|
|
76
|
-
const content = renderPage();
|
|
77
|
-
return (react_1.default.createElement(RouterContext_1.RouterProvider, { value: { navigateTo, currentPage: page, currentUrl: url, params: {} } }, Layout ? react_1.default.createElement(Layout, null, content) : react_1.default.createElement(react_1.default.Fragment, null, content)));
|
|
78
|
-
};
|
|
79
|
-
exports.ArcanaJSApp = ArcanaJSApp;
|