function getListOfItems()

in src/completion/completeStateNames.ts [43:78]


function getListOfItems(node: PropertyASTNode, options?: ASLOptions): string[] {
  const keyVal = node.keyNode.value

  switch (keyVal) {
    case 'StartAt': {
      return getStatesFromStartAtNode(node, options)
    }
    case 'Next':
    case 'Default': {
      const statesNode = findClosestAncestorStateNode(node)

      const stateItemNode = node.parent?.parent

      let stateItemName: string | undefined

      if (stateItemNode && isPropertyNode(stateItemNode)) {
        // The state name under cursor shouldn't be suggested - find the value
        stateItemName = stateItemNode.keyNode.value
        // If stateItemNode is not a property node go 3 levels up as it is Next within Choice state
      } else if (stateItemNode?.parent?.parent?.parent && isPropertyNode(stateItemNode.parent.parent.parent)) {
        stateItemName = stateItemNode.parent.parent.parent.keyNode.value
      }

      if (statesNode) {
        return getListOfStateNamesFromStateNode(statesNode, options?.ignoreColonOffset).filter(
          (name) => name !== stateItemName,
        )
      }

      return []
    }
    default: {
      return []
    }
  }
}