@eclipse-docks/extension-command-palette 0.7.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command-palette-extension-CrESJkRj.js +418 -0
- package/dist/command-palette-extension-CrESJkRj.js.map +1 -0
- package/dist/command-palette-extension.d.ts +2 -0
- package/dist/command-palette-extension.d.ts.map +1 -0
- package/dist/commandpalette.de-Bv--GkIv.js +27 -0
- package/dist/commandpalette.de-Bv--GkIv.js.map +1 -0
- package/dist/commandpalette.en-BkZSMl1d.js +27 -0
- package/dist/commandpalette.en-BkZSMl1d.js.map +1 -0
- package/dist/docks-command-palette.d.ts +46 -0
- package/dist/docks-command-palette.d.ts.map +1 -0
- package/dist/i18n.de-BAIyaWGM.js +11 -0
- package/dist/i18n.de-BAIyaWGM.js.map +1 -0
- package/dist/i18n.en-4m_srIpA.js +11 -0
- package/dist/i18n.en-4m_srIpA.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import { DocksPart, TOOLBAR_MAIN_CENTER, commandRegistry, contributionRegistry, i18n, publish, registerAll, subscribe, toastError } from "@eclipse-docks/core";
|
|
2
|
+
import { css, html } from "lit";
|
|
3
|
+
import { customElement, state } from "lit/decorators.js";
|
|
4
|
+
import { createRef, ref } from "lit/directives/ref.js";
|
|
5
|
+
import _decorate from "@oxc-project/runtime/helpers/decorate";
|
|
6
|
+
import { html as html$1 } from "@eclipse-docks/core/externals/lit";
|
|
7
|
+
//#region src/docks-command-palette.ts
|
|
8
|
+
var t = await i18n(/* @__PURE__ */ Object.assign({
|
|
9
|
+
"./commandpalette.de.json": () => import("./commandpalette.de-Bv--GkIv.js"),
|
|
10
|
+
"./commandpalette.en.json": () => import("./commandpalette.en-BkZSMl1d.js")
|
|
11
|
+
}));
|
|
12
|
+
var TOPIC_OPEN_COMMAND_PALETTE = "commandpalette/open";
|
|
13
|
+
var DocksCommandPalette = class DocksCommandPalette extends DocksPart {
|
|
14
|
+
constructor(..._args) {
|
|
15
|
+
super(..._args);
|
|
16
|
+
this.inputValue = "";
|
|
17
|
+
this.filteredCommands = [];
|
|
18
|
+
this.allCommands = [];
|
|
19
|
+
this.showParameterPrompt = false;
|
|
20
|
+
this.selectedCommand = null;
|
|
21
|
+
this.parameterValues = {};
|
|
22
|
+
this.isPaletteOpen = false;
|
|
23
|
+
this.inputRef = createRef();
|
|
24
|
+
this.dialogRef = createRef();
|
|
25
|
+
}
|
|
26
|
+
async doInitUI() {
|
|
27
|
+
subscribe(TOPIC_OPEN_COMMAND_PALETTE, () => {
|
|
28
|
+
this.openPalette();
|
|
29
|
+
});
|
|
30
|
+
this.boundDocumentClickHandler = this.handleDocumentClick.bind(this);
|
|
31
|
+
document.addEventListener("click", this.boundDocumentClickHandler);
|
|
32
|
+
}
|
|
33
|
+
async handleDocumentClick(e) {
|
|
34
|
+
if (!this.isPaletteOpen && !this.showParameterPrompt) return;
|
|
35
|
+
await this.updateComplete;
|
|
36
|
+
const target = e.target;
|
|
37
|
+
if (this.contains(target)) return;
|
|
38
|
+
if (this.dialogRef.value) {
|
|
39
|
+
if (this.dialogRef.value.contains(target)) return;
|
|
40
|
+
}
|
|
41
|
+
let element = target;
|
|
42
|
+
while (element) {
|
|
43
|
+
if (element.tagName === "WA-DIALOG") return;
|
|
44
|
+
element = element.parentElement;
|
|
45
|
+
}
|
|
46
|
+
this.closePalette();
|
|
47
|
+
this.closeParameterPrompt();
|
|
48
|
+
}
|
|
49
|
+
handleDialogClick(e) {
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
}
|
|
52
|
+
handleInputFocus() {
|
|
53
|
+
requestAnimationFrame(() => {
|
|
54
|
+
this.isPaletteOpen = true;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
handleInputClick(e) {
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
this.openPalette();
|
|
60
|
+
}
|
|
61
|
+
handleInputMouseDown(e) {
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
}
|
|
64
|
+
updateCommandList() {
|
|
65
|
+
const commands = commandRegistry.listCommands(this.executionContext || {});
|
|
66
|
+
this.allCommands = Object.values(commands).filter((cmd) => cmd.id !== "commandpalette.open").map((cmd) => ({
|
|
67
|
+
id: cmd.id,
|
|
68
|
+
name: cmd.name,
|
|
69
|
+
description: cmd.description,
|
|
70
|
+
icon: cmd.icon,
|
|
71
|
+
keyBinding: cmd.keyBinding
|
|
72
|
+
}));
|
|
73
|
+
this.filteredCommands = [...this.allCommands];
|
|
74
|
+
}
|
|
75
|
+
async openPalette() {
|
|
76
|
+
this.executionContext = commandRegistry.createExecutionContext();
|
|
77
|
+
this.inputValue = "";
|
|
78
|
+
this.updateCommandList();
|
|
79
|
+
this.showParameterPrompt = false;
|
|
80
|
+
this.isPaletteOpen = true;
|
|
81
|
+
await this.updateComplete;
|
|
82
|
+
if (this.inputRef.value) this.inputRef.value.focus();
|
|
83
|
+
}
|
|
84
|
+
closePalette() {
|
|
85
|
+
this.isPaletteOpen = false;
|
|
86
|
+
this.inputValue = "";
|
|
87
|
+
this.showParameterPrompt = false;
|
|
88
|
+
this.executionContext = void 0;
|
|
89
|
+
}
|
|
90
|
+
handleInputChange(e) {
|
|
91
|
+
this.inputValue = e.target.value;
|
|
92
|
+
this.filterCommands();
|
|
93
|
+
}
|
|
94
|
+
filterCommands() {
|
|
95
|
+
if (!this.inputValue.trim()) this.filteredCommands = [...this.allCommands];
|
|
96
|
+
else {
|
|
97
|
+
const searchLower = this.inputValue.toLowerCase();
|
|
98
|
+
this.filteredCommands = this.allCommands.filter((cmd) => cmd.name.toLowerCase().includes(searchLower) || cmd.id.toLowerCase().includes(searchLower) || cmd.description && cmd.description.toLowerCase().includes(searchLower));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
handleKeyDown(e) {
|
|
102
|
+
if (e.key === "Escape") {
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
this.closePalette();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
handleCommandClick(e, command) {
|
|
108
|
+
if (!command) return;
|
|
109
|
+
e.stopPropagation();
|
|
110
|
+
this.inputValue = "";
|
|
111
|
+
this.filterCommands();
|
|
112
|
+
this.runCommand(command);
|
|
113
|
+
}
|
|
114
|
+
handleContainerClick(e) {
|
|
115
|
+
e.stopPropagation();
|
|
116
|
+
}
|
|
117
|
+
runCommand(command) {
|
|
118
|
+
if (!command) return;
|
|
119
|
+
const fullCommand = commandRegistry.getCommand(command.id);
|
|
120
|
+
if (fullCommand?.parameters && fullCommand.parameters.length > 0) {
|
|
121
|
+
this.selectedCommand = fullCommand;
|
|
122
|
+
this.parameterValues = {};
|
|
123
|
+
this.showParameterPrompt = true;
|
|
124
|
+
} else this.executeCommandWithParams(command.id, {});
|
|
125
|
+
}
|
|
126
|
+
executeCommandWithParams(commandId, params) {
|
|
127
|
+
try {
|
|
128
|
+
commandRegistry.execute(commandId, {
|
|
129
|
+
...this.executionContext || {},
|
|
130
|
+
params
|
|
131
|
+
});
|
|
132
|
+
this.closePalette();
|
|
133
|
+
this.closeParameterPrompt();
|
|
134
|
+
} catch (error) {
|
|
135
|
+
console.error("Failed to execute command:", error);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
closeParameterPrompt() {
|
|
139
|
+
this.showParameterPrompt = false;
|
|
140
|
+
this.selectedCommand = null;
|
|
141
|
+
this.parameterValues = {};
|
|
142
|
+
}
|
|
143
|
+
handleParameterInput(paramName, value) {
|
|
144
|
+
this.parameterValues = {
|
|
145
|
+
...this.parameterValues,
|
|
146
|
+
[paramName]: value
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
executeWithParameters() {
|
|
150
|
+
if (!this.selectedCommand) return;
|
|
151
|
+
const missingParams = this.selectedCommand.parameters?.filter((p) => p.required && !this.parameterValues[p.name]).map((p) => p.name);
|
|
152
|
+
if (missingParams && missingParams.length > 0) {
|
|
153
|
+
toastError(t.MISSING_REQUIRED_PARAMS({ params: missingParams.join(", ") }));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.executeCommandWithParams(this.selectedCommand.id, this.parameterValues);
|
|
157
|
+
}
|
|
158
|
+
renderContent() {
|
|
159
|
+
return html`
|
|
160
|
+
<wa-input
|
|
161
|
+
appearance="filled"
|
|
162
|
+
${ref(this.inputRef)}
|
|
163
|
+
placeholder="${t.PLACEHOLDER}"
|
|
164
|
+
.value=${this.inputValue}
|
|
165
|
+
@input=${this.handleInputChange}
|
|
166
|
+
@keydown=${this.handleKeyDown}
|
|
167
|
+
@focus=${this.handleInputFocus}
|
|
168
|
+
@click=${this.handleInputClick}
|
|
169
|
+
@mousedown=${this.handleInputMouseDown}
|
|
170
|
+
autocomplete="off"
|
|
171
|
+
size="small"
|
|
172
|
+
>
|
|
173
|
+
<wa-icon slot="start" name="terminal" label="Terminal"></wa-icon>
|
|
174
|
+
</wa-input>
|
|
175
|
+
|
|
176
|
+
<div class="commands-container ${this.isPaletteOpen ? "open" : ""}" @click=${this.handleContainerClick}>
|
|
177
|
+
${this.filteredCommands.length > 0 ? html`${this.filteredCommands.map((cmd) => html`
|
|
178
|
+
<div class="command-item" @click=${(e) => this.handleCommandClick(e, cmd)}>
|
|
179
|
+
${cmd.icon ? html`<div class="command-icon">
|
|
180
|
+
<wa-icon name="${cmd.icon}" label="${cmd.name}"></wa-icon>
|
|
181
|
+
</div>` : html`<div class="command-icon">
|
|
182
|
+
<wa-icon name="terminal" label="Command"></wa-icon>
|
|
183
|
+
</div>`}
|
|
184
|
+
<div class="command-info">
|
|
185
|
+
<div class="command-name">${cmd.name}</div>
|
|
186
|
+
<div class="command-id">${cmd.id}</div>
|
|
187
|
+
${cmd.description ? html`<div class="command-description">${cmd.description}</div>` : ""}
|
|
188
|
+
</div>
|
|
189
|
+
${cmd.keyBinding ? html`<div class="command-keybinding">${cmd.keyBinding}</div>` : ""}
|
|
190
|
+
</div>
|
|
191
|
+
`)}` : html`<div class="no-results">
|
|
192
|
+
<wa-icon
|
|
193
|
+
name="search"
|
|
194
|
+
label="${t.NO_COMMANDS_FOUND}"
|
|
195
|
+
style="font-size: 24px; margin-bottom: 4px; opacity: 0.3;"
|
|
196
|
+
></wa-icon>
|
|
197
|
+
<div>${t.NO_COMMANDS_FOUND}</div>
|
|
198
|
+
</div>`}
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
${this.showParameterPrompt && this.selectedCommand ? html`<wa-dialog
|
|
202
|
+
${ref(this.dialogRef)}
|
|
203
|
+
label="${this.selectedCommand.name} - ${t.PARAMETERS}"
|
|
204
|
+
open
|
|
205
|
+
@wa-request-close=${this.closeParameterPrompt}
|
|
206
|
+
@click=${this.handleDialogClick}
|
|
207
|
+
>
|
|
208
|
+
<div class="parameter-prompt-title">
|
|
209
|
+
${t.ENTER_PARAMETERS({ commandName: this.selectedCommand.name })}
|
|
210
|
+
</div>
|
|
211
|
+
${this.selectedCommand.parameters?.map((param) => html`<div class="parameter-field">
|
|
212
|
+
<wa-input
|
|
213
|
+
label="${param.name}${param.required ? " *" : ""}"
|
|
214
|
+
hint=${param.description || ""}
|
|
215
|
+
placeholder=${param.description || t.ENTER_PARAM({ paramName: param.name })}
|
|
216
|
+
.value=${this.parameterValues[param.name] || ""}
|
|
217
|
+
@input=${(e) => this.handleParameterInput(param.name, e.target.value)}
|
|
218
|
+
></wa-input>
|
|
219
|
+
</div>`)}
|
|
220
|
+
<div class="parameter-actions">
|
|
221
|
+
<wa-button variant="default" @click=${this.closeParameterPrompt}>${t.CANCEL}</wa-button>
|
|
222
|
+
<wa-button variant="primary" @click=${this.executeWithParameters}>${t.EXECUTE}</wa-button>
|
|
223
|
+
</div>
|
|
224
|
+
</wa-dialog>` : ""}
|
|
225
|
+
`;
|
|
226
|
+
}
|
|
227
|
+
doClose() {
|
|
228
|
+
if (this.boundDocumentClickHandler) document.removeEventListener("click", this.boundDocumentClickHandler);
|
|
229
|
+
}
|
|
230
|
+
static {
|
|
231
|
+
this.styles = css`
|
|
232
|
+
:host {
|
|
233
|
+
display: block;
|
|
234
|
+
width: 100%;
|
|
235
|
+
max-width: 600px;
|
|
236
|
+
min-width: 300px;
|
|
237
|
+
position: relative;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
wa-input {
|
|
241
|
+
max-width: 300px;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.commands-container {
|
|
245
|
+
position: absolute;
|
|
246
|
+
top: 100%;
|
|
247
|
+
left: 0;
|
|
248
|
+
right: 0;
|
|
249
|
+
margin-top: 4px;
|
|
250
|
+
background: var(--wa-color-neutral-05);
|
|
251
|
+
border: 1px solid var(--wa-color-neutral-25);
|
|
252
|
+
border-radius: 4px;
|
|
253
|
+
max-height: 400px;
|
|
254
|
+
overflow-y: auto;
|
|
255
|
+
z-index: 1000;
|
|
256
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.8);
|
|
257
|
+
display: none;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
:host-context(.wa-light) .commands-container {
|
|
261
|
+
background: var(--wa-color-neutral-95);
|
|
262
|
+
border: 1px solid var(--wa-color-neutral-75);
|
|
263
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.commands-container.open {
|
|
267
|
+
display: block;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.command-item {
|
|
271
|
+
display: flex;
|
|
272
|
+
align-items: center;
|
|
273
|
+
gap: 12px;
|
|
274
|
+
padding: 10px 16px;
|
|
275
|
+
cursor: pointer;
|
|
276
|
+
transition: background-color 0.15s;
|
|
277
|
+
border-bottom: 1px solid var(--wa-color-neutral-15);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
:host-context(.wa-light) .command-item {
|
|
281
|
+
border-bottom: 1px solid var(--wa-color-neutral-85);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.command-item:last-child {
|
|
285
|
+
border-bottom: none;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.command-item:hover {
|
|
289
|
+
background: var(--wa-color-neutral-20);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
:host-context(.wa-light) .command-item:hover {
|
|
293
|
+
background: var(--wa-color-neutral-80);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.command-icon {
|
|
297
|
+
flex-shrink: 0;
|
|
298
|
+
width: 20px;
|
|
299
|
+
height: 20px;
|
|
300
|
+
display: flex;
|
|
301
|
+
align-items: center;
|
|
302
|
+
justify-content: center;
|
|
303
|
+
opacity: 0.7;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.command-info {
|
|
307
|
+
flex: 1;
|
|
308
|
+
min-width: 0;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.command-name {
|
|
312
|
+
font-size: 14px;
|
|
313
|
+
font-weight: 500;
|
|
314
|
+
margin-bottom: 2px;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.command-id {
|
|
318
|
+
font-size: 11px;
|
|
319
|
+
opacity: 0.5;
|
|
320
|
+
font-family: monospace;
|
|
321
|
+
margin-bottom: 2px;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.command-description {
|
|
325
|
+
font-size: 12px;
|
|
326
|
+
opacity: 0.7;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.command-keybinding {
|
|
330
|
+
flex-shrink: 0;
|
|
331
|
+
margin-left: auto;
|
|
332
|
+
padding: 2px 8px;
|
|
333
|
+
background: var(--wa-color-neutral-15);
|
|
334
|
+
border: 1px solid var(--wa-color-neutral-25);
|
|
335
|
+
border-radius: 3px;
|
|
336
|
+
font-size: 11px;
|
|
337
|
+
font-family: monospace;
|
|
338
|
+
opacity: 0.7;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
:host-context(.wa-light) .command-keybinding {
|
|
342
|
+
background: var(--wa-color-neutral-85);
|
|
343
|
+
border: 1px solid var(--wa-color-neutral-75);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.no-results {
|
|
347
|
+
padding: 20px;
|
|
348
|
+
text-align: center;
|
|
349
|
+
color: var(--wa-color-neutral-60);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
:host-context(.wa-light) .no-results {
|
|
353
|
+
color: var(--wa-color-neutral-40);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
wa-dialog::part(panel) {
|
|
357
|
+
max-width: 600px;
|
|
358
|
+
width: 90vw;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
wa-dialog::part(body) {
|
|
362
|
+
padding: 20px;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.parameter-prompt-title {
|
|
366
|
+
font-size: 16px;
|
|
367
|
+
font-weight: 600;
|
|
368
|
+
margin-bottom: 16px;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.parameter-field {
|
|
372
|
+
margin-bottom: 12px;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.parameter-field wa-input {
|
|
376
|
+
width: 100%;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.parameter-actions {
|
|
380
|
+
display: flex;
|
|
381
|
+
gap: 8px;
|
|
382
|
+
justify-content: flex-end;
|
|
383
|
+
margin-top: 20px;
|
|
384
|
+
}
|
|
385
|
+
`;
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
_decorate([state()], DocksCommandPalette.prototype, "inputValue", void 0);
|
|
389
|
+
_decorate([state()], DocksCommandPalette.prototype, "filteredCommands", void 0);
|
|
390
|
+
_decorate([state()], DocksCommandPalette.prototype, "allCommands", void 0);
|
|
391
|
+
_decorate([state()], DocksCommandPalette.prototype, "showParameterPrompt", void 0);
|
|
392
|
+
_decorate([state()], DocksCommandPalette.prototype, "selectedCommand", void 0);
|
|
393
|
+
_decorate([state()], DocksCommandPalette.prototype, "parameterValues", void 0);
|
|
394
|
+
_decorate([state()], DocksCommandPalette.prototype, "isPaletteOpen", void 0);
|
|
395
|
+
DocksCommandPalette = _decorate([customElement("docks-command-palette")], DocksCommandPalette);
|
|
396
|
+
//#endregion
|
|
397
|
+
//#region src/command-palette-extension.ts
|
|
398
|
+
registerAll({
|
|
399
|
+
command: {
|
|
400
|
+
id: "commandpalette.open",
|
|
401
|
+
name: t.OPEN_COMMAND_PALETTE,
|
|
402
|
+
description: t.OPEN_COMMAND_PALETTE_DESC,
|
|
403
|
+
icon: "terminal",
|
|
404
|
+
keyBinding: "CTRL+SHIFT+P"
|
|
405
|
+
},
|
|
406
|
+
handler: { execute: () => {
|
|
407
|
+
publish(TOPIC_OPEN_COMMAND_PALETTE, null);
|
|
408
|
+
return null;
|
|
409
|
+
} }
|
|
410
|
+
});
|
|
411
|
+
contributionRegistry.registerContribution(TOOLBAR_MAIN_CENTER, {
|
|
412
|
+
label: "Command Palette",
|
|
413
|
+
icon: "terminal",
|
|
414
|
+
component: () => html$1`<docks-command-palette></docks-command-palette>`
|
|
415
|
+
});
|
|
416
|
+
//#endregion
|
|
417
|
+
|
|
418
|
+
//# sourceMappingURL=command-palette-extension-CrESJkRj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette-extension-CrESJkRj.js","names":[],"sources":["../src/docks-command-palette.ts","../src/command-palette-extension.ts"],"sourcesContent":["import { html } from \"lit\";\nimport { css } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { createRef, ref, type Ref } from \"lit/directives/ref.js\";\nimport { DocksPart } from \"@eclipse-docks/core\";\nimport { subscribe } from \"@eclipse-docks/core\";\nimport { commandRegistry, type ExecutionContext } from \"@eclipse-docks/core\";\nimport { i18n } from \"@eclipse-docks/core\";\nimport { toastError } from \"@eclipse-docks/core\";\n\nexport const t = await i18n(import.meta.glob(\"./commandpalette*.json\"));\n\n// Event topic for opening the command palette\nexport const TOPIC_OPEN_COMMAND_PALETTE = \"commandpalette/open\";\n\n@customElement(\"docks-command-palette\")\nexport class DocksCommandPalette extends DocksPart {\n @state()\n private inputValue: string = \"\";\n\n @state()\n private filteredCommands: any[] = [];\n\n @state()\n private allCommands: any[] = [];\n\n @state()\n private showParameterPrompt: boolean = false;\n\n @state()\n private selectedCommand: any = null;\n\n @state()\n private parameterValues: { [key: string]: string } = {};\n\n @state()\n private isPaletteOpen: boolean = false;\n\n private inputRef: Ref<any> = createRef();\n private dialogRef: Ref<any> = createRef();\n private boundDocumentClickHandler?: (e: MouseEvent) => void;\n private executionContext: ExecutionContext | undefined;\n\n protected async doInitUI() {\n subscribe(TOPIC_OPEN_COMMAND_PALETTE, () => {\n this.openPalette();\n });\n\n this.boundDocumentClickHandler = this.handleDocumentClick.bind(this);\n document.addEventListener(\"click\", this.boundDocumentClickHandler);\n }\n\n private async handleDocumentClick(e: MouseEvent) {\n if (!this.isPaletteOpen && !this.showParameterPrompt) return;\n\n await this.updateComplete;\n const target = e.target as Node;\n\n if (this.contains(target)) return;\n\n if (this.dialogRef.value) {\n const dialog = this.dialogRef.value as HTMLElement;\n if (dialog.contains(target)) return;\n }\n\n let element = target as HTMLElement;\n while (element) {\n if (element.tagName === \"WA-DIALOG\") return;\n element = element.parentElement as HTMLElement;\n }\n\n this.closePalette();\n this.closeParameterPrompt();\n }\n\n private handleDialogClick(e: Event) {\n e.stopPropagation();\n }\n\n private handleInputFocus() {\n requestAnimationFrame(() => {\n this.isPaletteOpen = true;\n });\n }\n\n private handleInputClick(e: Event) {\n e.stopPropagation();\n this.openPalette();\n }\n\n private handleInputMouseDown(e: Event) {\n e.stopPropagation();\n }\n\n private updateCommandList() {\n const commands = commandRegistry.listCommands(this.executionContext || {});\n this.allCommands = Object.values(commands)\n .filter((cmd: any) => cmd.id !== \"commandpalette.open\")\n .map((cmd: any) => ({\n id: cmd.id,\n name: cmd.name,\n description: cmd.description,\n icon: cmd.icon,\n keyBinding: cmd.keyBinding,\n }));\n\n this.filteredCommands = [...this.allCommands];\n }\n\n public async openPalette() {\n this.executionContext = commandRegistry.createExecutionContext();\n this.inputValue = \"\";\n this.updateCommandList();\n this.showParameterPrompt = false;\n this.isPaletteOpen = true;\n\n await this.updateComplete;\n\n if (this.inputRef.value) {\n this.inputRef.value.focus();\n }\n }\n\n private closePalette() {\n this.isPaletteOpen = false;\n this.inputValue = \"\";\n this.showParameterPrompt = false;\n this.executionContext = undefined;\n }\n\n private handleInputChange(e: Event) {\n const input = e.target as any;\n this.inputValue = input.value;\n this.filterCommands();\n }\n\n private filterCommands() {\n if (!this.inputValue.trim()) {\n this.filteredCommands = [...this.allCommands];\n } else {\n const searchLower = this.inputValue.toLowerCase();\n this.filteredCommands = this.allCommands.filter(\n (cmd) =>\n cmd.name.toLowerCase().includes(searchLower) ||\n cmd.id.toLowerCase().includes(searchLower) ||\n (cmd.description && cmd.description.toLowerCase().includes(searchLower)),\n );\n }\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n this.closePalette();\n }\n }\n\n private handleCommandClick(e: Event, command: any) {\n if (!command) return;\n e.stopPropagation();\n this.inputValue = \"\";\n this.filterCommands();\n this.runCommand(command);\n }\n\n private handleContainerClick(e: Event) {\n e.stopPropagation();\n }\n\n private runCommand(command: any) {\n if (!command) return;\n\n const fullCommand = commandRegistry.getCommand(command.id);\n const hasParameters = fullCommand?.parameters && fullCommand.parameters.length > 0;\n\n if (hasParameters) {\n this.selectedCommand = fullCommand;\n this.parameterValues = {};\n this.showParameterPrompt = true;\n } else {\n this.executeCommandWithParams(command.id, {});\n }\n }\n\n private executeCommandWithParams(commandId: string, params: any) {\n try {\n commandRegistry.execute(commandId, { ...(this.executionContext || {}), params });\n this.closePalette();\n this.closeParameterPrompt();\n } catch (error: any) {\n console.error(\"Failed to execute command:\", error);\n }\n }\n\n private closeParameterPrompt() {\n this.showParameterPrompt = false;\n this.selectedCommand = null;\n this.parameterValues = {};\n }\n\n private handleParameterInput(paramName: string, value: string) {\n this.parameterValues = {\n ...this.parameterValues,\n [paramName]: value,\n };\n }\n\n private executeWithParameters() {\n if (!this.selectedCommand) return;\n\n const missingParams = this.selectedCommand.parameters\n ?.filter((p: any) => p.required && !this.parameterValues[p.name])\n .map((p: any) => p.name);\n\n if (missingParams && missingParams.length > 0) {\n toastError(t.MISSING_REQUIRED_PARAMS({ params: missingParams.join(\", \") }));\n return;\n }\n\n this.executeCommandWithParams(this.selectedCommand.id, this.parameterValues);\n }\n\n protected renderContent() {\n return html`\n <wa-input\n appearance=\"filled\"\n ${ref(this.inputRef)}\n placeholder=\"${t.PLACEHOLDER}\"\n .value=${this.inputValue}\n @input=${this.handleInputChange}\n @keydown=${this.handleKeyDown}\n @focus=${this.handleInputFocus}\n @click=${this.handleInputClick}\n @mousedown=${this.handleInputMouseDown}\n autocomplete=\"off\"\n size=\"small\"\n >\n <wa-icon slot=\"start\" name=\"terminal\" label=\"Terminal\"></wa-icon>\n </wa-input>\n\n <div class=\"commands-container ${this.isPaletteOpen ? \"open\" : \"\"}\" @click=${this.handleContainerClick}>\n ${this.filteredCommands.length > 0\n ? html`${this.filteredCommands.map(\n (cmd) => html`\n <div class=\"command-item\" @click=${(e: Event) => this.handleCommandClick(e, cmd)}>\n ${cmd.icon\n ? html`<div class=\"command-icon\">\n <wa-icon name=\"${cmd.icon}\" label=\"${cmd.name}\"></wa-icon>\n </div>`\n : html`<div class=\"command-icon\">\n <wa-icon name=\"terminal\" label=\"Command\"></wa-icon>\n </div>`}\n <div class=\"command-info\">\n <div class=\"command-name\">${cmd.name}</div>\n <div class=\"command-id\">${cmd.id}</div>\n ${cmd.description\n ? html`<div class=\"command-description\">${cmd.description}</div>`\n : \"\"}\n </div>\n ${cmd.keyBinding\n ? html`<div class=\"command-keybinding\">${cmd.keyBinding}</div>`\n : \"\"}\n </div>\n `,\n )}`\n : html`<div class=\"no-results\">\n <wa-icon\n name=\"search\"\n label=\"${t.NO_COMMANDS_FOUND}\"\n style=\"font-size: 24px; margin-bottom: 4px; opacity: 0.3;\"\n ></wa-icon>\n <div>${t.NO_COMMANDS_FOUND}</div>\n </div>`}\n </div>\n\n ${this.showParameterPrompt && this.selectedCommand\n ? html`<wa-dialog\n ${ref(this.dialogRef)}\n label=\"${this.selectedCommand.name} - ${t.PARAMETERS}\"\n open\n @wa-request-close=${this.closeParameterPrompt}\n @click=${this.handleDialogClick}\n >\n <div class=\"parameter-prompt-title\">\n ${t.ENTER_PARAMETERS({ commandName: this.selectedCommand.name })}\n </div>\n ${this.selectedCommand.parameters?.map(\n (param: any) => html`<div class=\"parameter-field\">\n <wa-input\n label=\"${param.name}${param.required ? \" *\" : \"\"}\"\n hint=${param.description || \"\"}\n placeholder=${param.description || t.ENTER_PARAM({ paramName: param.name })}\n .value=${this.parameterValues[param.name] || \"\"}\n @input=${(e: Event) => this.handleParameterInput(param.name, (e.target as any).value)}\n ></wa-input>\n </div>`,\n )}\n <div class=\"parameter-actions\">\n <wa-button variant=\"default\" @click=${this.closeParameterPrompt}>${t.CANCEL}</wa-button>\n <wa-button variant=\"primary\" @click=${this.executeWithParameters}>${t.EXECUTE}</wa-button>\n </div>\n </wa-dialog>`\n : \"\"}\n `;\n }\n\n protected doClose() {\n if (this.boundDocumentClickHandler) {\n document.removeEventListener(\"click\", this.boundDocumentClickHandler);\n }\n }\n\n static styles = css`\n :host {\n display: block;\n width: 100%;\n max-width: 600px;\n min-width: 300px;\n position: relative;\n }\n\n wa-input {\n max-width: 300px;\n }\n\n .commands-container {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n margin-top: 4px;\n background: var(--wa-color-neutral-05);\n border: 1px solid var(--wa-color-neutral-25);\n border-radius: 4px;\n max-height: 400px;\n overflow-y: auto;\n z-index: 1000;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.8);\n display: none;\n }\n\n :host-context(.wa-light) .commands-container {\n background: var(--wa-color-neutral-95);\n border: 1px solid var(--wa-color-neutral-75);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);\n }\n\n .commands-container.open {\n display: block;\n }\n\n .command-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background-color 0.15s;\n border-bottom: 1px solid var(--wa-color-neutral-15);\n }\n\n :host-context(.wa-light) .command-item {\n border-bottom: 1px solid var(--wa-color-neutral-85);\n }\n\n .command-item:last-child {\n border-bottom: none;\n }\n\n .command-item:hover {\n background: var(--wa-color-neutral-20);\n }\n\n :host-context(.wa-light) .command-item:hover {\n background: var(--wa-color-neutral-80);\n }\n\n .command-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.7;\n }\n\n .command-info {\n flex: 1;\n min-width: 0;\n }\n\n .command-name {\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 2px;\n }\n\n .command-id {\n font-size: 11px;\n opacity: 0.5;\n font-family: monospace;\n margin-bottom: 2px;\n }\n\n .command-description {\n font-size: 12px;\n opacity: 0.7;\n }\n\n .command-keybinding {\n flex-shrink: 0;\n margin-left: auto;\n padding: 2px 8px;\n background: var(--wa-color-neutral-15);\n border: 1px solid var(--wa-color-neutral-25);\n border-radius: 3px;\n font-size: 11px;\n font-family: monospace;\n opacity: 0.7;\n }\n\n :host-context(.wa-light) .command-keybinding {\n background: var(--wa-color-neutral-85);\n border: 1px solid var(--wa-color-neutral-75);\n }\n\n .no-results {\n padding: 20px;\n text-align: center;\n color: var(--wa-color-neutral-60);\n }\n\n :host-context(.wa-light) .no-results {\n color: var(--wa-color-neutral-40);\n }\n\n wa-dialog::part(panel) {\n max-width: 600px;\n width: 90vw;\n }\n\n wa-dialog::part(body) {\n padding: 20px;\n }\n\n .parameter-prompt-title {\n font-size: 16px;\n font-weight: 600;\n margin-bottom: 16px;\n }\n\n .parameter-field {\n margin-bottom: 12px;\n }\n\n .parameter-field wa-input {\n width: 100%;\n }\n\n .parameter-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 20px;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"docks-command-palette\": DocksCommandPalette;\n }\n}\n","import { contributionRegistry, registerAll, TOOLBAR_MAIN_CENTER, publish } from \"@eclipse-docks/core\";\nimport { t, TOPIC_OPEN_COMMAND_PALETTE } from \"./docks-command-palette\";\nimport { html } from \"@eclipse-docks/core/externals/lit\";\n\nregisterAll({\n command: {\n id: \"commandpalette.open\",\n name: t.OPEN_COMMAND_PALETTE,\n description: t.OPEN_COMMAND_PALETTE_DESC,\n icon: \"terminal\",\n keyBinding: \"CTRL+SHIFT+P\",\n },\n handler: {\n execute: () => {\n publish(TOPIC_OPEN_COMMAND_PALETTE, null);\n return null;\n },\n },\n});\n\ncontributionRegistry.registerContribution(TOOLBAR_MAIN_CENTER, {\n label: \"Command Palette\",\n icon: \"terminal\",\n component: () => html`<docks-command-palette></docks-command-palette>`,\n});\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette-extension.d.ts","sourceRoot":"","sources":["../src/command-palette-extension.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/commandpalette.de.json
|
|
2
|
+
var PLACEHOLDER = "Befehlsname eingeben...";
|
|
3
|
+
var NO_COMMANDS_FOUND = "Keine Befehle gefunden";
|
|
4
|
+
var PARAMETERS = "Parameter";
|
|
5
|
+
var ENTER_PARAMETERS = "Parameter für {commandName} eingeben";
|
|
6
|
+
var CANCEL = "Abbrechen";
|
|
7
|
+
var EXECUTE = "Ausführen";
|
|
8
|
+
var OPEN_COMMAND_PALETTE = "Befehls-Palette öffnen";
|
|
9
|
+
var OPEN_COMMAND_PALETTE_DESC = "Öffnet die Befehls-Palette zum Ausführen von Befehlen";
|
|
10
|
+
var MISSING_REQUIRED_PARAMS = "Erforderliche Parameter fehlen: {params}";
|
|
11
|
+
var ENTER_PARAM = "{paramName} eingeben";
|
|
12
|
+
var commandpalette_de_default = {
|
|
13
|
+
PLACEHOLDER,
|
|
14
|
+
NO_COMMANDS_FOUND,
|
|
15
|
+
PARAMETERS,
|
|
16
|
+
ENTER_PARAMETERS,
|
|
17
|
+
CANCEL,
|
|
18
|
+
EXECUTE,
|
|
19
|
+
OPEN_COMMAND_PALETTE,
|
|
20
|
+
OPEN_COMMAND_PALETTE_DESC,
|
|
21
|
+
MISSING_REQUIRED_PARAMS,
|
|
22
|
+
ENTER_PARAM
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { CANCEL, ENTER_PARAM, ENTER_PARAMETERS, EXECUTE, MISSING_REQUIRED_PARAMS, NO_COMMANDS_FOUND, OPEN_COMMAND_PALETTE, OPEN_COMMAND_PALETTE_DESC, PARAMETERS, PLACEHOLDER, commandpalette_de_default as default };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=commandpalette.de-Bv--GkIv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandpalette.de-Bv--GkIv.js","names":[],"sources":["../src/commandpalette.de.json"],"sourcesContent":["{\n \"PLACEHOLDER\": \"Befehlsname eingeben...\",\n \"NO_COMMANDS_FOUND\": \"Keine Befehle gefunden\",\n \"PARAMETERS\": \"Parameter\",\n \"ENTER_PARAMETERS\": \"Parameter für {commandName} eingeben\",\n \"CANCEL\": \"Abbrechen\",\n \"EXECUTE\": \"Ausführen\",\n \"OPEN_COMMAND_PALETTE\": \"Befehls-Palette öffnen\",\n \"OPEN_COMMAND_PALETTE_DESC\": \"Öffnet die Befehls-Palette zum Ausführen von Befehlen\",\n \"MISSING_REQUIRED_PARAMS\": \"Erforderliche Parameter fehlen: {params}\",\n \"ENTER_PARAM\": \"{paramName} eingeben\"\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/commandpalette.en.json
|
|
2
|
+
var PLACEHOLDER = "Type a command name...";
|
|
3
|
+
var NO_COMMANDS_FOUND = "No commands found";
|
|
4
|
+
var PARAMETERS = "Parameters";
|
|
5
|
+
var ENTER_PARAMETERS = "Enter parameters for {commandName}";
|
|
6
|
+
var CANCEL = "Cancel";
|
|
7
|
+
var EXECUTE = "Execute";
|
|
8
|
+
var OPEN_COMMAND_PALETTE = "Open Command Palette";
|
|
9
|
+
var OPEN_COMMAND_PALETTE_DESC = "Opens the command palette to execute commands";
|
|
10
|
+
var MISSING_REQUIRED_PARAMS = "Missing required parameters: {params}";
|
|
11
|
+
var ENTER_PARAM = "Enter {paramName}";
|
|
12
|
+
var commandpalette_en_default = {
|
|
13
|
+
PLACEHOLDER,
|
|
14
|
+
NO_COMMANDS_FOUND,
|
|
15
|
+
PARAMETERS,
|
|
16
|
+
ENTER_PARAMETERS,
|
|
17
|
+
CANCEL,
|
|
18
|
+
EXECUTE,
|
|
19
|
+
OPEN_COMMAND_PALETTE,
|
|
20
|
+
OPEN_COMMAND_PALETTE_DESC,
|
|
21
|
+
MISSING_REQUIRED_PARAMS,
|
|
22
|
+
ENTER_PARAM
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { CANCEL, ENTER_PARAM, ENTER_PARAMETERS, EXECUTE, MISSING_REQUIRED_PARAMS, NO_COMMANDS_FOUND, OPEN_COMMAND_PALETTE, OPEN_COMMAND_PALETTE_DESC, PARAMETERS, PLACEHOLDER, commandpalette_en_default as default };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=commandpalette.en-BkZSMl1d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandpalette.en-BkZSMl1d.js","names":[],"sources":["../src/commandpalette.en.json"],"sourcesContent":["{\n \"PLACEHOLDER\": \"Type a command name...\",\n \"NO_COMMANDS_FOUND\": \"No commands found\",\n \"PARAMETERS\": \"Parameters\",\n \"ENTER_PARAMETERS\": \"Enter parameters for {commandName}\",\n \"CANCEL\": \"Cancel\",\n \"EXECUTE\": \"Execute\",\n \"OPEN_COMMAND_PALETTE\": \"Open Command Palette\",\n \"OPEN_COMMAND_PALETTE_DESC\": \"Opens the command palette to execute commands\",\n \"MISSING_REQUIRED_PARAMS\": \"Missing required parameters: {params}\",\n \"ENTER_PARAM\": \"Enter {paramName}\"\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DocksPart } from '@eclipse-docks/core';
|
|
2
|
+
export declare const t: {
|
|
3
|
+
[x: string]: string & ((params?: Record<string, string>) => string);
|
|
4
|
+
};
|
|
5
|
+
export declare const TOPIC_OPEN_COMMAND_PALETTE = "commandpalette/open";
|
|
6
|
+
export declare class DocksCommandPalette extends DocksPart {
|
|
7
|
+
private inputValue;
|
|
8
|
+
private filteredCommands;
|
|
9
|
+
private allCommands;
|
|
10
|
+
private showParameterPrompt;
|
|
11
|
+
private selectedCommand;
|
|
12
|
+
private parameterValues;
|
|
13
|
+
private isPaletteOpen;
|
|
14
|
+
private inputRef;
|
|
15
|
+
private dialogRef;
|
|
16
|
+
private boundDocumentClickHandler?;
|
|
17
|
+
private executionContext;
|
|
18
|
+
protected doInitUI(): Promise<void>;
|
|
19
|
+
private handleDocumentClick;
|
|
20
|
+
private handleDialogClick;
|
|
21
|
+
private handleInputFocus;
|
|
22
|
+
private handleInputClick;
|
|
23
|
+
private handleInputMouseDown;
|
|
24
|
+
private updateCommandList;
|
|
25
|
+
openPalette(): Promise<void>;
|
|
26
|
+
private closePalette;
|
|
27
|
+
private handleInputChange;
|
|
28
|
+
private filterCommands;
|
|
29
|
+
private handleKeyDown;
|
|
30
|
+
private handleCommandClick;
|
|
31
|
+
private handleContainerClick;
|
|
32
|
+
private runCommand;
|
|
33
|
+
private executeCommandWithParams;
|
|
34
|
+
private closeParameterPrompt;
|
|
35
|
+
private handleParameterInput;
|
|
36
|
+
private executeWithParameters;
|
|
37
|
+
protected renderContent(): import('lit-html').TemplateResult<1>;
|
|
38
|
+
protected doClose(): void;
|
|
39
|
+
static styles: import('lit').CSSResult;
|
|
40
|
+
}
|
|
41
|
+
declare global {
|
|
42
|
+
interface HTMLElementTagNameMap {
|
|
43
|
+
"docks-command-palette": DocksCommandPalette;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=docks-command-palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docks-command-palette.d.ts","sourceRoot":"","sources":["../src/docks-command-palette.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMhD,eAAO,MAAM,CAAC;;CAAyD,CAAC;AAGxE,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAEhE,qBACa,mBAAoB,SAAQ,SAAS;IAEhD,OAAO,CAAC,UAAU,CAAc;IAGhC,OAAO,CAAC,gBAAgB,CAAa;IAGrC,OAAO,CAAC,WAAW,CAAa;IAGhC,OAAO,CAAC,mBAAmB,CAAkB;IAG7C,OAAO,CAAC,eAAe,CAAa;IAGpC,OAAO,CAAC,eAAe,CAAiC;IAGxD,OAAO,CAAC,aAAa,CAAkB;IAEvC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,yBAAyB,CAAC,CAA0B;IAC5D,OAAO,CAAC,gBAAgB,CAA+B;cAEvC,QAAQ;YASV,mBAAmB;IAuBjC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,iBAAiB;IAeZ,WAAW;IAcxB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,qBAAqB;IAe7B,SAAS,CAAC,aAAa;IAoFvB,SAAS,CAAC,OAAO;IAMjB,MAAM,CAAC,MAAM,0BA0JX;CACH;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,mBAAmB,CAAC;KAC9C;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/i18n.de.json
|
|
2
|
+
var EXT_COMMANDPALETTE_NAME = "Befehls-Palette";
|
|
3
|
+
var EXT_COMMANDPALETTE_DESC = "VS Code-ähnliche Befehls-Palette oben in der Mitte für schnelle Befehlsausführung (Strg+Umschalt+P)";
|
|
4
|
+
var i18n_de_default = {
|
|
5
|
+
EXT_COMMANDPALETTE_NAME,
|
|
6
|
+
EXT_COMMANDPALETTE_DESC
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { EXT_COMMANDPALETTE_DESC, EXT_COMMANDPALETTE_NAME, i18n_de_default as default };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=i18n.de-BAIyaWGM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.de-BAIyaWGM.js","names":[],"sources":["../src/i18n.de.json"],"sourcesContent":["{\n \"EXT_COMMANDPALETTE_NAME\": \"Befehls-Palette\",\n \"EXT_COMMANDPALETTE_DESC\": \"VS Code-ähnliche Befehls-Palette oben in der Mitte für schnelle Befehlsausführung (Strg+Umschalt+P)\"\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/i18n.en.json
|
|
2
|
+
var EXT_COMMANDPALETTE_NAME = "Command Palette";
|
|
3
|
+
var EXT_COMMANDPALETTE_DESC = "VS Code-style command palette at the top center for quick command execution (Ctrl+Shift+P)";
|
|
4
|
+
var i18n_en_default = {
|
|
5
|
+
EXT_COMMANDPALETTE_NAME,
|
|
6
|
+
EXT_COMMANDPALETTE_DESC
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { EXT_COMMANDPALETTE_DESC, EXT_COMMANDPALETTE_NAME, i18n_en_default as default };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=i18n.en-4m_srIpA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.en-4m_srIpA.js","names":[],"sources":["../src/i18n.en.json"],"sourcesContent":["{\n \"EXT_COMMANDPALETTE_NAME\": \"Command Palette\",\n \"EXT_COMMANDPALETTE_DESC\": \"VS Code-style command palette at the top center for quick command execution (Ctrl+Shift+P)\"\n}\n"],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { extensionRegistry, i18n } from "@eclipse-docks/core";
|
|
2
|
+
import pkg from "../package.json";
|
|
3
|
+
//#region src/index.ts
|
|
4
|
+
var t = await i18n(/* @__PURE__ */ Object.assign({
|
|
5
|
+
"./i18n.de.json": () => import("./i18n.de-BAIyaWGM.js"),
|
|
6
|
+
"./i18n.en.json": () => import("./i18n.en-4m_srIpA.js")
|
|
7
|
+
}), true);
|
|
8
|
+
extensionRegistry.registerExtension({
|
|
9
|
+
id: pkg.name,
|
|
10
|
+
name: t.EXT_COMMANDPALETTE_NAME,
|
|
11
|
+
description: t.EXT_COMMANDPALETTE_DESC,
|
|
12
|
+
loader: () => import("./command-palette-extension-CrESJkRj.js"),
|
|
13
|
+
icon: "terminal"
|
|
14
|
+
});
|
|
15
|
+
//#endregion
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { extensionRegistry, i18n } from '@eclipse-docks/core';\nimport pkg from '../package.json';\n\nconst t = await i18n(import.meta.glob('./i18n*.json'), true);\n\nextensionRegistry.registerExtension({\n id: pkg.name,\n name: t.EXT_COMMANDPALETTE_NAME,\n description: t.EXT_COMMANDPALETTE_DESC,\n loader: () => import(\"./command-palette-extension\"),\n icon: \"terminal\",\n \n \n});\n"],"mappings":";;;AAGA,IAAM,IAAI,MAAM,KAAK,uBAAA,OAAA;CAAA,wBAAA,OAAA;CAAA,wBAAA,OAAA;CAAA,CAAgC,EAAE,KAAK;AAE5D,kBAAkB,kBAAkB;CAClC,IAAI,IAAI;CACR,MAAM,EAAE;CACR,aAAa,EAAE;CACf,cAAc,OAAO;CACrB,MAAM;CAGP,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eclipse-docks/extension-command-palette",
|
|
3
|
+
"version": "0.7.68",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "vite build"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@eclipse-docks/core": "*"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"typescript": "^6.0.0",
|
|
25
|
+
"vite": "^8.0.0",
|
|
26
|
+
"vite-plugin-dts": "^4.5.4"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/eclipse-docks/core"
|
|
31
|
+
}
|
|
32
|
+
}
|