function getListOfItems()

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


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 []
        }

    }
}