@monkeyplus/flow 6.0.17 → 6.0.19
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/README.md +2 -0
- package/cms/dist/assets/Button-BqeUw3Nb.js +1 -0
- package/cms/dist/assets/Cms--iKNGffI.js +1 -0
- package/cms/dist/assets/Cms-DPkKSuvX.js +1 -0
- package/cms/dist/assets/Cms.vue_vue_type_script_setup_true_lang-BLjYlaya.js +1 -0
- package/cms/dist/assets/Collection-CC4xVuVM.js +1 -0
- package/cms/dist/assets/Collection-oMH_nwxS.js +1 -0
- package/cms/dist/assets/Collection-sfaJ9fwa.js +1 -0
- package/cms/dist/assets/Collection.vue_vue_type_script_setup_true_lang-DBh9sOKn.js +4 -0
- package/cms/dist/assets/DropdownMenu-pXjjYDJf.js +1 -0
- package/cms/dist/assets/EditorDragHandle-DjhDrza4.js +210 -0
- package/cms/dist/assets/Entry-D1FEE6Xe.js +1 -0
- package/cms/dist/assets/Entry-DIjoQMCn.js +1 -0
- package/cms/dist/assets/Entry-Dx-Gentu.js +1 -0
- package/cms/dist/assets/Entry-futdQUpk.js +1 -0
- package/cms/dist/assets/Entry.vue_vue_type_script_setup_true_lang-CGsCqUcC.js +1 -0
- package/cms/dist/assets/Entry.vue_vue_type_script_setup_true_lang-yZb441-Z.js +1 -0
- package/cms/dist/assets/Fields-1zzijKwy.css +1 -0
- package/cms/dist/assets/Fields-DG6uyVyw.js +1 -0
- package/cms/dist/assets/Main-Xea2Go7n.js +1 -0
- package/cms/dist/assets/Media-D9qcmiia.js +64 -0
- package/cms/dist/assets/Modal-DzMlh1K9.js +1 -0
- package/cms/dist/assets/Page-Bg6ZJkCi.js +1 -0
- package/cms/dist/assets/PageSideForm-CJvudHte.js +1 -0
- package/cms/dist/assets/PageSideForm-v14TdYOR.js +1 -0
- package/cms/dist/assets/Pages-CgtLUrd1.js +1 -0
- package/cms/dist/assets/Pages-Colx-y_M.js +1 -0
- package/cms/dist/assets/Presence-DXmvDu-B.js +3 -0
- package/cms/dist/assets/Preview-DyW6gcwI.js +1 -0
- package/cms/dist/assets/RovingFocusGroup-Zc2iLojI.js +1 -0
- package/cms/dist/assets/RovingFocusItem-XP2WbDfI.js +1 -0
- package/cms/dist/assets/Settings-6BY8hMNJ.js +1 -0
- package/cms/dist/assets/Sidebar-7tc1rH-m.js +1 -0
- package/cms/dist/assets/TooltipProvider-T49u14GZ.js +1 -0
- package/cms/dist/assets/_plugin-vue_export-helper-BDNMzG2s.js +1 -0
- package/cms/dist/assets/app-DBVODLiC.js +1 -0
- package/cms/dist/assets/app-DBac-q-m.css +2 -0
- package/cms/dist/assets/app-DzK4b1Um.js +1 -0
- package/cms/dist/assets/app.vue_vue_type_script_setup_true_lang-BXAw_NlS.js +13 -0
- package/cms/dist/assets/cms-D2eW8dB-.js +1 -0
- package/cms/dist/assets/dist-DASomEJF.js +1 -0
- package/cms/dist/assets/dist-TO46HCAG.js +1 -0
- package/cms/dist/assets/en.svg +11 -0
- package/cms/dist/assets/es-ec.svg +13 -0
- package/cms/dist/assets/es.svg +42 -0
- package/cms/dist/assets/index-1Es5a0_Z.js +18 -0
- package/cms/dist/assets/index-yfLwsAFs.css +1 -0
- package/cms/dist/assets/index.vue_vue_type_style_index_0_scoped_2e5c9142_lang-CfB8rLPy.js +1 -0
- package/cms/dist/assets/logger-DSeL-og4.js +10 -0
- package/cms/dist/assets/not-found-B8Yomlc0.js +1 -0
- package/cms/dist/assets/not-found-z4zyiO6n.js +1 -0
- package/cms/dist/assets/pages-B6dE90Nv.js +1 -0
- package/cms/dist/assets/pages-kaHLKSrN.js +1 -0
- package/cms/dist/assets/preview-D1CIVM6p.js +1 -0
- package/cms/dist/assets/useCmsBreadcrumb-BGzdrscS.js +1 -0
- package/cms/dist/assets/useOverlay-BON7Ngo_.js +1 -0
- package/cms/dist/assets/usePortal-C04XvxfO.js +1 -0
- package/cms/dist/assets/useToast-T1ue7roH.js +1 -0
- package/cms/dist/assets/utils-Cx7OEZFn.js +1 -0
- package/cms/dist/index.html +12 -0
- package/cms/server/database/schema.d.ts +648 -0
- package/cms/server/database/schema.mjs +43 -0
- package/cms/server/routes/api/auth/[...auth].d.ts +2 -0
- package/cms/server/routes/api/auth/[...auth].mjs +5 -0
- package/cms/server/routes/api/draft.d.ts +3 -0
- package/cms/server/routes/api/draft.mjs +26 -0
- package/cms/server/routes/api/repos/remote/[repo]/blobs/[file]/index.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/blobs/[file]/index.mjs +20 -0
- package/cms/server/routes/api/repos/remote/[repo]/blobs/index.post.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/blobs/index.post.mjs +8 -0
- package/cms/server/routes/api/repos/remote/[repo]/branches/[branch]/index.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/branches/[branch]/index.mjs +8 -0
- package/cms/server/routes/api/repos/remote/[repo]/commits/index.post.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/commits/index.post.mjs +8 -0
- package/cms/server/routes/api/repos/remote/[repo]/files/[branch]/index.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/files/[branch]/index.mjs +38 -0
- package/cms/server/routes/api/repos/remote/[repo]/files/index.post.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/files/index.post.mjs +8 -0
- package/cms/server/routes/api/repos/remote/[repo]/refs/heads/[branch]/index.patch.d.ts +2 -0
- package/cms/server/routes/api/repos/remote/[repo]/refs/heads/[branch]/index.patch.mjs +9 -0
- package/cms/server/utils/auth.d.ts +3 -0
- package/cms/server/utils/auth.mjs +16 -0
- package/cms/server/utils/db.d.ts +3 -0
- package/cms/server/utils/db.mjs +5 -0
- package/cms/server/utils/github.d.ts +15 -0
- package/cms/server/utils/github.mjs +160 -0
- package/cms/server/utils/github_token.d.ts +71 -0
- package/cms/server/utils/github_token.mjs +377 -0
- package/modules/cms/module.d.ts +11 -0
- package/modules/cms/module.mjs +163 -0
- package/modules/cms/server/api/admin.d.ts +2 -0
- package/modules/cms/server/api/admin.mjs +18 -0
- package/modules/cms/server/api/config.d.ts +2 -0
- package/modules/cms/server/api/config.mjs +88 -0
- package/modules/cms/server/api/localFs.d.ts +2 -0
- package/modules/cms/server/api/localFs.mjs +88 -0
- package/modules/cms/server/api/meta.d.ts +2 -0
- package/modules/cms/server/api/meta.mjs +12 -0
- package/modules/cms/server/lib/composables.d.ts +116 -0
- package/modules/cms/server/lib/composables.mjs +82 -0
- package/modules/cms/server/lib/fs.d.ts +1 -0
- package/modules/cms/server/lib/fs.mjs +18 -0
- package/modules/cms/server/lib/helpers.d.ts +14 -0
- package/modules/cms/server/lib/helpers.mjs +78 -0
- package/modules/cms/server/lib/types.d.ts +120 -0
- package/modules/cms/server/lib/types.mjs +0 -0
- package/modules/cms/server/lib/widgets.d.ts +82 -0
- package/modules/cms/server/lib/widgets.mjs +200 -0
- package/modules/cms/server/trial.d.ts +2 -0
- package/modules/cms/server/trial.mjs +8 -0
- package/modules/content/query.mjs +31 -3
- package/modules/images/ipx.mjs +4 -2
- package/modules/images/module.d.ts +0 -1
- package/modules/images/module.mjs +5 -3
- package/modules/images/runtime/build.mjs +12 -0
- package/modules/images/runtime/image.mjs +4 -3
- package/modules/images/runtime/renames.mjs +59 -8
- package/modules/images/runtime/types.d.ts +27 -4
- package/modules/images/watermark.d.ts +1 -0
- package/modules/images/watermark.mjs +113 -0
- package/modules/netlify-cms/handler.mjs +2 -1
- package/modules/netlify-cms/module.mjs +1 -1
- package/modules/netlify-cms/server/api/config.mjs +25 -1
- package/modules/netlify-cms/server/api/local-fs.d.ts +51 -0
- package/modules/netlify-cms/server/api/local-fs.mjs +81 -77
- package/modules/netlify-cms/server/lib/cms/handler.d.ts +1 -1
- package/modules/netlify-cms/server/lib/cms/handlerV1.d.ts +1 -1
- package/modules/netlify-cms/server/lib/composables.d.ts +8 -0
- package/modules/netlify-cms/server/lib/composables.mjs +2 -1
- package/monkeyplus-flow-6.0.18.tgz +0 -0
- package/package.json +10 -2
- package/server/lib/context.d.ts +3 -0
- package/server/lib/context.mjs +5 -0
- package/server/lib/handler.mjs +58 -23
- package/server/lib/pages.d.ts +2 -2
- package/server/lib/pages.mjs +8 -6
- package/server/lib/render.mjs +20 -4
- package/server/plugins/00.lifecycle.mjs +2 -1
- package/src/public/index.d.ts +1 -0
- package/src/public/index.mjs +1 -0
- package/src/public/nitro.mjs +2 -0
- package/src/public/query-content.mjs +9 -2
- package/src/public/shared.d.ts +1 -0
- package/src/public/shared.mjs +3 -0
- package/src/public/vite.mjs +63 -8
- package/src/runtime/components/FlowIsland.mjs +31 -4
- package/src/runtime/components/MkImage.d.ts +100 -22
- package/src/runtime/components/MkImage.mjs +20 -12
- package/src/runtime/components/MkLink.d.ts +8 -5
- package/src/runtime/components/MkLink.mjs +9 -3
- package/src/runtime/components/MkPicture.d.ts +92 -7
- package/src/runtime/components/MkPicture.mjs +8 -2
- package/src/runtime/components/image-shared.d.ts +0 -1
- package/src/runtime/components/image-shared.mjs +9 -18
- package/src/runtime/config.d.ts +6 -15
- package/src/runtime/head.d.ts +2 -1
- package/src/runtime/head.mjs +5 -2
- package/src/runtime/islands.mjs +20 -2
- package/src/runtime/page-discovery.mjs +9 -1
- package/src/runtime/pages.d.ts +14 -13
- package/src/runtime/virtual-pages.mjs +2 -2
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
import type { PropType } from 'vue';
|
|
2
|
+
import type { WatermarkOptions } from '../../../modules/images/runtime/types.ts';
|
|
3
|
+
/**
|
|
4
|
+
* MkPicture
|
|
5
|
+
*
|
|
6
|
+
* A modern picture element component that integrates with IPX for automatic
|
|
7
|
+
* format negotiation (e.g., providing WEBP and AVIF sources based on browser support)
|
|
8
|
+
* and responsive image sizes.
|
|
9
|
+
*
|
|
10
|
+
* Supports standard IPX modifiers for dynamic image processing:
|
|
11
|
+
* - width / height: resize the image
|
|
12
|
+
* - quality: set the JPEG/WEBP compression quality (0-100)
|
|
13
|
+
* - format: convert format (auto, webp, avif, png, jpeg, gif)
|
|
14
|
+
* - fit: contain, cover, fill, inside, outside
|
|
15
|
+
* - position: crop position (top, right top, center, etc.)
|
|
16
|
+
* - background: set background color (hex)
|
|
17
|
+
* - blur: apply gaussian blur
|
|
18
|
+
* - grayscale: convert to grayscale
|
|
19
|
+
* - rotate: rotate image in degrees
|
|
20
|
+
* - trim: trim borders
|
|
21
|
+
* - watermark: add watermark composite to the image
|
|
22
|
+
*/
|
|
1
23
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
24
|
src: {
|
|
3
25
|
type: StringConstructor;
|
|
@@ -12,7 +34,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
12
34
|
};
|
|
13
35
|
classImg: StringConstructor;
|
|
14
36
|
format: {
|
|
15
|
-
type:
|
|
37
|
+
type: PropType<"auto" | "webp" | "jpeg" | "png" | "avif" | "gif">;
|
|
16
38
|
default: undefined;
|
|
17
39
|
};
|
|
18
40
|
quality: {
|
|
@@ -24,9 +46,37 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
24
46
|
default: undefined;
|
|
25
47
|
};
|
|
26
48
|
fit: {
|
|
49
|
+
type: PropType<"contain" | "cover" | "fill" | "inside" | "outside">;
|
|
50
|
+
default: undefined;
|
|
51
|
+
};
|
|
52
|
+
blur: {
|
|
53
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
54
|
+
default: undefined;
|
|
55
|
+
};
|
|
56
|
+
trim: {
|
|
57
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
58
|
+
default: undefined;
|
|
59
|
+
};
|
|
60
|
+
position: {
|
|
61
|
+
type: PropType<"top" | "right top" | "right" | "right bottom" | "bottom" | "left bottom" | "left" | "left top" | "center">;
|
|
62
|
+
default: undefined;
|
|
63
|
+
};
|
|
64
|
+
grayscale: {
|
|
65
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
66
|
+
default: undefined;
|
|
67
|
+
};
|
|
68
|
+
rotate: {
|
|
69
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
70
|
+
default: undefined;
|
|
71
|
+
};
|
|
72
|
+
size: {
|
|
27
73
|
type: StringConstructor;
|
|
28
74
|
default: undefined;
|
|
29
75
|
};
|
|
76
|
+
watermark: {
|
|
77
|
+
type: PropType<boolean | string | WatermarkOptions>;
|
|
78
|
+
default: undefined;
|
|
79
|
+
};
|
|
30
80
|
modifiers: {
|
|
31
81
|
type: () => Record<string, any>;
|
|
32
82
|
default: undefined;
|
|
@@ -102,7 +152,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
102
152
|
};
|
|
103
153
|
classImg: StringConstructor;
|
|
104
154
|
format: {
|
|
105
|
-
type:
|
|
155
|
+
type: PropType<"auto" | "webp" | "jpeg" | "png" | "avif" | "gif">;
|
|
106
156
|
default: undefined;
|
|
107
157
|
};
|
|
108
158
|
quality: {
|
|
@@ -114,9 +164,37 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
114
164
|
default: undefined;
|
|
115
165
|
};
|
|
116
166
|
fit: {
|
|
167
|
+
type: PropType<"contain" | "cover" | "fill" | "inside" | "outside">;
|
|
168
|
+
default: undefined;
|
|
169
|
+
};
|
|
170
|
+
blur: {
|
|
171
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
172
|
+
default: undefined;
|
|
173
|
+
};
|
|
174
|
+
trim: {
|
|
175
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
176
|
+
default: undefined;
|
|
177
|
+
};
|
|
178
|
+
position: {
|
|
179
|
+
type: PropType<"top" | "right top" | "right" | "right bottom" | "bottom" | "left bottom" | "left" | "left top" | "center">;
|
|
180
|
+
default: undefined;
|
|
181
|
+
};
|
|
182
|
+
grayscale: {
|
|
183
|
+
type: (StringConstructor | BooleanConstructor)[];
|
|
184
|
+
default: undefined;
|
|
185
|
+
};
|
|
186
|
+
rotate: {
|
|
187
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
188
|
+
default: undefined;
|
|
189
|
+
};
|
|
190
|
+
size: {
|
|
117
191
|
type: StringConstructor;
|
|
118
192
|
default: undefined;
|
|
119
193
|
};
|
|
194
|
+
watermark: {
|
|
195
|
+
type: PropType<boolean | string | WatermarkOptions>;
|
|
196
|
+
default: undefined;
|
|
197
|
+
};
|
|
120
198
|
modifiers: {
|
|
121
199
|
type: () => Record<string, any>;
|
|
122
200
|
default: undefined;
|
|
@@ -179,14 +257,21 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
179
257
|
}>> & Readonly<{}>, {
|
|
180
258
|
width: string | number;
|
|
181
259
|
height: string | number;
|
|
182
|
-
fit:
|
|
183
|
-
format:
|
|
260
|
+
fit: "contain" | "cover" | "fill" | "inside" | "outside";
|
|
261
|
+
format: "auto" | "webp" | "jpeg" | "png" | "avif" | "gif";
|
|
262
|
+
quality: string | number;
|
|
263
|
+
background: string;
|
|
264
|
+
blur: string | number;
|
|
265
|
+
trim: string | number;
|
|
266
|
+
position: "top" | "right top" | "right" | "right bottom" | "bottom" | "left bottom" | "left" | "left top" | "center";
|
|
267
|
+
grayscale: string | boolean;
|
|
268
|
+
rotate: string | number;
|
|
269
|
+
size: string;
|
|
270
|
+
watermark: string | boolean | WatermarkOptions;
|
|
184
271
|
provider: string;
|
|
185
272
|
preset: string;
|
|
186
273
|
modifiers: Record<string, any>;
|
|
187
274
|
sizes: string | Record<string, any>;
|
|
188
|
-
background: string;
|
|
189
|
-
quality: string | number;
|
|
190
275
|
strappi: boolean;
|
|
191
276
|
alt: string;
|
|
192
277
|
referrerpolicy: string;
|
|
@@ -194,9 +279,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
194
279
|
longdesc: string;
|
|
195
280
|
ismap: boolean;
|
|
196
281
|
loading: string;
|
|
282
|
+
title: string;
|
|
197
283
|
sync: boolean;
|
|
198
284
|
thumbnail: string | boolean;
|
|
199
|
-
title: string;
|
|
200
285
|
legacyFormat: string;
|
|
201
286
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
202
287
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed, defineComponent, h } from "vue";
|
|
2
2
|
import { getFileExtension, screens } from "../../../modules/images/runtime/helpers.mjs";
|
|
3
|
-
import { useImage
|
|
3
|
+
import { useImage } from "./image-shared.mjs";
|
|
4
4
|
function getLocalSource(src) {
|
|
5
5
|
return src.startsWith("http") ? "" : src;
|
|
6
6
|
}
|
|
@@ -28,6 +28,13 @@ export default defineComponent({
|
|
|
28
28
|
quality: { type: [Number, String], default: void 0 },
|
|
29
29
|
background: { type: String, default: void 0 },
|
|
30
30
|
fit: { type: String, default: void 0 },
|
|
31
|
+
blur: { type: [Number, String], default: void 0 },
|
|
32
|
+
trim: { type: [Number, String], default: void 0 },
|
|
33
|
+
position: { type: String, default: void 0 },
|
|
34
|
+
grayscale: { type: [Boolean, String], default: void 0 },
|
|
35
|
+
rotate: { type: [Number, String], default: void 0 },
|
|
36
|
+
size: { type: String, default: void 0 },
|
|
37
|
+
watermark: { type: [Boolean, String, Object], default: void 0 },
|
|
31
38
|
modifiers: {
|
|
32
39
|
type: Object,
|
|
33
40
|
default: void 0
|
|
@@ -119,7 +126,6 @@ export default defineComponent({
|
|
|
119
126
|
}, nOption.value);
|
|
120
127
|
return typeof thumbnail === "string" ? thumbnail : resolvedSrc.value;
|
|
121
128
|
});
|
|
122
|
-
useLazySizes(() => !isRuntimeLambda() && !!nThumbnail.value);
|
|
123
129
|
return () => {
|
|
124
130
|
if (isRuntimeLambda()) {
|
|
125
131
|
return h("img", {
|
|
@@ -6,7 +6,6 @@ export interface InjectedImageUtils {
|
|
|
6
6
|
getImageOptions?: () => FlowImageOptions | undefined;
|
|
7
7
|
}
|
|
8
8
|
export declare function useInjectedImageUtils(): InjectedImageUtils;
|
|
9
|
-
export declare function useLazySizes(enabled: () => unknown): void;
|
|
10
9
|
export declare function createBootImageUtils(boot?: FlowBootPayload): InjectedImageUtils;
|
|
11
10
|
export declare function useImage(props: Record<string, any>): {
|
|
12
11
|
imageUtils: InjectedImageUtils;
|
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
import { computed, inject
|
|
1
|
+
import { computed, inject } from "vue";
|
|
2
2
|
import { getNormalName, parseSize } from "../../../modules/images/runtime/helpers.mjs";
|
|
3
3
|
import { createImageResolver } from "../../../modules/images/runtime/image.mjs";
|
|
4
|
-
let lazySizesLoadPromise;
|
|
5
|
-
function loadLazySizes() {
|
|
6
|
-
if (lazySizesLoadPromise) {
|
|
7
|
-
return lazySizesLoadPromise;
|
|
8
|
-
}
|
|
9
|
-
lazySizesLoadPromise = import("lazysizes");
|
|
10
|
-
return lazySizesLoadPromise;
|
|
11
|
-
}
|
|
12
4
|
export function useInjectedImageUtils() {
|
|
13
5
|
return inject("utils", {});
|
|
14
6
|
}
|
|
15
|
-
export function useLazySizes(enabled) {
|
|
16
|
-
watchEffect(() => {
|
|
17
|
-
if (typeof window === "undefined" || !enabled()) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
void loadLazySizes();
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
7
|
function isAbsoluteImageUrl(value) {
|
|
24
8
|
return /^https?:\/\//i.test(value) || value.startsWith("data:");
|
|
25
9
|
}
|
|
@@ -75,7 +59,14 @@ export function useImage(props) {
|
|
|
75
59
|
format: props.format,
|
|
76
60
|
quality: props.quality,
|
|
77
61
|
background: props.background,
|
|
78
|
-
fit: props.fit
|
|
62
|
+
fit: props.fit,
|
|
63
|
+
blur: props.blur,
|
|
64
|
+
trim: props.trim,
|
|
65
|
+
position: props.position,
|
|
66
|
+
grayscale: props.grayscale,
|
|
67
|
+
rotate: props.rotate,
|
|
68
|
+
size: props.size,
|
|
69
|
+
watermark: typeof props.watermark === "object" && props.watermark !== null ? "b64" + (typeof btoa !== "undefined" ? btoa(unescape(encodeURIComponent(JSON.stringify(props.watermark)))) : "") : props.watermark
|
|
79
70
|
}));
|
|
80
71
|
const nOption = computed(() => ({
|
|
81
72
|
provider: props.provider,
|
package/src/runtime/config.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type { NitroConfig } from 'nitro/types';
|
|
1
2
|
import type { Options as AutoimportOptions } from 'unplugin-auto-import/types';
|
|
2
3
|
import type { Options as ComponentOptions } from 'unplugin-vue-components/types';
|
|
4
|
+
import type { NetlifyCmsModuleOptions } from '../../modules/cms/module.ts';
|
|
3
5
|
import type { FlowImagesModuleOptions } from '../../modules/images/runtime/types.ts';
|
|
4
6
|
export interface FlowDirEntry {
|
|
5
7
|
dir: string;
|
|
@@ -59,26 +61,15 @@ export type UserFlowConfig = Partial<FlowConfig> & Record<string, unknown> & {
|
|
|
59
61
|
};
|
|
60
62
|
locale?: Partial<FlowLocaleConfig>;
|
|
61
63
|
images?: Partial<FlowImagesModuleOptions>;
|
|
64
|
+
cms?: Partial<NetlifyCmsModuleOptions>;
|
|
62
65
|
server?: FlowServerConfig;
|
|
63
66
|
siteUrl?: string;
|
|
64
67
|
components?: Partial<ComponentOptions>;
|
|
65
68
|
autoImport?: Partial<AutoimportOptions>;
|
|
66
69
|
};
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
handlers: Array<Record<string, unknown>>;
|
|
71
|
-
routeRules: Record<string, Record<string, unknown>>;
|
|
72
|
-
runtimeConfig: Record<string, unknown>;
|
|
73
|
-
virtual: Record<string, string | (() => string | Promise<string>)>;
|
|
74
|
-
imports?: {
|
|
75
|
-
imports: Array<{
|
|
76
|
-
name: string;
|
|
77
|
-
from: string;
|
|
78
|
-
as?: string;
|
|
79
|
-
}>;
|
|
80
|
-
};
|
|
81
|
-
}
|
|
70
|
+
export type FlowModuleNitroConfig = NitroConfig & {
|
|
71
|
+
runtimeConfig: any;
|
|
72
|
+
};
|
|
82
73
|
export interface FlowModuleViteConfig extends Record<string, unknown> {
|
|
83
74
|
plugins: unknown[];
|
|
84
75
|
resolve: {
|
package/src/runtime/head.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useSchemaOrg } from '@unhead/schema-org-vue';
|
|
1
2
|
import { useHead, useSeoMeta } from '@unhead/vue';
|
|
2
3
|
export declare function getClientHead(): import("@unhead/vue").VueHeadClient<import("@unhead/vue").UseHeadInput<_Deprecated>, boolean>;
|
|
3
|
-
export { useHead, useSeoMeta };
|
|
4
|
+
export { useHead, useSchemaOrg, useSeoMeta };
|
package/src/runtime/head.mjs
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UnheadSchemaOrg } from "@unhead/schema-org";
|
|
2
|
+
import { useSchemaOrg } from "@unhead/schema-org-vue";
|
|
2
3
|
import { useHead, useSeoMeta } from "@unhead/vue";
|
|
4
|
+
import { createHead } from "@unhead/vue/client";
|
|
3
5
|
const clientHead = createHead();
|
|
6
|
+
clientHead.use(UnheadSchemaOrg());
|
|
4
7
|
export function getClientHead() {
|
|
5
8
|
return clientHead;
|
|
6
9
|
}
|
|
7
|
-
export { useHead, useSeoMeta };
|
|
10
|
+
export { useHead, useSchemaOrg, useSeoMeta };
|
package/src/runtime/islands.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import islands from "virtual:flow/islands";
|
|
2
|
-
import { createSSRApp } from "vue";
|
|
2
|
+
import { createSSRApp, h, defineComponent } from "vue";
|
|
3
3
|
import { createBootImageUtils } from "./components/image-shared.mjs";
|
|
4
4
|
import { getClientHead } from "./head.mjs";
|
|
5
5
|
import { installFlowVuePlugins } from "./vue.mjs";
|
|
@@ -39,7 +39,25 @@ async function hydrateIsland(element, boot) {
|
|
|
39
39
|
if (!mod.default) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
const
|
|
42
|
+
const slotNamesStr = element.dataset.flowSlots;
|
|
43
|
+
const clientSlots = {};
|
|
44
|
+
if (slotNamesStr) {
|
|
45
|
+
const slotNames = slotNamesStr.split(",");
|
|
46
|
+
for (const name of slotNames) {
|
|
47
|
+
const slotEl = element.querySelector(`div[data-flow-slot-template="${name}"]`);
|
|
48
|
+
if (slotEl) {
|
|
49
|
+
const html = slotEl.innerHTML;
|
|
50
|
+
clientSlots[name] = () => h("div", { "data-flow-slot": name, style: "display: contents;", innerHTML: html });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const RootComponent = defineComponent({
|
|
55
|
+
name: "FlowIslandRoot",
|
|
56
|
+
setup() {
|
|
57
|
+
return () => h(mod.default, props, Object.keys(clientSlots).length > 0 ? clientSlots : void 0);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
const app = createSSRApp(RootComponent);
|
|
43
61
|
const imageUtils = createBootImageUtils(boot);
|
|
44
62
|
app.use(getClientHead());
|
|
45
63
|
app.provide("utils", imageUtils);
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from "node:fs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { createJiti } from "jiti";
|
|
4
|
+
import { queryContent } from "../public/query-content.mjs";
|
|
5
|
+
import { useSchemaOrg } from "./head.mjs";
|
|
6
|
+
import { defineLayoutContext } from "./layout-context.mjs";
|
|
4
7
|
import { localizeRoutePattern, normalizePath, toPublicRoute } from "./locale-routing.mjs";
|
|
8
|
+
import { definePage } from "./pages.mjs";
|
|
5
9
|
const jiti = createJiti(import.meta.url, {
|
|
6
10
|
fsCache: false,
|
|
7
11
|
moduleCache: false
|
|
@@ -120,10 +124,14 @@ export async function loadPageDefinitions(projectRoot, flowConfig) {
|
|
|
120
124
|
const files = pageDirs.flatMap((pagesDir) => collectFiles(pagesDir));
|
|
121
125
|
const pages = [];
|
|
122
126
|
for (const filePath of files) {
|
|
127
|
+
globalThis.definePage = definePage;
|
|
128
|
+
globalThis.queryContent = queryContent;
|
|
129
|
+
globalThis.useSchemaOrg = useSchemaOrg;
|
|
130
|
+
globalThis.defineLayoutContext = defineLayoutContext;
|
|
123
131
|
const loaded = await jiti.import(filePath, { default: true });
|
|
124
132
|
const definitions = Array.isArray(loaded) ? loaded : [loaded];
|
|
125
133
|
for (const definition of definitions) {
|
|
126
|
-
if (definition) {
|
|
134
|
+
if (definition && typeof definition === "object" && "name" in definition && "locales" in definition) {
|
|
127
135
|
pages.push(definition);
|
|
128
136
|
}
|
|
129
137
|
}
|
package/src/runtime/pages.d.ts
CHANGED
|
@@ -8,28 +8,28 @@ export interface FlowLocale {
|
|
|
8
8
|
export interface LegacySeoDefinition {
|
|
9
9
|
title?: string;
|
|
10
10
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
* @deprecated
|
|
12
|
+
*/
|
|
13
13
|
description?: string;
|
|
14
14
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
* @deprecated
|
|
16
|
+
*/
|
|
17
17
|
keywords?: string;
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
* @deprecated
|
|
20
|
+
*/
|
|
21
21
|
imageSocial?: string;
|
|
22
22
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
* @deprecated
|
|
24
|
+
*/
|
|
25
25
|
twitterSite?: string;
|
|
26
26
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
* @deprecated
|
|
28
|
+
*/
|
|
29
29
|
google?: boolean;
|
|
30
30
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
* @deprecated
|
|
32
|
+
*/
|
|
33
33
|
twitter?: boolean;
|
|
34
34
|
/**
|
|
35
35
|
* @deprecated
|
|
@@ -81,7 +81,7 @@ export type PageContextGetImage = ((input: string, modifiers?: Record<string, an
|
|
|
81
81
|
};
|
|
82
82
|
export interface PageViewDefinition {
|
|
83
83
|
bundle?: string;
|
|
84
|
-
template
|
|
84
|
+
template?: string;
|
|
85
85
|
layout?: string;
|
|
86
86
|
base?: string;
|
|
87
87
|
mode?: FlowHydrationMode;
|
|
@@ -103,6 +103,7 @@ export interface PageContextInput {
|
|
|
103
103
|
params: Record<string, string>;
|
|
104
104
|
dynamic?: DynamicRouteEntry;
|
|
105
105
|
utils: PageContextUtils;
|
|
106
|
+
preview?: boolean;
|
|
106
107
|
}
|
|
107
108
|
export interface PageLocaleDefinition {
|
|
108
109
|
url: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
3
2
|
import { basename, extname, resolve } from "node:path";
|
|
3
|
+
import { parse } from "vue/compiler-sfc";
|
|
4
4
|
function collectFiles(rootDir, extensions, currentDir = rootDir) {
|
|
5
5
|
const entries = readdirSync(currentDir, { withFileTypes: true });
|
|
6
6
|
const files = [];
|