tabby-tabbyspaces 0.0.1 → 0.1.0
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/.claude/settings.local.json +28 -2
- package/CHANGELOG.md +46 -20
- package/CLAUDE.md +163 -15
- package/README.md +71 -61
- package/RELEASE.md +91 -0
- package/TEST_MCP.md +176 -0
- package/TODO.md +72 -0
- package/cdp-click.js +22 -0
- package/cdp-test.js +28 -0
- package/dist/components/paneEditor.component.d.ts +6 -1
- package/dist/components/paneEditor.component.d.ts.map +1 -1
- package/dist/components/splitPreview.component.d.ts +22 -7
- package/dist/components/splitPreview.component.d.ts.map +1 -1
- package/dist/components/workspaceEditor.component.d.ts +30 -4
- package/dist/components/workspaceEditor.component.d.ts.map +1 -1
- package/dist/components/workspaceList.component.d.ts +21 -9
- package/dist/components/workspaceList.component.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/workspace.model.d.ts +4 -2
- package/dist/models/workspace.model.d.ts.map +1 -1
- package/dist/package.json +26 -0
- package/dist/providers/settings.provider.d.ts.map +1 -1
- package/dist/providers/toolbar.provider.d.ts +4 -1
- package/dist/providers/toolbar.provider.d.ts.map +1 -1
- package/dist/services/startupCommand.service.d.ts +20 -0
- package/dist/services/startupCommand.service.d.ts.map +1 -0
- package/dist/services/workspaceEditor.service.d.ts +11 -3
- package/dist/services/workspaceEditor.service.d.ts.map +1 -1
- package/docs/marketing_status.md +92 -0
- package/package.json +2 -7
- package/screenshots/editor.png +0 -0
- package/screenshots/pane-edit.png +0 -0
- package/scripts/build-prod.js +39 -0
- package/src/components/paneEditor.component.pug +2 -2
- package/src/components/paneEditor.component.ts +19 -1
- package/src/components/splitPreview.component.pug +45 -5
- package/src/components/splitPreview.component.scss +79 -22
- package/src/components/splitPreview.component.ts +91 -16
- package/src/components/workspaceEditor.component.pug +130 -70
- package/src/components/workspaceEditor.component.scss +205 -120
- package/src/components/workspaceEditor.component.ts +193 -6
- package/src/components/workspaceList.component.pug +31 -20
- package/src/components/workspaceList.component.scss +12 -6
- package/src/components/workspaceList.component.ts +116 -34
- package/src/index.ts +2 -0
- package/src/models/workspace.model.ts +33 -6
- package/src/providers/settings.provider.ts +2 -2
- package/src/providers/toolbar.provider.ts +41 -10
- package/src/services/startupCommand.service.ts +142 -0
- package/src/services/workspaceEditor.service.ts +70 -38
- package/test_cdp.py +50 -0
- package/RELEASE_PLAN.md +0 -161
- package/screenshots/workspace-edit.png +0 -0
package/TEST_MCP.md
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# MCP Testiranje TabbySpaces
|
|
2
|
+
|
|
3
|
+
Uputstvo za Claude da testira plugin kroz tabby-mcp.
|
|
4
|
+
|
|
5
|
+
## Pre-requisites
|
|
6
|
+
|
|
7
|
+
1. Build plugin: `npm run build:dev`
|
|
8
|
+
2. Pokreni NOVI Tabby instance sa debug portom:
|
|
9
|
+
```bash
|
|
10
|
+
cmd.exe /c start "" "C:\Program Files (x86)\Tabby\Tabby.exe" --remote-debugging-port=9222
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Test 1: Proveri da nema orphaned profila
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
// Očekivano: Nema split-layout:tabbyspaces_dev: profila u config
|
|
17
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
18
|
+
const profiles = window.require('tabby-core').ConfigService.store.profiles || []
|
|
19
|
+
const orphaned = profiles.filter(p => p.id?.startsWith('split-layout:tabbyspaces'))
|
|
20
|
+
JSON.stringify({ total: profiles.length, orphaned: orphaned.length, ids: orphaned.map(p => p.id) })
|
|
21
|
+
`)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Očekivan rezultat:** `orphaned: 0`
|
|
25
|
+
|
|
26
|
+
## Test 2: Otvori Settings i proveri plugin
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
// Klikni na Settings
|
|
30
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
31
|
+
document.querySelector('[title="Settings"]')?.click()
|
|
32
|
+
'Settings opened'
|
|
33
|
+
`)
|
|
34
|
+
|
|
35
|
+
// Sačekaj 500ms, pa klikni na TabbySpaces DEV tab
|
|
36
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
37
|
+
const tabs = Array.from(document.querySelectorAll('.nav-link'))
|
|
38
|
+
const devTab = tabs.find(t => t.textContent.includes('TabbySpaces DEV'))
|
|
39
|
+
devTab?.click()
|
|
40
|
+
devTab ? 'TabbySpaces DEV tab clicked' : 'Tab not found'
|
|
41
|
+
`)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Test 3: Kreiraj test workspace
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
// Klikni New Workspace
|
|
48
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
49
|
+
const btn = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('New Workspace'))
|
|
50
|
+
btn?.click()
|
|
51
|
+
btn ? 'New Workspace clicked' : 'Button not found'
|
|
52
|
+
`)
|
|
53
|
+
|
|
54
|
+
// Unesi ime
|
|
55
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
56
|
+
const input = document.querySelector('.name-input')
|
|
57
|
+
if (input) {
|
|
58
|
+
input.value = 'MCP Test Workspace'
|
|
59
|
+
input.dispatchEvent(new Event('input', { bubbles: true }))
|
|
60
|
+
'Name set'
|
|
61
|
+
} else 'Input not found'
|
|
62
|
+
`)
|
|
63
|
+
|
|
64
|
+
// Sačuvaj
|
|
65
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
66
|
+
const saveBtn = Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Save'))
|
|
67
|
+
saveBtn?.click()
|
|
68
|
+
saveBtn ? 'Saved' : 'Save button not found'
|
|
69
|
+
`)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Test 4: Proveri da NIJE kreiran profil u config.store.profiles
|
|
73
|
+
|
|
74
|
+
```javascript
|
|
75
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
76
|
+
const profiles = window.require('tabby-core').ConfigService.store.profiles || []
|
|
77
|
+
const wsProfiles = profiles.filter(p => p.id?.includes('mcp-test-workspace'))
|
|
78
|
+
JSON.stringify({ found: wsProfiles.length, message: wsProfiles.length === 0 ? 'PASS - No profile created' : 'FAIL - Profile was created' })
|
|
79
|
+
`)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Očekivan rezultat:** `found: 0, message: "PASS - No profile created"`
|
|
83
|
+
|
|
84
|
+
## Test 5: Testiraj CWD injection (Shell Detection)
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
// Testiraj shell detection funkciju
|
|
88
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
89
|
+
// Simuliraj shell detection
|
|
90
|
+
function detectShellType(command) {
|
|
91
|
+
const cmd = command.toLowerCase()
|
|
92
|
+
if (cmd.includes('nu.exe') || cmd.includes('nushell') || cmd.endsWith('/nu')) return 'nushell'
|
|
93
|
+
if (cmd.includes('powershell') || cmd.includes('pwsh')) return 'powershell'
|
|
94
|
+
if (cmd.includes('cmd.exe') || cmd.endsWith('\\\\cmd')) return 'cmd'
|
|
95
|
+
if (cmd.includes('bash') || cmd.includes('zsh') || cmd.includes('fish') || cmd.includes('/sh')) return 'posix'
|
|
96
|
+
return 'unknown'
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const tests = [
|
|
100
|
+
{ cmd: 'C:\\\\Programs\\\\nu\\\\bin\\\\nu.exe', expected: 'nushell' },
|
|
101
|
+
{ cmd: 'C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe', expected: 'powershell' },
|
|
102
|
+
{ cmd: 'pwsh.exe', expected: 'powershell' },
|
|
103
|
+
{ cmd: 'C:\\\\Windows\\\\System32\\\\cmd.exe', expected: 'cmd' },
|
|
104
|
+
{ cmd: '/usr/bin/bash', expected: 'posix' },
|
|
105
|
+
{ cmd: '/bin/zsh', expected: 'posix' },
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
const results = tests.map(t => ({
|
|
109
|
+
cmd: t.cmd,
|
|
110
|
+
expected: t.expected,
|
|
111
|
+
actual: detectShellType(t.cmd),
|
|
112
|
+
pass: detectShellType(t.cmd) === t.expected
|
|
113
|
+
}))
|
|
114
|
+
|
|
115
|
+
JSON.stringify({ passed: results.filter(r => r.pass).length, total: results.length, results }, null, 2)
|
|
116
|
+
`)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Očekivan rezultat:** `passed: 6, total: 6`
|
|
120
|
+
|
|
121
|
+
## Test 6: Otvori workspace iz toolbar-a
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
// Klikni na TabbySpaces toolbar button (4 squares icon)
|
|
125
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
126
|
+
const toolbarBtns = document.querySelectorAll('toolbar-button')
|
|
127
|
+
const wsBtn = Array.from(toolbarBtns).find(b => b.querySelector('svg rect'))
|
|
128
|
+
wsBtn?.click()
|
|
129
|
+
wsBtn ? 'Toolbar button clicked' : 'Button not found'
|
|
130
|
+
`)
|
|
131
|
+
|
|
132
|
+
// Selektuj workspace iz liste
|
|
133
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
134
|
+
const options = document.querySelectorAll('.selector-option')
|
|
135
|
+
const testWs = Array.from(options).find(o => o.textContent.includes('MCP Test'))
|
|
136
|
+
testWs?.click()
|
|
137
|
+
testWs ? 'Workspace selected' : 'Workspace not found in selector'
|
|
138
|
+
`)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Test 7: Proveri otvorene tabove
|
|
142
|
+
|
|
143
|
+
```javascript
|
|
144
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
145
|
+
const tabs = document.querySelectorAll('.tab')
|
|
146
|
+
const tabInfo = Array.from(tabs).map(t => ({
|
|
147
|
+
title: t.querySelector('.tab-title')?.textContent || 'unknown',
|
|
148
|
+
active: t.classList.contains('active')
|
|
149
|
+
}))
|
|
150
|
+
JSON.stringify(tabInfo)
|
|
151
|
+
`)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Cleanup
|
|
155
|
+
|
|
156
|
+
```javascript
|
|
157
|
+
// Zatvori test tab
|
|
158
|
+
mcp__tabby__execute_js(target: -1, code: `
|
|
159
|
+
const closeBtn = document.querySelector('.tab.active .btn-close')
|
|
160
|
+
closeBtn?.click()
|
|
161
|
+
'Tab closed'
|
|
162
|
+
`)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Quick Full Test Sequence
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
1. mcp__tabby__list_targets (uzmi poslednji target)
|
|
169
|
+
2. Test 1: Proveri orphaned profile
|
|
170
|
+
3. Test 5: Shell detection
|
|
171
|
+
4. Test 2: Otvori settings
|
|
172
|
+
5. Test 3: Kreiraj workspace
|
|
173
|
+
6. Test 4: Proveri da nema profila
|
|
174
|
+
7. Test 6: Otvori workspace
|
|
175
|
+
8. Test 7: Proveri tabove
|
|
176
|
+
```
|
package/TODO.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# TODO
|
|
2
|
+
|
|
3
|
+
> **Note:** Please write all entries in English.
|
|
4
|
+
|
|
5
|
+
## To Do
|
|
6
|
+
|
|
7
|
+
### Layout Editing
|
|
8
|
+
- [ ] Polish design
|
|
9
|
+
- [ ] Find better way to display nested panes in editor
|
|
10
|
+
|
|
11
|
+
### UX Improvements
|
|
12
|
+
- [ ] Split/Add pane: duplicate existing pane instead of creating empty one
|
|
13
|
+
- [ ] List: add small layout preview
|
|
14
|
+
- [ ] Better input for command
|
|
15
|
+
- [ ] Better input for cwd
|
|
16
|
+
|
|
17
|
+
### Bugs
|
|
18
|
+
- [~] Resize panes in Tabby reverts to original values (ratio problem) - WATCH: happens only on one workspace
|
|
19
|
+
- [ ] Layout preview responsive - nested splits don't adapt well to smaller sizes
|
|
20
|
+
|
|
21
|
+
### Other
|
|
22
|
+
- [ ] Update screenshots in README
|
|
23
|
+
|
|
24
|
+
## Roadmap
|
|
25
|
+
|
|
26
|
+
- [ ] Pane presets (saved pane configurations for quick adding)
|
|
27
|
+
- [ ] Resize panes (adjust ratios in editor)
|
|
28
|
+
- [ ] Drag and drop panes (reorganize layout by dragging)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Done
|
|
33
|
+
|
|
34
|
+
### Layout Editing
|
|
35
|
+
- [x] Remove two layout vert/hor buttons from toolbar (and horizontal/vertical text from list)
|
|
36
|
+
- [x] Enable selection in toolbar, add button for edit pane (not on click)
|
|
37
|
+
- [x] When item selected in toolbar - show options similar to context menu
|
|
38
|
+
- [x] Context menu for pane: add to left/right/top/bottom alongside split options + edit pane
|
|
39
|
+
- [x] Instead of "click to edit" - edit icon in pane corner
|
|
40
|
+
- [x] Title bug - better handling
|
|
41
|
+
- [x] Edit icon on pane: show on hover instead of on selection
|
|
42
|
+
|
|
43
|
+
### UX Improvements
|
|
44
|
+
- [x] Pane title format: `(Title - )? Base Profile` (show base profile if no custom title)
|
|
45
|
+
- [x] Move run button to workspace list
|
|
46
|
+
- [x] Launch on startup: switch from single workspace option to multi-select (multiple workspaces can be marked)
|
|
47
|
+
- [x] Not-saved / "you have changes" indicator (compare state after change with saved)
|
|
48
|
+
- [x] New workspace: focus on name input, no default value, placeholder "Name your workspace"
|
|
49
|
+
- [x] Save button: disabled when no changes, enabled when there are (replacement for indicator)
|
|
50
|
+
- [x] Duplicate: select new workspace after duplicating
|
|
51
|
+
- [x] Open/Run/Duplicate/Delete buttons select workspace - add stopPropagation
|
|
52
|
+
- [x] Rename "Run" to "Open" with appropriate icon
|
|
53
|
+
|
|
54
|
+
### Other
|
|
55
|
+
- [x] Different icon for DEV version (easier distinction in Settings)
|
|
56
|
+
- [x] Open workspace from workspace editor
|
|
57
|
+
- [x] Move workspace edit dialog inline above workspace list (always one selected)
|
|
58
|
+
- [x] Icon picker as dropdown next to color picker (similar UI)
|
|
59
|
+
- [x] Randomize color and icon on new workspace + focus on name input
|
|
60
|
+
- [x] Refactoring: Remove profile persistence, shell-aware CWD, dead code cleanup
|
|
61
|
+
|
|
62
|
+
### Bugs
|
|
63
|
+
- [x] Audit async functions - check if `detectChanges()` is missing after async operations that change state
|
|
64
|
+
- [x] Split pane runs command (in-memory profiles) - fix: clear profile.options.args after command execution
|
|
65
|
+
- [x] Pane editor modal bug - mouseup outside dialog closes modal. Dialog should close only on Esc or close/cancel/save button
|
|
66
|
+
- [x] Migration and profile deletion not working (fix: timing - cleanup was called before config.store loaded)
|
|
67
|
+
- [x] New workspace: focus on name input not working
|
|
68
|
+
- [x] Built-in shells (PowerShell, cmd, WSL) weren't working - filter looked for `type === 'local'` instead of `type.startsWith('local:')`
|
|
69
|
+
- [x] Fallback for built-in profile lookup (cache all profiles before opening workspace)
|
|
70
|
+
|
|
71
|
+
### Notes
|
|
72
|
+
- **CWD**: Uses native `options.cwd` in recovery token - shell spawns directly in target directory without visible `cd` commands.
|
package/cdp-click.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const CDP = require('chrome-remote-interface');
|
|
2
|
+
|
|
3
|
+
(async () => {
|
|
4
|
+
const client = await CDP({port: 9222});
|
|
5
|
+
const {Runtime, DOM, Input} = client;
|
|
6
|
+
|
|
7
|
+
// Click on "TabbySpaces DEV" link
|
|
8
|
+
const result = await Runtime.evaluate({
|
|
9
|
+
expression: `
|
|
10
|
+
const link = Array.from(document.querySelectorAll('a')).find(a => a.innerText.includes('TabbySpaces DEV'));
|
|
11
|
+
if (link) {
|
|
12
|
+
link.click();
|
|
13
|
+
'Clicked TabbySpaces DEV';
|
|
14
|
+
} else {
|
|
15
|
+
'TabbySpaces DEV link not found';
|
|
16
|
+
}
|
|
17
|
+
`
|
|
18
|
+
});
|
|
19
|
+
console.log('Result:', result.result.value);
|
|
20
|
+
|
|
21
|
+
await client.close();
|
|
22
|
+
})().catch(e => console.error('Error:', e.message));
|
package/cdp-test.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const CDP = require('chrome-remote-interface');
|
|
2
|
+
|
|
3
|
+
(async () => {
|
|
4
|
+
const client = await CDP({port: 9222});
|
|
5
|
+
const {Runtime, DOM} = client;
|
|
6
|
+
|
|
7
|
+
// Get page title
|
|
8
|
+
const title = await Runtime.evaluate({expression: 'document.title'});
|
|
9
|
+
console.log('Title:', title.result.value);
|
|
10
|
+
|
|
11
|
+
// Get all clickable elements
|
|
12
|
+
const clickables = await Runtime.evaluate({
|
|
13
|
+
expression: `
|
|
14
|
+
Array.from(document.querySelectorAll('button, [role=button], .btn, a, [ng-click]'))
|
|
15
|
+
.map(el => ({
|
|
16
|
+
tag: el.tagName,
|
|
17
|
+
text: (el.innerText || el.textContent || '').trim().substring(0, 50),
|
|
18
|
+
class: (el.className || '').substring(0, 50)
|
|
19
|
+
}))
|
|
20
|
+
.slice(0, 30)
|
|
21
|
+
`,
|
|
22
|
+
returnByValue: true
|
|
23
|
+
});
|
|
24
|
+
console.log('Clickable elements:');
|
|
25
|
+
console.log(JSON.stringify(clickables.result.value, null, 2));
|
|
26
|
+
|
|
27
|
+
await client.close();
|
|
28
|
+
})().catch(e => console.error('Error:', e.message));
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { EventEmitter, OnInit } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnInit, ElementRef } from '@angular/core';
|
|
2
2
|
import { WorkspacePane, TabbyProfile } from '../models/workspace.model';
|
|
3
3
|
export declare class PaneEditorComponent implements OnInit {
|
|
4
4
|
pane: WorkspacePane;
|
|
5
5
|
profiles: TabbyProfile[];
|
|
6
6
|
save: EventEmitter<WorkspacePane>;
|
|
7
7
|
cancel: EventEmitter<void>;
|
|
8
|
+
modalRef: ElementRef<HTMLElement>;
|
|
8
9
|
editedPane: WorkspacePane;
|
|
10
|
+
private pointerDownInsideModal;
|
|
9
11
|
ngOnInit(): void;
|
|
12
|
+
onEscapeKey(): void;
|
|
13
|
+
onDocumentPointerDown(event: PointerEvent): void;
|
|
14
|
+
onOverlayClick(event: MouseEvent): void;
|
|
10
15
|
onSave(): void;
|
|
11
16
|
onCancel(): void;
|
|
12
17
|
getProfileName(profileId: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paneEditor.component.d.ts","sourceRoot":"","sources":["../../src/components/paneEditor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"paneEditor.component.d.ts","sourceRoot":"","sources":["../../src/components/paneEditor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAgB,UAAU,EAAa,MAAM,eAAe,CAAA;AACnH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAEvE,qBAKa,mBAAoB,YAAW,MAAM;IACvC,IAAI,EAAG,aAAa,CAAA;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAK;IAC5B,IAAI,8BAAoC;IACxC,MAAM,qBAA2B;IACL,QAAQ,EAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IAExE,UAAU,EAAG,aAAa,CAAA;IAC1B,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAKnB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIhD,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMvC,MAAM,IAAI,IAAI;IAId,QAAQ,IAAI,IAAI;IAIhB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAI1C"}
|
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
|
-
import { WorkspaceSplit, WorkspacePane } from '../models/workspace.model';
|
|
3
|
-
import { WorkspaceEditorService } from '../services/workspaceEditor.service';
|
|
2
|
+
import { WorkspaceSplit, WorkspacePane, TabbyProfile } from '../models/workspace.model';
|
|
4
3
|
export declare class SplitPreviewComponent {
|
|
5
|
-
private workspaceService;
|
|
6
4
|
split: WorkspaceSplit;
|
|
7
5
|
depth: number;
|
|
8
|
-
|
|
6
|
+
selectedPaneId: string | null;
|
|
7
|
+
profiles: TabbyProfile[];
|
|
8
|
+
paneSelect: EventEmitter<WorkspacePane>;
|
|
9
|
+
paneEdit: EventEmitter<WorkspacePane>;
|
|
9
10
|
splitHorizontal: EventEmitter<WorkspacePane>;
|
|
10
11
|
splitVertical: EventEmitter<WorkspacePane>;
|
|
11
12
|
removePane: EventEmitter<WorkspacePane>;
|
|
13
|
+
addLeft: EventEmitter<WorkspacePane>;
|
|
14
|
+
addRight: EventEmitter<WorkspacePane>;
|
|
15
|
+
addTop: EventEmitter<WorkspacePane>;
|
|
16
|
+
addBottom: EventEmitter<WorkspacePane>;
|
|
12
17
|
contextMenuPane: WorkspacePane | null;
|
|
13
18
|
contextMenuPosition: {
|
|
14
19
|
x: number;
|
|
15
20
|
y: number;
|
|
16
21
|
};
|
|
17
|
-
constructor(workspaceService: WorkspaceEditorService);
|
|
18
22
|
isPane(child: WorkspacePane | WorkspaceSplit): boolean;
|
|
19
23
|
isSplit(child: WorkspacePane | WorkspaceSplit): boolean;
|
|
20
24
|
asSplit(child: WorkspacePane | WorkspaceSplit): WorkspaceSplit;
|
|
21
25
|
asPane(child: WorkspacePane | WorkspaceSplit): WorkspacePane;
|
|
22
26
|
getFlexStyle(index: number): string;
|
|
23
27
|
onPaneClick(pane: WorkspacePane): void;
|
|
28
|
+
onEditClick(event: MouseEvent, pane: WorkspacePane): void;
|
|
29
|
+
truncate(text: string, maxLength: number): string;
|
|
24
30
|
onContextMenu(event: MouseEvent, pane: WorkspacePane): void;
|
|
25
31
|
closeContextMenu(): void;
|
|
32
|
+
onEdit(): void;
|
|
26
33
|
onSplitH(): void;
|
|
27
34
|
onSplitV(): void;
|
|
35
|
+
onAddLeft(): void;
|
|
36
|
+
onAddRight(): void;
|
|
37
|
+
onAddTop(): void;
|
|
38
|
+
onAddBottom(): void;
|
|
28
39
|
onRemove(): void;
|
|
29
|
-
getProfileName(profileId: string): string;
|
|
30
40
|
getPaneLabel(pane: WorkspacePane): string;
|
|
31
|
-
|
|
41
|
+
onNestedPaneSelect(pane: WorkspacePane): void;
|
|
42
|
+
onNestedPaneEdit(pane: WorkspacePane): void;
|
|
32
43
|
onNestedSplitH(pane: WorkspacePane): void;
|
|
33
44
|
onNestedSplitV(pane: WorkspacePane): void;
|
|
45
|
+
onNestedAddLeft(pane: WorkspacePane): void;
|
|
46
|
+
onNestedAddRight(pane: WorkspacePane): void;
|
|
47
|
+
onNestedAddTop(pane: WorkspacePane): void;
|
|
48
|
+
onNestedAddBottom(pane: WorkspacePane): void;
|
|
34
49
|
onNestedRemove(pane: WorkspacePane): void;
|
|
35
50
|
}
|
|
36
51
|
//# sourceMappingURL=splitPreview.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitPreview.component.d.ts","sourceRoot":"","sources":["../../src/components/splitPreview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EACL,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"splitPreview.component.d.ts","sourceRoot":"","sources":["../../src/components/splitPreview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EAEb,MAAM,2BAA2B,CAAA;AAElC,qBAKa,qBAAqB;IACvB,KAAK,EAAG,cAAc,CAAA;IACtB,KAAK,SAAI;IACT,cAAc,EAAE,MAAM,GAAG,IAAI,CAAO;IACpC,QAAQ,EAAE,YAAY,EAAE,CAAK;IAC5B,UAAU,8BAAoC;IAC9C,QAAQ,8BAAoC;IAC5C,eAAe,8BAAoC;IACnD,aAAa,8BAAoC;IACjD,UAAU,8BAAoC;IAC9C,OAAO,8BAAoC;IAC3C,QAAQ,8BAAoC;IAC5C,MAAM,8BAAoC;IAC1C,SAAS,8BAAoC;IAEvD,eAAe,EAAE,aAAa,GAAG,IAAI,CAAO;IAC5C,mBAAmB;;;MAAiB;IAEpC,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO;IAItD,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO;IAIvD,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,cAAc;IAI9D,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,aAAa;IAI5D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAItC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAKzD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAMjD,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAM3D,gBAAgB,IAAI,IAAI;IAIxB,MAAM,IAAI,IAAI;IAOd,QAAQ,IAAI,IAAI;IAOhB,QAAQ,IAAI,IAAI;IAOhB,SAAS,IAAI,IAAI;IAOjB,UAAU,IAAI,IAAI;IAOlB,QAAQ,IAAI,IAAI;IAOhB,WAAW,IAAI,IAAI;IAOnB,QAAQ,IAAI,IAAI;IAOhB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAkBzC,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI7C,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI3C,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIzC,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIzC,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI1C,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI3C,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIzC,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI5C,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;CAG1C"}
|
|
@@ -1,29 +1,55 @@
|
|
|
1
|
-
import { EventEmitter, OnInit } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnInit, OnChanges, AfterViewInit, SimpleChanges, ElementRef } from '@angular/core';
|
|
2
2
|
import { Workspace, WorkspacePane, TabbyProfile } from '../models/workspace.model';
|
|
3
3
|
import { WorkspaceEditorService } from '../services/workspaceEditor.service';
|
|
4
|
-
export declare class WorkspaceEditorComponent implements OnInit {
|
|
4
|
+
export declare class WorkspaceEditorComponent implements OnInit, OnChanges, AfterViewInit {
|
|
5
5
|
private workspaceService;
|
|
6
|
+
private elementRef;
|
|
6
7
|
workspace: Workspace;
|
|
8
|
+
autoFocus: boolean;
|
|
9
|
+
hasUnsavedChanges: boolean;
|
|
7
10
|
save: EventEmitter<Workspace>;
|
|
8
11
|
cancel: EventEmitter<void>;
|
|
9
|
-
|
|
12
|
+
nameInput: ElementRef<HTMLInputElement>;
|
|
13
|
+
selectedPaneId: string | null;
|
|
14
|
+
editingPane: WorkspacePane | null;
|
|
10
15
|
showPaneEditor: boolean;
|
|
11
16
|
profiles: TabbyProfile[];
|
|
12
17
|
availableIcons: string[];
|
|
13
|
-
|
|
18
|
+
iconDropdownOpen: boolean;
|
|
19
|
+
constructor(workspaceService: WorkspaceEditorService, elementRef: ElementRef);
|
|
20
|
+
onDocumentClick(event: MouseEvent): void;
|
|
21
|
+
toggleIconDropdown(): void;
|
|
22
|
+
selectIcon(icon: string): void;
|
|
14
23
|
ngOnInit(): Promise<void>;
|
|
24
|
+
ngAfterViewInit(): void;
|
|
25
|
+
private focusNameInput;
|
|
26
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
27
|
+
private initializeWorkspace;
|
|
15
28
|
onSave(): void;
|
|
16
29
|
onCancel(): void;
|
|
17
30
|
selectPane(pane: WorkspacePane): void;
|
|
31
|
+
deselectPane(): void;
|
|
32
|
+
onPreviewBackgroundClick(): void;
|
|
33
|
+
editPane(pane: WorkspacePane): void;
|
|
34
|
+
editSelectedPane(): void;
|
|
18
35
|
closePaneEditor(): void;
|
|
19
36
|
onPaneSave(pane: WorkspacePane): void;
|
|
37
|
+
private findPaneById;
|
|
38
|
+
private findPaneInNode;
|
|
39
|
+
canRemovePane(): boolean;
|
|
40
|
+
private countPanes;
|
|
20
41
|
private updatePaneInTree;
|
|
21
42
|
splitPane(pane: WorkspacePane, orientation: 'horizontal' | 'vertical'): void;
|
|
43
|
+
splitSelectedPane(orientation: 'horizontal' | 'vertical'): void;
|
|
22
44
|
private splitPaneInTree;
|
|
23
45
|
removePane(pane: WorkspacePane): void;
|
|
46
|
+
removeSelectedPane(): void;
|
|
24
47
|
private removePaneFromTree;
|
|
25
48
|
private recalculateRatios;
|
|
26
49
|
setOrientation(orientation: 'horizontal' | 'vertical'): void;
|
|
27
50
|
updateRatio(index: number, value: number): void;
|
|
51
|
+
addPane(direction: 'left' | 'right' | 'top' | 'bottom'): void;
|
|
52
|
+
addPaneFromEvent(pane: WorkspacePane, direction: 'left' | 'right' | 'top' | 'bottom'): void;
|
|
53
|
+
private addPaneInTree;
|
|
28
54
|
}
|
|
29
55
|
//# sourceMappingURL=workspaceEditor.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceEditor.component.d.ts","sourceRoot":"","sources":["../../src/components/workspaceEditor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"workspaceEditor.component.d.ts","sourceRoot":"","sources":["../../src/components/workspaceEditor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAgB,UAAU,EAAa,MAAM,eAAe,CAAA;AAC5J,OAAO,EACL,SAAS,EACT,aAAa,EAEb,YAAY,EAIb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAE5E,qBAKa,wBAAyB,YAAW,MAAM,EAAE,SAAS,EAAE,aAAa;IAqB7E,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,UAAU;IArBX,SAAS,EAAG,SAAS,CAAA;IACrB,SAAS,UAAQ;IACjB,iBAAiB,UAAQ;IACxB,IAAI,0BAAgC;IACpC,MAAM,qBAA2B;IAEnB,SAAS,EAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAEhE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAO;IACpC,WAAW,EAAE,aAAa,GAAG,IAAI,CAAO;IACxC,cAAc,UAAQ;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAK;IAC7B,cAAc,WAIb;IACD,gBAAgB,UAAQ;gBAGd,gBAAgB,EAAE,sBAAsB,EACxC,UAAU,EAAE,UAAU;IAIhC,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOxC,kBAAkB,IAAI,IAAI;IAI1B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,eAAe,IAAI,IAAI;IAMvB,OAAO,CAAC,cAAc;IAWtB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAgBzC,OAAO,CAAC,mBAAmB;IAU3B,MAAM,IAAI,IAAI;IAOd,QAAQ,IAAI,IAAI;IAIhB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIrC,YAAY,IAAI,IAAI;IAIpB,wBAAwB,IAAI,IAAI;IAIhC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKnC,gBAAgB,IAAI,IAAI;IAMxB,eAAe,IAAI,IAAI;IAKvB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAMrC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAYtB,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;IAexB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;IAI5E,iBAAiB,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;IAM/D,OAAO,CAAC,eAAe;IA2BvB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAOrC,kBAAkB,IAAI,IAAI;IAM1B,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,iBAAiB;IAKzB,cAAc,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;IAI5D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAqB/C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI;IAO7D,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI;IAI3F,OAAO,CAAC,aAAa;CAoDtB"}
|
|
@@ -1,28 +1,40 @@
|
|
|
1
|
-
import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { ConfigService } from 'tabby-core';
|
|
1
|
+
import { OnInit, OnDestroy, AfterViewInit, ChangeDetectorRef, ElementRef, NgZone } from '@angular/core';
|
|
2
|
+
import { ConfigService, ProfilesService } from 'tabby-core';
|
|
3
|
+
import { StartupCommandService } from '../services/startupCommand.service';
|
|
3
4
|
import { WorkspaceEditorService } from '../services/workspaceEditor.service';
|
|
4
5
|
import { Workspace } from '../models/workspace.model';
|
|
5
|
-
export declare class WorkspaceListComponent implements OnInit, OnDestroy {
|
|
6
|
+
export declare class WorkspaceListComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
6
7
|
config: ConfigService;
|
|
7
8
|
private workspaceService;
|
|
9
|
+
private profilesService;
|
|
10
|
+
private startupService;
|
|
8
11
|
private cdr;
|
|
12
|
+
private elementRef;
|
|
13
|
+
private zone;
|
|
9
14
|
workspaces: Workspace[];
|
|
15
|
+
selectedWorkspace: Workspace | null;
|
|
10
16
|
editingWorkspace: Workspace | null;
|
|
11
|
-
|
|
17
|
+
isCreatingNew: boolean;
|
|
18
|
+
openingWorkspaceId: string | null;
|
|
12
19
|
private configSubscription;
|
|
13
|
-
constructor(config: ConfigService, workspaceService: WorkspaceEditorService, cdr: ChangeDetectorRef);
|
|
20
|
+
constructor(config: ConfigService, workspaceService: WorkspaceEditorService, profilesService: ProfilesService, startupService: StartupCommandService, cdr: ChangeDetectorRef, elementRef: ElementRef, zone: NgZone);
|
|
14
21
|
ngOnInit(): void;
|
|
22
|
+
ngAfterViewInit(): void;
|
|
23
|
+
private autoSelectFirst;
|
|
24
|
+
selectWorkspace(workspace: Workspace): void;
|
|
25
|
+
isSelected(workspace: Workspace): boolean;
|
|
15
26
|
ngOnDestroy(): void;
|
|
16
27
|
loadWorkspaces(): void;
|
|
17
28
|
createWorkspace(): Promise<void>;
|
|
18
29
|
private setProfileForAllPanes;
|
|
19
30
|
editWorkspace(workspace: Workspace): void;
|
|
20
|
-
duplicateWorkspace(workspace: Workspace): Promise<void>;
|
|
21
|
-
deleteWorkspace(workspace: Workspace): Promise<void>;
|
|
31
|
+
duplicateWorkspace(event: MouseEvent, workspace: Workspace): Promise<void>;
|
|
32
|
+
deleteWorkspace(event: MouseEvent, workspace: Workspace): Promise<void>;
|
|
22
33
|
onEditorSave(workspace: Workspace): Promise<void>;
|
|
23
|
-
|
|
34
|
+
onEditorCancel(): void;
|
|
24
35
|
getPaneCount(workspace: Workspace): number;
|
|
25
36
|
getOrientationLabel(workspace: Workspace): string;
|
|
26
|
-
|
|
37
|
+
get hasUnsavedChanges(): boolean;
|
|
38
|
+
openWorkspace(event: MouseEvent, workspace: Workspace): Promise<void>;
|
|
27
39
|
}
|
|
28
40
|
//# sourceMappingURL=workspaceList.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceList.component.d.ts","sourceRoot":"","sources":["../../src/components/workspaceList.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"workspaceList.component.d.ts","sourceRoot":"","sources":["../../src/components/workspaceList.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAClH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EACL,SAAS,EAMV,MAAM,2BAA2B,CAAA;AAElC,qBAKa,sBAAuB,YAAW,MAAM,EAAE,SAAS,EAAE,aAAa;IASpE,MAAM,EAAE,aAAa;IAC5B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,IAAI;IAdd,UAAU,EAAE,SAAS,EAAE,CAAK;IAC5B,iBAAiB,EAAE,SAAS,GAAG,IAAI,CAAO;IAC1C,gBAAgB,EAAE,SAAS,GAAG,IAAI,CAAO;IACzC,aAAa,UAAQ;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAO;IACxC,OAAO,CAAC,kBAAkB,CAA4B;gBAG7C,MAAM,EAAE,aAAa,EACpB,gBAAgB,EAAE,sBAAsB,EACxC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,qBAAqB,EACrC,GAAG,EAAE,iBAAiB,EACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM;IAGtB,QAAQ,IAAI,IAAI;IAQhB,eAAe,IAAI,IAAI;IAUvB,OAAO,CAAC,eAAe;IAMvB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAM3C,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAIzC,WAAW,IAAI,IAAI;IAInB,cAAc,IAAI,IAAI;IAKhB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC,OAAO,CAAC,qBAAqB;IAQ7B,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAInC,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1E,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvE,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,cAAc,IAAI,IAAI;IAiBtB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAI1C,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAIjD,IAAI,iBAAiB,IAAI,OAAO,CAG/B;IAEK,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB5E"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAA;AAE/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAA;AAE/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAwB3E,MAAM,CAAC,OAAO,OAAO,qBAAqB;CAAG;AAE7C,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,GAChC,CAAA"}
|