function formatPropertyChange()

in src/helpers/whatif.ts [342:412]


function formatPropertyChange(
  builder: ColorStringBuilder,
  propertyChange: WhatIfPropertyChange,
  maxPathLength: number,
  indentLevel: number,
): void {
  const propertyChangeType = propertyChange.propertyChangeType;
  const before = propertyChange.before;
  const after = propertyChange.after;
  const children = propertyChange.children || [];

  switch (propertyChangeType) {
    case "Create":
      formatPropertyChangePath(
        builder,
        propertyChange,
        propertyChange.after,
        maxPathLength,
        indentLevel,
      );
      formatPropertyCreate(builder, after, indentLevel + 1);
      break;
    case "Delete":
      formatPropertyChangePath(
        builder,
        propertyChange,
        propertyChange.before,
        maxPathLength,
        indentLevel,
      );
      formatPropertyDelete(builder, before, indentLevel + 1);
      break;
    case "Modify":
      formatPropertyChangePath(
        builder,
        propertyChange,
        propertyChange.before,
        maxPathLength,
        indentLevel,
      );
      formatPropertyModify(builder, before, after, children, indentLevel + 1);
      break;
    case "Array":
      formatPropertyChangePath(
        builder,
        propertyChange,
        propertyChange.children,
        maxPathLength,
        indentLevel,
      );
      formatPropertyArrayChange(
        builder,
        propertyChange,
        children,
        indentLevel + 1,
      );
      break;
    case "NoEffect":
      formatPropertyChangePath(
        builder,
        propertyChange,
        propertyChange.after,
        maxPathLength,
        indentLevel,
      );
      formatPropertyNoEffect(builder, after, indentLevel + 1);
      break;
    default:
      throw new Error(`Unknown property change type: ${propertyChangeType}.`);
  }
}