/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

export enum LEGEND_STUDIO_HOTKEY {
  SYNC_WITH_WORKSPACE = 'SYNC_WITH_WORKSPACE',
  CREATE_ELEMENT = 'CREATE_ELEMENT',
  OPEN_ELEMENT = 'OPEN_ELEMENT',
  TOGGLE_TEXT_MODE = 'TOGGLE_TEXT_MODE',
  GENERATE = 'GENERATE',
  COMPILE = 'COMPILE',
  TOGGLE_AUX_PANEL = 'TOGGLE_AUX_PANEL',
  TOGGLE_MODEL_LOADER = 'TOGGLE_MODEL_LOADER',
  TOGGLE_SIDEBAR_EXPLORER = 'TOGGLE_SIDEBAR_EXPLORER',
  TOGGLE_SIDEBAR_CHANGES = 'TOGGLE_SIDEBAR_CHANGES',
  TOGGLE_SIDEBAR_WORKSPACE_REVIEW = 'TOGGLE_SIDEBAR_WORKSPACE_REVIEW',
  TOGGLE_SIDEBAR_WORKSPACE_UPDATER = 'TOGGLE_SIDEBAR_WORKSPACE_UPDATER',
}

export const LEGEND_STUDIO_HOTKEY_MAP = Object.freeze({
  [LEGEND_STUDIO_HOTKEY.SYNC_WITH_WORKSPACE]: 'ctrl+s',
  [LEGEND_STUDIO_HOTKEY.CREATE_ELEMENT]: 'ctrl+shift+n',
  [LEGEND_STUDIO_HOTKEY.OPEN_ELEMENT]: 'ctrl+p',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_MODEL_LOADER]: 'f2',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_TEXT_MODE]: 'f8',
  [LEGEND_STUDIO_HOTKEY.COMPILE]: 'f9',
  [LEGEND_STUDIO_HOTKEY.GENERATE]: 'f10',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_AUX_PANEL]: 'ctrl+`',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_SIDEBAR_EXPLORER]: 'ctrl+shift+x',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_SIDEBAR_CHANGES]: 'ctrl+shift+g',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_SIDEBAR_WORKSPACE_REVIEW]: 'ctrl+shift+m',
  [LEGEND_STUDIO_HOTKEY.TOGGLE_SIDEBAR_WORKSPACE_UPDATER]: 'ctrl+shift+u',
});

export enum EDITOR_MODE {
  STANDARD = 'STANDARD',
  CONFLICT_RESOLUTION = 'CONFLICT_RESOLUTION',
  REVIEW = 'REVIEW',
  VIEWER = 'VIEWER',
}

export enum ACTIVITY_MODE {
  EXPLORER = 'EXPLORER',
  LOCAL_CHANGES = 'LOCAL_CHANGES',
  WORKSPACE_REVIEW = 'WORKSPACE_REVIEW',
  WORKSPACE_UPDATER = 'WORKSPACE_UPDATER',
  CONFLICT_RESOLUTION = 'CONFLICT_RESOLUTION',
  SETTINGS = 'SETTINGS',
  REVIEW = 'REVIEW',
  PROJECT_OVERVIEW = 'PROJECT_OVERVIEW',
  WORKFLOW_MANAGER = 'WORKFLOW_MANAGER',
  GLOBAL_TEST_RUNNER = 'GLOBAL_TEST_RUNNER',
}

export enum AUX_PANEL_MODE {
  CONSOLE = 'COMPILE',
  DEV_TOOL = 'DEV_TOOL',
}

export enum ELEMENT_NATIVE_VIEW_MODE {
  FORM = 'Form',
  JSON = 'JSON',
  GRAMMAR = 'Grammar',
}

export enum GRAPH_EDITOR_MODE {
  FORM = 'FORM',
  GRAMMAR_TEXT = 'GRAMMAR_TEXT',
}
