@uniformdev/richtext 20.75.1-alpha.0 → 20.76.1-alpha.3

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/index.esm.js CHANGED
@@ -182,18 +182,23 @@ var listHtmlRenderer = ({ context, renderChildren }) => {
182
182
  var _a;
183
183
  const node = context.currentNode;
184
184
  const attributes = /* @__PURE__ */ new Map();
185
- if (node.start > 1) {
186
- attributes.set("start", node.start.toString());
185
+ const start = getRichTextListStart(node.start);
186
+ if (typeof start === "number" && start > 1) {
187
+ attributes.set("start", start.toString());
187
188
  }
188
189
  return renderHtmlElement((_a = node.tag) != null ? _a : "ul", attributes, renderChildren(context.currentNode.children));
189
190
  };
191
+ function getRichTextListStart(start) {
192
+ return start === void 0 ? 1 : start;
193
+ }
190
194
 
191
195
  // src/nodes/listitem.ts
192
196
  var listitemHtmlRenderer = ({ context, renderChildren }) => {
193
197
  const node = context.currentNode;
194
198
  const attributes = /* @__PURE__ */ new Map();
195
- if (Number.isFinite(node.value) && node.value > 0) {
196
- attributes.set("value", node.value.toString());
199
+ const value = getRichTextListItemValue(node.value);
200
+ if (typeof value === "number" && value > 0) {
201
+ attributes.set("value", value.toString());
197
202
  }
198
203
  return renderHtmlElement("li", attributes, renderChildren(context.currentNode.children));
199
204
  };
@@ -207,6 +212,9 @@ var listitemTextRenderer = ({ context, renderChildren }) => {
207
212
  }
208
213
  return `${childrenRendered} `;
209
214
  };
215
+ function getRichTextListItemValue(value) {
216
+ return value === void 0 ? 1 : value;
217
+ }
210
218
 
211
219
  // src/nodes/paragraph.ts
212
220
  var paragraphHtmlRenderer = ({ context, renderChildren }) => {
@@ -253,7 +261,7 @@ var tablecellTextRenderer = ({ context, renderChildren }) => {
253
261
  return hasChildren(context.currentNode) ? `${renderChildren(context.currentNode.children)} ` : "";
254
262
  };
255
263
  function getRichTextTagFromTableCellHeaderState(headerState) {
256
- if (headerState === 0) {
264
+ if (!headerState) {
257
265
  return "td";
258
266
  }
259
267
  return "th";
@@ -282,6 +290,9 @@ var textTextRenderer = ({ context }) => {
282
290
  };
283
291
  function getRichTextTagsFromTextFormat(format) {
284
292
  const tags = [];
293
+ if (!format) {
294
+ return tags;
295
+ }
285
296
  if (format & 1 << 0) {
286
297
  tags.push("strong");
287
298
  }
@@ -306,154 +317,133 @@ function getRichTextTagsFromTextFormat(format) {
306
317
  return tags;
307
318
  }
308
319
 
309
- // src/nodes/tab.ts
310
- var tabHtmlRenderer = () => {
311
- return " ";
312
- };
313
- var tabTextRenderer = () => {
314
- return " ";
315
- };
316
-
317
- // src/renderToHtml.ts
318
- var rendererTypeMap = /* @__PURE__ */ new Map([
319
- ["heading", headingHtmlRenderer],
320
- ["link", linkHtmlRenderer],
321
- ["list", listHtmlRenderer],
322
- ["listitem", listitemHtmlRenderer],
323
- ["paragraph", paragraphHtmlRenderer],
324
- ["root", rootHtmlRenderer],
325
- ["text", textHtmlRenderer],
326
- ["tab", tabHtmlRenderer],
327
- ["table", tableHtmlRenderer],
328
- ["tablecell", tablecellHtmlRenderer],
329
- ["tablerow", tablerowHtmlRenderer],
330
- ["asset", assetHtmlRenderer]
320
+ // src/defaultRichTextNodeProperties.ts
321
+ var OMITTED_RICH_TEXT_NODE_VERSION = 1;
322
+ var NO_DEFAULTS = Object.freeze({});
323
+ var ELEMENT_BASELINE_V1 = Object.freeze({
324
+ format: "",
325
+ indent: 0,
326
+ direction: null,
327
+ version: 1
328
+ });
329
+ var TEXT_BASELINE_V1 = Object.freeze({
330
+ format: 0,
331
+ style: "",
332
+ mode: "normal",
333
+ detail: 0,
334
+ version: 1
335
+ });
336
+ var VERSION_ONLY_V1 = Object.freeze({
337
+ version: 1
338
+ });
339
+ var ELEMENT_PROPERTIES_SAFE_TO_OMIT = Object.freeze([
340
+ "format",
341
+ "indent",
342
+ "direction"
343
+ // 'version', // Retain until SDKs that treat missing `version` as `1` are widely adopted.
331
344
  ]);
332
- var resolveDefaultRenderer = (context) => {
333
- const renderer = rendererTypeMap.get(context.currentNode.type);
334
- if (renderer) {
335
- return renderer;
336
- }
337
- const tags = rendererTypeTagMap.get(context.currentNode.type);
338
- if (tags) {
339
- return ({ renderChildren }) => {
340
- var _a;
341
- return (_a = tags.reduceRight(
342
- (children, tag) => {
343
- return renderHtmlElement(tag, null, children);
344
- },
345
- hasChildren(context.currentNode) ? renderChildren(context.currentNode.children) : void 0
346
- )) != null ? _a : "";
347
- };
348
- }
349
- return () => `<!-- WARNING: No renderer for type ${context.currentNode.type} -->`;
350
- };
351
- function initializeRenderContext(node, parentContext) {
352
- let ancestorNodes = [];
353
- if (parentContext == null ? void 0 : parentContext.ancestorNodes) {
354
- ancestorNodes = ancestorNodes.concat(parentContext.ancestorNodes);
355
- }
356
- if (parentContext == null ? void 0 : parentContext.currentNode) {
357
- ancestorNodes.unshift(parentContext.currentNode);
358
- }
359
- return {
360
- ...parentContext != null ? parentContext : {},
361
- currentNode: node,
362
- ancestorNodes
363
- };
345
+ var TEXT_PROPERTIES_SAFE_TO_OMIT = Object.freeze([
346
+ // 'format', // Retain until SDKs that treat missing text/tab `format` as `0` are widely adopted.
347
+ "style",
348
+ "mode",
349
+ "detail"
350
+ // 'version', // Retain until SDKs that treat missing `version` as `1` are widely adopted.
351
+ ]);
352
+ var NO_PROPERTIES_SAFE_TO_OMIT = Object.freeze([
353
+ // 'version', // Retain until SDKs that treat missing `version` as `1` are widely adopted.
354
+ ]);
355
+ var DEFAULT_RICH_TEXT_NODE_PROPERTIES = Object.freeze({
356
+ root: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
357
+ heading: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
358
+ quote: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
359
+ code: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
360
+ table: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
361
+ tablerow: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
362
+ link: Object.freeze({ 1: ELEMENT_BASELINE_V1 }),
363
+ paragraph: Object.freeze({
364
+ 1: Object.freeze({ ...ELEMENT_BASELINE_V1, textFormat: 0, textStyle: "" })
365
+ }),
366
+ list: Object.freeze({ 1: Object.freeze({ ...ELEMENT_BASELINE_V1, start: 1 }) }),
367
+ listitem: Object.freeze({ 1: Object.freeze({ ...ELEMENT_BASELINE_V1, value: 1 }) }),
368
+ tablecell: Object.freeze({
369
+ 1: Object.freeze({
370
+ ...ELEMENT_BASELINE_V1,
371
+ colSpan: 1,
372
+ rowSpan: 1,
373
+ backgroundColor: null,
374
+ headerState: 0
375
+ })
376
+ }),
377
+ text: Object.freeze({ 1: TEXT_BASELINE_V1 }),
378
+ tab: Object.freeze({ 1: TEXT_BASELINE_V1 }),
379
+ linebreak: Object.freeze({ 1: VERSION_ONLY_V1 }),
380
+ asset: Object.freeze({ 1: VERSION_ONLY_V1 }),
381
+ // Rich text variable binding still requires an explicit version, so variable nodes stay verbose.
382
+ variable: Object.freeze({ 1: NO_DEFAULTS })
383
+ });
384
+ var RICH_TEXT_NODE_PROPERTIES_SAFE_TO_OMIT = Object.freeze({
385
+ root: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
386
+ heading: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
387
+ quote: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
388
+ code: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
389
+ table: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
390
+ tablerow: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
391
+ link: ELEMENT_PROPERTIES_SAFE_TO_OMIT,
392
+ paragraph: Object.freeze([...ELEMENT_PROPERTIES_SAFE_TO_OMIT, "textFormat", "textStyle"]),
393
+ list: Object.freeze([
394
+ ...ELEMENT_PROPERTIES_SAFE_TO_OMIT
395
+ // 'start', // Retain until SDKs that treat missing list `start` as `1` are widely adopted.
396
+ ]),
397
+ listitem: Object.freeze([
398
+ ...ELEMENT_PROPERTIES_SAFE_TO_OMIT
399
+ // 'value', // Retain until SDKs that treat missing list-item `value` as `1` are widely adopted.
400
+ ]),
401
+ tablecell: Object.freeze([
402
+ ...ELEMENT_PROPERTIES_SAFE_TO_OMIT,
403
+ "colSpan",
404
+ "rowSpan",
405
+ "backgroundColor"
406
+ // 'headerState', // Retain until SDKs that treat missing `headerState` as `0` are widely adopted.
407
+ ]),
408
+ text: TEXT_PROPERTIES_SAFE_TO_OMIT,
409
+ tab: TEXT_PROPERTIES_SAFE_TO_OMIT,
410
+ linebreak: NO_PROPERTIES_SAFE_TO_OMIT,
411
+ asset: NO_PROPERTIES_SAFE_TO_OMIT,
412
+ variable: NO_PROPERTIES_SAFE_TO_OMIT
413
+ });
414
+ function getStoredRichTextNodeVersion(node) {
415
+ return typeof node.version === "number" ? node.version : OMITTED_RICH_TEXT_NODE_VERSION;
364
416
  }
365
- function renderToHtml(node, parentContext) {
366
- var _a;
367
- if (!isRichTextNode(node)) return "";
368
- const context = initializeRenderContext(node, parentContext);
369
- let renderer = (_a = context.resolveRenderer) == null ? void 0 : _a.call(context, context);
370
- if (typeof renderer === "undefined") {
371
- renderer = resolveDefaultRenderer(context);
372
- } else if (renderer === null) {
373
- return "";
417
+ function isOmittableRichTextDefault(key, nodeValue, defaultValue) {
418
+ if (!Object.is(nodeValue, defaultValue)) {
419
+ return false;
374
420
  }
375
- const renderChildren = (children) => renderChildrenToHtml(children, context);
376
- if (renderer) {
377
- return renderer({ context, renderChildren });
378
- } else {
379
- throw new Error(`There is no renderer for node type: ${context.currentNode.type}`);
421
+ if (key === "version") {
422
+ return Object.is(nodeValue, OMITTED_RICH_TEXT_NODE_VERSION);
380
423
  }
424
+ return true;
381
425
  }
382
- function renderChildrenToHtml(children, context) {
383
- return Array.isArray(children) ? children.map((node) => renderToHtml(node, context)).join("") : "";
384
- }
385
-
386
- // src/nodes/linebreak.ts
387
- var linebreakTextRenderer = () => {
388
- return " ";
389
- };
390
-
391
- // src/renderToText.ts
392
- var rendererTypeMap2 = /* @__PURE__ */ new Map([
393
- ["text", textTextRenderer],
394
- ["tab", tabTextRenderer],
395
- ["linebreak", linebreakTextRenderer],
396
- ["paragraph", paragraphTextRenderer],
397
- ["listitem", listitemTextRenderer],
398
- ["heading", headingTextRenderer],
399
- ["table", tableTextRenderer],
400
- ["tablecell", tablecellTextRenderer],
401
- ["tablerow", tablerowTextRenderer]
402
- ]);
403
- var resolveDefaultRenderer2 = (context) => {
404
- const renderer = rendererTypeMap2.get(context.currentNode.type);
405
- if (renderer) {
406
- return renderer;
407
- }
408
- return ({ context: context2, renderChildren }) => {
409
- return hasChildren(context2.currentNode) ? renderChildren(context2.currentNode.children) : "";
410
- };
411
- };
412
- function initializeRenderContext2(node, parentContext) {
413
- let ancestorNodes = [];
414
- if (parentContext == null ? void 0 : parentContext.ancestorNodes) {
415
- ancestorNodes = ancestorNodes.concat(parentContext.ancestorNodes);
426
+ function getDefaultRichTextPropertiesForNode(node) {
427
+ var _a;
428
+ const version = getStoredRichTextNodeVersion(node);
429
+ const defaultsForType = DEFAULT_RICH_TEXT_NODE_PROPERTIES[node.type];
430
+ if (defaultsForType) {
431
+ return (_a = defaultsForType[version]) != null ? _a : NO_DEFAULTS;
416
432
  }
417
- if (parentContext == null ? void 0 : parentContext.currentNode) {
418
- ancestorNodes.unshift(parentContext.currentNode);
433
+ if (version !== OMITTED_RICH_TEXT_NODE_VERSION) {
434
+ return NO_DEFAULTS;
419
435
  }
420
- return {
421
- ...parentContext != null ? parentContext : {},
422
- currentNode: node,
423
- ancestorNodes
424
- };
425
- }
426
- function renderToText(node, parentContext) {
427
- var _a;
428
- if (!isRichTextNode(node)) return "";
429
- const context = initializeRenderContext2(node, parentContext);
430
- let renderer = (_a = context.resolveRenderer) == null ? void 0 : _a.call(context, context);
431
- if (typeof renderer === "undefined") {
432
- renderer = resolveDefaultRenderer2(context);
433
- } else if (renderer === null) {
434
- return "";
436
+ if ("text" in node) {
437
+ return TEXT_BASELINE_V1;
435
438
  }
436
- const renderChildren = (children) => renderChildrenToText(children, context);
437
- if (renderer) {
438
- const rendered = renderer({ context, renderChildren });
439
- return context.ancestorNodes.length > 0 ? rendered : rendered.trim();
440
- } else {
441
- throw new Error(`There is no renderer for node type: ${context.currentNode.type}`);
439
+ if ("children" in node) {
440
+ return ELEMENT_BASELINE_V1;
442
441
  }
442
+ return VERSION_ONLY_V1;
443
443
  }
444
- function renderChildrenToText(children, context) {
445
- return Array.isArray(children) ? children.map((node) => renderToText(node, context)).join("") : "";
446
- }
447
-
448
- // src/types.ts
449
- function resolveLinkAttrConfig(entry) {
444
+ function getRichTextPropertiesSafeToOmit(node) {
450
445
  var _a;
451
- return {
452
- key: entry.key,
453
- options: entry.options,
454
- label: (_a = entry.label) != null ? _a : entry.key,
455
- helpText: entry.helpText
456
- };
446
+ return (_a = RICH_TEXT_NODE_PROPERTIES_SAFE_TO_OMIT[node.type]) != null ? _a : NO_PROPERTIES_SAFE_TO_OMIT;
457
447
  }
458
448
 
459
449
  // src/utils.ts
@@ -606,12 +596,208 @@ var defaultParameterConfiguration = {
606
596
  }
607
597
  }
608
598
  };
599
+
600
+ // src/omitDefaultRichTextProperties.ts
601
+ function omitDefaultPropertiesFromNode(node) {
602
+ const defaults = getDefaultRichTextPropertiesForNode(node);
603
+ for (const key of getRichTextPropertiesSafeToOmit(node)) {
604
+ if (!(key in node)) {
605
+ continue;
606
+ }
607
+ const defaultValue = defaults[key];
608
+ if (isOmittableRichTextDefault(key, node[key], defaultValue)) {
609
+ delete node[key];
610
+ }
611
+ }
612
+ }
613
+ function omitDefaultRichTextProperties(value) {
614
+ if (!isRichTextValue(value)) {
615
+ return value;
616
+ }
617
+ const cloned = structuredClone(value);
618
+ walkRichTextTree(cloned.root, (node) => {
619
+ omitDefaultPropertiesFromNode(node);
620
+ });
621
+ return cloned;
622
+ }
623
+
624
+ // src/rehydrateDefaultRichTextProperties.ts
625
+ function rehydrateDefaultPropertiesOnNode(node) {
626
+ const defaults = getDefaultRichTextPropertiesForNode(node);
627
+ for (const [key, defaultValue] of Object.entries(defaults)) {
628
+ if (!(key in node)) {
629
+ node[key] = defaultValue;
630
+ }
631
+ }
632
+ }
633
+ function rehydrateDefaultRichTextProperties(value) {
634
+ if (!isRichTextValue(value)) {
635
+ return value;
636
+ }
637
+ const cloned = structuredClone(value);
638
+ walkRichTextTree(cloned.root, (node) => {
639
+ rehydrateDefaultPropertiesOnNode(node);
640
+ });
641
+ return cloned;
642
+ }
643
+
644
+ // src/nodes/tab.ts
645
+ var tabHtmlRenderer = () => {
646
+ return " ";
647
+ };
648
+ var tabTextRenderer = () => {
649
+ return " ";
650
+ };
651
+
652
+ // src/renderToHtml.ts
653
+ var rendererTypeMap = /* @__PURE__ */ new Map([
654
+ ["heading", headingHtmlRenderer],
655
+ ["link", linkHtmlRenderer],
656
+ ["list", listHtmlRenderer],
657
+ ["listitem", listitemHtmlRenderer],
658
+ ["paragraph", paragraphHtmlRenderer],
659
+ ["root", rootHtmlRenderer],
660
+ ["text", textHtmlRenderer],
661
+ ["tab", tabHtmlRenderer],
662
+ ["table", tableHtmlRenderer],
663
+ ["tablecell", tablecellHtmlRenderer],
664
+ ["tablerow", tablerowHtmlRenderer],
665
+ ["asset", assetHtmlRenderer]
666
+ ]);
667
+ var resolveDefaultRenderer = (context) => {
668
+ const renderer = rendererTypeMap.get(context.currentNode.type);
669
+ if (renderer) {
670
+ return renderer;
671
+ }
672
+ const tags = rendererTypeTagMap.get(context.currentNode.type);
673
+ if (tags) {
674
+ return ({ renderChildren }) => {
675
+ var _a;
676
+ return (_a = tags.reduceRight(
677
+ (children, tag) => {
678
+ return renderHtmlElement(tag, null, children);
679
+ },
680
+ hasChildren(context.currentNode) ? renderChildren(context.currentNode.children) : void 0
681
+ )) != null ? _a : "";
682
+ };
683
+ }
684
+ return () => `<!-- WARNING: No renderer for type ${context.currentNode.type} -->`;
685
+ };
686
+ function initializeRenderContext(node, parentContext) {
687
+ let ancestorNodes = [];
688
+ if (parentContext == null ? void 0 : parentContext.ancestorNodes) {
689
+ ancestorNodes = ancestorNodes.concat(parentContext.ancestorNodes);
690
+ }
691
+ if (parentContext == null ? void 0 : parentContext.currentNode) {
692
+ ancestorNodes.unshift(parentContext.currentNode);
693
+ }
694
+ return {
695
+ ...parentContext != null ? parentContext : {},
696
+ currentNode: node,
697
+ ancestorNodes
698
+ };
699
+ }
700
+ function renderToHtml(node, parentContext) {
701
+ var _a;
702
+ if (!isRichTextNode(node)) return "";
703
+ const context = initializeRenderContext(node, parentContext);
704
+ let renderer = (_a = context.resolveRenderer) == null ? void 0 : _a.call(context, context);
705
+ if (typeof renderer === "undefined") {
706
+ renderer = resolveDefaultRenderer(context);
707
+ } else if (renderer === null) {
708
+ return "";
709
+ }
710
+ const renderChildren = (children) => renderChildrenToHtml(children, context);
711
+ if (renderer) {
712
+ return renderer({ context, renderChildren });
713
+ } else {
714
+ throw new Error(`There is no renderer for node type: ${context.currentNode.type}`);
715
+ }
716
+ }
717
+ function renderChildrenToHtml(children, context) {
718
+ return Array.isArray(children) ? children.map((node) => renderToHtml(node, context)).join("") : "";
719
+ }
720
+
721
+ // src/nodes/linebreak.ts
722
+ var linebreakTextRenderer = () => {
723
+ return " ";
724
+ };
725
+
726
+ // src/renderToText.ts
727
+ var rendererTypeMap2 = /* @__PURE__ */ new Map([
728
+ ["text", textTextRenderer],
729
+ ["tab", tabTextRenderer],
730
+ ["linebreak", linebreakTextRenderer],
731
+ ["paragraph", paragraphTextRenderer],
732
+ ["listitem", listitemTextRenderer],
733
+ ["heading", headingTextRenderer],
734
+ ["table", tableTextRenderer],
735
+ ["tablecell", tablecellTextRenderer],
736
+ ["tablerow", tablerowTextRenderer]
737
+ ]);
738
+ var resolveDefaultRenderer2 = (context) => {
739
+ const renderer = rendererTypeMap2.get(context.currentNode.type);
740
+ if (renderer) {
741
+ return renderer;
742
+ }
743
+ return ({ context: context2, renderChildren }) => {
744
+ return hasChildren(context2.currentNode) ? renderChildren(context2.currentNode.children) : "";
745
+ };
746
+ };
747
+ function initializeRenderContext2(node, parentContext) {
748
+ let ancestorNodes = [];
749
+ if (parentContext == null ? void 0 : parentContext.ancestorNodes) {
750
+ ancestorNodes = ancestorNodes.concat(parentContext.ancestorNodes);
751
+ }
752
+ if (parentContext == null ? void 0 : parentContext.currentNode) {
753
+ ancestorNodes.unshift(parentContext.currentNode);
754
+ }
755
+ return {
756
+ ...parentContext != null ? parentContext : {},
757
+ currentNode: node,
758
+ ancestorNodes
759
+ };
760
+ }
761
+ function renderToText(node, parentContext) {
762
+ var _a;
763
+ if (!isRichTextNode(node)) return "";
764
+ const context = initializeRenderContext2(node, parentContext);
765
+ let renderer = (_a = context.resolveRenderer) == null ? void 0 : _a.call(context, context);
766
+ if (typeof renderer === "undefined") {
767
+ renderer = resolveDefaultRenderer2(context);
768
+ } else if (renderer === null) {
769
+ return "";
770
+ }
771
+ const renderChildren = (children) => renderChildrenToText(children, context);
772
+ if (renderer) {
773
+ const rendered = renderer({ context, renderChildren });
774
+ return context.ancestorNodes.length > 0 ? rendered : rendered.trim();
775
+ } else {
776
+ throw new Error(`There is no renderer for node type: ${context.currentNode.type}`);
777
+ }
778
+ }
779
+ function renderChildrenToText(children, context) {
780
+ return Array.isArray(children) ? children.map((node) => renderToText(node, context)).join("") : "";
781
+ }
782
+
783
+ // src/types.ts
784
+ function resolveLinkAttrConfig(entry) {
785
+ var _a;
786
+ return {
787
+ key: entry.key,
788
+ options: entry.options,
789
+ label: (_a = entry.label) != null ? _a : entry.key,
790
+ helpText: entry.helpText
791
+ };
792
+ }
609
793
  export {
610
794
  assetHtmlRenderer,
611
795
  defaultParameterConfiguration,
612
796
  emptyRichTextValue,
613
797
  getLabelForElement,
614
798
  getLabelForFormat,
799
+ getRichTextListItemValue,
800
+ getRichTextListStart,
615
801
  getRichTextTagFromTableCellHeaderState,
616
802
  getRichTextTagsFromTextFormat,
617
803
  hasChildren,
@@ -630,8 +816,10 @@ export {
630
816
  linkParamValueToHtmlAttributes,
631
817
  listHtmlRenderer,
632
818
  listitemHtmlRenderer,
819
+ omitDefaultRichTextProperties,
633
820
  paragraphHtmlRenderer,
634
821
  purifyText,
822
+ rehydrateDefaultRichTextProperties,
635
823
  renderChildrenToHtml,
636
824
  renderChildrenToText,
637
825
  renderHtmlElement,