From 02cf6200901f5e2c587eab364869f11e88d91499 Mon Sep 17 00:00:00 2001 From: liyasthomas Date: Thu, 9 Sep 2021 17:47:27 +0530 Subject: [PATCH] feat: port ace editor to codemirror Co-authored-by: Andrew Bastin --- assets/scss/styles.scss | 2 +- components/graphql/Request.vue | 49 ++--- components/graphql/RequestOptions.vue | 25 ++- components/graphql/Response.vue | 139 +++++--------- components/http/ResponseMeta.vue | 64 ++----- .../lenses/renderers/HTMLLensRenderer.vue | 175 ++++++++++-------- .../lenses/renderers/JSONLensRenderer.vue | 158 ++++++++-------- .../lenses/renderers/RawLensRenderer.vue | 149 ++++++++------- .../lenses/renderers/XMLLensRenderer.vue | 149 ++++++++------- helpers/editor/codemirror.ts | 12 +- 10 files changed, 437 insertions(+), 485 deletions(-) diff --git a/assets/scss/styles.scss b/assets/scss/styles.scss index a08772cd2..b253cd68d 100644 --- a/assets/scss/styles.scss +++ b/assets/scss/styles.scss @@ -467,7 +467,7 @@ input[type="checkbox"] { @apply border-b; @apply border-dividerLight; @apply w-full; - @apply h-auto; + @apply !h-full; } .CodeMirror * { diff --git a/components/graphql/Request.vue b/components/graphql/Request.vue index a84a16459..304ca6482 100644 --- a/components/graphql/Request.vue +++ b/components/graphql/Request.vue @@ -33,45 +33,32 @@ - diff --git a/components/graphql/RequestOptions.vue b/components/graphql/RequestOptions.vue index 2c4863d36..e8c7147f8 100644 --- a/components/graphql/RequestOptions.vue +++ b/components/graphql/RequestOptions.vue @@ -106,19 +106,7 @@ /> - +
@@ -323,6 +311,7 @@ import { logHoppRequestRunToAnalytics } from "~/helpers/fb/analytics" import { getCurrentStrategyID } from "~/helpers/network" import { makeGQLRequest } from "~/helpers/types/HoppGQLRequest" import { useCodemirror } from "~/helpers/editor/codemirror" +import "codemirror/mode/javascript/javascript" const props = defineProps<{ conn: GQLConnection @@ -370,6 +359,16 @@ useCodemirror(bulkEditor, bulkHeaders, { completer: null, }) +const variableEditor = ref(null) + +useCodemirror(variableEditor, variableString, { + extendedEditorConfig: { + mode: "javascript", + }, + linter: null, + completer: null, +}) + const queryEditor = ref(null) const copyQueryIcon = ref("copy") diff --git a/components/graphql/Response.vue b/components/graphql/Response.vue index feca15fcd..09c6be4e1 100644 --- a/components/graphql/Response.vue +++ b/components/graphql/Response.vue @@ -59,38 +59,6 @@ justify-center " > -
-
- - {{ $t("shortcut.request.send_request") }} - - - {{ $t("shortcut.general.show_all") }} - - -
-
-
- {{ getSpecialKey() }} - G -
-
- {{ getSpecialKey() }} - K -
- -
-
- diff --git a/components/lenses/renderers/JSONLensRenderer.vue b/components/lenses/renderers/JSONLensRenderer.vue index fc6bc2f12..c1ea9347d 100644 --- a/components/lenses/renderers/JSONLensRenderer.vue +++ b/components/lenses/renderers/JSONLensRenderer.vue @@ -36,88 +36,92 @@
- +
- diff --git a/components/lenses/renderers/RawLensRenderer.vue b/components/lenses/renderers/RawLensRenderer.vue index 563f9de1f..ec5b015aa 100644 --- a/components/lenses/renderers/RawLensRenderer.vue +++ b/components/lenses/renderers/RawLensRenderer.vue @@ -36,79 +36,92 @@
- +
- diff --git a/components/lenses/renderers/XMLLensRenderer.vue b/components/lenses/renderers/XMLLensRenderer.vue index eb5340f41..11a6463a6 100644 --- a/components/lenses/renderers/XMLLensRenderer.vue +++ b/components/lenses/renderers/XMLLensRenderer.vue @@ -36,79 +36,92 @@
- +
- diff --git a/helpers/editor/codemirror.ts b/helpers/editor/codemirror.ts index 487365c49..e7781ae7c 100644 --- a/helpers/editor/codemirror.ts +++ b/helpers/editor/codemirror.ts @@ -44,6 +44,7 @@ const DEFAULT_EDITOR_CONFIG: CodeMirror.EditorConfiguration = { extraKeys: { "Ctrl-Space": "autocomplete", }, + viewportMargin: Infinity, } /** @@ -120,6 +121,8 @@ export function useCodemirror( cm.value = CodeMirror(el.value!, DEFAULT_EDITOR_CONFIG) + cm.value.setValue(value.value) + setTheme() updateEditorConfig() updateLinterConfig() @@ -139,7 +142,14 @@ export function useCodemirror( }) // Reinitialize if the target ref updates - watch(el, initialize) + watch(el, () => { + if (cm.value) { + const parent = cm.value.getWrapperElement() + parent.remove() + cm.value = null + } + initialize() + }) const setTheme = () => { if (cm.value) {