const valueInput = id => ({
  initial: "empty",
  states: {
    empty: {
      on: {
        [`${id}.LOCK`]: {
          target: "locked",
          actions: send('STEP')
        }
      }
    },
    valid: {},
    locked: {
      on: {
        // '': { actions: 'STEP' }
      }
    }
  }
})

const fsCalcMachine = Machine({
  id: "fsCalc",
  initial: "calculating",
  context: {
    solvingFor: "unknown"
  },
  states: {
    fullyDefined: {},
    calculating: {
      on: {
        DONE: {
           target:'fullyDefined',
           cond: (_, e) => e.value === true
        }
      },
      type: 'parallel',
      states: {
        result: {
          initial: 'zero',
          states: {
            zero: {
              on: { STEP: 'one' },
            },
            one: {
              on: { STEP: 'two' },
            },
            two: {
              type: 'final',
              on: { STEP: { 
                actions: send({ type: 'DONE', value: true })
              } },
            }
          }


        },
        feedrateInput: valueInput('feedrateInput'),
        chiploadInput: valueInput('chiploadInput'),
        numFlutesInput: valueInput('numFlutesInput'),
        spindleSpeedInput: valueInput('spindleSpeedInput'),
      }
    }
  }
});