monaco-lsp-bridge 0.0.1

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.
@@ -0,0 +1,576 @@
1
+ import { toMonacoCompletionItem, toLspPosition, toLspRange, toLspCompletionItem, mergeResolvedCompletionItem, toMonacoMarkers, toMonacoTextEdits, lspHoverToMonaco, } from './util.js';
2
+ import { LspTransport } from './transport.js';
3
+ export * from './transport.js';
4
+ export class LspMonacoClient {
5
+ options;
6
+ static CLIENT_NAME = 'monaco-lsp-bridge';
7
+ static CLIENT_VERSION = '0.0.1';
8
+ editor = null;
9
+ monaco = null;
10
+ binding;
11
+ endpoint;
12
+ openDocuments = new Set(); // Track opened document URIs
13
+ initialized = false;
14
+ eventHandlers = new Set();
15
+ syncKind = 0; // 0=None, 1=Full, 2=Incremental
16
+ MARKER_OWNER = 'lsp-diagnostics';
17
+ /** Construct a Monaco LSP client bound to an endpoint */
18
+ constructor(endpoint, options) {
19
+ this.options = options;
20
+ this.endpoint = endpoint;
21
+ this.binding = LspTransport.infer(endpoint);
22
+ }
23
+ /** Register an event handler for client events */
24
+ onEvent(handler) {
25
+ this.eventHandlers.add(handler);
26
+ return () => this.eventHandlers.delete(handler);
27
+ }
28
+ /** Emit an event to all registered handlers */
29
+ emit(event) {
30
+ for (const handler of this.eventHandlers) {
31
+ try {
32
+ handler(event);
33
+ }
34
+ catch (error) {
35
+ // Prevent handler errors from breaking the client
36
+ console.error('Event handler error:', error);
37
+ }
38
+ }
39
+ }
40
+ /** Register Monaco editor instance and initialize LSP wiring */
41
+ connect(monaco, editor) {
42
+ if (this.editor === editor)
43
+ return;
44
+ this.dispose();
45
+ // Recreate binding after dispose
46
+ this.binding = LspTransport.infer(this.endpoint);
47
+ this.editor = editor;
48
+ this.monaco = monaco;
49
+ // Wire error/progress events
50
+ this.binding
51
+ .onError((error) => this.emit({ type: 'error', error }))
52
+ .onProgressNotification((params) => this.emit({ type: 'workDoneProgress', params }))
53
+ .onServerNotification('window/logMessage', (params) => this.emit({ type: 'logMessage', method: 'window/logMessage', params }));
54
+ // Initialize server
55
+ this.initialize();
56
+ }
57
+ /** Initialize the LSP server connection and capabilities */
58
+ async initialize() {
59
+ try {
60
+ const init = await this.binding.sendRequest('initialize', this.options.initialParams ?? {
61
+ // @ts-ignore
62
+ processId: typeof process !== 'undefined' ? process.pid : null,
63
+ rootUri: null,
64
+ clientInfo: { name: LspMonacoClient.CLIENT_NAME, version: LspMonacoClient.CLIENT_VERSION },
65
+ locale: typeof navigator !== 'undefined' ? navigator.language : 'en-US',
66
+ capabilities: LspMonacoClient.CAPABILITIES,
67
+ // Omit workspaceFolders (we advertise false)
68
+ });
69
+ if (!init.cancelled && init.result?.capabilities) {
70
+ this.initialized = true;
71
+ this.emit({ type: 'initialized', capabilities: init.result.capabilities });
72
+ this.applyServerCapabilities(init.result.capabilities);
73
+ }
74
+ }
75
+ catch (error) {
76
+ // Error already emitted; keep uninitialized
77
+ this.initialized = false;
78
+ }
79
+ }
80
+ /** Dispose the client, closing docs and optionally shutting down server */
81
+ async dispose() {
82
+ // Close all open documents
83
+ for (const uri of this.openDocuments) {
84
+ this.binding.sendNotification('textDocument/didClose', { textDocument: { uri } });
85
+ // Clear diagnostics markers for each open document
86
+ const monacoApi = this.monaco;
87
+ if (monacoApi) {
88
+ const model = monacoApi.editor.getModel(monacoApi.Uri.parse(uri));
89
+ if (model)
90
+ monacoApi.editor.setModelMarkers(model, this.MARKER_OWNER, []);
91
+ }
92
+ }
93
+ this.openDocuments.clear();
94
+ // Graceful shutdown for dedicated servers
95
+ if (this.options.dedicatedServer && this.initialized) {
96
+ try {
97
+ // Request shutdown with timeout
98
+ await this.binding.sendRequest('shutdown', null, { timeoutMs: 5000 });
99
+ }
100
+ catch (error) {
101
+ this.emit({ type: 'shutdownError', error });
102
+ // Continue with exit anyway
103
+ }
104
+ finally {
105
+ // Always send exit (fire-and-forget)
106
+ this.binding.sendNotification('exit', null);
107
+ }
108
+ }
109
+ // Tear down binding
110
+ this.binding.dispose();
111
+ this.editor = null;
112
+ this.initialized = false;
113
+ }
114
+ /** Register Monaco features based on server-reported capabilities */
115
+ applyServerCapabilities(caps) {
116
+ if (!this.editor)
117
+ return;
118
+ const sync = caps.textDocumentSync;
119
+ // TextDocumentSyncKind: 0=None, 1=Full, 2=Incremental
120
+ if (typeof sync === 'number') {
121
+ this.syncKind = sync;
122
+ }
123
+ else if (typeof sync === 'object' && sync !== null) {
124
+ this.syncKind = sync.change ?? 0;
125
+ }
126
+ else {
127
+ this.syncKind = 0;
128
+ }
129
+ // Open/close supported
130
+ const enableOpenClose = typeof sync === 'object' ? !!sync.openClose : sync !== undefined && sync !== 0;
131
+ // Change supported for Full/Incremental
132
+ const enableChange = this.syncKind === 1 || this.syncKind === 2;
133
+ if (enableOpenClose) {
134
+ this.handleModelChange({ oldModelUrl: null, newModelUrl: this.editor.getModel()?.uri ?? null });
135
+ this.binding.addDisposable(this.editor.onDidChangeModel((e) => this.handleModelChange(e)));
136
+ }
137
+ if (enableChange) {
138
+ this.binding.addDisposable(this.editor.onDidChangeModelContent((e) => this.handleContentChange(e)));
139
+ }
140
+ if (caps.completionProvider)
141
+ this.registerCompletionProvider(caps.completionProvider);
142
+ if (caps.hoverProvider)
143
+ this.registerHoverProvider();
144
+ if (caps.documentFormattingProvider)
145
+ this.registerFormattingProvider();
146
+ if (caps.documentRangeFormattingProvider)
147
+ this.registerRangeFormattingProvider();
148
+ if (caps.documentOnTypeFormattingProvider)
149
+ this.registerOnTypeFormattingProvider(caps.documentOnTypeFormattingProvider);
150
+ // Listen for diagnostics
151
+ this.wireDiagnostics();
152
+ }
153
+ /** Register hover provider backed by the LSP server */
154
+ registerHoverProvider() {
155
+ const monaco = this.monaco;
156
+ if (!monaco)
157
+ return;
158
+ this.binding.addDisposable(monaco.languages.registerHoverProvider(this.options.languageSelector, {
159
+ provideHover: (model, position, token) => withCancellation(token, (p) => this.binding.sendRequest('textDocument/hover', {
160
+ textDocument: { uri: model.uri.toString() },
161
+ position: toLspPosition(position),
162
+ }, p), null).then((h) => (h ? lspHoverToMonaco(h) : null)),
163
+ }));
164
+ }
165
+ /** Register Monaco completion provider backed by the LSP server */
166
+ registerCompletionProvider(opts) {
167
+ const monaco = this.monaco;
168
+ if (!monaco)
169
+ return;
170
+ const resolveCompletionItem = opts.resolveProvider
171
+ ? async (item, token) => withCancellation(token, async (p) => this.binding.sendRequest('completionItem/resolve', toLspCompletionItem(item), p)).then((r) => (r ? mergeResolvedCompletionItem(item, r) : item))
172
+ : undefined;
173
+ const provideCompletionItems = (model, position, context, token) => withCancellation(token, async (p) => {
174
+ const lspContext = {
175
+ triggerKind: context.triggerKind + 1, // Monaco is 0-based, LSP is 1-based
176
+ };
177
+ if (context.triggerCharacter) {
178
+ lspContext.triggerCharacter = context.triggerCharacter;
179
+ }
180
+ return this.binding.sendRequest('textDocument/completion', {
181
+ textDocument: { uri: model.uri.toString() },
182
+ position: toLspPosition(position),
183
+ context: lspContext,
184
+ }, p);
185
+ }).then((r) => {
186
+ if (!r)
187
+ return { suggestions: [] };
188
+ const items = Array.isArray(r) ? r : (r?.items ?? []);
189
+ return { suggestions: items.map((x) => toMonacoCompletionItem(monaco, x)) };
190
+ });
191
+ this.binding.addDisposable(monaco.languages.registerCompletionItemProvider(this.options.languageSelector, {
192
+ triggerCharacters: opts.triggerCharacters,
193
+ provideCompletionItems,
194
+ resolveCompletionItem,
195
+ }));
196
+ }
197
+ /** Register document formatting provider backed by the LSP server */
198
+ registerFormattingProvider() {
199
+ const monaco = this.monaco;
200
+ if (!monaco)
201
+ return;
202
+ this.binding.addDisposable(monaco.languages.registerDocumentFormattingEditProvider(this.options.languageSelector, {
203
+ provideDocumentFormattingEdits: (model, options, token) => withCancellation(token, (p) => this.binding.sendRequest('textDocument/formatting', {
204
+ textDocument: { uri: model.uri.toString() },
205
+ options: { tabSize: options.tabSize, insertSpaces: options.insertSpaces },
206
+ }, p), []).then((r) => (r ? toMonacoTextEdits(r) : [])),
207
+ }));
208
+ }
209
+ /** Register range formatting provider backed by the LSP server */
210
+ registerRangeFormattingProvider() {
211
+ const monaco = this.monaco;
212
+ if (!monaco)
213
+ return;
214
+ this.binding.addDisposable(monaco.languages.registerDocumentRangeFormattingEditProvider(this.options.languageSelector, {
215
+ provideDocumentRangeFormattingEdits: (model, range, options, token) => withCancellation(token, (p) => this.binding.sendRequest('textDocument/rangeFormatting', {
216
+ textDocument: { uri: model.uri.toString() },
217
+ range: toLspRange(range),
218
+ options: { tabSize: options.tabSize, insertSpaces: options.insertSpaces },
219
+ }, p), []).then((r) => (r ? toMonacoTextEdits(r) : [])),
220
+ }));
221
+ }
222
+ /** Register on-type formatting provider backed by the LSP server */
223
+ registerOnTypeFormattingProvider(opts) {
224
+ const monaco = this.monaco;
225
+ if (!monaco)
226
+ return;
227
+ const triggers = [opts.firstTriggerCharacter, ...(opts.moreTriggerCharacter ?? [])];
228
+ this.binding.addDisposable(monaco.languages.registerOnTypeFormattingEditProvider(this.options.languageSelector, {
229
+ autoFormatTriggerCharacters: triggers,
230
+ provideOnTypeFormattingEdits: (model, position, ch, options, token) => withCancellation(token, (p) => this.binding.sendRequest('textDocument/onTypeFormatting', {
231
+ textDocument: { uri: model.uri.toString() },
232
+ position: toLspPosition(position),
233
+ ch,
234
+ options: { tabSize: options.tabSize, insertSpaces: options.insertSpaces },
235
+ }, p), []).then((r) => (r ? toMonacoTextEdits(r) : [])),
236
+ }));
237
+ }
238
+ // ---------------- Editor event handlers ----------------
239
+ /** Send textDocument/didChange according to server sync kind */
240
+ handleContentChange(e) {
241
+ const model = this.editor?.getModel();
242
+ if (!model)
243
+ return;
244
+ const uri = model.uri.toString();
245
+ const version = model.getVersionId();
246
+ // Respect TextDocumentSyncKind
247
+ let contentChanges;
248
+ if (this.syncKind === 1) {
249
+ // Full: send entire text
250
+ contentChanges = [{ text: model.getValue() }];
251
+ }
252
+ else if (this.syncKind === 2) {
253
+ // Incremental: send ranged changes
254
+ contentChanges = e.changes.map((c) => ({ range: toLspRange(c.range), text: c.text }));
255
+ }
256
+ else {
257
+ // None/unknown: no-op
258
+ return;
259
+ }
260
+ this.binding.sendNotification('textDocument/didChange', {
261
+ textDocument: { uri, version },
262
+ contentChanges,
263
+ });
264
+ }
265
+ /** Handle model open/close and send didOpen/didClose notifications */
266
+ handleModelChange(event) {
267
+ // Close old model if open
268
+ if (event.oldModelUrl) {
269
+ const oldUri = event.oldModelUrl.toString();
270
+ if (this.openDocuments.has(oldUri)) {
271
+ this.binding.sendNotification('textDocument/didClose', { textDocument: { uri: oldUri } });
272
+ this.openDocuments.delete(oldUri);
273
+ // Clear old model markers
274
+ const monacoApi = this.monaco;
275
+ if (monacoApi) {
276
+ const oldModel = monacoApi.editor.getModel(event.oldModelUrl);
277
+ if (oldModel)
278
+ monacoApi.editor.setModelMarkers(oldModel, this.MARKER_OWNER, []);
279
+ }
280
+ }
281
+ }
282
+ // Open new model
283
+ const newModel = this.editor?.getModel();
284
+ if (!newModel)
285
+ return;
286
+ const newUri = newModel.uri.toString();
287
+ // Avoid reopening same URI
288
+ if (this.openDocuments.has(newUri))
289
+ return;
290
+ // Cleanup on model dispose
291
+ this.binding.addDisposable(newModel.onWillDispose(() => {
292
+ const uri = newModel.uri.toString();
293
+ if (this.openDocuments.has(uri)) {
294
+ this.binding.sendNotification('textDocument/didClose', { textDocument: { uri } });
295
+ this.openDocuments.delete(uri);
296
+ }
297
+ // Clear markers on dispose
298
+ const monacoApi = this.monaco;
299
+ if (monacoApi)
300
+ monacoApi.editor.setModelMarkers(newModel, this.MARKER_OWNER, []);
301
+ }));
302
+ // Send didOpen and track
303
+ this.binding.sendNotification('textDocument/didOpen', {
304
+ textDocument: {
305
+ uri: newUri,
306
+ languageId: newModel.getLanguageId(),
307
+ version: newModel.getVersionId(),
308
+ text: newModel.getValue(),
309
+ },
310
+ });
311
+ this.openDocuments.add(newUri);
312
+ }
313
+ /** Listen for publishDiagnostics and update Monaco markers */
314
+ wireDiagnostics() {
315
+ const monacoApi = this.monaco;
316
+ if (!monacoApi)
317
+ return;
318
+ this.binding.onServerNotification('textDocument/publishDiagnostics', (params) => {
319
+ try {
320
+ const { uri, diagnostics, version } = params;
321
+ const model = monacoApi.editor.getModel(monacoApi.Uri.parse(uri));
322
+ if (!model)
323
+ return;
324
+ if (typeof version === 'number' && model.getVersionId() !== version)
325
+ return;
326
+ const markers = toMonacoMarkers(monacoApi, diagnostics);
327
+ monacoApi.editor.setModelMarkers(model, this.MARKER_OWNER, markers);
328
+ }
329
+ catch (e) {
330
+ // Swallow diagnostics errors
331
+ }
332
+ });
333
+ }
334
+ static CAPABILITIES = {
335
+ textDocument: {
336
+ synchronization: {
337
+ dynamicRegistration: false,
338
+ willSave: false,
339
+ willSaveWaitUntil: false,
340
+ didSave: false,
341
+ },
342
+ completion: {
343
+ dynamicRegistration: false,
344
+ completionItem: {
345
+ snippetSupport: true,
346
+ commitCharactersSupport: true,
347
+ documentationFormat: ['markdown', 'plaintext'],
348
+ deprecatedSupport: true,
349
+ preselectSupport: true,
350
+ tagSupport: {
351
+ valueSet: [1], // 1 = Deprecated
352
+ },
353
+ insertReplaceSupport: true,
354
+ resolveSupport: {
355
+ properties: ['documentation', 'detail', 'additionalTextEdits'],
356
+ },
357
+ insertTextModeSupport: {
358
+ valueSet: [1, 2], // 1 = asIs, 2 = adjustIndentation
359
+ },
360
+ labelDetailsSupport: true,
361
+ },
362
+ completionItemKind: {
363
+ valueSet: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
364
+ },
365
+ contextSupport: true,
366
+ },
367
+ hover: {
368
+ dynamicRegistration: false,
369
+ contentFormat: ['markdown', 'plaintext'],
370
+ },
371
+ signatureHelp: {
372
+ dynamicRegistration: false,
373
+ signatureInformation: {
374
+ documentationFormat: ['markdown', 'plaintext'],
375
+ parameterInformation: {
376
+ labelOffsetSupport: true,
377
+ },
378
+ activeParameterSupport: true,
379
+ },
380
+ contextSupport: true,
381
+ },
382
+ declaration: {
383
+ dynamicRegistration: false,
384
+ linkSupport: true,
385
+ },
386
+ definition: {
387
+ dynamicRegistration: false,
388
+ linkSupport: true,
389
+ },
390
+ typeDefinition: {
391
+ dynamicRegistration: false,
392
+ linkSupport: true,
393
+ },
394
+ implementation: {
395
+ dynamicRegistration: false,
396
+ linkSupport: true,
397
+ },
398
+ references: {
399
+ dynamicRegistration: false,
400
+ },
401
+ documentHighlight: {
402
+ dynamicRegistration: false,
403
+ },
404
+ documentSymbol: {
405
+ dynamicRegistration: false,
406
+ symbolKind: {
407
+ valueSet: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
408
+ },
409
+ hierarchicalDocumentSymbolSupport: true,
410
+ tagSupport: {
411
+ valueSet: [1], // 1 = Deprecated
412
+ },
413
+ labelSupport: true,
414
+ },
415
+ codeAction: {
416
+ dynamicRegistration: false,
417
+ codeActionLiteralSupport: {
418
+ codeActionKind: {
419
+ valueSet: [
420
+ '',
421
+ 'quickfix',
422
+ 'refactor',
423
+ 'refactor.extract',
424
+ 'refactor.inline',
425
+ 'refactor.rewrite',
426
+ 'source',
427
+ 'source.organizeImports',
428
+ ],
429
+ },
430
+ },
431
+ isPreferredSupport: true,
432
+ disabledSupport: true,
433
+ dataSupport: true,
434
+ resolveSupport: {
435
+ properties: ['edit'],
436
+ },
437
+ honorsChangeAnnotations: false,
438
+ },
439
+ codeLens: {
440
+ dynamicRegistration: false,
441
+ },
442
+ formatting: {
443
+ dynamicRegistration: false,
444
+ },
445
+ rangeFormatting: {
446
+ dynamicRegistration: false,
447
+ },
448
+ onTypeFormatting: {
449
+ dynamicRegistration: false,
450
+ },
451
+ rename: {
452
+ dynamicRegistration: false,
453
+ prepareSupport: true,
454
+ prepareSupportDefaultBehavior: 1,
455
+ honorsChangeAnnotations: false,
456
+ },
457
+ documentLink: {
458
+ dynamicRegistration: false,
459
+ tooltipSupport: true,
460
+ },
461
+ foldingRange: {
462
+ dynamicRegistration: false,
463
+ rangeLimit: 5000,
464
+ lineFoldingOnly: true,
465
+ },
466
+ selectionRange: {
467
+ dynamicRegistration: false,
468
+ },
469
+ publishDiagnostics: {
470
+ relatedInformation: true,
471
+ tagSupport: {
472
+ valueSet: [1, 2], // 1 = Unnecessary, 2 = Deprecated
473
+ },
474
+ versionSupport: true,
475
+ codeDescriptionSupport: true,
476
+ dataSupport: true,
477
+ },
478
+ },
479
+ workspace: {
480
+ applyEdit: false,
481
+ workspaceEdit: {
482
+ documentChanges: false,
483
+ resourceOperations: [],
484
+ failureHandling: 'abort',
485
+ normalizesLineEndings: false,
486
+ changeAnnotationSupport: {
487
+ groupsOnLabel: false,
488
+ },
489
+ },
490
+ didChangeConfiguration: {
491
+ dynamicRegistration: false,
492
+ },
493
+ didChangeWatchedFiles: {
494
+ dynamicRegistration: false,
495
+ },
496
+ symbol: {
497
+ dynamicRegistration: false,
498
+ symbolKind: {
499
+ valueSet: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
500
+ },
501
+ tagSupport: {
502
+ valueSet: [1], // 1 = Deprecated
503
+ },
504
+ },
505
+ executeCommand: {
506
+ dynamicRegistration: false,
507
+ },
508
+ workspaceFolders: false,
509
+ configuration: false,
510
+ semanticTokens: {
511
+ refreshSupport: false,
512
+ },
513
+ codeLens: {
514
+ refreshSupport: false,
515
+ },
516
+ fileOperations: {
517
+ dynamicRegistration: false,
518
+ didCreate: false,
519
+ didRename: false,
520
+ didDelete: false,
521
+ willCreate: false,
522
+ willRename: false,
523
+ willDelete: false,
524
+ },
525
+ inlineValue: {
526
+ refreshSupport: false,
527
+ },
528
+ inlayHint: {
529
+ refreshSupport: false,
530
+ },
531
+ diagnostics: {
532
+ refreshSupport: false,
533
+ },
534
+ },
535
+ window: {
536
+ workDoneProgress: true,
537
+ showMessage: {
538
+ messageActionItem: {
539
+ additionalPropertiesSupport: true,
540
+ },
541
+ },
542
+ showDocument: {
543
+ support: false,
544
+ },
545
+ },
546
+ general: {
547
+ regularExpressions: {
548
+ engine: 'ECMAScript',
549
+ version: 'ES2020',
550
+ },
551
+ markdown: {
552
+ parser: 'marked',
553
+ version: '1.0.0',
554
+ },
555
+ },
556
+ };
557
+ }
558
+ const withCancellation = async (token, f, cancelled = null) => {
559
+ if (token.isCancellationRequested)
560
+ return cancelled;
561
+ const controller = new AbortController();
562
+ const off = token.onCancellationRequested(() => controller.abort());
563
+ try {
564
+ const result = await f({ signal: controller.signal });
565
+ if (result.cancelled)
566
+ return cancelled;
567
+ return result.result;
568
+ }
569
+ catch (e) {
570
+ return cancelled;
571
+ }
572
+ finally {
573
+ off.dispose();
574
+ }
575
+ };
576
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { DidChangeTextDocumentNotification, DidCloseTextDocumentNotification, DidOpenTextDocumentNotification, CompletionRequest, InitializeRequest, CompletionResolveRequest, PublishDiagnosticsNotification, LogMessageNotification, DocumentFormattingRequest, DocumentRangeFormattingRequest, DocumentOnTypeFormattingRequest, HoverRequest, } from 'vscode-languageserver-protocol';
2
+ export const isId = (id) => typeof id === 'number' || typeof id === 'string';
3
+ export const JSONRPC_VERSION = '2.0';
4
+ export const makeRequest = (id, method, params) => ({
5
+ jsonrpc: JSONRPC_VERSION,
6
+ id,
7
+ method,
8
+ params,
9
+ });
10
+ export const makeNotification = (method, params) => ({
11
+ jsonrpc: JSONRPC_VERSION,
12
+ method,
13
+ params,
14
+ });
15
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EAGjC,gCAAgC,EAChC,+BAA+B,EAE/B,iBAAiB,EAEjB,iBAAiB,EAKjB,wBAAwB,EAExB,8BAA8B,EAE9B,sBAAsB,EAEtB,yBAAyB,EAEzB,8BAA8B,EAE9B,+BAA+B,EAG/B,YAAY,GAGb,MAAM,gCAAgC,CAAA;AAKvC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAW,EAAY,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAA;AA8B/F,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAA;AAoBpC,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAM,EACN,MAAS,EACT,MAAwB,EACa,EAAE,CAAC,CAAC;IACzC,OAAO,EAAE,eAAe;IACxB,EAAE;IACF,MAAM;IACN,MAAM;CACP,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAS,EACT,MAA4B,EACkB,EAAE,CAAC,CAAC;IAClD,OAAO,EAAE,eAAe;IACxB,MAAM;IACN,MAAM;CACP,CAAC,CAAA"}