Format code
This commit is contained in:
parent
1bb9dccfa1
commit
6b2e87c0f3
|
@ -5,6 +5,8 @@
|
||||||
import { handlebarsCompletions } from "@/constants/completions"
|
import { handlebarsCompletions } from "@/constants/completions"
|
||||||
import type { EnrichedBinding, Helper, Snippet } from "@budibase/types"
|
import type { EnrichedBinding, Helper, Snippet } from "@budibase/types"
|
||||||
import { BindingMode } from "@budibase/types"
|
import { BindingMode } from "@budibase/types"
|
||||||
|
import { EditorModes } from "../CodeEditor"
|
||||||
|
import CodeEditor from "../CodeEditor/CodeEditor.svelte"
|
||||||
|
|
||||||
export let addHelper: (_helper: Helper, _js?: boolean) => void
|
export let addHelper: (_helper: Helper, _js?: boolean) => void
|
||||||
export let addBinding: (_binding: EnrichedBinding) => void
|
export let addBinding: (_binding: EnrichedBinding) => void
|
||||||
|
@ -41,7 +43,14 @@
|
||||||
Snippets: "Code",
|
Snippets: "Code",
|
||||||
} as Record<string, string>
|
} as Record<string, string>
|
||||||
$: categories = Object.entries(groupBy("category", bindings))
|
$: categories = Object.entries(groupBy("category", bindings))
|
||||||
$: categoryNames = getCategoryNames(categories)
|
|
||||||
|
$: filteredSnippets = getFilteredSnippets(
|
||||||
|
mode,
|
||||||
|
allowSnippets,
|
||||||
|
snippets || [],
|
||||||
|
search
|
||||||
|
)
|
||||||
|
$: categoryNames = getCategoryNames(categories, filteredSnippets.length > 0)
|
||||||
$: searchRgx = new RegExp(search, "ig")
|
$: searchRgx = new RegExp(search, "ig")
|
||||||
$: filteredCategories = categories
|
$: filteredCategories = categories
|
||||||
.map(([name, categoryBindings]) => ({
|
.map(([name, categoryBindings]) => ({
|
||||||
|
@ -65,17 +74,15 @@
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
$: filteredSnippets = getFilteredSnippets(
|
|
||||||
allowSnippets,
|
|
||||||
snippets || [],
|
|
||||||
search
|
|
||||||
)
|
|
||||||
|
|
||||||
const getFilteredSnippets = (
|
const getFilteredSnippets = (
|
||||||
|
mode: BindingMode,
|
||||||
enableSnippets: boolean,
|
enableSnippets: boolean,
|
||||||
snippets: Snippet[],
|
snippets: Snippet[],
|
||||||
search: string
|
search: string
|
||||||
) => {
|
) => {
|
||||||
|
if (mode !== BindingMode.JavaScript) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
if (!enableSnippets || !snippets.length) {
|
if (!enableSnippets || !snippets.length) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
@ -98,12 +105,15 @@
|
||||||
return example || ""
|
return example || ""
|
||||||
}
|
}
|
||||||
|
|
||||||
const getCategoryNames = (categories: [string, EnrichedBinding[]][]) => {
|
const getCategoryNames = (
|
||||||
|
categories: [string, EnrichedBinding[]][],
|
||||||
|
showSnippets: boolean
|
||||||
|
) => {
|
||||||
const names = [...categories.map(cat => cat[0])]
|
const names = [...categories.map(cat => cat[0])]
|
||||||
if (allowHelpers) {
|
if (allowHelpers) {
|
||||||
names.push("Helpers")
|
names.push("Helpers")
|
||||||
}
|
}
|
||||||
if (allowSnippets) {
|
if (showSnippets) {
|
||||||
names.push("Snippets")
|
names.push("Snippets")
|
||||||
}
|
}
|
||||||
return names
|
return names
|
||||||
|
@ -192,7 +202,10 @@
|
||||||
on:mouseenter={stopHidingPopover}
|
on:mouseenter={stopHidingPopover}
|
||||||
on:mouseleave={hidePopover}
|
on:mouseleave={hidePopover}
|
||||||
>
|
>
|
||||||
<div class="binding-popover" class:helper={hoverTarget.helper}>
|
<div
|
||||||
|
class="binding-popover"
|
||||||
|
class:has-code={hoverTarget.type !== "binding"}
|
||||||
|
>
|
||||||
{#if hoverTarget.description}
|
{#if hoverTarget.description}
|
||||||
<div>
|
<div>
|
||||||
<!-- eslint-disable-next-line svelte/no-at-html-tags-->
|
<!-- eslint-disable-next-line svelte/no-at-html-tags-->
|
||||||
|
@ -200,9 +213,17 @@
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{#if hoverTarget.code}
|
{#if hoverTarget.code}
|
||||||
|
{#if mode === BindingMode.JavaScript}
|
||||||
|
<CodeEditor
|
||||||
|
value={hoverTarget.code?.trim()}
|
||||||
|
mode={EditorModes.JS}
|
||||||
|
readonly
|
||||||
|
/>
|
||||||
|
{:else if mode === BindingMode.Text}
|
||||||
<!-- eslint-disable-next-line svelte/no-at-html-tags-->
|
<!-- eslint-disable-next-line svelte/no-at-html-tags-->
|
||||||
<pre>{@html hoverTarget.code}</pre>
|
<pre>{@html hoverTarget.code}</pre>
|
||||||
{/if}
|
{/if}
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</Popover>
|
</Popover>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -323,7 +344,6 @@
|
||||||
class="binding"
|
class="binding"
|
||||||
on:mouseenter={e =>
|
on:mouseenter={e =>
|
||||||
showHelperPopover(helper, e.currentTarget)}
|
showHelperPopover(helper, e.currentTarget)}
|
||||||
on:mouseleave={hidePopover}
|
|
||||||
on:click={() =>
|
on:click={() =>
|
||||||
addHelper(helper, mode === BindingMode.JavaScript)}
|
addHelper(helper, mode === BindingMode.JavaScript)}
|
||||||
>
|
>
|
||||||
|
@ -347,7 +367,6 @@
|
||||||
class="binding"
|
class="binding"
|
||||||
on:mouseenter={e =>
|
on:mouseenter={e =>
|
||||||
showSnippetPopover(snippet, e.currentTarget)}
|
showSnippetPopover(snippet, e.currentTarget)}
|
||||||
on:mouseleave={hidePopover}
|
|
||||||
on:click={() => addSnippet(snippet)}
|
on:click={() => addSnippet(snippet)}
|
||||||
>
|
>
|
||||||
<span class="binding__label">{snippet.name}</span>
|
<span class="binding__label">{snippet.name}</span>
|
||||||
|
@ -503,7 +522,7 @@
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.binding-popover.helper pre {
|
.binding-popover.has-code pre {
|
||||||
color: var(--spectrum-global-color-blue-700);
|
color: var(--spectrum-global-color-blue-700);
|
||||||
}
|
}
|
||||||
.binding-popover pre :global(span) {
|
.binding-popover pre :global(span) {
|
||||||
|
@ -515,7 +534,11 @@
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.binding-popover.helper :global(code) {
|
.binding-popover.has-code :global(code) {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
.binding-popover.has-code :global(.cm-line),
|
||||||
|
.binding-popover.has-code :global(.cm-content) {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue