@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
1 lines • 2.13 kB
Source Map (JSON)
{"version":3,"file":"serialize.cjs","names":["asTree","serializedTreeNodes: T[]"],"sources":["../../src/richtext/serialize.ts"],"sourcesContent":["import type { RichTextField } from \"../types/value/richText\"\nimport type { RichTextFunctionSerializer, TreeNode } from \"./types\"\n\nimport { asTree } from \"./asTree\"\n\n/**\n * Serializes a rich text field with a given serializer.\n *\n * @remarks\n * This is a low-level helper mainly intended to be used by higher-level\n * packages. Most users aren't expected to use this function directly.\n *\n * @typeParam SerializerReturnType - Return type of the serializer.\n *\n * @param richTextField - A rich text field from Prismic.\n * @param serializer - A function serializer to apply.\n *\n * @returns An array of serialized nodes.\n *\n * @see Learn how to work with rich text fields: {@link https://prismic.io/docs/fields/rich-text}\n */\nexport const serialize = <SerializerReturnType>(\n\trichTextField: RichTextField,\n\tserializer: RichTextFunctionSerializer<SerializerReturnType>,\n): SerializerReturnType[] => {\n\treturn serializeTreeNodes<SerializerReturnType>(\n\t\tasTree(richTextField).children,\n\t\tserializer,\n\t)\n}\n\nconst serializeTreeNodes = <T>(\n\tnodes: TreeNode[],\n\tserializer: RichTextFunctionSerializer<T>,\n): T[] => {\n\tconst serializedTreeNodes: T[] = []\n\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst treeNode = nodes[i]\n\t\tconst serializedTreeNode = serializer(\n\t\t\ttreeNode.type,\n\t\t\ttreeNode.node,\n\t\t\ttreeNode.text,\n\t\t\tserializeTreeNodes(treeNode.children, serializer),\n\t\t\ttreeNode.key,\n\t\t)\n\n\t\tif (serializedTreeNode != null) {\n\t\t\tserializedTreeNodes.push(serializedTreeNode)\n\t\t}\n\t}\n\n\treturn serializedTreeNodes\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,MAAa,aACZ,eACA,eAC4B;AAC5B,QAAO,mBACNA,sBAAO,cAAc,CAAC,UACtB,WACA;;AAGF,MAAM,sBACL,OACA,eACS;CACT,MAAMC,sBAA2B,EAAE;AAEnC,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACtC,MAAM,WAAW,MAAM;EACvB,MAAM,qBAAqB,WAC1B,SAAS,MACT,SAAS,MACT,SAAS,MACT,mBAAmB,SAAS,UAAU,WAAW,EACjD,SAAS,IACT;AAED,MAAI,sBAAsB,KACzB,qBAAoB,KAAK,mBAAmB;;AAI9C,QAAO"}