@slicemachine/adapter-next 0.3.39-beta.9 → 0.3.39
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/AlternateGrid/javascript.jsx +2 -2
- package/dist/AlternateGrid/typescript.tsx +2 -2
- package/dist/CustomerLogos/javascript.jsx +7 -7
- package/dist/CustomerLogos/typescript.tsx +7 -7
- package/dist/hooks/snippet-read.cjs +7 -4
- package/dist/hooks/snippet-read.cjs.map +1 -1
- package/dist/hooks/snippet-read.js +7 -4
- package/dist/hooks/snippet-read.js.map +1 -1
- package/dist/sliceTemplates/AlternateGrid/index.cjs +190 -170
- package/dist/sliceTemplates/AlternateGrid/index.cjs.map +1 -1
- package/dist/sliceTemplates/AlternateGrid/index.js +190 -170
- package/dist/sliceTemplates/AlternateGrid/index.js.map +1 -1
- package/dist/sliceTemplates/CallToAction/index.cjs +1 -6
- package/dist/sliceTemplates/CallToAction/index.cjs.map +1 -1
- package/dist/sliceTemplates/CallToAction/index.js +1 -6
- package/dist/sliceTemplates/CallToAction/index.js.map +1 -1
- package/dist/sliceTemplates/CustomerLogos/index.cjs +230 -220
- package/dist/sliceTemplates/CustomerLogos/index.cjs.map +1 -1
- package/dist/sliceTemplates/CustomerLogos/index.js +230 -220
- package/dist/sliceTemplates/CustomerLogos/index.js.map +1 -1
- package/dist/sliceTemplates/Hero/index.cjs +1 -6
- package/dist/sliceTemplates/Hero/index.cjs.map +1 -1
- package/dist/sliceTemplates/Hero/index.js +1 -6
- package/dist/sliceTemplates/Hero/index.js.map +1 -1
- package/package.json +4 -5
- package/src/hooks/snippet-read.ts +6 -3
- package/src/sliceTemplates/AlternateGrid/index.ts +187 -165
- package/src/sliceTemplates/CallToAction/index.ts +1 -6
- package/src/sliceTemplates/CustomerLogos/index.ts +229 -219
- package/src/sliceTemplates/Hero/index.ts +1 -6
|
@@ -58,9 +58,9 @@ const PascalNameToReplace = ({ slice }) => {
|
|
|
58
58
|
</div>
|
|
59
59
|
)}
|
|
60
60
|
</div>
|
|
61
|
-
{slice.items.length > 0 && (
|
|
61
|
+
{slice.primary.items.length > 0 && (
|
|
62
62
|
<div className="es-alternate-grid__primary-content__items">
|
|
63
|
-
{slice.items.map((item, i) => (
|
|
63
|
+
{slice.primary.items.map((item, i) => (
|
|
64
64
|
<div key={`item-${i + 1}`} className="es-alternate-grid__item">
|
|
65
65
|
{isFilled.richText(item.title) && (
|
|
66
66
|
<div className="es-alternate-grid__item__heading">
|
|
@@ -55,9 +55,9 @@ const PascalNameToReplace = ({
|
|
|
55
55
|
</div>
|
|
56
56
|
)}
|
|
57
57
|
</div>
|
|
58
|
-
{slice.items.length > 0 && (
|
|
58
|
+
{slice.primary.items.length > 0 && (
|
|
59
59
|
<div className="es-alternate-grid__primary-content__items">
|
|
60
|
-
{slice.items.map((item, i) => (
|
|
60
|
+
{slice.primary.items.map((item, i) => (
|
|
61
61
|
<div key={`item-${i + 1}`} className="es-alternate-grid__item">
|
|
62
62
|
{isFilled.richText(item.title) && (
|
|
63
63
|
<div className="es-alternate-grid__item__heading">
|
|
@@ -22,15 +22,15 @@ const PascalNameToReplace = ({ slice }) => {
|
|
|
22
22
|
<PrismicRichText field={slice.primary.eyebrowHeadline} />
|
|
23
23
|
</div>
|
|
24
24
|
)}
|
|
25
|
-
{slice.
|
|
25
|
+
{slice.primary.logos.length > 0 && (
|
|
26
26
|
<ul className="es-customer-logos__logos">
|
|
27
|
-
{slice.
|
|
28
|
-
(
|
|
29
|
-
isFilled.image(
|
|
30
|
-
<li key={
|
|
31
|
-
<PrismicNextLink field={
|
|
27
|
+
{slice.primary.logos.map(
|
|
28
|
+
(logo) =>
|
|
29
|
+
isFilled.image(logo.image) && (
|
|
30
|
+
<li key={logo.image.url} className="es-customer-logos__logo">
|
|
31
|
+
<PrismicNextLink field={logo.link}>
|
|
32
32
|
<PrismicNextImage
|
|
33
|
-
field={
|
|
33
|
+
field={logo.image}
|
|
34
34
|
height={26}
|
|
35
35
|
width={160}
|
|
36
36
|
className="es-customer-logos__logo__link__image"
|
|
@@ -20,15 +20,15 @@ const PascalNameToReplace = ({
|
|
|
20
20
|
<PrismicRichText field={slice.primary.eyebrowHeadline} />
|
|
21
21
|
</div>
|
|
22
22
|
)}
|
|
23
|
-
{slice.
|
|
23
|
+
{slice.primary.logos.length > 0 && (
|
|
24
24
|
<ul className="es-customer-logos__logos">
|
|
25
|
-
{slice.
|
|
26
|
-
(
|
|
27
|
-
isFilled.image(
|
|
28
|
-
<li key={
|
|
29
|
-
<PrismicNextLink field={
|
|
25
|
+
{slice.primary.logos.map(
|
|
26
|
+
(logo) =>
|
|
27
|
+
isFilled.image(logo.image) && (
|
|
28
|
+
<li key={logo.image.url} className="es-customer-logos__logo">
|
|
29
|
+
<PrismicNextLink field={logo.link}>
|
|
30
30
|
<PrismicNextImage
|
|
31
|
-
field={
|
|
31
|
+
field={logo.image}
|
|
32
32
|
height={26}
|
|
33
33
|
width={160}
|
|
34
34
|
className="es-customer-logos__logo__link__image"
|
|
@@ -8,7 +8,8 @@ const format = async (input, helpers) => {
|
|
|
8
8
|
const formattedInput = await helpers.format(input, void 0, {
|
|
9
9
|
includeNewlineAtEnd: false,
|
|
10
10
|
prettier: {
|
|
11
|
-
parser: "typescript"
|
|
11
|
+
parser: "typescript",
|
|
12
|
+
printWidth: 60
|
|
12
13
|
}
|
|
13
14
|
});
|
|
14
15
|
return formattedInput.endsWith(";") ? formattedInput.substring(0, formattedInput.length - 1) : formattedInput;
|
|
@@ -55,9 +56,11 @@ const snippetRead = async (data, { helpers }) => {
|
|
|
55
56
|
}
|
|
56
57
|
case "Group": {
|
|
57
58
|
const code = await format(commonTags.stripIndent`
|
|
58
|
-
<>
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
<>
|
|
60
|
+
{${dotPath(fieldPath)}.map((item) => {
|
|
61
|
+
// Render the item
|
|
62
|
+
})}
|
|
63
|
+
</>
|
|
61
64
|
`, helpers);
|
|
62
65
|
return {
|
|
63
66
|
label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippet-read.cjs","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<PrismicNextLink field={${dotPath(fieldPath)}}>Link</PrismicNextLink>\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicNextImage field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t
|
|
1
|
+
{"version":3,"file":"snippet-read.cjs","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t\tprintWidth: 60,\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<PrismicNextLink field={${dotPath(fieldPath)}}>Link</PrismicNextLink>\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicNextImage field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<>\n\t\t\t\t\t\t{${dotPath(fieldPath)}.map((item) => {\n\t\t\t\t\t\t\t// Render the item\n\t\t\t\t\t\t})}\n\t\t\t\t\t</>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<SliceZone\n\t\t\t\t\t slices={${dotPath(fieldPath)}}\n\t\t\t\t\t components={components}\n\t\t\t\t\t/>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<>{${dotPath(fieldPath, \"latitude\")}}, {${dotPath(fieldPath, \"longitude\")}}</>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<div dangerouslySetInnerHTML={{ __html: ${dotPath(fieldPath, \"html\")} }} />\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<>{${dotPath(fieldPath)}}</>\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t}\n};\n"],"names":["stripIndent"],"mappings":";;;AAQA,MAAM,UAAU,IAAI,aAA2C;AAC9D,SAAO,SAAS,KAAA,EAAO,KAAK,GAAG;AAChC;AAEA,MAAM,SAAS,OAAO,OAAe,YAAgC;AACpE,QAAM,iBAAiB,MAAM,QAAQ,OAAO,OAAO,QAAW;AAAA,IAC7D,qBAAqB;AAAA,IACrB,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,YAAY;AAAA,IACZ;AAAA,EAAA,CACD;AAEM,SAAA,eAAe,SAAS,GAAG,IAC/B,eAAe,UAAU,GAAG,eAAe,SAAS,CAAC,IACrD;AACJ;AAEO,MAAM,cAA8C,OAC1D,MACA,EAAE,cACC;AACG,QAAA,EAAE,UAAc,IAAA;AAEtB,QAAM,QAAQ;AAEN,UAAA,KAAK,MAAM,MAAM;AAAA,IACxB,KAAK,kBAAkB;AACf,aAAA;AAAA,QACN;AAAA,UACC,OAAO,GAAG;AAAA,UACV,UAAU;AAAA,UACV,MAAM,MAAM,OACXA;iCAC2B,QAAQ,SAAS;AAAA,SAE5C,OAAO;AAAA,QAER;AAAA,QACD;AAAA,UACC,OAAO,GAAG;AAAA,UACV,UAAU;AAAA,UACV,MAAM,MAAM,OACXA;6BACuB,QAAQ,SAAS;AAAA,SAExC,OAAO;AAAA,QAER;AAAA,MAAA;AAAA,IAEF;AAAA,IAED,KAAK,QAAQ;AACL,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,MAAM,MAAM,OACXA;gCAC2B,QAAQ,SAAS;AAAA,QAE5C,OAAO;AAAA,MAAA;AAAA,IAGT;AAAA,IAED,KAAK,SAAS;AACN,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,MAAM,MAAM,OACXA;kCAC6B,QAAQ,SAAS;AAAA,SAE9C,OAAO;AAAA,MAAA;AAAA,IAGT;AAAA,IAED,KAAK,SAAS;AACP,YAAA,OAAO,MAAM,OAClBA;;SAEK,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,OAKtB,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,KAAK,UAAU;AACR,YAAA,OAAO,MAAM,OAClBA;;iBAEa,QAAQ,SAAS;AAAA;AAAA;AAAA,OAI9B,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,KAAK,YAAY;AACV,YAAA,OAAO,MAAM,OAClBA;UACM,QAAQ,WAAW,UAAU,QAAQ,QAAQ,WAAW,WAAW;AAAA,OAEzE,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,KAAK,SAAS;AACP,YAAA,OAAO,MAAM,OAClBA;+CAC2C,QAAQ,WAAW,MAAM;AAAA,OAEpE,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,SAAS;AACD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,MAAM,MAAM,OACXA;WACM,QAAQ,SAAS;AAAA,QAEvB,OAAO;AAAA,MAAA;AAAA,IAGT;AAAA,EACD;AACF;;"}
|
|
@@ -6,7 +6,8 @@ const format = async (input, helpers) => {
|
|
|
6
6
|
const formattedInput = await helpers.format(input, void 0, {
|
|
7
7
|
includeNewlineAtEnd: false,
|
|
8
8
|
prettier: {
|
|
9
|
-
parser: "typescript"
|
|
9
|
+
parser: "typescript",
|
|
10
|
+
printWidth: 60
|
|
10
11
|
}
|
|
11
12
|
});
|
|
12
13
|
return formattedInput.endsWith(";") ? formattedInput.substring(0, formattedInput.length - 1) : formattedInput;
|
|
@@ -53,9 +54,11 @@ const snippetRead = async (data, { helpers }) => {
|
|
|
53
54
|
}
|
|
54
55
|
case "Group": {
|
|
55
56
|
const code = await format(stripIndent`
|
|
56
|
-
<>
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
<>
|
|
58
|
+
{${dotPath(fieldPath)}.map((item) => {
|
|
59
|
+
// Render the item
|
|
60
|
+
})}
|
|
61
|
+
</>
|
|
59
62
|
`, helpers);
|
|
60
63
|
return {
|
|
61
64
|
label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snippet-read.js","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<PrismicNextLink field={${dotPath(fieldPath)}}>Link</PrismicNextLink>\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicNextImage field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t
|
|
1
|
+
{"version":3,"file":"snippet-read.js","sources":["../../../src/hooks/snippet-read.ts"],"sourcesContent":["import type {\n\tSliceMachineHelpers,\n\tSnippetReadHook,\n} from \"@slicemachine/plugin-kit\";\nimport { stripIndent } from \"common-tags\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst dotPath = (...segments: (string | string[])[]): string => {\n\treturn segments.flat().join(\".\");\n};\n\nconst format = async (input: string, helpers: SliceMachineHelpers) => {\n\tconst formattedInput = await helpers.format(input, undefined, {\n\t\tincludeNewlineAtEnd: false,\n\t\tprettier: {\n\t\t\tparser: \"typescript\",\n\t\t\tprintWidth: 60,\n\t\t},\n\t});\n\n\treturn formattedInput.endsWith(\";\")\n\t\t? formattedInput.substring(0, formattedInput.length - 1)\n\t\t: formattedInput;\n};\n\nexport const snippetRead: SnippetReadHook<PluginOptions> = async (\n\tdata,\n\t{ helpers },\n) => {\n\tconst { fieldPath } = data;\n\n\tconst label = \"React\";\n\n\tswitch (data.model.type) {\n\t\tcase \"StructuredText\": {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (components)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicRichText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${label} (plain text)`,\n\t\t\t\t\tlanguage: \"tsx\",\n\t\t\t\t\tcode: await format(\n\t\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicText field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\t\thelpers,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tcase \"Link\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<PrismicNextLink field={${dotPath(fieldPath)}}>Link</PrismicNextLink>\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Image\": {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t\t<PrismicNextImage field={${dotPath(fieldPath)}} />\n\t\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase \"Group\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<>\n\t\t\t\t\t\t{${dotPath(fieldPath)}.map((item) => {\n\t\t\t\t\t\t\t// Render the item\n\t\t\t\t\t\t})}\n\t\t\t\t\t</>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Slices\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<SliceZone\n\t\t\t\t\t slices={${dotPath(fieldPath)}}\n\t\t\t\t\t components={components}\n\t\t\t\t\t/>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"GeoPoint\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<>{${dotPath(fieldPath, \"latitude\")}}, {${dotPath(fieldPath, \"longitude\")}}</>\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Embed\": {\n\t\t\tconst code = await format(\n\t\t\t\tstripIndent`\n\t\t\t\t\t<div dangerouslySetInnerHTML={{ __html: ${dotPath(fieldPath, \"html\")} }} />\n\t\t\t\t`,\n\t\t\t\thelpers,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode,\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tlabel,\n\t\t\t\tlanguage: \"tsx\",\n\t\t\t\tcode: await format(\n\t\t\t\t\tstripIndent`\n\t\t\t\t\t\t<>{${dotPath(fieldPath)}}</>\n\t\t\t\t\t`,\n\t\t\t\t\thelpers,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t}\n};\n"],"names":[],"mappings":";AAQA,MAAM,UAAU,IAAI,aAA2C;AAC9D,SAAO,SAAS,KAAA,EAAO,KAAK,GAAG;AAChC;AAEA,MAAM,SAAS,OAAO,OAAe,YAAgC;AACpE,QAAM,iBAAiB,MAAM,QAAQ,OAAO,OAAO,QAAW;AAAA,IAC7D,qBAAqB;AAAA,IACrB,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,YAAY;AAAA,IACZ;AAAA,EAAA,CACD;AAEM,SAAA,eAAe,SAAS,GAAG,IAC/B,eAAe,UAAU,GAAG,eAAe,SAAS,CAAC,IACrD;AACJ;AAEO,MAAM,cAA8C,OAC1D,MACA,EAAE,cACC;AACG,QAAA,EAAE,UAAc,IAAA;AAEtB,QAAM,QAAQ;AAEN,UAAA,KAAK,MAAM,MAAM;AAAA,IACxB,KAAK,kBAAkB;AACf,aAAA;AAAA,QACN;AAAA,UACC,OAAO,GAAG;AAAA,UACV,UAAU;AAAA,UACV,MAAM,MAAM,OACX;AAAA,iCAC2B,QAAQ,SAAS;AAAA,SAE5C,OAAO;AAAA,QAER;AAAA,QACD;AAAA,UACC,OAAO,GAAG;AAAA,UACV,UAAU;AAAA,UACV,MAAM,MAAM,OACX;AAAA,6BACuB,QAAQ,SAAS;AAAA,SAExC,OAAO;AAAA,QAER;AAAA,MAAA;AAAA,IAEF;AAAA,IAED,KAAK,QAAQ;AACL,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,MAAM,MAAM,OACX;AAAA,gCAC2B,QAAQ,SAAS;AAAA,QAE5C,OAAO;AAAA,MAAA;AAAA,IAGT;AAAA,IAED,KAAK,SAAS;AACN,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,MAAM,MAAM,OACX;AAAA,kCAC6B,QAAQ,SAAS;AAAA,SAE9C,OAAO;AAAA,MAAA;AAAA,IAGT;AAAA,IAED,KAAK,SAAS;AACP,YAAA,OAAO,MAAM,OAClB;AAAA;AAAA,SAEK,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,OAKtB,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,KAAK,UAAU;AACR,YAAA,OAAO,MAAM,OAClB;AAAA;AAAA,iBAEa,QAAQ,SAAS;AAAA;AAAA;AAAA,OAI9B,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,KAAK,YAAY;AACV,YAAA,OAAO,MAAM,OAClB;AAAA,UACM,QAAQ,WAAW,UAAU,QAAQ,QAAQ,WAAW,WAAW;AAAA,OAEzE,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,KAAK,SAAS;AACP,YAAA,OAAO,MAAM,OAClB;AAAA,+CAC2C,QAAQ,WAAW,MAAM;AAAA,OAEpE,OAAO;AAGD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAED;AAAA,IAED,SAAS;AACD,aAAA;AAAA,QACN;AAAA,QACA,UAAU;AAAA,QACV,MAAM,MAAM,OACX;AAAA,WACM,QAAQ,SAAS;AAAA,QAEvB,OAAO;AAAA,MAAA;AAAA,IAGT;AAAA,EACD;AACF;"}
|
|
@@ -68,121 +68,125 @@ const mocks = [
|
|
|
68
68
|
alt: "Image of computer",
|
|
69
69
|
__TYPE__: "ImageContent",
|
|
70
70
|
thumbnails: {}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
{
|
|
75
|
-
__TYPE__: "GroupItemContent",
|
|
71
|
+
},
|
|
72
|
+
items: {
|
|
73
|
+
__TYPE__: "GroupContentType",
|
|
76
74
|
value: [
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
75
|
+
{
|
|
76
|
+
__TYPE__: "GroupItemContent",
|
|
77
|
+
value: [
|
|
78
|
+
[
|
|
79
|
+
"title",
|
|
82
80
|
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
81
|
+
__TYPE__: "StructuredTextContent",
|
|
82
|
+
value: [
|
|
83
|
+
{
|
|
84
|
+
type: "heading3",
|
|
85
|
+
content: {
|
|
86
|
+
text: "Integrate with the SliceZone",
|
|
87
|
+
spans: []
|
|
88
|
+
},
|
|
89
|
+
direction: "ltr"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
89
92
|
}
|
|
90
|
-
]
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
[
|
|
94
|
-
"description",
|
|
95
|
-
{
|
|
96
|
-
__TYPE__: "StructuredTextContent",
|
|
97
|
-
value: [
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
"description",
|
|
98
96
|
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
__TYPE__: "StructuredTextContent",
|
|
98
|
+
value: [
|
|
99
|
+
{
|
|
100
|
+
type: "paragraph",
|
|
101
|
+
content: {
|
|
102
|
+
text: "This component has been matched by the SliceZone. Its model has been fetched from SliceMachine next-adapter!",
|
|
103
|
+
spans: []
|
|
104
|
+
},
|
|
105
|
+
direction: "ltr"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
105
108
|
}
|
|
106
109
|
]
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
[
|
|
115
|
-
"title",
|
|
116
|
-
{
|
|
117
|
-
__TYPE__: "StructuredTextContent",
|
|
118
|
-
value: [
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
__TYPE__: "GroupItemContent",
|
|
114
|
+
value: [
|
|
115
|
+
[
|
|
116
|
+
"title",
|
|
119
117
|
{
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
__TYPE__: "StructuredTextContent",
|
|
119
|
+
value: [
|
|
120
|
+
{
|
|
121
|
+
type: "heading3",
|
|
122
|
+
content: {
|
|
123
|
+
text: "Create your own",
|
|
124
|
+
spans: []
|
|
125
|
+
},
|
|
126
|
+
direction: "ltr"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
126
129
|
}
|
|
127
|
-
]
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
[
|
|
131
|
-
"description",
|
|
132
|
-
{
|
|
133
|
-
__TYPE__: "StructuredTextContent",
|
|
134
|
-
value: [
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
"description",
|
|
135
133
|
{
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
134
|
+
__TYPE__: "StructuredTextContent",
|
|
135
|
+
value: [
|
|
136
|
+
{
|
|
137
|
+
type: "paragraph",
|
|
138
|
+
content: {
|
|
139
|
+
text: "Feel free to use this component fully, or use it as an example! We're adding templates as often as we can.",
|
|
140
|
+
spans: []
|
|
141
|
+
},
|
|
142
|
+
direction: "ltr"
|
|
143
|
+
}
|
|
144
|
+
]
|
|
142
145
|
}
|
|
143
146
|
]
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
[
|
|
152
|
-
"title",
|
|
153
|
-
{
|
|
154
|
-
__TYPE__: "StructuredTextContent",
|
|
155
|
-
value: [
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
__TYPE__: "GroupItemContent",
|
|
151
|
+
value: [
|
|
152
|
+
[
|
|
153
|
+
"title",
|
|
156
154
|
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
155
|
+
__TYPE__: "StructuredTextContent",
|
|
156
|
+
value: [
|
|
157
|
+
{
|
|
158
|
+
type: "heading3",
|
|
159
|
+
content: {
|
|
160
|
+
text: "Add a variation",
|
|
161
|
+
spans: []
|
|
162
|
+
},
|
|
163
|
+
direction: "ltr"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
163
166
|
}
|
|
164
|
-
]
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
[
|
|
168
|
-
"description",
|
|
169
|
-
{
|
|
170
|
-
__TYPE__: "StructuredTextContent",
|
|
171
|
-
value: [
|
|
167
|
+
],
|
|
168
|
+
[
|
|
169
|
+
"description",
|
|
172
170
|
{
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
171
|
+
__TYPE__: "StructuredTextContent",
|
|
172
|
+
value: [
|
|
173
|
+
{
|
|
174
|
+
type: "paragraph",
|
|
175
|
+
content: {
|
|
176
|
+
text: 'This slice comes with a "Image Right" variation, which means editors can switch text/image direction!',
|
|
177
|
+
spans: []
|
|
178
|
+
},
|
|
179
|
+
direction: "ltr"
|
|
180
|
+
}
|
|
181
|
+
]
|
|
179
182
|
}
|
|
180
183
|
]
|
|
181
|
-
|
|
182
|
-
|
|
184
|
+
]
|
|
185
|
+
}
|
|
183
186
|
]
|
|
184
187
|
}
|
|
185
|
-
|
|
188
|
+
},
|
|
189
|
+
items: []
|
|
186
190
|
},
|
|
187
191
|
{
|
|
188
192
|
__TYPE__: "SharedSliceContent",
|
|
@@ -247,53 +251,57 @@ const mocks = [
|
|
|
247
251
|
alt: "Image of computer",
|
|
248
252
|
__TYPE__: "ImageContent",
|
|
249
253
|
thumbnails: {}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
{
|
|
254
|
-
__TYPE__: "GroupItemContent",
|
|
254
|
+
},
|
|
255
|
+
items: {
|
|
256
|
+
__TYPE__: "GroupContentType",
|
|
255
257
|
value: [
|
|
256
|
-
|
|
257
|
-
"
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
258
|
+
{
|
|
259
|
+
__TYPE__: "GroupItemContent",
|
|
260
|
+
value: [
|
|
261
|
+
[
|
|
262
|
+
"title",
|
|
261
263
|
{
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
{
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
264
|
+
__TYPE__: "StructuredTextContent",
|
|
265
|
+
value: [
|
|
266
|
+
{
|
|
267
|
+
type: "heading3",
|
|
268
|
+
content: {
|
|
269
|
+
text: "Create a unique, high-performing site",
|
|
270
|
+
spans: [
|
|
271
|
+
{
|
|
272
|
+
type: "strong",
|
|
273
|
+
start: 9,
|
|
274
|
+
end: 15
|
|
275
|
+
}
|
|
276
|
+
]
|
|
277
|
+
},
|
|
278
|
+
direction: "ltr"
|
|
279
|
+
}
|
|
280
|
+
]
|
|
274
281
|
}
|
|
275
|
-
]
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
[
|
|
279
|
-
"description",
|
|
280
|
-
{
|
|
281
|
-
__TYPE__: "StructuredTextContent",
|
|
282
|
-
value: [
|
|
282
|
+
],
|
|
283
|
+
[
|
|
284
|
+
"description",
|
|
283
285
|
{
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
286
|
+
__TYPE__: "StructuredTextContent",
|
|
287
|
+
value: [
|
|
288
|
+
{
|
|
289
|
+
type: "paragraph",
|
|
290
|
+
content: {
|
|
291
|
+
text: "Prismic is the headless website builder designed to help developers and marketers create unique, high-performing websites that are easy to edit.",
|
|
292
|
+
spans: []
|
|
293
|
+
},
|
|
294
|
+
direction: "ltr"
|
|
295
|
+
}
|
|
296
|
+
]
|
|
290
297
|
}
|
|
291
298
|
]
|
|
292
|
-
|
|
293
|
-
|
|
299
|
+
]
|
|
300
|
+
}
|
|
294
301
|
]
|
|
295
302
|
}
|
|
296
|
-
|
|
303
|
+
},
|
|
304
|
+
items: []
|
|
297
305
|
}
|
|
298
306
|
];
|
|
299
307
|
const model = {
|
|
@@ -342,25 +350,31 @@ const model = {
|
|
|
342
350
|
constraint: {},
|
|
343
351
|
thumbnails: []
|
|
344
352
|
}
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
items: {
|
|
348
|
-
title: {
|
|
349
|
-
type: "StructuredText",
|
|
350
|
-
config: {
|
|
351
|
-
label: "title",
|
|
352
|
-
placeholder: "",
|
|
353
|
-
allowTargetBlank: true,
|
|
354
|
-
single: "heading2,heading3,heading4,heading5,heading6,strong,em"
|
|
355
|
-
}
|
|
356
353
|
},
|
|
357
|
-
|
|
358
|
-
type: "
|
|
354
|
+
items: {
|
|
355
|
+
type: "Group",
|
|
359
356
|
config: {
|
|
360
|
-
label: "
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
357
|
+
label: "items",
|
|
358
|
+
fields: {
|
|
359
|
+
title: {
|
|
360
|
+
type: "StructuredText",
|
|
361
|
+
config: {
|
|
362
|
+
label: "title",
|
|
363
|
+
placeholder: "",
|
|
364
|
+
allowTargetBlank: true,
|
|
365
|
+
single: "heading2,heading3,heading4,heading5,heading6,strong,em"
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
description: {
|
|
369
|
+
type: "StructuredText",
|
|
370
|
+
config: {
|
|
371
|
+
label: "description",
|
|
372
|
+
placeholder: "",
|
|
373
|
+
allowTargetBlank: true,
|
|
374
|
+
multi: "paragraph,preformatted,hyperlink,strong,em,list-item,o-list-item,rtl"
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
364
378
|
}
|
|
365
379
|
}
|
|
366
380
|
}
|
|
@@ -405,25 +419,31 @@ const model = {
|
|
|
405
419
|
constraint: {},
|
|
406
420
|
thumbnails: []
|
|
407
421
|
}
|
|
408
|
-
}
|
|
409
|
-
},
|
|
410
|
-
items: {
|
|
411
|
-
title: {
|
|
412
|
-
type: "StructuredText",
|
|
413
|
-
config: {
|
|
414
|
-
label: "title",
|
|
415
|
-
placeholder: "",
|
|
416
|
-
allowTargetBlank: true,
|
|
417
|
-
single: "heading2,heading3,heading4,heading5,heading6,strong,em"
|
|
418
|
-
}
|
|
419
422
|
},
|
|
420
|
-
|
|
421
|
-
type: "
|
|
423
|
+
items: {
|
|
424
|
+
type: "Group",
|
|
422
425
|
config: {
|
|
423
|
-
label: "
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
426
|
+
label: "items",
|
|
427
|
+
fields: {
|
|
428
|
+
title: {
|
|
429
|
+
type: "StructuredText",
|
|
430
|
+
config: {
|
|
431
|
+
label: "title",
|
|
432
|
+
placeholder: "",
|
|
433
|
+
allowTargetBlank: true,
|
|
434
|
+
single: "heading2,heading3,heading4,heading5,heading6,strong,em"
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
description: {
|
|
438
|
+
type: "StructuredText",
|
|
439
|
+
config: {
|
|
440
|
+
label: "description",
|
|
441
|
+
placeholder: "",
|
|
442
|
+
allowTargetBlank: true,
|
|
443
|
+
multi: "paragraph,preformatted,hyperlink,strong,em,list-item,o-list-item,rtl"
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
427
447
|
}
|
|
428
448
|
}
|
|
429
449
|
}
|