camox 0.63.0 → 0.66.0
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/dist/core/createApp.d.ts +28 -28
- package/dist/core/createLayout.d.ts +1 -1
- package/dist/core/derivedRoutes.js +3 -30
- package/dist/core/editing/createEditableBlock.d.ts +604 -604
- package/dist/features/canvas/CamoxCanvas.js +195 -173
- package/dist/features/canvas/canvasCamera.js +11 -2
- package/dist/features/canvas/canvasFrameCapture.js +5 -12
- package/dist/features/canvas/canvasFrameDocument.js +90 -29
- package/dist/features/canvas/canvasItems.js +22 -6
- package/dist/features/canvas/sidebar/ContentSidebar.js +19 -21
- package/dist/features/canvas/sidebar/LayoutPageOverview.js +22 -49
- package/dist/features/canvas/sidebar/LayoutPageSeo.js +73 -76
- package/dist/features/canvas/sidebar/PageInspector.js +61 -50
- package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +4 -4
- package/dist/features/canvas/useCanvasCamera.js +36 -15
- package/dist/features/page/CuratedPageContent.js +2 -1
- package/dist/features/page/UnplacedBlockContent.js +52 -0
- package/dist/features/preview/components/PageInfo.js +103 -100
- package/dist/features/preview/components/PreviewPanel.js +40 -12
- package/dist/features/preview/components/SidebarStack.js +78 -9
- package/dist/features/preview/strayCaretGuard.js +34 -0
- package/dist/features/provider/CoreCamoxProvider.js +5 -3
- package/dist/features/routes/pageRuntime.d.ts +2 -0
- package/dist/features/routes/pageRuntime.js +8 -5
- package/dist/features/runtime/RuntimeChrome.js +66 -40
- package/dist/features/runtime/pageApp.js +111 -74
- package/dist/features/runtime/pageClient.js +22 -2
- package/dist/features/runtime/runtime.d.ts +10 -0
- package/dist/features/runtime/runtime.js +314 -4
- package/dist/features/runtime/runtimeRoutes.d.ts +5 -0
- package/dist/features/runtime/runtimeRoutes.js +5 -0
- package/dist/features/studio/components/AgentSidebar.js +3 -3
- package/dist/features/studio/components/ChatWidget.js +106 -75
- package/dist/features/studio/components/ConnectAgent.js +313 -0
- package/dist/features/studio/components/DraftsControl.js +172 -159
- package/dist/features/studio/components/Patrol.js +605 -350
- package/dist/features/studio/components/ReviewDraftSheet.js +566 -430
- package/dist/features/studio/components/Squareling.js +74 -41
- package/dist/features/studio/components/ThreadComposer.js +192 -107
- package/dist/features/studio/components/ThreadMessages.js +95 -18
- package/dist/features/studio/components/UnnamedDraftBar.js +349 -0
- package/dist/features/studio/components/clientLogoPaths.js +10 -0
- package/dist/features/studio/findingSentence.js +37 -0
- package/dist/features/studio/patrollerBio.js +40 -0
- package/dist/features/studio/reportSentence.js +15 -0
- package/dist/features/studio/studioStore.js +36 -1
- package/dist/features/studio/workingSentence.js +10 -7
- package/dist/lib/api-client.d.ts +1 -0
- package/dist/lib/auth.js +34 -32
- package/dist/lib/queries.js +9 -1
- package/dist/lib/revisions.js +25 -3
- package/dist/lib/server-auth-cookie.js +17 -4
- package/dist/lib/studio-reads.d.ts +1 -1
- package/dist/lib/studio-reads.js +5 -1
- package/dist/lib/use-thread.js +1 -1
- package/dist/package.js +1 -1
- package/dist/studio.css +1 -1
- package/package.json +15 -4
- package/dist/features/canvas/sidebar/DerivedPageInspector.js +0 -49
- package/dist/features/canvas/sidebar/SingletonPageInspector.js +0 -39
package/dist/core/createApp.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { IconProps } from "./lib/icons.js";
|
|
|
2
2
|
import { CamoxDocument } from "./defineDocument.js";
|
|
3
3
|
import { ArtifactRenderProps } from "./lib/artifact.js";
|
|
4
4
|
import { InlineTextStyles } from "./lib/textStyles.js";
|
|
5
|
-
import { ReferenceContent, ReferenceScope } from "./lib/reference.js";
|
|
5
|
+
import { ReferenceContent, ReferenceKeys, ReferenceListKeys, ReferenceScope } from "./lib/reference.js";
|
|
6
6
|
import { Layout } from "./createLayout.js";
|
|
7
7
|
import { Collection } from "./createCollection.js";
|
|
8
8
|
import { IconValue } from "./lib/iconTypes.js";
|
|
@@ -142,7 +142,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
142
142
|
Repeater: <K extends never>(props: {
|
|
143
143
|
name: K;
|
|
144
144
|
children: (item: {
|
|
145
|
-
Field: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends
|
|
145
|
+
Field: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends ArtifactSource | IconValue ? never : ({}[K] extends (infer U)[] ? U : never)[F_1] extends string ? F_1 : never]: ({}[K] extends (infer U)[] ? U : never)[F_1]; }>(props: InlineTextStyles & {
|
|
146
146
|
name: F;
|
|
147
147
|
children: (props: {
|
|
148
148
|
children: React.ReactNode;
|
|
@@ -240,7 +240,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
240
240
|
[attribute: `data-camox-${string}`]: string | boolean | undefined;
|
|
241
241
|
}, data: FileValue) => React.ReactNode;
|
|
242
242
|
}) => React.ReactNode;
|
|
243
|
-
ImageList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer
|
|
243
|
+
ImageList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer U)[] ? ImageValue extends U ? U extends U & {
|
|
244
244
|
url: string;
|
|
245
245
|
alt: string;
|
|
246
246
|
filename: string;
|
|
@@ -258,7 +258,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
258
258
|
sizes?: string;
|
|
259
259
|
}, data: ImageValue) => React.ReactNode;
|
|
260
260
|
}) => React.ReactNode;
|
|
261
|
-
FileList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer
|
|
261
|
+
FileList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer U)[] ? FileValue extends U ? U extends U & {
|
|
262
262
|
url: string;
|
|
263
263
|
alt: string;
|
|
264
264
|
filename: string;
|
|
@@ -276,15 +276,15 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
276
276
|
[attribute: `data-camox-${string}`]: string | boolean | undefined;
|
|
277
277
|
}, data: FileValue) => React.ReactNode;
|
|
278
278
|
}) => React.ReactNode;
|
|
279
|
-
Reference: <F extends
|
|
279
|
+
Reference: <F extends ReferenceKeys<never>>(props: {
|
|
280
280
|
name: F;
|
|
281
281
|
children: (scope: ReferenceScope<ReferenceContent<never[F]>>) => React.ReactNode;
|
|
282
282
|
}) => React.ReactNode;
|
|
283
|
-
ReferenceList: <F extends
|
|
283
|
+
ReferenceList: <F extends ReferenceListKeys<never>>(props: {
|
|
284
284
|
name: F;
|
|
285
285
|
children: (scope: ReferenceScope<ReferenceContent<never[F]>>) => React.ReactNode;
|
|
286
286
|
}) => React.ReactNode;
|
|
287
|
-
Repeater: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer
|
|
287
|
+
Repeater: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer U)[] ? ImageValue extends U ? never : FileValue extends U ? never : U extends string ? never : F_1 : never]: ({}[K] extends (infer U)[] ? U : never)[F_1]; }>(props: {
|
|
288
288
|
name: F;
|
|
289
289
|
children: (item: {
|
|
290
290
|
Field: (props: InlineTextStyles & {
|
|
@@ -403,11 +403,11 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
403
403
|
useSetting: <F extends string>(name: F) => never;
|
|
404
404
|
}, index: number) => React.ReactNode;
|
|
405
405
|
}) => React.ReactNode;
|
|
406
|
-
Reference: <K extends
|
|
406
|
+
Reference: <K extends ReferenceKeys<Record<string, import("@sinclair/typebox").TSchema>>>(props: {
|
|
407
407
|
name: K;
|
|
408
408
|
children: (scope: ReferenceScope<never>) => React.ReactNode;
|
|
409
409
|
}) => React.ReactNode;
|
|
410
|
-
ReferenceList: <K extends
|
|
410
|
+
ReferenceList: <K extends ReferenceListKeys<Record<string, import("@sinclair/typebox").TSchema>>>(props: {
|
|
411
411
|
name: K;
|
|
412
412
|
children: (scope: ReferenceScope<never>) => React.ReactNode;
|
|
413
413
|
}) => React.ReactNode;
|
|
@@ -416,12 +416,11 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
416
416
|
Component: ({ blockData, mode, isFirstBlock, showAddBlockTop, showAddBlockBottom, addBlockAfterPosition }: BlockComponentProps<{
|
|
417
417
|
[x: string]: unknown;
|
|
418
418
|
}>) => import("react").JSX.Element;
|
|
419
|
-
LayoutItem: ({ collectionId, collection, properties, record, children, fallback }: LayoutItemProps) => string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").
|
|
419
|
+
LayoutItem: ({ collectionId, collection, properties, record, children, fallback }: LayoutItemProps) => string | number | bigint | boolean | import("react").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | Iterable<import("react").ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null | undefined;
|
|
420
420
|
id: string;
|
|
421
421
|
title: string;
|
|
422
422
|
description: string;
|
|
423
423
|
contentSchema: {
|
|
424
|
-
toStructuredData?: unknown;
|
|
425
424
|
type: "object";
|
|
426
425
|
title: string;
|
|
427
426
|
description: string;
|
|
@@ -429,6 +428,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
429
428
|
required: string[];
|
|
430
429
|
toMarkdown: string[];
|
|
431
430
|
toTitle: string;
|
|
431
|
+
toStructuredData?: unknown;
|
|
432
432
|
};
|
|
433
433
|
settingsSchema: {
|
|
434
434
|
type: "object";
|
|
@@ -584,7 +584,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
584
584
|
Repeater: <K extends never>(props: {
|
|
585
585
|
name: K;
|
|
586
586
|
children: (item: {
|
|
587
|
-
Field: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends
|
|
587
|
+
Field: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends ArtifactSource | IconValue ? never : ({}[K] extends (infer U)[] ? U : never)[F_1] extends string ? F_1 : never]: ({}[K] extends (infer U)[] ? U : never)[F_1]; }>(props: InlineTextStyles & {
|
|
588
588
|
name: F;
|
|
589
589
|
children: (props: {
|
|
590
590
|
children: React.ReactNode;
|
|
@@ -682,7 +682,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
682
682
|
[attribute: `data-camox-${string}`]: string | boolean | undefined;
|
|
683
683
|
}, data: FileValue) => React.ReactNode;
|
|
684
684
|
}) => React.ReactNode;
|
|
685
|
-
ImageList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer
|
|
685
|
+
ImageList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer U)[] ? ImageValue extends U ? U extends U & {
|
|
686
686
|
url: string;
|
|
687
687
|
alt: string;
|
|
688
688
|
filename: string;
|
|
@@ -700,7 +700,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
700
700
|
sizes?: string;
|
|
701
701
|
}, data: ImageValue) => React.ReactNode;
|
|
702
702
|
}) => React.ReactNode;
|
|
703
|
-
FileList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer
|
|
703
|
+
FileList: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer U)[] ? FileValue extends U ? U extends U & {
|
|
704
704
|
url: string;
|
|
705
705
|
alt: string;
|
|
706
706
|
filename: string;
|
|
@@ -718,15 +718,15 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
718
718
|
[attribute: `data-camox-${string}`]: string | boolean | undefined;
|
|
719
719
|
}, data: FileValue) => React.ReactNode;
|
|
720
720
|
}) => React.ReactNode;
|
|
721
|
-
Reference: <F extends
|
|
721
|
+
Reference: <F extends ReferenceKeys<never>>(props: {
|
|
722
722
|
name: F;
|
|
723
723
|
children: (scope: ReferenceScope<ReferenceContent<never[F]>>) => React.ReactNode;
|
|
724
724
|
}) => React.ReactNode;
|
|
725
|
-
ReferenceList: <F extends
|
|
725
|
+
ReferenceList: <F extends ReferenceListKeys<never>>(props: {
|
|
726
726
|
name: F;
|
|
727
727
|
children: (scope: ReferenceScope<ReferenceContent<never[F]>>) => React.ReactNode;
|
|
728
728
|
}) => React.ReactNode;
|
|
729
|
-
Repeater: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer
|
|
729
|
+
Repeater: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends (infer U)[] ? ImageValue extends U ? never : FileValue extends U ? never : U extends string ? never : F_1 : never]: ({}[K] extends (infer U)[] ? U : never)[F_1]; }>(props: {
|
|
730
730
|
name: F;
|
|
731
731
|
children: (item: {
|
|
732
732
|
Field: (props: InlineTextStyles & {
|
|
@@ -845,11 +845,11 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
845
845
|
useSetting: <F extends string>(name: F) => never;
|
|
846
846
|
}, index: number) => React.ReactNode;
|
|
847
847
|
}) => React.ReactNode;
|
|
848
|
-
Reference: <K extends
|
|
848
|
+
Reference: <K extends ReferenceKeys<Record<string, import("@sinclair/typebox").TSchema>>>(props: {
|
|
849
849
|
name: K;
|
|
850
850
|
children: (scope: ReferenceScope<never>) => React.ReactNode;
|
|
851
851
|
}) => React.ReactNode;
|
|
852
|
-
ReferenceList: <K extends
|
|
852
|
+
ReferenceList: <K extends ReferenceListKeys<Record<string, import("@sinclair/typebox").TSchema>>>(props: {
|
|
853
853
|
name: K;
|
|
854
854
|
children: (scope: ReferenceScope<never>) => React.ReactNode;
|
|
855
855
|
}) => React.ReactNode;
|
|
@@ -858,12 +858,11 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
858
858
|
Component: ({ blockData, mode, isFirstBlock, showAddBlockTop, showAddBlockBottom, addBlockAfterPosition }: BlockComponentProps<{
|
|
859
859
|
[x: string]: unknown;
|
|
860
860
|
}>) => import("react").JSX.Element;
|
|
861
|
-
LayoutItem: ({ collectionId, collection, properties, record, children, fallback }: LayoutItemProps) => string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").
|
|
861
|
+
LayoutItem: ({ collectionId, collection, properties, record, children, fallback }: LayoutItemProps) => string | number | bigint | boolean | import("react").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | Iterable<import("react").ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null | undefined;
|
|
862
862
|
id: string;
|
|
863
863
|
title: string;
|
|
864
864
|
description: string;
|
|
865
865
|
contentSchema: {
|
|
866
|
-
toStructuredData?: unknown;
|
|
867
866
|
type: "object";
|
|
868
867
|
title: string;
|
|
869
868
|
description: string;
|
|
@@ -871,6 +870,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
871
870
|
required: string[];
|
|
872
871
|
toMarkdown: string[];
|
|
873
872
|
toTitle: string;
|
|
873
|
+
toStructuredData?: unknown;
|
|
874
874
|
};
|
|
875
875
|
settingsSchema: {
|
|
876
876
|
type: "object";
|
|
@@ -931,7 +931,6 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
931
931
|
title: string;
|
|
932
932
|
description: string;
|
|
933
933
|
contentSchema: {
|
|
934
|
-
toStructuredData?: unknown;
|
|
935
934
|
type: "object";
|
|
936
935
|
title: string;
|
|
937
936
|
description: string;
|
|
@@ -939,6 +938,7 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
939
938
|
required: string[];
|
|
940
939
|
toMarkdown: string[];
|
|
941
940
|
toTitle: string;
|
|
941
|
+
toStructuredData?: unknown;
|
|
942
942
|
};
|
|
943
943
|
settingsSchema: {
|
|
944
944
|
type: "object";
|
|
@@ -955,10 +955,6 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
955
955
|
synced: boolean;
|
|
956
956
|
}[];
|
|
957
957
|
layouts: {
|
|
958
|
-
recordPages?: {
|
|
959
|
-
collectionId: string;
|
|
960
|
-
field: string;
|
|
961
|
-
} | undefined;
|
|
962
958
|
layoutId: string;
|
|
963
959
|
kind: "curated" | "derived" | "singleton";
|
|
964
960
|
title: string;
|
|
@@ -988,15 +984,19 @@ export declare function createApp({ blocks, lazyBlocks, layouts, collections, do
|
|
|
988
984
|
}[];
|
|
989
985
|
slot: "after";
|
|
990
986
|
})[];
|
|
987
|
+
recordPages?: {
|
|
988
|
+
collectionId: string;
|
|
989
|
+
field: string;
|
|
990
|
+
} | undefined;
|
|
991
991
|
}[];
|
|
992
992
|
collections: {
|
|
993
|
-
contentSchema: any;
|
|
994
|
-
toStructuredData?: Record<string, unknown> | undefined;
|
|
995
993
|
collectionId: string;
|
|
996
994
|
title: string;
|
|
997
995
|
description: string;
|
|
998
996
|
toTitle: string;
|
|
999
997
|
toDescription: string | null;
|
|
998
|
+
toStructuredData?: Record<string, unknown> | undefined;
|
|
999
|
+
contentSchema: any;
|
|
1000
1000
|
}[];
|
|
1001
1001
|
homepage: {
|
|
1002
1002
|
layoutId: string;
|
|
@@ -244,7 +244,7 @@ declare function createLayoutDefinition(options: AnyLayoutOptions): {
|
|
|
244
244
|
Item: {
|
|
245
245
|
({ children }: {
|
|
246
246
|
children: (item: any) => React.ReactNode;
|
|
247
|
-
}): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.
|
|
247
|
+
}): string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | Iterable<React.ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;
|
|
248
248
|
displayName: string;
|
|
249
249
|
};
|
|
250
250
|
useData(): unknown;
|
|
@@ -1,37 +1,10 @@
|
|
|
1
1
|
import { asCollectionItem } from "./recordItem.js";
|
|
2
|
+
import { matchLayoutRoute, routeSegments } from "@camox/api-contract/layout-routes";
|
|
2
3
|
|
|
3
4
|
//#region src/core/derivedRoutes.ts
|
|
4
|
-
|
|
5
|
-
return id.split(".");
|
|
6
|
-
}
|
|
5
|
+
/** The singleton or derived layout whose route matches `pathname`, with its params, or null. */
|
|
7
6
|
function matchDerivedLayout(layouts, pathname) {
|
|
8
|
-
|
|
9
|
-
const candidates = layouts.filter((layout) => layout._internal.kind !== "curated").sort((a, b) => routeSegments(a._internal.id).filter((s) => s.startsWith("$")).length - routeSegments(b._internal.id).filter((s) => s.startsWith("$")).length);
|
|
10
|
-
for (const layout of candidates) {
|
|
11
|
-
const segments = routeSegments(layout._internal.id);
|
|
12
|
-
if (segments.length !== path.length) continue;
|
|
13
|
-
const params = {};
|
|
14
|
-
let matches = true;
|
|
15
|
-
for (const [index, segment] of segments.entries()) {
|
|
16
|
-
let value;
|
|
17
|
-
try {
|
|
18
|
-
value = decodeURIComponent(path[index]);
|
|
19
|
-
} catch {
|
|
20
|
-
matches = false;
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
if (segment.startsWith("$") && value && !value.includes("/")) params[segment.slice(1)] = value;
|
|
24
|
-
else if (segment !== value) {
|
|
25
|
-
matches = false;
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (matches) return {
|
|
30
|
-
layout,
|
|
31
|
-
params
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
return null;
|
|
7
|
+
return matchLayoutRoute(layouts, pathname, (layout) => layout._internal);
|
|
35
8
|
}
|
|
36
9
|
/** Builds the path of one discovered page, rejecting params the route could not match. */
|
|
37
10
|
function derivedLayoutPath(layoutId, params) {
|