@modern-js/devtools-client 0.0.0-nightly-20230924160547 → 0.0.0-nightly-20230926160605
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/.turbo/turbo-build.log +7 -8
- package/CHANGELOG.md +1 -1
- package/dist/html/main/index.html +3 -3
- package/dist/modern.config.json +7 -13
- package/dist/nestedRoutes.json +1 -1
- package/dist/routes-manifest.json +54 -63
- package/dist/static/js/{182.50d69b99.js → 182.dd7e6d03.js} +1 -1
- package/dist/static/js/{182.50d69b99.js.map → 182.dd7e6d03.js.map} +1 -1
- package/dist/static/js/async/pages/page.5bbff940.js +1 -0
- package/dist/static/js/async/pages/page.5bbff940.js.map +1 -0
- package/dist/static/js/{main.01b28a3e.js → main.0f370619.js} +1 -1
- package/dist/static/js/{main.01b28a3e.js.map → main.0f370619.js.map} +1 -1
- package/modern.config.ts +5 -7
- package/package.json +11 -11
- package/src/routes/pages/EntryRoute/ClientRouteStats/RemixRoute.tsx +4 -6
- package/src/routes/pages/EntryRoute/ClientRouteStats/RemixRouteStats.tsx +3 -2
- package/src/routes/pages/EntryRoute/EntryRoute.tsx +4 -2
- package/src/routes/pages/page.tsx +14 -6
- package/dist/static/js/async/pages/layout.27df0fc6.js +0 -1
- package/dist/static/js/async/pages/layout.27df0fc6.js.map +0 -1
- package/dist/static/js/async/pages/page.d8425bcf.js +0 -1
- package/dist/static/js/async/pages/page.d8425bcf.js.map +0 -1
- package/src/routes/pages/layout.tsx +0 -13
- /package/dist/static/js/{182.50d69b99.js.LICENSE.txt → 182.dd7e6d03.js.LICENSE.txt} +0 -0
package/modern.config.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { appTools, defineConfig } from '@modern-js/app-tools';
|
|
2
|
-
import {
|
|
2
|
+
import { ROUTE_BASENAME } from '@modern-js/devtools-kit';
|
|
3
3
|
import { version } from './package.json';
|
|
4
4
|
|
|
5
5
|
// https://modernjs.dev/en/configure/app/usage
|
|
6
6
|
export default defineConfig<'rspack'>({
|
|
7
7
|
runtime: {
|
|
8
8
|
router: {
|
|
9
|
-
basename:
|
|
9
|
+
basename: ROUTE_BASENAME,
|
|
10
10
|
},
|
|
11
11
|
},
|
|
12
12
|
dev: {
|
|
13
|
-
assetPrefix:
|
|
13
|
+
assetPrefix: ROUTE_BASENAME,
|
|
14
14
|
port: 8780,
|
|
15
15
|
},
|
|
16
16
|
source: {
|
|
@@ -20,10 +20,8 @@ export default defineConfig<'rspack'>({
|
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
22
|
output: {
|
|
23
|
-
assetPrefix:
|
|
23
|
+
assetPrefix: ROUTE_BASENAME,
|
|
24
24
|
enableCssModuleTSDeclaration: true,
|
|
25
25
|
},
|
|
26
|
-
|
|
27
|
-
html: {},
|
|
28
|
-
plugins: [appTools({ bundler: 'experimental-rspack' }), proxyPlugin()],
|
|
26
|
+
plugins: [appTools({ bundler: 'experimental-rspack' })],
|
|
29
27
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modern-js/devtools-client",
|
|
3
|
-
"version": "0.0.0-nightly-
|
|
3
|
+
"version": "0.0.0-nightly-20230926160605",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=14.0.0"
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"rimraf": "~3.0.2",
|
|
34
34
|
"type-fest": "^4.1.0",
|
|
35
35
|
"typescript": "~5.0.4",
|
|
36
|
-
"@modern-js/devtools-kit": "0.0.0-nightly-
|
|
37
|
-
"@modern-js/runtime": "0.0.0-nightly-
|
|
38
|
-
"@modern-js/types": "0.0.0-nightly-
|
|
39
|
-
"@modern-js-app/eslint-config": "0.0.0-nightly-
|
|
40
|
-
"@modern-js/app-tools": "0.0.0-nightly-
|
|
41
|
-
"@modern-js/builder-shared": "0.0.0-nightly-
|
|
42
|
-
"@modern-js/builder-rspack-provider": "0.0.0-nightly-
|
|
43
|
-
"@modern-js/eslint-config": "0.0.0-nightly-
|
|
44
|
-
"@modern-js/plugin-proxy": "0.0.0-nightly-
|
|
45
|
-
"@modern-js/tsconfig": "0.0.0-nightly-
|
|
36
|
+
"@modern-js/devtools-kit": "0.0.0-nightly-20230926160605",
|
|
37
|
+
"@modern-js/runtime": "0.0.0-nightly-20230926160605",
|
|
38
|
+
"@modern-js/types": "0.0.0-nightly-20230926160605",
|
|
39
|
+
"@modern-js-app/eslint-config": "0.0.0-nightly-20230926160605",
|
|
40
|
+
"@modern-js/app-tools": "0.0.0-nightly-20230926160605",
|
|
41
|
+
"@modern-js/builder-shared": "0.0.0-nightly-20230926160605",
|
|
42
|
+
"@modern-js/builder-rspack-provider": "0.0.0-nightly-20230926160605",
|
|
43
|
+
"@modern-js/eslint-config": "0.0.0-nightly-20230926160605",
|
|
44
|
+
"@modern-js/plugin-proxy": "0.0.0-nightly-20230926160605",
|
|
45
|
+
"@modern-js/tsconfig": "0.0.0-nightly-20230926160605"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
48
|
"reset": "npx rimraf ./**/node_modules",
|
|
@@ -3,7 +3,7 @@ import { RouteObject } from '@modern-js/runtime/router';
|
|
|
3
3
|
import { Box, Flex, Link, Code } from '@radix-ui/themes';
|
|
4
4
|
import styled from '@emotion/styled';
|
|
5
5
|
import _ from 'lodash';
|
|
6
|
-
import {
|
|
6
|
+
import { resolveURL } from 'ufo';
|
|
7
7
|
import { useHoverDirty } from 'react-use';
|
|
8
8
|
import { MatchRemixRouteContext } from '../MatchRemixRouteContext';
|
|
9
9
|
|
|
@@ -18,10 +18,8 @@ export const RemixRoute: React.FC<RemixRouteProps> = ({ route }) => {
|
|
|
18
18
|
'_component' in curr && _.isString(curr._component)
|
|
19
19
|
? curr._component
|
|
20
20
|
: null;
|
|
21
|
-
const displayPath =
|
|
22
|
-
.map(r => r.path
|
|
23
|
-
.filter(_.isString)
|
|
24
|
-
.join('/');
|
|
21
|
+
const displayPath =
|
|
22
|
+
resolveURL('/', ...routes.map(r => r.path).filter(_.isString)) || '/';
|
|
25
23
|
const isIndex = curr.index ?? false;
|
|
26
24
|
const isRoot = displayPath === '/';
|
|
27
25
|
const matched = useContext(MatchRemixRouteContext);
|
|
@@ -35,7 +33,7 @@ export const RemixRoute: React.FC<RemixRouteProps> = ({ route }) => {
|
|
|
35
33
|
<Box ref={ref}>
|
|
36
34
|
<Flex gap="2" align="center" mb={curr.children && '1'}>
|
|
37
35
|
<EndpointContainer data-miss-matched={isMatching && !isMatched}>
|
|
38
|
-
{
|
|
36
|
+
{(isIndex && isRoot) || (
|
|
39
37
|
<EndpointTag data-compose={isIndex && 'head'}>
|
|
40
38
|
{displayPath}
|
|
41
39
|
</EndpointTag>
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
import type { ServerRoute } from '@modern-js/types';
|
|
7
7
|
import { Flex } from '@radix-ui/themes';
|
|
8
8
|
import React, { useContext, useMemo } from 'react';
|
|
9
|
+
import { resolveURL, cleanDoubleSlashes } from 'ufo';
|
|
9
10
|
import { MatchUrlContext } from '../../MatchUrl';
|
|
10
11
|
import { MatchRemixRouteContext } from '../MatchRemixRouteContext';
|
|
11
12
|
import { RemixRoute } from './RemixRoute';
|
|
@@ -22,7 +23,7 @@ export const RemixRouteStats: React.FC<RemixRouteStatsProps> = ({
|
|
|
22
23
|
const testingUrl = useContext(MatchUrlContext);
|
|
23
24
|
const matchedRoutes = useMemo(() => {
|
|
24
25
|
if (!testingUrl || !remixRoutes) return [];
|
|
25
|
-
const location = testingUrl.replace(route.urlPath, '');
|
|
26
|
+
const location = cleanDoubleSlashes(testingUrl.replace(route.urlPath, '/'));
|
|
26
27
|
const matched = matchRemixRoutes(remixRoutes, location) ?? [];
|
|
27
28
|
return matched as RouteMatch<string, RouteObject>[];
|
|
28
29
|
}, [remixRoutes, testingUrl]);
|
|
@@ -35,7 +36,7 @@ export const RemixRouteStats: React.FC<RemixRouteStatsProps> = ({
|
|
|
35
36
|
{remixRoutes.map(r => (
|
|
36
37
|
<RemixRoute
|
|
37
38
|
key={r.id}
|
|
38
|
-
route={{ ...r, path: route.urlPath
|
|
39
|
+
route={{ ...r, path: resolveURL(route.urlPath, r.path ?? '') }}
|
|
39
40
|
/>
|
|
40
41
|
))}
|
|
41
42
|
</Flex>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Badge, Flex } from '@radix-ui/themes';
|
|
2
|
+
import { Badge, Flex, Box } from '@radix-ui/themes';
|
|
3
3
|
import { ServerRoute } from '@modern-js/types';
|
|
4
4
|
import { BaseRoute } from '../BaseRoute';
|
|
5
5
|
import { EntryStats } from './EntryStats';
|
|
@@ -14,7 +14,9 @@ const EntryRoute: React.FC<EntryRouteProps> = ({ route }) => {
|
|
|
14
14
|
<BaseRoute badge={badge} route={route} title={route.urlPath}>
|
|
15
15
|
<Flex direction="column" gap="2">
|
|
16
16
|
<EntryStats route={route} />
|
|
17
|
-
<
|
|
17
|
+
<Box style={{ overflow: 'scroll hidden' }}>
|
|
18
|
+
<ClientRouteStats route={route} />
|
|
19
|
+
</Box>
|
|
18
20
|
</Flex>
|
|
19
21
|
</BaseRoute>
|
|
20
22
|
);
|
|
@@ -32,11 +32,13 @@ const Page: React.FC = () => {
|
|
|
32
32
|
</TextField.Root>
|
|
33
33
|
</Box>
|
|
34
34
|
<Box height="2" />
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
<Box style={{ overflow: 'hidden scroll' }}>
|
|
36
|
+
<RoutesContainer>
|
|
37
|
+
{serverRoutes.map(route => (
|
|
38
|
+
<ServerRoute key={route.entryPath} route={route} />
|
|
39
|
+
))}
|
|
40
|
+
</RoutesContainer>
|
|
41
|
+
</Box>
|
|
40
42
|
</Container>
|
|
41
43
|
</MatchUrlContext.Provider>
|
|
42
44
|
);
|
|
@@ -44,11 +46,17 @@ const Page: React.FC = () => {
|
|
|
44
46
|
|
|
45
47
|
export default Page;
|
|
46
48
|
|
|
47
|
-
const Container = styled(Box)({
|
|
49
|
+
const Container = styled(Box)({
|
|
50
|
+
display: 'flex',
|
|
51
|
+
flexDirection: 'column',
|
|
52
|
+
height: '100%',
|
|
53
|
+
});
|
|
48
54
|
|
|
49
55
|
const RoutesContainer = styled(Box)({
|
|
50
56
|
display: 'flex',
|
|
57
|
+
flex: '0',
|
|
51
58
|
flexDirection: 'column',
|
|
59
|
+
alignItems: 'stretch',
|
|
52
60
|
gap: 'var(--space-2)',
|
|
53
61
|
justifyContent: 'space-between',
|
|
54
62
|
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_modern_js_devtools_client=self.webpackChunk_modern_js_devtools_client||[]).push([["pages/layout"],{22757:function(e,l,n){"use strict";n.r(l),n.d(l,{default:function(){return c}});var s=n("9880"),t=n("71593"),r=n("73108"),o=n("57814");function c(){return(0,s.jsx)(r.ScrollArea,{scrollbars:"both",children:(0,s.jsx)(o.Suspense,{fallback:"loading...",children:(0,s.jsx)(t.Outlet,{})})})}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/async/pages/layout.27df0fc6.js","sources":["./src/routes/pages/layout.tsx"],"sourcesContent":["import { Outlet } from '@modern-js/runtime/router';\nimport { ScrollArea } from '@radix-ui/themes';\nimport { Suspense } from 'react';\n\nexport default function Layout() {\n return (\n <ScrollArea scrollbars=\"both\">\n <Suspense fallback={'loading...'}>\n <Outlet />\n </Suspense>\n </ScrollArea>\n );\n}\n"],"names":["Layout","ScrollArea","scrollbars","Suspense","fallback","Outlet"],"mappings":"6PAIe,SAASA,IACtB,MACE,UAAC,EAAAC,UAAU,EAACC,WAAW,O,SACrB,UAAC,EAAAC,QAAQ,EAACC,SAAU,a,SAClB,UAAC,EAAAC,MAAM,I,IAIf,C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_modern_js_devtools_client=self.webpackChunk_modern_js_devtools_client||[]).push([["pages/page"],{48842:function(e,t,r){"use strict";r.r(t),r.d(t,{BaseRoute:function(){return d}});var n=r("9880"),a=r("57814"),o=r("5348"),i=r("73108"),s=r("43862"),u=r("78164"),l=r("79732"),c=r("1081"),d=e=>{var{badge:t,route:r,title:l,children:d,open:v,onOpenChange:j}=e,g=(0,a.useContext)(c.MatchUrlContext),[y,R]=(0,a.useState)(!1),C=!!g,{pathname:S}=(0,u.parseURL)(g),b=S===r.urlPath||S.startsWith("".concat(r.urlPath,"/")),B=b||(null!=v?v:y);return(0,n.jsx)(x,{children:(0,n.jsxs)(o.Root,{open:B,onOpenChange:null!=j?j:R,children:[(0,n.jsxs)(h,{children:[t,(0,n.jsx)(p,{"data-miss-matched":C&&!b,children:l}),(0,n.jsx)(i.Box,{grow:"1"}),(0,n.jsx)(m,{open:B,children:(0,n.jsx)(s.CaretSortIcon,{})})]}),(0,n.jsx)(f,{children:d})]})})},x=(0,l.default)(i.Card)({backgroundColor:"#181818"}),h=(0,l.default)(o.Trigger)({all:"unset",width:"100%",display:"flex",gap:"var(--space-2)",alignItems:"center"}),f=(0,l.default)(o.Content)({paddingTop:"var(--space-2)"}),p=(0,l.default)(i.Text)({color:"var(--gray-12)",fontSize:"var(--font-size-2)",transition:"color 200ms",'&[data-miss-matched="true"]':{color:"var(--gray-10)"}}),m=(0,l.default)(i.Box)(e=>({backgroundColor:e.open?"var(--gray-4)":"transparent",height:"var(--font-size-5)",width:"var(--font-size-5)",borderRadius:"var(--radius-2)",display:"flex",justifyContent:"center",alignItems:"center",transition:"background-color 100ms"}))},38526:function(e,t,r){"use strict";r.r(t),r.d(t,{ClientRouteStats:function(){return c}});var n=r("9880"),a=r("20918"),o=r.n(a);r("57814");var i=r("63645"),s=r("44073"),u=r("14404"),l=r("27288"),c=e=>{var{route:t}=e,r=(0,l.useStore)(),a=(0,i.useSnapshot)(r),{entrypoints:c}=a.framework.context,x=t.entryName&&o.find(c,{entryName:t.entryName});if(!x)throw Error("Can't found the entrypoint named ".concat(JSON.stringify(t.entryName)));var h=a.framework.fileSystemRoutes[x.entryName];return d(h)?(0,n.jsx)(s.LegacyRouteStats,{}):(0,n.jsx)(u.RemixRouteStats,{remixRoutes:h,route:t})},d=e=>e[0]&&!("type"in e[0])},44073:function(e,t,r){"use strict";r.r(t),r.d(t,{LegacyRouteStats:function(){return o}});var n=r("9880");r("57814");var a=r("73108"),o=()=>(0,n.jsx)(a.Text,{children:"Unimplemented."})},2125:function(e,t,r){"use strict";r.r(t),r.d(t,{RemixRoute:function(){return x}});var n=r("9880"),a=r("57814"),o=r("73108"),i=r("79732"),s=r("20918"),u=r.n(s),l=r("78164"),c=r("34104"),d=r("68669"),x=e=>{var t,r,{route:i}=e,s=u.castArray(i),m=u.last(s),v="_component"in m&&u.isString(m._component)?m._component:null,j=s.map(e=>e.path&&(0,l.withoutTrailingSlash)(e.path)).filter(u.isString).join("/"),g=null!==(r=m.index)&&void 0!==r&&r,y="/"===j,R=(0,a.useContext)(d.MatchRemixRouteContext),C=R.length>0,S=u.find(R,{route:{id:m.id}}),b=(0,a.useRef)(null),B=(0,c.useHoverDirty)(b);return(0,n.jsxs)(o.Box,{ref:b,children:[(0,n.jsxs)(o.Flex,{gap:"2",align:"center",mb:m.children&&"1",children:[(0,n.jsxs)(p,{"data-miss-matched":C&&!S,children:[!y&&(0,n.jsx)(h,{"data-compose":g&&"head",children:j}),g&&(0,n.jsx)(h,{color:"purple","data-compose":!y&&"tail",children:"/(index)"})]}),B&&v&&(0,n.jsx)(f,{children:v})]}),(0,n.jsx)(o.Flex,{direction:"column",gap:"1",children:null===(t=m.children)||void 0===t?void 0:t.map(e=>(0,n.jsx)(x,{route:s.concat(e)},e.id))})]})},h=(0,i.default)(o.Code)({fontSize:"var(--font-size-2)",'&[data-compose="head"]':{paddingRight:"0",borderTopRightRadius:"0",borderBottomRightRadius:"0"},'&[data-compose="tail"]':{paddingLeft:"0",borderTopLeftRadius:"0",borderBottomLeftRadius:"0"}}),f=(0,i.default)(o.Link)({color:"var(--gray-9)",fontSize:"var(--font-size-1)"}),p=(0,i.default)(o.Box)({display:"flex",transition:"opacity 200ms",'&[data-miss-matched="true"]':{opacity:"0.5"}})},14404:function(e,t,r){"use strict";r.r(t),r.d(t,{RemixRouteStats:function(){return x}});var n=r("15169"),a=r("43932"),o=r("9880"),i=r("71593"),s=r("73108"),u=r("57814"),l=r("1081"),c=r("68669"),d=r("2125"),x=e=>{var t,{remixRoutes:r,route:x}=e,h=(0,u.useContext)(l.MatchUrlContext),f=(0,u.useMemo)(()=>{if(!h||!r)return[];var e,t=h.replace(x.urlPath,"");return null!==(e=(0,i.matchRoutes)(r,t))&&void 0!==e?e:[]},[r,h]);return r.length?(0,o.jsx)(c.MatchRemixRouteContext.Provider,{value:f,children:(0,o.jsx)(s.Flex,{gap:"2",direction:"column",children:r.map(e=>(0,o.jsx)(d.RemixRoute,{route:(0,a._)((0,n._)({},e),{path:x.urlPath+(null!==(t=e.path)&&void 0!==t?t:"")})},e.id))})}):null}},76393:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return u}});var n=r("9880");r("57814");var a=r("73108"),o=r("48842"),i=r("48207"),s=r("18558"),u=e=>{var{route:t}=e;return(0,n.jsx)(o.BaseRoute,{badge:l,route:t,title:t.urlPath,children:(0,n.jsxs)(a.Flex,{direction:"column",gap:"2",children:[(0,n.jsx)(i.EntryStats,{route:t}),(0,n.jsx)(s.ClientRouteStats,{route:t})]})})},l=(0,n.jsx)(a.Badge,{color:"cyan",children:"Entry"})},48207:function(e,t,r){"use strict";r.r(t),r.d(t,{EntryStats:function(){return c}});var n=r("9880");r("57814");var a=r("20918"),o=r.n(a),i=r("63645"),s=r("73108"),u=r("79732"),l=r("27288"),c=e=>{var{route:t}=e,r=(0,l.useStore)(),{entrypoints:a}=(0,i.useSnapshot)(r).framework.context,u=t.entryName&&o.find(a,{entryName:t.entryName});if(!u)throw Error("Can't found the entrypoint named ".concat(JSON.stringify(t.entryName)));return(0,n.jsx)(d,{children:(0,n.jsxs)(s.Box,{children:[(0,n.jsxs)(s.Flex,{gap:"1",children:[(0,n.jsx)(s.Strong,{children:"Directory: "}),(0,n.jsx)(s.Text,{children:u.absoluteEntryDir})]}),(0,n.jsxs)(s.Flex,{gap:"1",children:[(0,n.jsx)(s.Strong,{children:"Entry:"}),(0,n.jsx)(s.Text,{children:u.entry})]})]})})},d=(0,u.default)(s.Card)({fontSize:"var(--font-size-1)"})},1081:function(e,t,r){"use strict";r.r(t),r.d(t,{MatchUrlContext:function(){return n}});var n=(0,r("57814").createContext)("")},57269:function(e,t,r){"use strict";r.r(t),r.d(t,{ServerRoute:function(){return u}});var n=r("9880");r("57814");var a=r("20918"),o=r.n(a),i=r("76393"),s=r("84916"),u=e=>{var{route:t}=e;return l(t)},l=e=>o.isString(e.entryName)?(0,n.jsx)(i.default,{route:e}):(0,n.jsx)(s.default,{route:e})},84916:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return i}});var n=r("9880");r("57814");var a=r("73108"),o=r("48842"),i=e=>{var{route:t}=e;return(0,n.jsx)(o.BaseRoute,{badge:s,route:t,title:t.urlPath,children:(0,n.jsx)(a.Card,{children:"Unknown route type."})})},s=(0,n.jsx)(a.Badge,{color:"gray",children:"Unknown"})},44603:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return d}});var n=r("9880"),a=r("79732"),o=r("73108"),i=r("57814"),s=r("63645"),u=r("1081"),l=r("57269"),c=r("27288"),d=()=>{var e=(0,c.useStore)(),{serverRoutes:t}=(0,s.useSnapshot)(e).framework.context,[r,a]=(0,i.useState)("");return(0,n.jsx)(u.MatchUrlContext.Provider,{value:r,children:(0,n.jsxs)(x,{children:[(0,n.jsx)(o.Box,{children:(0,n.jsxs)(o.TextField.Root,{children:[(0,n.jsx)(o.TextField.Slot,{children:(0,n.jsx)(o.Text,{size:"2",children:"test:"})}),(0,n.jsx)(o.TextField.Input,{placeholder:"/foo?bar#baz",onChange:e=>a(e.target.value),type:"search",autoComplete:"false",autoCapitalize:"false",autoCorrect:"false"})]})}),(0,n.jsx)(o.Box,{height:"2"}),(0,n.jsx)(h,{children:t.map(e=>(0,n.jsx)(l.ServerRoute,{route:e},e.entryPath))})]})})},x=(0,a.default)(o.Box)({}),h=(0,a.default)(o.Box)({display:"flex",flexDirection:"column",gap:"var(--space-2)",justifyContent:"space-between"})},18558:function(e,t,r){"use strict";r.r(t);var n=r("38526");r.es(n,t)},68669:function(e,t,r){"use strict";r.r(t),r.d(t,{MatchRemixRouteContext:function(){return n}});var n=(0,r("57814").createContext)([])}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/async/pages/page.d8425bcf.js","sources":["./src/routes/pages/BaseRoute.tsx","./src/routes/pages/EntryRoute/ClientRouteStats/ClientRouteStats.tsx","./src/routes/pages/EntryRoute/ClientRouteStats/LegacyRouteStats.tsx","./src/routes/pages/EntryRoute/ClientRouteStats/RemixRoute.tsx","./src/routes/pages/EntryRoute/ClientRouteStats/RemixRouteStats.tsx","./src/routes/pages/EntryRoute/EntryRoute.tsx","./src/routes/pages/EntryRoute/EntryStats.tsx","./src/routes/pages/MatchUrl.tsx","./src/routes/pages/ServerRoute.tsx","./src/routes/pages/UnknownRoute.tsx","./src/routes/pages/page.tsx","./src/routes/pages/EntryRoute/MatchRemixRouteContext.ts"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport type { ServerRoute as IServerRoute } from '@modern-js/types';\nimport * as Collapsible from '@radix-ui/react-collapsible';\nimport { Box, Card, Text } from '@radix-ui/themes';\nimport { CaretSortIcon } from '@radix-ui/react-icons';\nimport { parseURL } from 'ufo';\nimport styled from '@emotion/styled';\nimport { MatchUrlContext } from './MatchUrl';\n\nexport interface BaseRouteProps extends React.PropsWithChildren {\n badge: React.ReactElement;\n route: IServerRoute;\n title: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const BaseRoute: React.FC<BaseRouteProps> = ({\n badge,\n route,\n title,\n children,\n open,\n onOpenChange,\n}) => {\n const url = useContext(MatchUrlContext);\n const [_open, _setOpen] = useState(false);\n const isMatching = Boolean(url);\n const { pathname } = parseURL(url);\n const isMatched =\n pathname === route.urlPath || pathname.startsWith(`${route.urlPath}/`);\n const isOpen = isMatched || (open ?? _open);\n\n return (\n <Container>\n <Collapsible.Root open={isOpen} onOpenChange={onOpenChange ?? _setOpen}>\n <CollapsibleTrigger>\n {badge}\n <UrlText data-miss-matched={isMatching && !isMatched}>\n {title}\n </UrlText>\n <Box grow=\"1\" />\n <CollapsedMark open={isOpen}>\n <CaretSortIcon />\n </CollapsedMark>\n </CollapsibleTrigger>\n <CollapsibleContent>{children}</CollapsibleContent>\n </Collapsible.Root>\n </Container>\n );\n};\n\nconst Container = styled(Card)({\n backgroundColor: '#181818',\n});\n\nconst CollapsibleTrigger = styled(Collapsible.Trigger)({\n all: 'unset',\n width: '100%',\n display: 'flex',\n gap: 'var(--space-2)',\n alignItems: 'center',\n});\n\nconst CollapsibleContent = styled(Collapsible.Content)({\n paddingTop: 'var(--space-2)',\n});\n\nconst UrlText = styled(Text)({\n color: 'var(--gray-12)',\n fontSize: 'var(--font-size-2)',\n transition: 'color 200ms',\n '&[data-miss-matched=\"true\"]': {\n color: 'var(--gray-10)',\n },\n});\n\nconst CollapsedMark = styled(Box)<{ open?: boolean }>(props => ({\n backgroundColor: props.open ? 'var(--gray-4)' : 'transparent',\n height: 'var(--font-size-5)',\n width: 'var(--font-size-5)',\n borderRadius: 'var(--radius-2)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n transition: 'background-color 100ms',\n}));\n","import { FileSystemRoutes } from '@modern-js/devtools-kit';\nimport type { RouteLegacy, ServerRoute } from '@modern-js/types';\nimport _ from 'lodash';\nimport React from 'react';\nimport { useSnapshot } from 'valtio';\nimport { LegacyRouteStats } from './LegacyRouteStats';\nimport { RemixRouteStats } from './RemixRouteStats';\nimport { useStore } from '@/stores';\n\nexport interface ClientRouteStatsProps {\n route: ServerRoute;\n}\n\nexport const ClientRouteStats: React.FC<ClientRouteStatsProps> = ({\n route,\n}) => {\n const $store = useStore();\n const store = useSnapshot($store);\n const { entrypoints } = store.framework.context;\n const entrypoint =\n route.entryName && _.find(entrypoints, { entryName: route.entryName });\n\n if (!entrypoint) {\n throw new Error(\n `Can't found the entrypoint named ${JSON.stringify(route.entryName)}`,\n );\n }\n\n const fileSystemRoute =\n store.framework.fileSystemRoutes[entrypoint.entryName];\n\n if (isLegacyRoutes(fileSystemRoute as any)) {\n return <LegacyRouteStats />;\n } else {\n return (\n <RemixRouteStats remixRoutes={fileSystemRoute as any} route={route} />\n );\n }\n};\n\nconst isLegacyRoutes = (routes: FileSystemRoutes): routes is RouteLegacy[] =>\n routes[0] && !('type' in routes[0]);\n","import React from 'react';\nimport { Text } from '@radix-ui/themes';\n\nexport const LegacyRouteStats: React.FC = () => {\n return <Text>Unimplemented.</Text>;\n};\n","import React, { useContext, useRef } from 'react';\nimport { RouteObject } from '@modern-js/runtime/router';\nimport { Box, Flex, Link, Code } from '@radix-ui/themes';\nimport styled from '@emotion/styled';\nimport _ from 'lodash';\nimport { withoutTrailingSlash } from 'ufo';\nimport { useHoverDirty } from 'react-use';\nimport { MatchRemixRouteContext } from '../MatchRemixRouteContext';\n\nexport interface RemixRouteProps {\n route: RouteObject | RouteObject[];\n}\n\nexport const RemixRoute: React.FC<RemixRouteProps> = ({ route }) => {\n const routes = _.castArray(route);\n const curr = _.last(routes)!;\n const componentFile =\n '_component' in curr && _.isString(curr._component)\n ? curr._component\n : null;\n const displayPath = routes\n .map(r => r.path && withoutTrailingSlash(r.path))\n .filter(_.isString)\n .join('/');\n const isIndex = curr.index ?? false;\n const isRoot = displayPath === '/';\n const matched = useContext(MatchRemixRouteContext);\n const isMatching = matched.length > 0;\n const isMatched = _.find(matched, { route: { id: curr.id } });\n\n const ref = useRef<HTMLDivElement>(null);\n const hovered = useHoverDirty(ref);\n\n return (\n <Box ref={ref}>\n <Flex gap=\"2\" align=\"center\" mb={curr.children && '1'}>\n <EndpointContainer data-miss-matched={isMatching && !isMatched}>\n {!isRoot && (\n <EndpointTag data-compose={isIndex && 'head'}>\n {displayPath}\n </EndpointTag>\n )}\n {isIndex && (\n <EndpointTag color=\"purple\" data-compose={!isRoot && 'tail'}>\n /(index)\n </EndpointTag>\n )}\n </EndpointContainer>\n {hovered && componentFile && <ShyLink>{componentFile}</ShyLink>}\n </Flex>\n <Flex direction=\"column\" gap=\"1\">\n {curr.children?.map(route => (\n <RemixRoute key={route.id} route={routes.concat(route)} />\n ))}\n </Flex>\n </Box>\n );\n};\n\nconst EndpointTag = styled(Code)({\n fontSize: 'var(--font-size-2)',\n '&[data-compose=\"head\"]': {\n paddingRight: '0',\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n },\n '&[data-compose=\"tail\"]': {\n paddingLeft: '0',\n borderTopLeftRadius: '0',\n borderBottomLeftRadius: '0',\n },\n});\n\nconst ShyLink = styled(Link)({\n color: 'var(--gray-9)',\n fontSize: 'var(--font-size-1)',\n});\n\nconst EndpointContainer = styled(Box)({\n display: 'flex',\n transition: 'opacity 200ms',\n '&[data-miss-matched=\"true\"]': {\n opacity: '0.5',\n },\n});\n","import {\n RouteMatch,\n RouteObject,\n matchRoutes as matchRemixRoutes,\n} from '@modern-js/runtime/router';\nimport type { ServerRoute } from '@modern-js/types';\nimport { Flex } from '@radix-ui/themes';\nimport React, { useContext, useMemo } from 'react';\nimport { MatchUrlContext } from '../../MatchUrl';\nimport { MatchRemixRouteContext } from '../MatchRemixRouteContext';\nimport { RemixRoute } from './RemixRoute';\n\nexport interface RemixRouteStatsProps {\n remixRoutes: RouteObject[];\n route: ServerRoute;\n}\n\nexport const RemixRouteStats: React.FC<RemixRouteStatsProps> = ({\n remixRoutes,\n route,\n}) => {\n const testingUrl = useContext(MatchUrlContext);\n const matchedRoutes = useMemo(() => {\n if (!testingUrl || !remixRoutes) return [];\n const location = testingUrl.replace(route.urlPath, '');\n const matched = matchRemixRoutes(remixRoutes, location) ?? [];\n return matched as RouteMatch<string, RouteObject>[];\n }, [remixRoutes, testingUrl]);\n\n if (!remixRoutes.length) return null;\n\n return (\n <MatchRemixRouteContext.Provider value={matchedRoutes}>\n <Flex gap=\"2\" direction=\"column\">\n {remixRoutes.map(r => (\n <RemixRoute\n key={r.id}\n route={{ ...r, path: route.urlPath + (r.path ?? '') }}\n />\n ))}\n </Flex>\n </MatchRemixRouteContext.Provider>\n );\n};\n","import React from 'react';\nimport { Badge, Flex } from '@radix-ui/themes';\nimport { ServerRoute } from '@modern-js/types';\nimport { BaseRoute } from '../BaseRoute';\nimport { EntryStats } from './EntryStats';\nimport { ClientRouteStats } from './ClientRouteStats';\n\nexport interface EntryRouteProps {\n route: ServerRoute;\n}\n\nconst EntryRoute: React.FC<EntryRouteProps> = ({ route }) => {\n return (\n <BaseRoute badge={badge} route={route} title={route.urlPath}>\n <Flex direction=\"column\" gap=\"2\">\n <EntryStats route={route} />\n <ClientRouteStats route={route} />\n </Flex>\n </BaseRoute>\n );\n};\n\nexport default EntryRoute;\n\nconst badge = <Badge color=\"cyan\">Entry</Badge>;\n","import React from 'react';\nimport _ from 'lodash';\nimport { useSnapshot } from 'valtio';\nimport type { ServerRoute } from '@modern-js/types';\nimport { Box, Card, Flex, Strong, Text } from '@radix-ui/themes';\nimport styled from '@emotion/styled';\nimport { useStore } from '@/stores';\n\nexport interface EntryStatsProps {\n route: ServerRoute;\n}\n\nexport const EntryStats: React.FC<EntryStatsProps> = ({ route }) => {\n const $store = useStore();\n const store = useSnapshot($store);\n const { entrypoints } = store.framework.context;\n const entrypoint =\n route.entryName && _.find(entrypoints, { entryName: route.entryName });\n\n if (!entrypoint) {\n throw new Error(\n `Can't found the entrypoint named ${JSON.stringify(route.entryName)}`,\n );\n }\n\n return (\n <Stats>\n <Box>\n <Flex gap=\"1\">\n <Strong>Directory: </Strong>\n <Text>{entrypoint.absoluteEntryDir}</Text>\n </Flex>\n <Flex gap=\"1\">\n <Strong>Entry:</Strong>\n <Text>{entrypoint.entry}</Text>\n </Flex>\n </Box>\n </Stats>\n );\n};\n\nconst Stats = styled(Card)({\n fontSize: 'var(--font-size-1)',\n});\n","import { createContext } from 'react';\n\nexport const MatchUrlContext = createContext<string>('');\n","import React from 'react';\nimport type { ServerRoute as IServerRoute } from '@modern-js/types';\nimport _ from 'lodash';\nimport EntryRoute from './EntryRoute/EntryRoute';\nimport UnknownRoute from './UnknownRoute';\n\nexport interface ServerRouteProps {\n route: IServerRoute;\n}\n\nexport const ServerRoute: React.FC<ServerRouteProps> = ({ route }) => {\n return dispatchServerRoute(route);\n};\n\nconst dispatchServerRoute = (route: IServerRoute) => {\n if (_.isString(route.entryName)) {\n return <EntryRoute route={route} />;\n } else {\n return <UnknownRoute route={route} />;\n }\n};\n","import React from 'react';\nimport { Badge, Card } from '@radix-ui/themes';\nimport { ServerRoute } from '@modern-js/types';\nimport { BaseRoute } from './BaseRoute';\n\nexport interface UnknownRouteProps {\n route: ServerRoute;\n}\n\nconst UnknownRoute: React.FC<UnknownRouteProps> = ({ route }) => {\n return (\n <BaseRoute badge={badge} route={route} title={route.urlPath}>\n <Card>Unknown route type.</Card>\n </BaseRoute>\n );\n};\n\nexport default UnknownRoute;\n\nconst badge = <Badge color=\"gray\">Unknown</Badge>;\n","import styled from '@emotion/styled';\nimport { Box, Text, TextField } from '@radix-ui/themes';\nimport React, { useState } from 'react';\nimport { useSnapshot } from 'valtio';\nimport { MatchUrlContext } from './MatchUrl';\nimport { ServerRoute } from './ServerRoute';\nimport { useStore } from '@/stores';\n\nconst Page: React.FC = () => {\n const $store = useStore();\n const store = useSnapshot($store);\n const { serverRoutes } = store.framework.context;\n\n const [testingUrl, setTestingUrl] = useState<string>('');\n\n return (\n <MatchUrlContext.Provider value={testingUrl}>\n <Container>\n <Box>\n <TextField.Root>\n <TextField.Slot>\n <Text size=\"2\">test:</Text>\n </TextField.Slot>\n <TextField.Input\n placeholder=\"/foo?bar#baz\"\n onChange={e => setTestingUrl(e.target.value)}\n type=\"search\"\n autoComplete=\"false\"\n autoCapitalize=\"false\"\n autoCorrect=\"false\"\n />\n </TextField.Root>\n </Box>\n <Box height=\"2\" />\n <RoutesContainer>\n {serverRoutes.map(route => (\n <ServerRoute key={route.entryPath} route={route} />\n ))}\n </RoutesContainer>\n </Container>\n </MatchUrlContext.Provider>\n );\n};\n\nexport default Page;\n\nconst Container = styled(Box)({});\n\nconst RoutesContainer = styled(Box)({\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--space-2)',\n justifyContent: 'space-between',\n});\n","import { RouteMatch, RouteObject } from '@modern-js/runtime/router';\nimport { createContext } from 'react';\n\nexport const MatchRemixRouteContext = createContext<\n RouteMatch<string, RouteObject>[]\n>([]);\n"],"names":["BaseRoute","badge","route","title","children","open","onOpenChange","url","useContext","MatchUrlContext","_open","_setOpen","useState","isMatching","Boolean","pathname","parseURL","isMatched","urlPath","startsWith","isOpen","Container","CollapsibleTrigger","UrlText","Box","grow","CollapsedMark","CaretSortIcon","CollapsibleContent","Card","backgroundColor","all","width","display","gap","alignItems","paddingTop","Text","color","fontSize","transition","props","height","borderRadius","justifyContent","ClientRouteStats","$store","useStore","store","useSnapshot","entrypoints","framework","context","entrypoint","entryName","Error","JSON","stringify","fileSystemRoute","fileSystemRoutes","isLegacyRoutes","LegacyRouteStats","RemixRouteStats","remixRoutes","routes","RemixRoute","curr","componentFile","_component","displayPath","map","r","path","withoutTrailingSlash","filter","join","isIndex","index","isRoot","matched","MatchRemixRouteContext","length","id","ref","useRef","hovered","useHoverDirty","Flex","align","mb","EndpointContainer","EndpointTag","ShyLink","direction","concat","Code","paddingRight","borderTopRightRadius","borderBottomRightRadius","paddingLeft","borderTopLeftRadius","borderBottomLeftRadius","Link","opacity","testingUrl","matchedRoutes","useMemo","location","replace","value","EntryStats","Badge","Stats","Strong","absoluteEntryDir","entry","createContext","ServerRoute","dispatchServerRoute","serverRoutes","setTestingUrl","TextField","size","placeholder","onChange","e","target","type","autoComplete","autoCapitalize","autoCorrect","RoutesContainer","entryPath","flexDirection"],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Outlet } from '@modern-js/runtime/router';
|
|
2
|
-
import { ScrollArea } from '@radix-ui/themes';
|
|
3
|
-
import { Suspense } from 'react';
|
|
4
|
-
|
|
5
|
-
export default function Layout() {
|
|
6
|
-
return (
|
|
7
|
-
<ScrollArea scrollbars="both">
|
|
8
|
-
<Suspense fallback={'loading...'}>
|
|
9
|
-
<Outlet />
|
|
10
|
-
</Suspense>
|
|
11
|
-
</ScrollArea>
|
|
12
|
-
);
|
|
13
|
-
}
|
|
File without changes
|