/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

export default {
  id: 'data-loader',
  initial: 'load',
  on: {
    OPEN: {
      target: 'load',
    },
    ERROR: {
      target: 'disconnected',
    },
    LOAD: [
      {
        target: 'idle',
        cond: 'loaded',
      },
      {
        target: 'loading',
      },
    ],
  },
  states: {
    load: {},
    loading: {
      on: {
        SUCCESS: {
          target: 'idle',
        },
        ERROR: {
          target: 'error',
        },
      },
    },
    idle: {},
    error: {
      on: {
        RETRY: {
          target: 'load',
        },
      },
    },
    disconnected: {
      on: {
        RETRY: {
          target: 'load',
        },
      },
    },
  },
};
