[add] webawesome
This commit is contained in:
parent
6d5323918b
commit
5c036adc0f
11 changed files with 493 additions and 10 deletions
|
|
@ -1,14 +1,14 @@
|
||||||
Work in progress.
|
Work in progress.
|
||||||
|
|
||||||
An attempt to write a [Language Server Protocol](https://en.wikipedia.org/wiki/Language_Server_Protocol) server for and in XQuery 4.0. It tracks the draft specifications at https://qt4cg.org/
|
An attempt to write a [Language Server Protocol](https://en.wikipedia.org/wiki/Language_Server_Protocol) server for and in XQuery 4.0. It tracks the draft specifications at https://qt4cg.org/
|
||||||
It written for BaseX 12.0 and uses the [BaseX websocket](https://docs.basex.org/main/WebSockets) feature. See [The WebSocket Protocol
|
It written for BaseX 12.0 and uses the [BaseX websocket](https://docs.basex.org/main/WebSockets) for transport. See [The WebSocket Protocol
|
||||||
RFC 6455](https://www.rfc-editor.org/rfc/rfc6455.html)
|
RFC 6455](https://www.rfc-editor.org/rfc/rfc6455.html)
|
||||||
|
|
||||||
# Demo
|
# Demo
|
||||||
The demo makes use of `Docker` or `Podman` for ease of setup. This is not a requirement to use the software.
|
The demo makes use of `Docker` or `Podman` for ease of setup. This is not a requirement to use the software.
|
||||||
|
|
||||||
1 Clone this repo
|
1. Clone this repostory.
|
||||||
2. Run `docker compose up -d` The LSP server shall now running on port 3000 (edit `compose.yaml` to change port)
|
2. Run `docker compose up -d` The LSP server should now now running on port 3000 (edit `compose.yaml` to change port)
|
||||||
3. In a browser navigate to `http://localhost:3000/static/clients/codemirror/` to see the CodeMirror 6 demo.
|
3. In a browser navigate to `http://localhost:3000/static/clients/codemirror/` to see the CodeMirror 6 demo.
|
||||||
|
|
||||||
In principle, the LSP can be used in any environment that can make use of a LSP server accessed via a websocket.
|
In principle, the LSP can be used in any environment that can make use of a LSP server accessed via a websocket.
|
||||||
|
|
@ -74,7 +74,7 @@ sequenceDiagram
|
||||||
```
|
```
|
||||||
|
|
||||||
#### XQuery 4.0 parser
|
#### XQuery 4.0 parser
|
||||||
The ebnf is taken from Gunther Rademacher's rex-parser-generator
|
The Ebnf is taken from Gunther Rademacher's rex-parser-generator
|
||||||
[XQuery-40.ebnf](https://github.com/GuntherRademacher/rex-parser-generator/blob/main/docs/sample-grammars/XQuery-40.ebnf)
|
[XQuery-40.ebnf](https://github.com/GuntherRademacher/rex-parser-generator/blob/main/docs/sample-grammars/XQuery-40.ebnf)
|
||||||
|
|
||||||
The script [scripts/rex.xq](scripts/rex.xq) can generate XQuery or Java parser code from this.
|
The script [scripts/rex.xq](scripts/rex.xq) can generate XQuery or Java parser code from this.
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ services:
|
||||||
- ./webapp/custom:/srv/basex/lib/custom:ro # jars
|
- ./webapp/custom:/srv/basex/lib/custom:ro # jars
|
||||||
- ./webapp/lsp:/srv/basex/webapp/lsp
|
- ./webapp/lsp:/srv/basex/webapp/lsp
|
||||||
- ./webapp/static/clients:/srv/basex/webapp/static/clients:ro
|
- ./webapp/static/clients:/srv/basex/webapp/static/clients:ro
|
||||||
|
- webawesome:/srv/basex/webapp/static/webawesome:ro
|
||||||
- ./webapp/lsp-manager:/srv/basex/webapp/lsp-manager
|
- ./webapp/lsp-manager:/srv/basex/webapp/lsp-manager
|
||||||
# - ./repo:/srv/basex/repo
|
# - ./repo:/srv/basex/repo
|
||||||
environment:
|
environment:
|
||||||
|
|
@ -20,4 +21,6 @@ services:
|
||||||
- "SERVER_OPTS= "
|
- "SERVER_OPTS= "
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
basex-lsp:
|
basex-lsp:
|
||||||
|
webawesome: #
|
||||||
|
external: true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,14 @@
|
||||||
import { registerIconLibrary } from '/static/clients/quietui@1.6.2/dist/quiet.loader.js';
|
import { registerIconLibrary } from '/static/clients/quietui@1.6.2/dist/quiet.loader.js';
|
||||||
|
|
||||||
registerIconLibrary('codicon', {
|
registerIconLibrary('tabler', {
|
||||||
resolve: (name, family) => {
|
resolver: name => `https://cdn.jsdelivr.net/npm/@tabler/icons@1.68.0/icons/${name}.svg`,
|
||||||
return `/static/clients/codicon@0.0.40/icons/${name}.svg`
|
mutator: svg => {
|
||||||
}});
|
svg.style.fill = 'none';
|
||||||
|
svg.setAttribute('stroke', 'currentColor');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
registerIconLibrary('codicon', {
|
||||||
|
resolve: (name, family) => {
|
||||||
|
return `/static/clients/codicon@0.0.40/icons/${name}.svg`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
@import url("../bootstrap-icons.min.css");
|
//@import url("../bootstrap-icons.min.css");
|
||||||
html { height: 100%;}
|
html { height: 100%;}
|
||||||
body { min-height: 100vh; }
|
body { min-height: 100vh; }
|
||||||
|
|
||||||
|
|
|
||||||
122
webapp/static/clients/codemirror/webawesome.css
Normal file
122
webapp/static/clients/codemirror/webawesome.css
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
|
||||||
|
|
||||||
|
:root {
|
||||||
|
color-scheme: light dark;
|
||||||
|
--quiet-primary-seed: #e98d61;
|
||||||
|
--quiet-content-spacing: 0.75rem;
|
||||||
|
--quiet-form-control-height-md:0.9rem;
|
||||||
|
--quiet-focus-width: 2px;
|
||||||
|
--quiet-focus-offset: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
form header {
|
||||||
|
background-color: burlywood;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-wrap {
|
||||||
|
background: white;
|
||||||
|
height: 100vh ;
|
||||||
|
|
||||||
|
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(10px, 1fr) minmax(10px, 4fr);
|
||||||
|
grid-template-rows: min-content min-content 1fr min-content;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
details {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open] {
|
||||||
|
flex-grow: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
summary {
|
||||||
|
background-color: var(--quiet-neutral-fill-softer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set editor dimensions */
|
||||||
|
#editor {
|
||||||
|
max-width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 75cqh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stretch editor to fit inside its containing div */
|
||||||
|
.cm-editor {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open]::details-content {
|
||||||
|
padding: 0.1em;
|
||||||
|
border: thin solid grey;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
::backdrop {
|
||||||
|
backdrop-filter: blur(2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
grid-template-columns: 100%;
|
||||||
|
grid-template-rows: auto;
|
||||||
|
|
||||||
|
>* {
|
||||||
|
grid-column: 1 / -1 !important;
|
||||||
|
grid-row: auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#tConnect:state(unchecked) {
|
||||||
|
outline: dashed 4px deeppink;
|
||||||
|
outline-offset: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-sidebar {
|
||||||
|
grid-column: 1 / 2;
|
||||||
|
grid-row: 2 / 4;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
details {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-nav {
|
||||||
|
grid-column: 2 / 3;
|
||||||
|
background: red;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-main {
|
||||||
|
grid-column: 2 / 3;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-footer {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
background: #ffecb3;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding:2px;
|
||||||
|
}
|
||||||
345
webapp/static/clients/codemirror/webawesome.html
Normal file
345
webapp/static/clients/codemirror/webawesome.html
Normal file
|
|
@ -0,0 +1,345 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en" class="wa-cloak wa-theme-default wa-palette-default wa-brand-blue">
|
||||||
|
<!-- also quiet-dark -->
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Codemirror6 example using BaseX LSP</title>
|
||||||
|
<link rel="stylesheet" href="../../webawesome/dist-cdn/styles/themes/default.css" render="blocking" fetchpriority="high" />
|
||||||
|
<link rel="stylesheet" href="../../webawesome/dist-cdn/styles/webawesome.css" />
|
||||||
|
<link rel="icon" type="image/png" href="../favicon.png" />
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
import { setBasePath, registerIconLibrary } from '../../webawesome/dist-cdn/webawesome.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/icon/icon.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/dropdown/dropdown.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/button-group/button-group.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/dropdown/dropdown.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/relative-time/relative-time.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/tooltip/tooltip.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/popover/popover.js';
|
||||||
|
import '../../webawesome/dist-cdn/components/divider/divider.js';
|
||||||
|
setBasePath('/static/webawesome/dist-cdn');
|
||||||
|
registerIconLibrary('tabler', {
|
||||||
|
resolver: name => `https://cdn.jsdelivr.net/npm/@tabler/icons@3.35.0/icons/outline/${name}.svg`,
|
||||||
|
mutator: svg => {
|
||||||
|
svg.style.fill = 'none';
|
||||||
|
svg.setAttribute('stroke', 'currentColor');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
registerIconLibrary('codicon', {
|
||||||
|
resolver: (name, family) => {
|
||||||
|
return `/static/clients/codicon@0.0.40/icons/${name}.svg`
|
||||||
|
},
|
||||||
|
mutator: svg => {
|
||||||
|
svg.style.fill = 'none';
|
||||||
|
svg.setAttribute('stroke', 'currentColor');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="webawesome.css" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="page-wrap">
|
||||||
|
<header class="page-header">
|
||||||
|
<wa-dropdown>
|
||||||
|
<wa-button slot="trigger" with-caret="with-caret">File</wa-button>
|
||||||
|
<wa-dropdown-item id="bnNew">
|
||||||
|
<wa-icon slot="icon" library="tabler" name="file"></wa-icon>New...
|
||||||
|
<div slot="details">create a new doc</div>
|
||||||
|
</wa-dropdown-item>
|
||||||
|
|
||||||
|
<wa-dropdown-item id="bnRead">
|
||||||
|
<wa-icon slot="icon" library="tabler" name="folder-open"></wa-icon>Open...
|
||||||
|
<div slot="details">select a local file</div>
|
||||||
|
</wa-dropdown-item>
|
||||||
|
<input type="file" id="fileElem" multiple accept="*/*" style="display: none;" />
|
||||||
|
|
||||||
|
<wa-dropdown-item id="popover__url">
|
||||||
|
<wa-icon slot="icon" library="tabler" name="link"></wa-icon>Url...
|
||||||
|
<div slot="details">Fetch from a url</div>
|
||||||
|
</wa-dropdown-item>
|
||||||
|
</wa-dropdown>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="h4">XQuery 4.0 LSP client</span>
|
||||||
|
<quiet-toggle-icon id="tConnect" label="Connection status" size="lg"
|
||||||
|
style="--checked-color: green;--unchecked-color: red;">
|
||||||
|
<wa-icon slot="unchecked" library="tabler" name="network-off" family="outline"></wa-icon>
|
||||||
|
<wa-icon slot="checked" library="tabler" name="network" family="outline"></wa-icon>
|
||||||
|
</quiet-toggle-icon>
|
||||||
|
<wa-tooltip id="tipConnect" for="tConnect">I'm a tooltip</wa-tooltip>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<wa-button-group>
|
||||||
|
<wa-dropdown>
|
||||||
|
<wa-button slot="trigger" with-caret>Dev tools</wa-button>
|
||||||
|
<wa-dropdown-item>
|
||||||
|
<wa-icon slot="icon" library="tabler" name="external-link"></wa-icon>
|
||||||
|
<a href="/app/home" target="lsp" rel="noreferrer noopener">LSP Manager</a>
|
||||||
|
</wa-dropdown-item>
|
||||||
|
<wa-dropdown-item>
|
||||||
|
<wa-icon slot="icon" library="tabler" name="external-link"></wa-icon>
|
||||||
|
<a href="/dba/logs" target="dba" rel="noreferrer noopener">Dba</a>
|
||||||
|
</wa-dropdown-item>
|
||||||
|
<wa-divider></wa-divider>
|
||||||
|
</wa-dropdown>
|
||||||
|
<wa-button popovertarget="popAbout" type="button">
|
||||||
|
<wa-icon library="tabler" name="help" label="Home" slot="start"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
</wa-button-group>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<main id="main" class="page-main" style="overflow: auto;">
|
||||||
|
<div class="wa-split " >
|
||||||
|
|
||||||
|
<wa-button-group>
|
||||||
|
<wa-button id="search" title="Search" icon-label="search" >
|
||||||
|
<wa-icon name="search"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="lint" title="Display diagnostics" icon-label="diagnostics" >
|
||||||
|
<wa-icon library="tabler" name="message-report"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="symbols2" title="symbols" icon-label="Symbols" >
|
||||||
|
<wa-icon library="tabler" name="icons"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="format" type="button" title="Format (Shift-Alt-f)" icon-label="Format" >
|
||||||
|
<wa-icon library="tabler" name="align-justified"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
</wa-button-group>
|
||||||
|
|
||||||
|
<wa-button-group>
|
||||||
|
<wa-button id="sync" title="Sync changes to server">
|
||||||
|
<wa-icon library="codicon" name="sync"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="cmdList" title="Command and key mapping help">
|
||||||
|
<wa-icon library="codicon" name="record-keys"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button type="wa-button" popovertarget="popSettings" title="Settings">
|
||||||
|
<wa-icon library="codicon" name="settings"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="fullscreen" title="Full screen editor">
|
||||||
|
<wa-icon library="codicon" name="screen-full"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="bnSave" title="save view">
|
||||||
|
<wa-icon library="codicon" name="git-stash"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="bnLoad" title="load view">
|
||||||
|
<wa-icon library="codicon" name="git-stash-pop"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="bnWordAt" type="wa-button" title="word at">
|
||||||
|
<wa-icon library="codicon" name="whole-word"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
|
||||||
|
<wa-button id="bnDebug" title="Debug " icon-label="debug">
|
||||||
|
<wa-icon library="codicon" name="debug"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
</wa-button-group>
|
||||||
|
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Editor goes in here -->
|
||||||
|
<div id="editor"></div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<aside class="page-sidebar">
|
||||||
|
|
||||||
|
<details id="workspacePanel" open="open">
|
||||||
|
<summary class='bg-info'>WORKSPACE <i class='codicon codicon-kebab-vertical' style="float:right"></i>
|
||||||
|
</summary>
|
||||||
|
<quiet-listbox size="sm">
|
||||||
|
<quiet-listbox-item value="file:///some/file.xqm">file:///some/file.xqm</quiet-listbox-item>
|
||||||
|
<quiet-listbox-item value="2">Luna</quiet-listbox-item>
|
||||||
|
<quiet-listbox-item value="3">Meowy McGee</quiet-listbox-item>
|
||||||
|
<quiet-listbox-item value="4">Milo</quiet-listbox-item>
|
||||||
|
<quiet-listbox-item value="5">Mittens</quiet-listbox-item>
|
||||||
|
<quiet-listbox-item value="6">Oliver</quiet-listbox-item>
|
||||||
|
|
||||||
|
</quiet-listbox>
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details id="symPanel">
|
||||||
|
<summary>OUTLINE
|
||||||
|
<wa-dropdown id="symOptions" style="display:inline-block;float:right;">
|
||||||
|
<wa-icon id="symTrigger" library="tabler" name="dots-vertical" slot="trigger"></wa-icon>
|
||||||
|
<wa-dropdown-item type="checkbox" value="canvas" checked>Follow cursor</wa-dropdown-item>
|
||||||
|
|
||||||
|
<wa-divider></wa-divider>
|
||||||
|
<wa-dropdown-item type="checkbox" value="position" checked>sort by:
|
||||||
|
Position</wa-dropdown-item>
|
||||||
|
<wa-dropdown-item type="checkbox" value="name">sort by: Name</wa-dropdown-item>
|
||||||
|
<wa-dropdown-item type="checkbox" value="category">sort by: Category</wa-dropdown-item>
|
||||||
|
</wa-dropdown>
|
||||||
|
</summary>
|
||||||
|
<qd-list id="symList" style="flex-grow:1;"></qd-list>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details id="msgPanel">
|
||||||
|
<summary>MESSAGES
|
||||||
|
<i id="msgIcon" class='codicon codicon-kebab-vertical' style="float:right"></i>
|
||||||
|
</summary>
|
||||||
|
<qd-list id="msgList" style="flex-grow:1;"></qd-list>
|
||||||
|
</details>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<footer class="page-footer">
|
||||||
|
<div style="display:flex;">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label for="iFile">File:</label>
|
||||||
|
<input id="iFile" type="url" value="file:///some/file.xqm"
|
||||||
|
style="width:20em;display:inline-block;" />
|
||||||
|
|
||||||
|
<label for="symbols">Symbols:</label>
|
||||||
|
<select id="symbols" disabled="disabled" style="width:10em;display:inline-block;"></select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<wa-relative-time live id="relative-time__live" sync second="numeric" format='short'
|
||||||
|
style="width:10em;"></wa-relative-time>
|
||||||
|
<select id="language" style="width:10em;display:inline-block;">
|
||||||
|
<option selected>Language</option>
|
||||||
|
<option value="plaintext">plaintext</option>
|
||||||
|
<option value="xquery">xquery</option>
|
||||||
|
<option value="xml">xml</option>
|
||||||
|
</select>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- dialogs -->
|
||||||
|
<wa-popover id="popWeb" for="popover__url">
|
||||||
|
<div style="display:flex;background: #ffecb3;">
|
||||||
|
<div style="flex: 1 1 auto;">Load a document from the web</div>
|
||||||
|
<wa-button icon-label="Close" appearance="text" data-popover="close">
|
||||||
|
<wa-icon name="x"></wa-icon>
|
||||||
|
</wa-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form id="popUrl">
|
||||||
|
<quiet-text-field type="url" name="url" label="URL to fetch" placeholder="http://..." with-clear required
|
||||||
|
style="width: 20em;">
|
||||||
|
<datalist>
|
||||||
|
<option
|
||||||
|
value="https://raw.githubusercontent.com/expkg-zone58/pdfbox/refs/heads/main/src/Pdfbox3.xqm">
|
||||||
|
Pdfbox3.xqm (expkg-zone58/pdfbox) </option>
|
||||||
|
<option
|
||||||
|
value="https://raw.githubusercontent.com/Quodatum/xqdoca/refs/heads/master/src/main/lib/model.xqm">
|
||||||
|
model.xqm (Quodatum/xqdoca)</option>
|
||||||
|
<option
|
||||||
|
value="https://git.quodatum.duckdns.org/api/v1/repos/quodatum/basex-lsp/raw/webapp/lsp/lsp-text.xqm">
|
||||||
|
lsp-text.xqm (quodatum/basex-lsp FORGEIO)</option>
|
||||||
|
<option
|
||||||
|
value="https://git.quodatum.duckdns.org/api/v1/repos/quodatum/basex-lsp/raw/webapp/lsp/set.xqm">
|
||||||
|
set.xqm (quodatum/basex-lsp FORGEIO)</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="https://raw.githubusercontent.com/dnovatchev/Articles/refs/heads/main/Generators/Code/generator.xq">
|
||||||
|
generator.xquery</option>
|
||||||
|
</datalist>
|
||||||
|
</quiet-text-field>
|
||||||
|
<wa-button type="submit" variant="primary">Fetch</wa-button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</wa-popover>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Popovers -->
|
||||||
|
|
||||||
|
<dialog id="popConnect" popover>
|
||||||
|
<form>
|
||||||
|
<header>Connect to LSP
|
||||||
|
<button type="button" class="btn-close" aria-label="Close"
|
||||||
|
onclick="$('popConnect').hidePopover(); "></button>
|
||||||
|
</header>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div id="state">🔴</div>
|
||||||
|
<input id="iServer" type="text" style="width:25em" />
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button id="connect">connect</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</dialog>
|
||||||
|
|
||||||
|
<dialog id="popCmds" popover>
|
||||||
|
<form>
|
||||||
|
<header>Commands and keys
|
||||||
|
<button type="button" class="btn-close" aria-label="Close"
|
||||||
|
onclick="$('popCmds').hidePopover(); "></button>
|
||||||
|
</header>
|
||||||
|
<div id="popHelpInfo" class="modal-body" style="height: 50vh;overflow:scroll;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</dialog>
|
||||||
|
<dialog id="popAbout" popover>
|
||||||
|
<form>
|
||||||
|
<header>Help</header>
|
||||||
|
<div class="modal-body" style="height: 50vh;overflow:scroll;">
|
||||||
|
<p>TODO help info</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</dialog>
|
||||||
|
<!-- <popup-info id="popHelp">hhhh</popup-info> -->
|
||||||
|
|
||||||
|
<dialog id="popSettings" popover>
|
||||||
|
<form id="fSettings">
|
||||||
|
<header>Editor configuration
|
||||||
|
<button type="button" class="btn-close" aria-label="Close"
|
||||||
|
onclick="$('popSettings').hidePopover(); "></button>
|
||||||
|
</header>
|
||||||
|
<div class="modal-body">
|
||||||
|
|
||||||
|
<div class="mb-3 form-check">
|
||||||
|
<input name="wrapLines" type="checkbox" class="form-check-input" id="lineWrap">
|
||||||
|
<label class="form-check-label" for="lineWrap">Wrap lines</label>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 form-check">
|
||||||
|
<input name="highlightWhitespace" type="checkbox" class="form-check-input" id="highlightWhitespace">
|
||||||
|
<label class="form-check-label" for="highlightWhitespace">highlight Whitespace</label>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 form-check">
|
||||||
|
<input name="minimap" type="checkbox" class="form-check-input" id="minimap">
|
||||||
|
<label class="form-check-label" for="minimap">Show minimap</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="btn btn-primary">Apply</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</dialog>
|
||||||
|
<!-- CodeMirror 6 -->
|
||||||
|
<script src="./lsp.bundle.js"></script>
|
||||||
|
<script src="./script.js"></script>
|
||||||
|
<script src="./wc-qd-list.js"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M5.147 3.854C4.952 3.659 4.952 3.342 5.147 3.147L7.147 1.147C7.195 1.099 7.25 1.063 7.309 1.038C7.367 1.014 7.431 1 7.497 1H7.503C7.57 1 7.633 1.014 7.691 1.038C7.749 1.062 7.804 1.097 7.851 1.144L7.854 1.147L9.853 3.147C10.048 3.342 10.048 3.659 9.853 3.854C9.658 4.049 9.341 4.049 9.146 3.854L8 2.708V7.5C8 7.776 7.776 8 7.5 8C7.224 8 7 7.776 7 7.5V2.708L5.854 3.854C5.659 4.049 5.342 4.049 5.147 3.854ZM14 8.5V11.5C14 12.879 12.878 14 11.5 14H3.5C2.122 14 1 12.879 1 11.5V8.5C1 8.224 1.224 8 1.5 8H5.5C5.776 8 6 8.224 6 8.5C6 9.327 6.673 10 7.5 10C8.327 10 9 9.327 9 8.5C9 8.224 9.224 8 9.5 8H13.5C13.776 8 14 8.224 14 8.5ZM13 9H9.95C9.718 10.14 8.708 11 7.5 11C6.292 11 5.283 10.14 5.05 9H2V11.5C2 12.327 2.673 13 3.5 13H11.5C12.327 13 13 12.327 13 11.5V9Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 881 B |
1
webapp/static/clients/codicon@0.0.40/icons/git-stash.svg
Normal file
1
webapp/static/clients/codicon@0.0.40/icons/git-stash.svg
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M5.854 5.146L7 6.292V1.5C7 1.224 7.224 1 7.5 1C7.776 1 8 1.224 8 1.5V6.292L9.146 5.146C9.341 4.951 9.658 4.951 9.853 5.146C10.048 5.341 10.048 5.658 9.853 5.853L7.854 7.853L7.851 7.856C7.804 7.903 7.749 7.938 7.691 7.962C7.633 7.986 7.57 8 7.503 8H7.497C7.431 8 7.367 7.986 7.309 7.962C7.25 7.937 7.195 7.901 7.147 7.853L5.147 5.853C4.952 5.658 4.952 5.341 5.147 5.146C5.342 4.951 5.659 4.951 5.854 5.146ZM14 8.5V11.5C14 12.879 12.878 14 11.5 14H3.5C2.122 14 1 12.879 1 11.5V8.5C1 8.224 1.224 8 1.5 8H5.5C5.776 8 6 8.224 6 8.5C6 9.327 6.673 10 7.5 10C8.327 10 9 9.327 9 8.5C9 8.224 9.224 8 9.5 8H13.5C13.776 8 14 8.224 14 8.5ZM13 9H9.95C9.718 10.14 8.708 11 7.5 11C6.292 11 5.283 10.14 5.05 9H2V11.5C2 12.327 2.673 13 3.5 13H11.5C12.327 13 13 12.327 13 11.5V9Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 881 B |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M3.75 3C3.33579 3 3 3.33579 3 3.75V5.5C3 5.77614 2.77614 6 2.5 6C2.22386 6 2 5.77614 2 5.5V3.75C2 2.7835 2.7835 2 3.75 2H5.5C5.77614 2 6 2.22386 6 2.5C6 2.77614 5.77614 3 5.5 3H3.75ZM10 2.5C10 2.22386 10.2239 2 10.5 2H12.25C13.2165 2 14 2.7835 14 3.75V5.5C14 5.77614 13.7761 6 13.5 6C13.2239 6 13 5.77614 13 5.5V3.75C13 3.33579 12.6642 3 12.25 3H10.5C10.2239 3 10 2.77614 10 2.5ZM2.5 10C2.77614 10 3 10.2239 3 10.5V12.25C3 12.6642 3.33579 13 3.75 13H5.5C5.77614 13 6 13.2239 6 13.5C6 13.7761 5.77614 14 5.5 14H3.75C2.7835 14 2 13.2165 2 12.25V10.5C2 10.2239 2.22386 10 2.5 10ZM13.5 10C13.7761 10 14 10.2239 14 10.5V12.25C14 13.2165 13.2165 14 12.25 14H10.5C10.2239 14 10 13.7761 10 13.5C10 13.2239 10.2239 13 10.5 13H12.25C12.6642 13 13 12.6642 13 12.25V10.5C13 10.2239 13.2239 10 13.5 10Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 910 B |
1
webapp/static/clients/codicon@0.0.40/icons/settings.svg
Normal file
1
webapp/static/clients/codicon@0.0.40/icons/settings.svg
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M6 9.5C6.93191 9.5 7.71496 10.1374 7.93699 11L13.5 11C13.7761 11 14 11.2239 14 11.5C14 11.7455 13.8231 11.9496 13.5899 11.9919L13.5 12L7.93673 12.001C7.71435 12.8631 6.93155 13.5 6 13.5C5.06845 13.5 4.28565 12.8631 4.06327 12.001L2.5 12C2.22386 12 2 11.7761 2 11.5C2 11.2545 2.17688 11.0504 2.41012 11.0081L2.5 11L4.06301 11C4.28504 10.1374 5.06809 9.5 6 9.5ZM6 10.5C5.44772 10.5 5 10.9477 5 11.5C5 12.0523 5.44772 12.5 6 12.5C6.55228 12.5 7 12.0523 7 11.5C7 10.9477 6.55228 10.5 6 10.5ZM10 2.5C10.9319 2.5 11.715 3.13738 11.937 3.99998L13.5 4C13.7761 4 14 4.22386 14 4.5C14 4.74546 13.8231 4.94961 13.5899 4.99194L13.5 5L11.9367 5.00102C11.7144 5.86312 10.9316 6.5 10 6.5C9.06845 6.5 8.28565 5.86312 8.06327 5.00102L2.5 5C2.22386 5 2 4.77614 2 4.5C2 4.25454 2.17688 4.05039 2.41012 4.00806L2.5 4L8.06301 3.99998C8.28504 3.13738 9.06809 2.5 10 2.5ZM10 3.5C9.44772 3.5 9 3.94772 9 4.5C9 5.05228 9.44772 5.5 10 5.5C10.5523 5.5 11 5.05228 11 4.5C11 3.94772 10.5523 3.5 10 3.5Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M15.5 12.5C15.776 12.5 16 12.724 16 13V13.5C16 14.327 15.327 15 14.5 15H1.5C0.673 15 0 14.327 0 13.5V13C0 12.724 0.224 12.5 0.5 12.5C0.776 12.5 1 12.724 1 13V13.5C1 13.775 1.224 14 1.5 14H14.5C14.776 14 15 13.775 15 13.5V13C15 12.724 15.224 12.5 15.5 12.5Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M4.8584 5.6709C6.16516 5.73603 6.94308 6.48734 6.99707 7.69922L7 7.83594V11.5107C6.996 11.7596 6.80919 11.9649 6.56836 11.998L6.5 12.0029C6.24709 12.0029 6.038 11.8152 6.00488 11.5713L6 11.5029V11.4326C5.341 11.8096 4.73199 12.0029 4.16699 12.0029C2.941 12.0029 2 11.1399 2 9.83594C2.00003 8.68597 2.79247 7.83185 4.10645 7.67285C4.7283 7.59793 5.35918 7.64552 5.99902 7.81348C5.99202 7.07548 5.62762 6.70995 4.80762 6.66895C4.16686 6.637 3.7161 6.72717 3.45215 6.91211C3.22615 7.07111 2.91386 7.01604 2.75586 6.79004C2.5969 6.56404 2.65194 6.25174 2.87793 6.09375C3.31692 5.78579 3.91404 5.65006 4.66699 5.66406L4.8584 5.6709ZM5.79688 8.81836C5.25888 8.67037 4.73558 8.62843 4.22559 8.69043C3.40389 8.79054 2.99902 9.22747 2.99902 9.86035C2.99917 10.5911 3.47413 11.0273 4.16602 11.0273C4.62001 11.0273 5.17799 10.8168 5.83398 10.3848L5.99902 10.2725V8.87891L5.79688 8.81836Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9.55078 2.00586C9.78578 2.02986 9.97307 2.21715 9.99707 2.45215C10 2.46907 10 2.48601 10 2.50293V6.60254C10.418 6.22566 10.9371 6.00293 11.5 6.00293C12.881 6.00293 14 7.34596 14 9.00293C14 10.6599 12.881 12.0029 11.5 12.0029C10.9371 12.0029 10.418 11.7802 10 11.4033V11.5029C10 11.7619 9.80278 11.974 9.55078 12C9.53385 12.003 9.51693 12.0029 9.5 12.0029C9.224 12.0029 9 11.7789 9 11.5029V2.50293C9 2.486 9.00095 2.46907 9.00293 2.45215C9.02793 2.20015 9.241 2.00293 9.5 2.00293C9.51692 2.00293 9.53386 2.00388 9.55078 2.00586ZM11.4355 7.00391C11.0307 7.03208 10.5769 7.31545 10.29 7.82227C10.1232 8.12611 10.018 8.49479 10.002 8.89453C9.99995 8.92952 10 8.96597 10 9.00195C10 9.03795 10.001 9.07438 10.002 9.10938C10.018 9.50814 10.1222 9.87582 10.2891 10.1797C10.576 10.6875 11.0307 10.9728 11.4355 11C11.4565 11.002 11.478 11.002 11.5 11.002C11.522 11.002 11.5435 11.001 11.5645 11C11.9693 10.9728 12.424 10.6875 12.7109 10.1797C12.8778 9.87582 12.982 9.50814 12.998 9.10938C13 9.07438 13 9.03795 13 9.00195C13 8.96597 12.999 8.92952 12.998 8.89453C12.982 8.49479 12.8768 8.12611 12.71 7.82227C12.4231 7.31545 11.9693 7.03109 11.5645 7.00391C11.5435 7.00191 11.522 7.00195 11.5 7.00195C11.478 7.00195 11.4565 7.00291 11.4355 7.00391Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
Loading…
Add table
Reference in a new issue