export function getBoxedExpressionPropertiesPanelComponent()

in packages/dmn-editor/src/propertiesPanel/BoxedExpressionPropertiesPanelComponents/getBoxedExpressionPropertiesPanelComponent.ts [40:200]


export function getBoxedExpressionPropertiesPanelComponent(selectedObjectPath: ExpressionPath): {
  component: BoxedExpressionPropertiesPanelComponent;
  title: string;
} {
  if (selectedObjectPath.type === "conditional") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed Conditional" };
    }
  }

  if (selectedObjectPath.type === "context") {
    if (selectedObjectPath.column === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed Context" };
    }
    if (selectedObjectPath.column === "variable") {
      return {
        component: BoxedExpressionPropertiesPanelComponent.CONTEXT_INFORMATION_ITEM_CELL,
        title: "Boxed Context Variable",
      };
    }
  }

  if (selectedObjectPath.type === "decisionTable") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.DECISION_TABLE_ROOT, title: "Decision Table" };
    }
    if (selectedObjectPath.header === "input") {
      if (selectedObjectPath.row < 0) {
        return {
          component: BoxedExpressionPropertiesPanelComponent.DECISION_TABLE_INPUT_HEADER,
          title: "Decision Table Input Header",
        };
      }
      return {
        component: BoxedExpressionPropertiesPanelComponent.DECISION_TABLE_INPUT_RULE,
        title: "Decision Table Input Cell",
      };
    }
    if (selectedObjectPath.header === "output") {
      if (selectedObjectPath.row < 0) {
        return {
          component: BoxedExpressionPropertiesPanelComponent.DECISION_TABLE_OUTPUT_HEADER,
          title: "Decision Table Output Header",
        };
      }
      return {
        component: BoxedExpressionPropertiesPanelComponent.DECISION_TABLE_OUTPUT_RULE,
        title: "Decision Table Output Cell",
      };
    }
  }

  if (selectedObjectPath.type === "every") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed Every" };
    }
    if (selectedObjectPath.row === "variable") {
      return {
        component: BoxedExpressionPropertiesPanelComponent.ITERATOR_VARIABLE_CELL,
        title: "Boxed Every Variable",
      };
    }
  }

  if (selectedObjectPath.type === "filter") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed Filter" };
    }
  }

  if (selectedObjectPath.type === "for") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed For" };
    }
    if (selectedObjectPath.row === "variable") {
      return { component: BoxedExpressionPropertiesPanelComponent.ITERATOR_VARIABLE_CELL, title: "Boxed For Variable" };
    }
  }

  if (selectedObjectPath.type === "functionDefinition") {
    if (selectedObjectPath.parameterIndex === undefined) {
      return {
        component: BoxedExpressionPropertiesPanelComponent.FUNCTION_DEFINITION_ROOT,
        title: "Function Definition",
      };
    }
    return {
      component: BoxedExpressionPropertiesPanelComponent.FUNCTION_DEFINITION_PARAMETERS,
      title: "Function Parameters",
    };
  }

  if (selectedObjectPath.type === "invocation") {
    if (selectedObjectPath.row === undefined || selectedObjectPath.column === undefined) {
      return {
        component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT,
        title: "Boxed Invocation",
      };
    }
    if (selectedObjectPath.row < 0) {
      return {
        component: BoxedExpressionPropertiesPanelComponent.INVOCATION_FUNCTION_CALL,
        title: "Boxed Invocation Called Function",
      };
    }
    if (selectedObjectPath.column === "parameter") {
      return {
        component: BoxedExpressionPropertiesPanelComponent.INVOCATION_INFORMATION_ITEM_CELL,
        title: "Boxed Invocation Parameter",
      };
    }
    if (selectedObjectPath.column === "expression") {
      return {
        component: BoxedExpressionPropertiesPanelComponent.LITERAL_EXPRESSION_CONTENT,
        title: "Boxed Invocation",
      };
    }
  }

  if (selectedObjectPath.type === "list") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed List" };
    }
  }

  if (selectedObjectPath.type === "literalExpression") {
    return {
      component: BoxedExpressionPropertiesPanelComponent.LITERAL_EXPRESSION_CONTENT,
      title: "Literal Expression",
    };
  }

  if (selectedObjectPath.type === "relation") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed Relation" };
    }
    if (selectedObjectPath.row < 0) {
      return {
        component: BoxedExpressionPropertiesPanelComponent.RELATION_INFORMATION_ITEM_CELL,
        title: "Boxed Relation Header",
      };
    }
    return {
      component: BoxedExpressionPropertiesPanelComponent.LITERAL_EXPRESSION_CONTENT,
      title: "Boxed Relation Cell",
    };
  }

  if (selectedObjectPath.type === "some") {
    if (selectedObjectPath.row === undefined) {
      return { component: BoxedExpressionPropertiesPanelComponent.EXPRESSION_ROOT, title: "Boxed Some" };
    }
    if (selectedObjectPath.row === "variable") {
      return {
        component: BoxedExpressionPropertiesPanelComponent.ITERATOR_VARIABLE_CELL,
        title: "Boxed Some Variable",
      };
    }
  }
  return { component: BoxedExpressionPropertiesPanelComponent.WITHOUT_PROPERTIES_CELL, title: "" };
}