dmux 1.3.3 → 1.5.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.
Files changed (38) hide show
  1. package/dist/AutoUpdater.d.ts +35 -0
  2. package/dist/AutoUpdater.d.ts.map +1 -0
  3. package/dist/AutoUpdater.js +225 -0
  4. package/dist/AutoUpdater.js.map +1 -0
  5. package/dist/BetterTextInput.d.ts +10 -0
  6. package/dist/BetterTextInput.d.ts.map +1 -0
  7. package/dist/BetterTextInput.js +177 -0
  8. package/dist/BetterTextInput.js.map +1 -0
  9. package/dist/CleanTextInput.d.ts +10 -0
  10. package/dist/CleanTextInput.d.ts.map +1 -0
  11. package/dist/CleanTextInput.js +572 -0
  12. package/dist/CleanTextInput.js.map +1 -0
  13. package/dist/DmuxApp.d.ts +2 -0
  14. package/dist/DmuxApp.d.ts.map +1 -1
  15. package/dist/DmuxApp.js +330 -165
  16. package/dist/DmuxApp.js.map +1 -1
  17. package/dist/EnhancedTextInput.d.ts.map +1 -1
  18. package/dist/EnhancedTextInput.js +155 -50
  19. package/dist/EnhancedTextInput.js.map +1 -1
  20. package/dist/GeminiTextInput.d.ts +12 -0
  21. package/dist/GeminiTextInput.d.ts.map +1 -0
  22. package/dist/GeminiTextInput.js +210 -0
  23. package/dist/GeminiTextInput.js.map +1 -0
  24. package/dist/MultilineTextInput.d.ts +10 -0
  25. package/dist/MultilineTextInput.d.ts.map +1 -0
  26. package/dist/MultilineTextInput.js +184 -0
  27. package/dist/MultilineTextInput.js.map +1 -0
  28. package/dist/SimpleGeminiInput.d.ts +12 -0
  29. package/dist/SimpleGeminiInput.d.ts.map +1 -0
  30. package/dist/SimpleGeminiInput.js +223 -0
  31. package/dist/SimpleGeminiInput.js.map +1 -0
  32. package/dist/StyledTextInput.d.ts +10 -0
  33. package/dist/StyledTextInput.d.ts.map +1 -0
  34. package/dist/StyledTextInput.js +10 -0
  35. package/dist/StyledTextInput.js.map +1 -0
  36. package/dist/index.js +48 -3
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,35 @@
1
+ interface UpdateInfo {
2
+ currentVersion: string;
3
+ latestVersion: string;
4
+ hasUpdate: boolean;
5
+ packageManager: 'npm' | 'pnpm' | 'yarn' | null;
6
+ installMethod: 'global' | 'local' | 'unknown';
7
+ }
8
+ interface UpdateSettings {
9
+ lastCheckTime?: number;
10
+ checkIntervalHours?: number;
11
+ skipVersion?: string;
12
+ autoUpdateEnabled?: boolean;
13
+ }
14
+ export declare class AutoUpdater {
15
+ private settingsFile;
16
+ private checkIntervalMs;
17
+ constructor(dmuxDir: string);
18
+ loadSettings(): Promise<UpdateSettings>;
19
+ saveSettings(settings: UpdateSettings): Promise<void>;
20
+ shouldCheckForUpdates(): Promise<boolean>;
21
+ getLatestVersion(): Promise<string | null>;
22
+ private isValidVersion;
23
+ private compareVersions;
24
+ detectInstallMethod(): Promise<{
25
+ packageManager: 'npm' | 'pnpm' | 'yarn' | null;
26
+ installMethod: 'global' | 'local' | 'unknown';
27
+ }>;
28
+ checkForUpdates(): Promise<UpdateInfo>;
29
+ performUpdate(updateInfo: UpdateInfo): Promise<boolean>;
30
+ skipVersion(version: string): Promise<void>;
31
+ shouldShowUpdateNotification(updateInfo: UpdateInfo): Promise<boolean>;
32
+ setAutoUpdateEnabled(enabled: boolean): Promise<void>;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=AutoUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdater.d.ts","sourceRoot":"","sources":["../src/AutoUpdater.ts"],"names":[],"mappings":"AAQA,UAAU,UAAU;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AAED,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAA+B;gBAE1C,OAAO,EAAE,MAAM;IAIrB,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAYvC,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAYzC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoChD,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAejB,mBAAmB,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;KAAE,CAAC;IAiEjI,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBtC,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCvD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,4BAA4B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBtE,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5D"}
@@ -0,0 +1,225 @@
1
+ import { execSync } from 'child_process';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import { createRequire } from 'module';
5
+ const require = createRequire(import.meta.url);
6
+ const packageJson = require('../package.json');
7
+ export class AutoUpdater {
8
+ settingsFile;
9
+ checkIntervalMs = 24 * 60 * 60 * 1000; // 24 hours
10
+ constructor(dmuxDir) {
11
+ this.settingsFile = path.join(dmuxDir, 'update-settings.json');
12
+ }
13
+ async loadSettings() {
14
+ try {
15
+ const content = await fs.readFile(this.settingsFile, 'utf-8');
16
+ return JSON.parse(content);
17
+ }
18
+ catch {
19
+ return {
20
+ checkIntervalHours: 24,
21
+ autoUpdateEnabled: true
22
+ };
23
+ }
24
+ }
25
+ async saveSettings(settings) {
26
+ await fs.writeFile(this.settingsFile, JSON.stringify(settings, null, 2));
27
+ }
28
+ async shouldCheckForUpdates() {
29
+ const settings = await this.loadSettings();
30
+ const now = Date.now();
31
+ if (!settings.lastCheckTime) {
32
+ return true;
33
+ }
34
+ const intervalMs = (settings.checkIntervalHours || 24) * 60 * 60 * 1000;
35
+ return now - settings.lastCheckTime > intervalMs;
36
+ }
37
+ async getLatestVersion() {
38
+ try {
39
+ // First try using npm view which is usually faster
40
+ const result = execSync(`npm view ${packageJson.name} version`, {
41
+ encoding: 'utf-8',
42
+ stdio: 'pipe',
43
+ timeout: 10000
44
+ }).trim();
45
+ if (result && this.isValidVersion(result)) {
46
+ return result;
47
+ }
48
+ }
49
+ catch {
50
+ // Fallback to npm registry API
51
+ try {
52
+ const response = await fetch(`https://registry.npmjs.org/${packageJson.name}/latest`, {
53
+ method: 'GET',
54
+ headers: {
55
+ 'User-Agent': `${packageJson.name}/${packageJson.version}`
56
+ }
57
+ });
58
+ if (response.ok) {
59
+ const data = await response.json();
60
+ if (data.version && this.isValidVersion(data.version)) {
61
+ return data.version;
62
+ }
63
+ }
64
+ }
65
+ catch {
66
+ // Network error or API unavailable
67
+ }
68
+ }
69
+ return null;
70
+ }
71
+ isValidVersion(version) {
72
+ return /^\d+\.\d+\.\d+/.test(version);
73
+ }
74
+ compareVersions(current, latest) {
75
+ const currentParts = current.split('.').map(n => parseInt(n));
76
+ const latestParts = latest.split('.').map(n => parseInt(n));
77
+ for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {
78
+ const currentPart = currentParts[i] || 0;
79
+ const latestPart = latestParts[i] || 0;
80
+ if (latestPart > currentPart)
81
+ return true;
82
+ if (latestPart < currentPart)
83
+ return false;
84
+ }
85
+ return false;
86
+ }
87
+ async detectInstallMethod() {
88
+ try {
89
+ // Check if dmux is globally installed and how
90
+ // Method 1: Check npm global packages
91
+ try {
92
+ const npmGlobals = execSync('npm list -g --depth=0', {
93
+ encoding: 'utf-8',
94
+ stdio: 'pipe'
95
+ });
96
+ if (npmGlobals.includes(`${packageJson.name}@`)) {
97
+ return { packageManager: 'npm', installMethod: 'global' };
98
+ }
99
+ }
100
+ catch { }
101
+ // Method 2: Check pnpm global packages
102
+ try {
103
+ const pnpmGlobals = execSync('pnpm list -g --depth=0', {
104
+ encoding: 'utf-8',
105
+ stdio: 'pipe'
106
+ });
107
+ if (pnpmGlobals.includes(`${packageJson.name}@`)) {
108
+ return { packageManager: 'pnpm', installMethod: 'global' };
109
+ }
110
+ }
111
+ catch { }
112
+ // Method 3: Check yarn global packages
113
+ try {
114
+ const yarnGlobals = execSync('yarn global list --depth=0', {
115
+ encoding: 'utf-8',
116
+ stdio: 'pipe'
117
+ });
118
+ if (yarnGlobals.includes(`${packageJson.name}@`)) {
119
+ return { packageManager: 'yarn', installMethod: 'global' };
120
+ }
121
+ }
122
+ catch { }
123
+ // Method 4: Check where dmux is installed by looking at the executable path
124
+ try {
125
+ const dmuxPath = execSync('which dmux', {
126
+ encoding: 'utf-8',
127
+ stdio: 'pipe'
128
+ }).trim();
129
+ if (dmuxPath.includes('/.npm/') || dmuxPath.includes('/npm/')) {
130
+ return { packageManager: 'npm', installMethod: 'global' };
131
+ }
132
+ else if (dmuxPath.includes('/.pnpm/')) {
133
+ return { packageManager: 'pnpm', installMethod: 'global' };
134
+ }
135
+ else if (dmuxPath.includes('/.yarn/')) {
136
+ return { packageManager: 'yarn', installMethod: 'global' };
137
+ }
138
+ else if (dmuxPath.includes('/node_modules/.bin/')) {
139
+ // Local installation
140
+ return { packageManager: null, installMethod: 'local' };
141
+ }
142
+ }
143
+ catch { }
144
+ return { packageManager: null, installMethod: 'unknown' };
145
+ }
146
+ catch {
147
+ return { packageManager: null, installMethod: 'unknown' };
148
+ }
149
+ }
150
+ async checkForUpdates() {
151
+ const latestVersion = await this.getLatestVersion();
152
+ const currentVersion = packageJson.version;
153
+ const { packageManager, installMethod } = await this.detectInstallMethod();
154
+ const hasUpdate = latestVersion ? this.compareVersions(currentVersion, latestVersion) : false;
155
+ // Update last check time
156
+ const settings = await this.loadSettings();
157
+ settings.lastCheckTime = Date.now();
158
+ await this.saveSettings(settings);
159
+ return {
160
+ currentVersion,
161
+ latestVersion: latestVersion || 'unknown',
162
+ hasUpdate,
163
+ packageManager,
164
+ installMethod
165
+ };
166
+ }
167
+ async performUpdate(updateInfo) {
168
+ if (!updateInfo.hasUpdate || !updateInfo.packageManager || updateInfo.installMethod !== 'global') {
169
+ return false;
170
+ }
171
+ try {
172
+ let updateCommand;
173
+ switch (updateInfo.packageManager) {
174
+ case 'npm':
175
+ updateCommand = `npm update -g ${packageJson.name}`;
176
+ break;
177
+ case 'pnpm':
178
+ updateCommand = `pnpm update -g ${packageJson.name}`;
179
+ break;
180
+ case 'yarn':
181
+ updateCommand = `yarn global upgrade ${packageJson.name}`;
182
+ break;
183
+ default:
184
+ return false;
185
+ }
186
+ // Run the update command with a timeout
187
+ execSync(updateCommand, {
188
+ stdio: 'pipe',
189
+ timeout: 60000 // 1 minute timeout
190
+ });
191
+ // Verify the update was successful
192
+ const newUpdateInfo = await this.checkForUpdates();
193
+ return newUpdateInfo.currentVersion === updateInfo.latestVersion;
194
+ }
195
+ catch {
196
+ return false;
197
+ }
198
+ }
199
+ async skipVersion(version) {
200
+ const settings = await this.loadSettings();
201
+ settings.skipVersion = version;
202
+ await this.saveSettings(settings);
203
+ }
204
+ async shouldShowUpdateNotification(updateInfo) {
205
+ if (!updateInfo.hasUpdate) {
206
+ return false;
207
+ }
208
+ const settings = await this.loadSettings();
209
+ // Don't show if user has disabled auto-updates
210
+ if (settings.autoUpdateEnabled === false) {
211
+ return false;
212
+ }
213
+ // Don't show if user has skipped this version
214
+ if (settings.skipVersion === updateInfo.latestVersion) {
215
+ return false;
216
+ }
217
+ return true;
218
+ }
219
+ async setAutoUpdateEnabled(enabled) {
220
+ const settings = await this.loadSettings();
221
+ settings.autoUpdateEnabled = enabled;
222
+ await this.saveSettings(settings);
223
+ }
224
+ }
225
+ //# sourceMappingURL=AutoUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoUpdater.js","sourceRoot":"","sources":["../src/AutoUpdater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface BetterTextInputProps {
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ onSubmit?: () => void;
6
+ placeholder?: string;
7
+ }
8
+ declare const BetterTextInput: React.FC<BetterTextInputProps>;
9
+ export default BetterTextInput;
10
+ //# sourceMappingURL=BetterTextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BetterTextInput.d.ts","sourceRoot":"","sources":["../src/BetterTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuNnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,177 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { Box, Text, useInput, useFocus } from 'ink';
3
+ import TextInput from 'ink-text-input';
4
+ const BetterTextInput = ({ value, onChange, onSubmit, placeholder = 'Type your message...' }) => {
5
+ const { isFocused } = useFocus({ autoFocus: true });
6
+ const [isMultiline, setIsMultiline] = useState(false);
7
+ const [cursorPosition, setCursorPosition] = useState(value.length);
8
+ // Update multiline state based on content
9
+ useEffect(() => {
10
+ setIsMultiline(value.includes('\n'));
11
+ if (cursorPosition > value.length) {
12
+ setCursorPosition(value.length);
13
+ }
14
+ }, [value, cursorPosition]);
15
+ useInput((input, key) => {
16
+ if (!isFocused)
17
+ return;
18
+ // Handle Enter in single-line mode to switch to multiline
19
+ if (!isMultiline && key.return && !key.shift) {
20
+ const before = value.slice(0, cursorPosition);
21
+ const after = value.slice(cursorPosition);
22
+ onChange(before + '\n' + after);
23
+ setCursorPosition(cursorPosition + 1);
24
+ return;
25
+ }
26
+ // Rest of handlers only for multiline mode
27
+ if (!isMultiline)
28
+ return;
29
+ // Handle escape
30
+ if (key.escape) {
31
+ onChange('');
32
+ setCursorPosition(0);
33
+ return;
34
+ }
35
+ // Handle submit
36
+ if (key.return && key.shift) {
37
+ onSubmit?.();
38
+ return;
39
+ }
40
+ // Handle enter (new line)
41
+ if (key.return) {
42
+ const before = value.slice(0, cursorPosition);
43
+ const after = value.slice(cursorPosition);
44
+ onChange(before + '\n' + after);
45
+ setCursorPosition(cursorPosition + 1);
46
+ return;
47
+ }
48
+ // Handle backspace - delete character BEFORE cursor
49
+ if (key.backspace) {
50
+ if (cursorPosition > 0) {
51
+ const before = value.slice(0, cursorPosition - 1);
52
+ const after = value.slice(cursorPosition);
53
+ const newValue = before + after;
54
+ onChange(newValue);
55
+ setCursorPosition(cursorPosition - 1);
56
+ // Debug logging
57
+ if (process.env.DEBUG_DMUX) {
58
+ console.error('Backspace debug:', {
59
+ oldValue: value,
60
+ newValue,
61
+ cursorPos: cursorPosition,
62
+ newCursorPos: cursorPosition - 1,
63
+ deletedChar: value[cursorPosition - 1]
64
+ });
65
+ }
66
+ }
67
+ return;
68
+ }
69
+ // Handle delete - delete character AT cursor
70
+ if (key.delete) {
71
+ if (cursorPosition < value.length) {
72
+ const before = value.slice(0, cursorPosition);
73
+ const after = value.slice(cursorPosition + 1);
74
+ onChange(before + after);
75
+ // cursor stays same
76
+ }
77
+ return;
78
+ }
79
+ // Handle arrows
80
+ if (key.leftArrow) {
81
+ setCursorPosition(Math.max(0, cursorPosition - 1));
82
+ return;
83
+ }
84
+ if (key.rightArrow) {
85
+ setCursorPosition(Math.min(value.length, cursorPosition + 1));
86
+ return;
87
+ }
88
+ if (key.upArrow || key.downArrow) {
89
+ const lines = value.split('\n');
90
+ let pos = 0;
91
+ let lineIdx = 0;
92
+ let col = 0;
93
+ // Find current line and column
94
+ for (let i = 0; i < lines.length; i++) {
95
+ if (pos + lines[i].length >= cursorPosition) {
96
+ lineIdx = i;
97
+ col = cursorPosition - pos;
98
+ break;
99
+ }
100
+ pos += lines[i].length + 1;
101
+ }
102
+ if (key.upArrow && lineIdx > 0) {
103
+ // Move to previous line
104
+ const targetLine = lineIdx - 1;
105
+ const targetCol = Math.min(col, lines[targetLine].length);
106
+ let newPos = 0;
107
+ for (let i = 0; i < targetLine; i++) {
108
+ newPos += lines[i].length + 1;
109
+ }
110
+ newPos += targetCol;
111
+ setCursorPosition(newPos);
112
+ }
113
+ else if (key.downArrow && lineIdx < lines.length - 1) {
114
+ // Move to next line
115
+ const targetLine = lineIdx + 1;
116
+ const targetCol = Math.min(col, lines[targetLine].length);
117
+ let newPos = 0;
118
+ for (let i = 0; i < targetLine; i++) {
119
+ newPos += lines[i].length + 1;
120
+ }
121
+ newPos += targetCol;
122
+ setCursorPosition(newPos);
123
+ }
124
+ return;
125
+ }
126
+ // Handle text input
127
+ if (input && !key.ctrl && !key.meta) {
128
+ const before = value.slice(0, cursorPosition);
129
+ const after = value.slice(cursorPosition);
130
+ onChange(before + input + after);
131
+ setCursorPosition(cursorPosition + input.length);
132
+ }
133
+ });
134
+ // For single line, use standard TextInput but handle Enter ourselves
135
+ if (!isMultiline) {
136
+ return (React.createElement(Box, null,
137
+ React.createElement(Text, null, '> '),
138
+ React.createElement(TextInput, { value: value, onChange: (newValue) => {
139
+ onChange(newValue);
140
+ setCursorPosition(newValue.length);
141
+ }, onSubmit: onSubmit, placeholder: placeholder, showCursor: true })));
142
+ }
143
+ // For multiline, render custom display
144
+ const lines = value.split('\n');
145
+ let pos = 0;
146
+ let cursorLine = 0;
147
+ let cursorCol = 0;
148
+ // Find cursor position in lines
149
+ for (let i = 0; i < lines.length; i++) {
150
+ const lineLength = lines[i].length;
151
+ if (pos + lineLength >= cursorPosition) {
152
+ cursorLine = i;
153
+ cursorCol = cursorPosition - pos;
154
+ break;
155
+ }
156
+ pos += lineLength + 1; // +1 for newline
157
+ }
158
+ return (React.createElement(Box, { flexDirection: "column" }, lines.map((line, idx) => {
159
+ const isFirst = idx === 0;
160
+ const hasCursor = idx === cursorLine;
161
+ if (hasCursor) {
162
+ const before = line.slice(0, cursorCol);
163
+ const at = line[cursorCol] || ' ';
164
+ const after = line.slice(cursorCol + 1);
165
+ return (React.createElement(Box, { key: idx },
166
+ React.createElement(Text, null, isFirst ? '> ' : ' '),
167
+ React.createElement(Text, null, before),
168
+ React.createElement(Text, { inverse: true }, at),
169
+ React.createElement(Text, null, after)));
170
+ }
171
+ return (React.createElement(Box, { key: idx },
172
+ React.createElement(Text, null, isFirst ? '> ' : ' '),
173
+ React.createElement(Text, null, line || ' ')));
174
+ })));
175
+ };
176
+ export default BetterTextInput;
177
+ //# sourceMappingURL=BetterTextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BetterTextInput.js","sourceRoot":"","sources":["../src/BetterTextInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface CleanTextInputProps {
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ onSubmit?: (expandedValue?: string) => void;
6
+ placeholder?: string;
7
+ }
8
+ declare const CleanTextInput: React.FC<CleanTextInputProps>;
9
+ export default CleanTextInput;
10
+ //# sourceMappingURL=CleanTextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CleanTextInput.d.ts","sourceRoot":"","sources":["../src/CleanTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwpBjD,CAAC;AAEF,eAAe,cAAc,CAAC"}