@prismicio/types-internal 2.2.1 → 2.3.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/lib/content/Document.d.ts +10 -4
- package/lib/content/Document.js +45 -11
- package/lib/content/fields/GroupContent.d.ts +1 -0
- package/lib/content/fields/GroupContent.js +13 -1
- package/lib/content/fields/nestable/BooleanContent.d.ts +2 -0
- package/lib/content/fields/nestable/BooleanContent.js +11 -1
- package/lib/content/fields/nestable/FieldContent/SelectContent.d.ts +2 -0
- package/lib/content/fields/nestable/FieldContent/SelectContent.js +12 -1
- package/lib/content/fields/nestable/NestableContent.d.ts +2 -0
- package/lib/content/fields/nestable/NestableContent.js +12 -1
- package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +1 -0
- package/lib/content/fields/slices/Slice/CompositeSliceContent.js +13 -1
- package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +2 -1
- package/lib/content/fields/slices/Slice/SharedSliceContent.js +16 -1
- package/lib/content/fields/slices/SliceItem.d.ts +3 -0
- package/lib/content/fields/slices/SliceItem.js +24 -1
- package/lib/content/fields/slices/SlicesContent.d.ts +1 -0
- package/lib/content/fields/slices/SlicesContent.js +23 -1
- package/lib/content/fields/withDefaultValues.d.ts +6 -0
- package/lib/content/fields/withDefaultValues.js +38 -0
- package/lib/import/converters/Document.d.ts +4 -0
- package/lib/import/converters/Document.js +21 -0
- package/lib/import/converters/fields/Group.d.ts +4 -0
- package/lib/import/converters/fields/Group.js +14 -0
- package/lib/import/converters/fields/RepeatableZone.d.ts +317 -0
- package/lib/import/converters/fields/RepeatableZone.js +15 -0
- package/lib/import/converters/fields/RepeatableZoneItem.d.ts +11 -0
- package/lib/import/converters/fields/RepeatableZoneItem.js +19 -0
- package/lib/import/converters/fields/Slices/SharedSlice.d.ts +4 -0
- package/lib/import/converters/fields/Slices/SharedSlice.js +19 -0
- package/lib/import/converters/fields/Slices/SharedSliceContent.d.ts +10 -0
- package/lib/import/converters/fields/Slices/SharedSliceContent.js +23 -0
- package/lib/import/converters/fields/Slices/Slices.d.ts +4 -0
- package/lib/import/converters/fields/Slices/Slices.js +16 -0
- package/lib/import/converters/fields/Slices/index.d.ts +1 -0
- package/lib/import/converters/fields/Slices/index.js +4 -0
- package/lib/import/converters/fields/UID.d.ts +3 -0
- package/lib/import/converters/fields/UID.js +10 -0
- package/lib/import/converters/fields/index.d.ts +4 -0
- package/lib/import/converters/fields/index.js +7 -0
- package/lib/import/converters/fields/nestable/Boolean.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Boolean.js +12 -0
- package/lib/import/converters/fields/nestable/Color.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Color.js +13 -0
- package/lib/import/converters/fields/nestable/Date.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Date.js +15 -0
- package/lib/import/converters/fields/nestable/Embed.d.ts +4 -0
- package/lib/import/converters/fields/nestable/Embed.js +32 -0
- package/lib/import/converters/fields/nestable/GeoPoint.d.ts +3 -0
- package/lib/import/converters/fields/nestable/GeoPoint.js +15 -0
- package/lib/import/converters/fields/nestable/Image.d.ts +28 -0
- package/lib/import/converters/fields/nestable/Image.js +67 -0
- package/lib/import/converters/fields/nestable/Link.d.ts +4 -0
- package/lib/import/converters/fields/nestable/Link.js +70 -0
- package/lib/import/converters/fields/nestable/Nestable.d.ts +5 -0
- package/lib/import/converters/fields/nestable/Nestable.js +35 -0
- package/lib/import/converters/fields/nestable/Number.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Number.js +13 -0
- package/lib/import/converters/fields/nestable/RichText/embedBlock.d.ts +4 -0
- package/lib/import/converters/fields/nestable/RichText/embedBlock.js +14 -0
- package/lib/import/converters/fields/nestable/RichText/imageBlock.d.ts +4 -0
- package/lib/import/converters/fields/nestable/RichText/imageBlock.js +12 -0
- package/lib/import/converters/fields/nestable/RichText/index.d.ts +4 -0
- package/lib/import/converters/fields/nestable/RichText/index.js +22 -0
- package/lib/import/converters/fields/nestable/RichText/textBlock.d.ts +4 -0
- package/lib/import/converters/fields/nestable/RichText/textBlock.js +54 -0
- package/lib/import/converters/fields/nestable/Select.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Select.js +13 -0
- package/lib/import/converters/fields/nestable/Text.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Text.js +13 -0
- package/lib/import/converters/fields/nestable/Timestamp.d.ts +3 -0
- package/lib/import/converters/fields/nestable/Timestamp.js +13 -0
- package/lib/import/converters/fields/nestable/index.d.ts +13 -0
- package/lib/import/converters/fields/nestable/index.js +16 -0
- package/lib/import/converters/index.d.ts +2 -0
- package/lib/import/converters/index.js +5 -0
- package/lib/import/index.d.ts +2 -0
- package/lib/import/index.js +5 -0
- package/lib/import/validators/Document.d.ts +6 -0
- package/lib/import/validators/Document.js +64 -0
- package/lib/import/validators/fields/ImportContent.d.ts +5 -0
- package/lib/import/validators/fields/ImportContent.js +21 -0
- package/lib/import/validators/fields/ImportField.d.ts +141 -0
- package/lib/import/validators/fields/ImportField.js +33 -0
- package/lib/import/validators/fields/ImportGroup.d.ts +345 -0
- package/lib/import/validators/fields/ImportGroup.js +27 -0
- package/lib/import/validators/fields/ImportSlices/ImportSlices.d.ts +8 -0
- package/lib/import/validators/fields/ImportSlices/ImportSlices.js +30 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.d.ts +16 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.js +61 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.d.ts +4 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.js +7 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.d.ts +2 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.js +15 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.d.ts +9 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.js +39 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.d.ts +11 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.js +24 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.d.ts +11 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.js +24 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.d.ts +4 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.js +7 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/index.d.ts +3 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/index.js +6 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.d.ts +342 -0
- package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.js +11 -0
- package/lib/import/validators/fields/ImportSlices/index.d.ts +1 -0
- package/lib/import/validators/fields/ImportSlices/index.js +4 -0
- package/lib/import/validators/fields/ImportSlices/utils.d.ts +4 -0
- package/lib/import/validators/fields/ImportSlices/utils.js +35 -0
- package/lib/import/validators/fields/RepeatableZone.d.ts +11 -0
- package/lib/import/validators/fields/RepeatableZone.js +14 -0
- package/lib/import/validators/fields/RepeatableZoneItem.d.ts +11 -0
- package/lib/import/validators/fields/RepeatableZoneItem.js +39 -0
- package/lib/import/validators/fields/UID.d.ts +6 -0
- package/lib/import/validators/fields/UID.js +15 -0
- package/lib/import/validators/fields/index.d.ts +4 -0
- package/lib/import/validators/fields/index.js +7 -0
- package/lib/import/validators/fields/nestable/Boolean.d.ts +6 -0
- package/lib/import/validators/fields/nestable/Boolean.js +6 -0
- package/lib/import/validators/fields/nestable/Color.d.ts +6 -0
- package/lib/import/validators/fields/nestable/Color.js +15 -0
- package/lib/import/validators/fields/nestable/Date.d.ts +6 -0
- package/lib/import/validators/fields/nestable/Date.js +19 -0
- package/lib/import/validators/fields/nestable/Embed.d.ts +13 -0
- package/lib/import/validators/fields/nestable/Embed.js +31 -0
- package/lib/import/validators/fields/nestable/GeoPoint.d.ts +13 -0
- package/lib/import/validators/fields/nestable/GeoPoint.js +13 -0
- package/lib/import/validators/fields/nestable/Image/default.d.ts +22 -0
- package/lib/import/validators/fields/nestable/Image/default.js +19 -0
- package/lib/import/validators/fields/nestable/Image/index.d.ts +26 -0
- package/lib/import/validators/fields/nestable/Image/index.js +32 -0
- package/lib/import/validators/fields/nestable/Image/merge.d.ts +23 -0
- package/lib/import/validators/fields/nestable/Image/merge.js +44 -0
- package/lib/import/validators/fields/nestable/Image/model.d.ts +18 -0
- package/lib/import/validators/fields/nestable/Image/model.js +2 -0
- package/lib/import/validators/fields/nestable/Image/validators.d.ts +132 -0
- package/lib/import/validators/fields/nestable/Image/validators.js +43 -0
- package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.d.ts +6 -0
- package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.js +25 -0
- package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.d.ts +24 -0
- package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.js +32 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.d.ts +6 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.js +18 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.d.ts +10 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.js +11 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.d.ts +22 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.js +13 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.d.ts +78 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.js +43 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.d.ts +79 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.js +27 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.d.ts +4 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.js +7 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.d.ts +24 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.js +18 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.d.ts +12 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.js +16 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.d.ts +5 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.js +10 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.d.ts +15 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.js +20 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.d.ts +2 -0
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.js +5 -0
- package/lib/import/validators/fields/nestable/ImportRichText/index.d.ts +2 -0
- package/lib/import/validators/fields/nestable/ImportRichText/index.js +7 -0
- package/lib/import/validators/fields/nestable/Link.d.ts +53 -0
- package/lib/import/validators/fields/nestable/Link.js +35 -0
- package/lib/import/validators/fields/nestable/Nestable.d.ts +192 -0
- package/lib/import/validators/fields/nestable/Nestable.js +71 -0
- package/lib/import/validators/fields/nestable/Number.d.ts +17 -0
- package/lib/import/validators/fields/nestable/Number.js +17 -0
- package/lib/import/validators/fields/nestable/Select.d.ts +16 -0
- package/lib/import/validators/fields/nestable/Select.js +19 -0
- package/lib/import/validators/fields/nestable/Text.d.ts +6 -0
- package/lib/import/validators/fields/nestable/Text.js +6 -0
- package/lib/import/validators/fields/nestable/Timestamp.d.ts +7 -0
- package/lib/import/validators/fields/nestable/Timestamp.js +19 -0
- package/lib/import/validators/fields/nestable/index.d.ts +14 -0
- package/lib/import/validators/fields/nestable/index.js +19 -0
- package/lib/import/validators/index.d.ts +2 -0
- package/lib/import/validators/index.js +5 -0
- package/package.json +1 -1
- package/src/content/Document.ts +68 -14
- package/src/content/fields/GroupContent.ts +16 -0
- package/src/content/fields/nestable/BooleanContent.ts +11 -0
- package/src/content/fields/nestable/FieldContent/SelectContent.ts +12 -1
- package/src/content/fields/nestable/NestableContent.ts +16 -0
- package/src/content/fields/slices/Slice/CompositeSliceContent.ts +25 -0
- package/src/content/fields/slices/Slice/SharedSliceContent.ts +32 -1
- package/src/content/fields/slices/SliceItem.ts +43 -1
- package/src/content/fields/slices/SlicesContent.ts +30 -0
- package/src/content/fields/withDefaultValues.ts +48 -0
|
@@ -21,6 +21,10 @@ import {
|
|
|
21
21
|
NestableContent,
|
|
22
22
|
NestableLegacy,
|
|
23
23
|
} from "../../nestable"
|
|
24
|
+
import {
|
|
25
|
+
repeatableContentWithDefaultNestableContentValues,
|
|
26
|
+
withDefaultNestableContentValues,
|
|
27
|
+
} from "../../withDefaultValues"
|
|
24
28
|
import type {
|
|
25
29
|
CompositeSliceItemContent,
|
|
26
30
|
SharedSliceItemContent,
|
|
@@ -133,6 +137,27 @@ export const CompositeSliceContent = t.strict({
|
|
|
133
137
|
|
|
134
138
|
export type CompositeSliceContent = t.TypeOf<typeof CompositeSliceContent>
|
|
135
139
|
|
|
140
|
+
export function compositeSliceContentWithDefaultValues(
|
|
141
|
+
customType: CompositeSlice,
|
|
142
|
+
content: CompositeSliceContent,
|
|
143
|
+
): CompositeSliceContent {
|
|
144
|
+
const updatedNonRepeatContent = withDefaultNestableContentValues(
|
|
145
|
+
customType["non-repeat"] ?? {},
|
|
146
|
+
content.nonRepeat,
|
|
147
|
+
)
|
|
148
|
+
const updatedRepeatContent =
|
|
149
|
+
repeatableContentWithDefaultNestableContentValues(
|
|
150
|
+
customType.repeat ?? {},
|
|
151
|
+
content.repeat,
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
...content,
|
|
156
|
+
nonRepeat: updatedNonRepeatContent,
|
|
157
|
+
repeat: updatedRepeatContent,
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
136
161
|
export function traverseCompositeSliceContent({
|
|
137
162
|
path,
|
|
138
163
|
sliceKey,
|
|
@@ -9,7 +9,7 @@ import type {
|
|
|
9
9
|
TraverseSliceContentFn,
|
|
10
10
|
TraverseWidgetContentFn,
|
|
11
11
|
} from "../../../../_internal/utils"
|
|
12
|
-
import type { VariationFields } from "../../../../customtypes"
|
|
12
|
+
import type { SharedSlice, VariationFields } from "../../../../customtypes"
|
|
13
13
|
import {
|
|
14
14
|
getFieldCtx,
|
|
15
15
|
LegacyContentCtx,
|
|
@@ -22,6 +22,10 @@ import {
|
|
|
22
22
|
NestableContent,
|
|
23
23
|
NestableLegacy,
|
|
24
24
|
} from "../../nestable"
|
|
25
|
+
import {
|
|
26
|
+
repeatableContentWithDefaultNestableContentValues,
|
|
27
|
+
withDefaultNestableContentValues,
|
|
28
|
+
} from "../../withDefaultValues"
|
|
25
29
|
import type { SharedSliceItemContent } from "../SliceItem"
|
|
26
30
|
import { RepeatableWidgets, RepeatableWidgetsLegacy } from "./RepeatableContent"
|
|
27
31
|
|
|
@@ -141,6 +145,33 @@ export const SharedSliceContent = t.strict({
|
|
|
141
145
|
})
|
|
142
146
|
export type SharedSliceContent = t.TypeOf<typeof SharedSliceContent>
|
|
143
147
|
|
|
148
|
+
export function sharedSliceContentWithDefaultValues(
|
|
149
|
+
customType: SharedSlice,
|
|
150
|
+
content: SharedSliceContent,
|
|
151
|
+
): SharedSliceContent {
|
|
152
|
+
const variationConfig = customType.variations.find(
|
|
153
|
+
(v) => v.id === content.variation,
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
const primaryConfig = variationConfig?.primary ?? {}
|
|
157
|
+
const itemsConfig = variationConfig?.items ?? {}
|
|
158
|
+
|
|
159
|
+
const updatedPrimaryContent = withDefaultNestableContentValues(
|
|
160
|
+
primaryConfig,
|
|
161
|
+
content.primary,
|
|
162
|
+
)
|
|
163
|
+
const updatedItemsContent = repeatableContentWithDefaultNestableContentValues(
|
|
164
|
+
itemsConfig,
|
|
165
|
+
content.items,
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
return {
|
|
169
|
+
...content,
|
|
170
|
+
primary: updatedPrimaryContent,
|
|
171
|
+
items: updatedItemsContent,
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
144
175
|
export function traverseSharedSliceContent({
|
|
145
176
|
path,
|
|
146
177
|
sliceKey,
|
|
@@ -4,6 +4,7 @@ import { pipe } from "fp-ts/lib/function"
|
|
|
4
4
|
import * as t from "io-ts"
|
|
5
5
|
|
|
6
6
|
import type { TraverseSliceContentFn } from "../../../_internal/utils"
|
|
7
|
+
import type { StaticSlice } from "../../../customtypes"
|
|
7
8
|
import { nullable } from "../../../validators/function"
|
|
8
9
|
import {
|
|
9
10
|
getFieldCtx,
|
|
@@ -12,7 +13,13 @@ import {
|
|
|
12
13
|
} from "../../LegacyContentCtx"
|
|
13
14
|
import { isGroupContent } from "../GroupContent"
|
|
14
15
|
import { isNestableContent } from "../nestable"
|
|
15
|
-
import {
|
|
16
|
+
import { repeatableContentWithDefaultNestableContentValues } from "../withDefaultValues"
|
|
17
|
+
import {
|
|
18
|
+
compositeSliceContentWithDefaultValues,
|
|
19
|
+
sharedSliceContentWithDefaultValues,
|
|
20
|
+
SliceContent,
|
|
21
|
+
SliceLegacy,
|
|
22
|
+
} from "./Slice"
|
|
16
23
|
import {
|
|
17
24
|
CompositeSliceContent,
|
|
18
25
|
isCompositeSliceContent,
|
|
@@ -61,6 +68,41 @@ export function isSimpleSliceItemContent(
|
|
|
61
68
|
return isGroupContent(item.widget) || isNestableContent(item.widget)
|
|
62
69
|
}
|
|
63
70
|
|
|
71
|
+
export function sliceItemContentWithDefaultValues(
|
|
72
|
+
customType: StaticSlice,
|
|
73
|
+
content: SliceContent,
|
|
74
|
+
): SliceContent {
|
|
75
|
+
if (customType.type === "SharedSlice" && isSharedSliceContent(content)) {
|
|
76
|
+
return sharedSliceContentWithDefaultValues(customType, content)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (customType.type === "Slice" && isCompositeSliceContent(content)) {
|
|
80
|
+
return compositeSliceContentWithDefaultValues(customType, content)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (
|
|
84
|
+
customType.type === "Group" &&
|
|
85
|
+
isGroupContent(content) &&
|
|
86
|
+
customType.config?.fields
|
|
87
|
+
) {
|
|
88
|
+
const updateGroupFieldValue =
|
|
89
|
+
repeatableContentWithDefaultNestableContentValues(
|
|
90
|
+
customType.config.fields,
|
|
91
|
+
content.value,
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
...content,
|
|
96
|
+
value: updateGroupFieldValue,
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Note - SimpleSliceContent can also be a NestableContent, but in that case we have no default value to fill, because the content is already there.
|
|
101
|
+
// There is no key specified in custom type that does not have a value provided like in other cases.
|
|
102
|
+
|
|
103
|
+
return content
|
|
104
|
+
}
|
|
105
|
+
|
|
64
106
|
const itemLegacyReader = t.exact(
|
|
65
107
|
t.intersection([
|
|
66
108
|
t.type({
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
isSharedSliceItemContent,
|
|
34
34
|
isSimpleSliceItemContent,
|
|
35
35
|
SliceItemContent,
|
|
36
|
+
sliceItemContentWithDefaultValues,
|
|
36
37
|
SlicesItemLegacy,
|
|
37
38
|
} from "./SliceItem"
|
|
38
39
|
|
|
@@ -81,6 +82,35 @@ export const SlicesContent = t.type({
|
|
|
81
82
|
|
|
82
83
|
export type SlicesContent = t.TypeOf<typeof SlicesContent>
|
|
83
84
|
|
|
85
|
+
export function slicesContentWithDefaultValues(
|
|
86
|
+
codec: StaticSlices,
|
|
87
|
+
content: SlicesContent,
|
|
88
|
+
): SlicesContent {
|
|
89
|
+
const choices = codec?.config?.choices
|
|
90
|
+
|
|
91
|
+
if (choices === undefined) return content
|
|
92
|
+
|
|
93
|
+
const updateSlicesValue = content.value.map((slice) => {
|
|
94
|
+
const sliceConfig = choices[slice.name]
|
|
95
|
+
if (sliceConfig) {
|
|
96
|
+
const updatedSliceWidget = sliceItemContentWithDefaultValues(
|
|
97
|
+
sliceConfig,
|
|
98
|
+
slice.widget,
|
|
99
|
+
)
|
|
100
|
+
return {
|
|
101
|
+
...slice,
|
|
102
|
+
widget: updatedSliceWidget,
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return slice
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
...content,
|
|
110
|
+
value: updateSlicesValue,
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
84
114
|
function findSliceModel(
|
|
85
115
|
slicesPath: ContentPath,
|
|
86
116
|
model: StaticSlices,
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { NestableWidget } from "../../customtypes"
|
|
2
|
+
import type { NestableContent } from "./nestable"
|
|
3
|
+
import { NestableContentDefaultValue } from "./nestable"
|
|
4
|
+
|
|
5
|
+
export function withDefaultNestableContentValues(
|
|
6
|
+
customType: Record<string, NestableWidget>,
|
|
7
|
+
content: Record<string, NestableContent>,
|
|
8
|
+
): Record<string, NestableContent> {
|
|
9
|
+
return Object.entries(customType).reduce<Record<string, NestableContent>>(
|
|
10
|
+
(updatedContent, [widgetKey, widgetDef]) => {
|
|
11
|
+
if (content[widgetKey] === undefined) {
|
|
12
|
+
const defaultValue = NestableContentDefaultValue(widgetDef)
|
|
13
|
+
return defaultValue !== undefined
|
|
14
|
+
? {
|
|
15
|
+
...updatedContent,
|
|
16
|
+
[widgetKey]: defaultValue,
|
|
17
|
+
}
|
|
18
|
+
: updatedContent
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return updatedContent
|
|
22
|
+
},
|
|
23
|
+
content,
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function repeatableContentWithDefaultNestableContentValues<
|
|
28
|
+
T extends {
|
|
29
|
+
value: [string, NestableContent][]
|
|
30
|
+
},
|
|
31
|
+
>(fields: Record<string, NestableWidget>, content: T[]): T[] {
|
|
32
|
+
const groupKeys = Object.entries(fields)
|
|
33
|
+
return content.map((contentItem) => {
|
|
34
|
+
return groupKeys.reduce((updatedContentItem, [key, fieldDef]) => {
|
|
35
|
+
if (!contentItem.value.find(([_key]) => _key === key)) {
|
|
36
|
+
const defaultValue = NestableContentDefaultValue(fieldDef)
|
|
37
|
+
return {
|
|
38
|
+
...updatedContentItem,
|
|
39
|
+
value: [
|
|
40
|
+
...updatedContentItem.value,
|
|
41
|
+
...(defaultValue ? [[key, defaultValue]] : []),
|
|
42
|
+
],
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return updatedContentItem
|
|
46
|
+
}, contentItem)
|
|
47
|
+
})
|
|
48
|
+
}
|