@juspay/svelte-ui-components 3.5.0 → 3.5.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.
- package/README.md +1 -1
- package/dist/Accordion/Accordion.svelte +1 -5
- package/dist/Accordion/properties.d.ts +0 -1
- package/dist/AreaChart/AreaChart.svelte +2 -8
- package/dist/AreaChart/properties.d.ts +0 -10
- package/dist/AttachmentChipRow/AttachmentChipRow.svelte +30 -30
- package/dist/AttachmentChipRow/properties.d.ts +6 -6
- package/dist/Banner/Banner.svelte +1 -5
- package/dist/Banner/properties.d.ts +0 -1
- package/dist/BarChart/BarChart.svelte +7 -13
- package/dist/BarChart/properties.d.ts +1 -9
- package/dist/Book/Book.svelte +1 -5
- package/dist/Book/properties.d.ts +0 -1
- package/dist/Calendar/Calendar.svelte +3 -11
- package/dist/Calendar/properties.d.ts +0 -11
- package/dist/Chat/Chat.svelte +9 -29
- package/dist/Chat/properties.d.ts +0 -9
- package/dist/Chat/types.d.ts +7 -0
- package/dist/ChatBubble/ChatBubble.svelte +3 -11
- package/dist/ChatBubble/properties.d.ts +0 -3
- package/dist/ChatComposer/ChatComposer.svelte +18 -44
- package/dist/ChatComposer/properties.d.ts +0 -12
- package/dist/ChatHeader/ChatHeader.svelte +1 -5
- package/dist/ChatHeader/properties.d.ts +0 -1
- package/dist/ChatMessage/ChatMessage.svelte +87 -11
- package/dist/ChatMessage/properties.d.ts +18 -3
- package/dist/ChatMessageList/ChatMessageList.svelte +5 -11
- package/dist/ChatMessageList/properties.d.ts +0 -6
- package/dist/ChatSuggestions/ChatSuggestions.svelte +1 -5
- package/dist/ChatSuggestions/properties.d.ts +0 -1
- package/dist/CheckListItem/CheckListItem.svelte +1 -5
- package/dist/CheckListItem/properties.d.ts +0 -1
- package/dist/Checkbox/Checkbox.svelte +1 -5
- package/dist/Checkbox/properties.d.ts +0 -1
- package/dist/ChipInput/ChipInput.svelte +10 -20
- package/dist/ChipInput/properties.d.ts +0 -4
- package/dist/Choicebox/Choicebox.svelte +1 -5
- package/dist/Choicebox/properties.d.ts +0 -1
- package/dist/ColorPicker/ColorPicker.svelte +4 -10
- package/dist/ColorPicker/properties.d.ts +0 -2
- package/dist/Combobox/Combobox.svelte +15 -33
- package/dist/Combobox/properties.d.ts +0 -8
- package/dist/CommandMenu/CommandMenu.svelte +2 -8
- package/dist/CommandMenu/properties.d.ts +0 -2
- package/dist/ContextMenu/ContextMenu.svelte +3 -11
- package/dist/ContextMenu/properties.d.ts +0 -3
- package/dist/DateRangePicker/DateRangePicker.svelte +6 -20
- package/dist/DateRangePicker/properties.d.ts +0 -19
- package/dist/Draggable/Draggable.svelte +7 -7
- package/dist/Draggable/properties.d.ts +3 -3
- package/dist/DualAxisBarChart/DualAxisBarChart.svelte +1 -5
- package/dist/DualAxisBarChart/properties.d.ts +0 -4
- package/dist/FileDropzoneTrigger/FileDropzoneTrigger.svelte +1 -5
- package/dist/FileDropzoneTrigger/properties.d.ts +0 -1
- package/dist/FileInput/FileInput.svelte +2 -8
- package/dist/FileInput/properties.d.ts +0 -2
- package/dist/FunnelChart/FunnelChart.svelte +2 -8
- package/dist/FunnelChart/properties.d.ts +0 -8
- package/dist/Gallery/Gallery.svelte +15 -15
- package/dist/Gallery/properties.d.ts +6 -6
- package/dist/HITL/HITL.svelte +10 -8
- package/dist/HITL/properties.d.ts +2 -2
- package/dist/IframeViewer/IframeViewer.svelte +3 -2
- package/dist/IframeViewer/properties.d.ts +1 -1
- package/dist/Img/Img.svelte +119 -39
- package/dist/Img/properties.d.ts +0 -1
- package/dist/Input/Input.svelte +22 -37
- package/dist/Input/properties.d.ts +3 -10
- package/dist/InputButton/InputButton.svelte +2 -2
- package/dist/LineChart/LineChart.svelte +4 -10
- package/dist/LineChart/properties.d.ts +1 -11
- package/dist/ListItem/ListItem.svelte +10 -22
- package/dist/ListItem/properties.d.ts +5 -10
- package/dist/LottiePlayer/LottiePlayer.svelte +2 -8
- package/dist/LottiePlayer/properties.d.ts +0 -2
- package/dist/MediaPlayer/MediaPlayer.svelte +1 -5
- package/dist/MediaPlayer/properties.d.ts +0 -1
- package/dist/MediaUpload/MediaUpload.svelte +6 -6
- package/dist/MediaUpload/properties.d.ts +3 -3
- package/dist/Menu/Menu.svelte +3 -11
- package/dist/Menu/properties.d.ts +0 -3
- package/dist/Modal/Modal.svelte +15 -31
- package/dist/Modal/properties.d.ts +5 -11
- package/dist/Pagination/Pagination.svelte +3 -7
- package/dist/Pagination/properties.d.ts +1 -2
- package/dist/PieChart/PieChart.svelte +4 -10
- package/dist/PieChart/properties.d.ts +1 -9
- package/dist/Pill/Pill.svelte +1 -5
- package/dist/Pill/properties.d.ts +0 -1
- package/dist/Radio/Radio.svelte +1 -5
- package/dist/Radio/properties.d.ts +0 -1
- package/dist/Resizable/Resizable.svelte +3 -11
- package/dist/Resizable/properties.d.ts +0 -3
- package/dist/SankeyChart/SankeyChart.svelte +4 -14
- package/dist/SankeyChart/properties.d.ts +0 -12
- package/dist/Scroller/Scroller.svelte +1 -5
- package/dist/Scroller/properties.d.ts +0 -1
- package/dist/Select/Select.svelte +3 -11
- package/dist/Select/properties.d.ts +0 -3
- package/dist/Sheet/Sheet.svelte +3 -11
- package/dist/Sheet/properties.d.ts +0 -3
- package/dist/Slider/Slider.svelte +2 -8
- package/dist/Slider/properties.d.ts +0 -2
- package/dist/Snippet/Snippet.svelte +1 -5
- package/dist/Snippet/properties.d.ts +0 -1
- package/dist/SplitButton/SplitButton.svelte +1 -5
- package/dist/SplitButton/properties.d.ts +0 -1
- package/dist/SplitInput/SplitInput.svelte +6 -14
- package/dist/SplitInput/properties.d.ts +0 -3
- package/dist/StatCard/StatCard.svelte +2 -2
- package/dist/StatCard/properties.d.ts +1 -1
- package/dist/Status/Status.svelte +2 -6
- package/dist/Status/properties.d.ts +1 -2
- package/dist/Stepper/Stepper.svelte +2 -12
- package/dist/Stepper/properties.d.ts +1 -14
- package/dist/Table/BuiltinCell.svelte +1 -1
- package/dist/Table/Table.svelte +16 -17
- package/dist/Table/properties.d.ts +3 -35
- package/dist/Tabs/Tabs.svelte +2 -8
- package/dist/Tabs/properties.d.ts +0 -2
- package/dist/TaskList/TaskList.svelte +1 -4
- package/dist/TaskList/properties.d.ts +0 -1
- package/dist/ThemeSwitcher/ThemeSwitcher.svelte +1 -5
- package/dist/ThemeSwitcher/properties.d.ts +0 -1
- package/dist/ThinkingIndicator/ThinkingIndicator.svelte +4 -10
- package/dist/ThinkingIndicator/properties.d.ts +1 -3
- package/dist/Toast/Toast.svelte +2 -2
- package/dist/Toast/properties.d.ts +1 -1
- package/dist/Toggle/Toggle.svelte +1 -5
- package/dist/Toggle/properties.d.ts +0 -1
- package/dist/ToolCallLog/ToolCallLog.svelte +1 -10
- package/dist/ToolCallLog/properties.d.ts +0 -1
- package/dist/Toolbar/Toolbar.svelte +2 -6
- package/dist/Toolbar/properties.d.ts +1 -2
- package/dist/TypewriterText/TypewriterText.svelte +3 -3
- package/dist/TypewriterText/properties.d.ts +1 -1
- package/dist-codemod/bin.js +32 -0
- package/dist-codemod/cli.js +175 -0
- package/dist-codemod/legacy-pairs.js +228 -0
- package/dist-codemod/transform.js +278 -0
- package/dist-codemod/wc-children.js +66 -0
- package/dist-wc/index.js +4458 -5127
- package/package.json +9 -7
- package/scripts/postinstall.mjs +14 -12
- package/dist/deprecation.d.ts +0 -42
- package/dist/deprecation.js +0 -57
- package/scripts/codemod/README.md +0 -76
- package/scripts/codemod/cli.ts +0 -206
- package/scripts/codemod/map.ts +0 -118
- package/scripts/codemod/transform.ts +0 -549
- package/scripts/codemod/tsconfig.json +0 -15
- package/scripts/codemod/wc-children.ts +0 -75
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The installed entry point. Kept apart from cli.ts on purpose: cli.ts imports
|
|
3
|
+
// the transform, which imports `svelte/compiler` at module load, so a consumer
|
|
4
|
+
// missing it would get a bare module-resolution stack before any code of ours
|
|
5
|
+
// ran. Resolving it first turns that into one line. Also the reason this does
|
|
6
|
+
// not reuse cli.ts's own "am I the entry point" check — the bin is reached
|
|
7
|
+
// through an npm symlink, whose path never matches the real module URL, so
|
|
8
|
+
// that check would silently run nothing.
|
|
9
|
+
const REQUIRED = ['svelte/compiler'];
|
|
10
|
+
const missing = REQUIRED.filter((specifier) => {
|
|
11
|
+
try {
|
|
12
|
+
import.meta.resolve(specifier);
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
if (missing.length > 0) {
|
|
20
|
+
console.error(`sui-codemod needs ${missing.join(' and ')} installed in this project ` +
|
|
21
|
+
'(svelte is a peer dependency of @juspay/svelte-ui-components). ' +
|
|
22
|
+
'Install it and run the command again.');
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const { runCodemod } = await import("./cli.js");
|
|
27
|
+
const summary = runCodemod(process.argv.slice(2), (line) => {
|
|
28
|
+
console.log(line);
|
|
29
|
+
});
|
|
30
|
+
process.exitCode = summary.exitCode;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { parseArgs } from 'node:util';
|
|
5
|
+
import { transformSvelte } from "./transform.js";
|
|
6
|
+
import { findChildrenAssignments } from "./wc-children.js";
|
|
7
|
+
const USAGE = [
|
|
8
|
+
'Usage: npx sui-codemod [--dry-run] <path...>',
|
|
9
|
+
' (inside this repository: node scripts/codemod/cli.ts ...)',
|
|
10
|
+
'',
|
|
11
|
+
'Prepares a @juspay/svelte-ui-components consumer for 4.0.0: renames every',
|
|
12
|
+
'deprecated event-prop spelling on library components to its corrected',
|
|
13
|
+
'spelling (see legacy-pairs.ts) and reports `children` assignments on the',
|
|
14
|
+
'custom elements that stop declaring it.',
|
|
15
|
+
'',
|
|
16
|
+
' --dry-run print every change as a diff without writing any file',
|
|
17
|
+
' --help show this help',
|
|
18
|
+
'',
|
|
19
|
+
'Paths may be files or directories; directories are walked recursively,',
|
|
20
|
+
'skipping node_modules, .git, .svelte-kit, dist, dist-wc, build, coverage,',
|
|
21
|
+
'playwright-report and test-results.'
|
|
22
|
+
].join('\n');
|
|
23
|
+
const SKIPPED_DIRECTORIES = new Set([
|
|
24
|
+
'node_modules',
|
|
25
|
+
'.git',
|
|
26
|
+
'.svelte-kit',
|
|
27
|
+
'dist',
|
|
28
|
+
'dist-wc',
|
|
29
|
+
'build',
|
|
30
|
+
'coverage',
|
|
31
|
+
'playwright-report',
|
|
32
|
+
'test-results'
|
|
33
|
+
]);
|
|
34
|
+
// Scripts are scanned for `children` assignments only; the prop renames live
|
|
35
|
+
// in markup, so .svelte files are the only ones ever rewritten.
|
|
36
|
+
const SCRIPT_FILE = /\.(ts|js|mts|mjs|cts|cjs)$/;
|
|
37
|
+
function collectFiles(path, out) {
|
|
38
|
+
const stats = statSync(path);
|
|
39
|
+
if (stats.isFile()) {
|
|
40
|
+
if (path.endsWith('.svelte') || SCRIPT_FILE.test(path)) {
|
|
41
|
+
out.add(path);
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (!stats.isDirectory()) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const entries = [...readdirSync(path, { withFileTypes: true })].sort((a, b) => a.name.localeCompare(b.name));
|
|
49
|
+
for (const entry of entries) {
|
|
50
|
+
if (entry.isDirectory()) {
|
|
51
|
+
if (!SKIPPED_DIRECTORIES.has(entry.name)) {
|
|
52
|
+
collectFiles(join(path, entry.name), out);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (entry.isFile()) {
|
|
56
|
+
collectFiles(join(path, entry.name), out);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Every edit the transform makes stays on a single line, so old and new text
|
|
62
|
+
* always have the same line count and a pairwise comparison is an exact diff.
|
|
63
|
+
*/
|
|
64
|
+
function printLineDiff(file, before, after, log) {
|
|
65
|
+
const oldLines = before.split('\n');
|
|
66
|
+
const newLines = after.split('\n');
|
|
67
|
+
log(`--- ${file}`);
|
|
68
|
+
if (oldLines.length !== newLines.length) {
|
|
69
|
+
log(' (line counts differ; showing full replacement)');
|
|
70
|
+
for (const line of oldLines) {
|
|
71
|
+
log(`- ${line}`);
|
|
72
|
+
}
|
|
73
|
+
for (const line of newLines) {
|
|
74
|
+
log(`+ ${line}`);
|
|
75
|
+
}
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
oldLines.forEach((oldLine, index) => {
|
|
79
|
+
const newLine = newLines.at(index) ?? '';
|
|
80
|
+
if (oldLine !== newLine) {
|
|
81
|
+
log(`@@ ${file}:${index + 1}`);
|
|
82
|
+
log(`- ${oldLine}`);
|
|
83
|
+
log(`+ ${newLine}`);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
export function runCodemod(argv, log) {
|
|
88
|
+
const failure = {
|
|
89
|
+
exitCode: 2,
|
|
90
|
+
filesScanned: 0,
|
|
91
|
+
filesChanged: 0,
|
|
92
|
+
propsRenamed: 0,
|
|
93
|
+
warnings: 0
|
|
94
|
+
};
|
|
95
|
+
let parsed;
|
|
96
|
+
try {
|
|
97
|
+
parsed = parseArgs({
|
|
98
|
+
args: [...argv],
|
|
99
|
+
options: {
|
|
100
|
+
'dry-run': { type: 'boolean' },
|
|
101
|
+
help: { type: 'boolean' }
|
|
102
|
+
},
|
|
103
|
+
allowPositionals: true,
|
|
104
|
+
strict: true
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
log(error instanceof Error ? error.message : String(error));
|
|
109
|
+
log(USAGE);
|
|
110
|
+
return failure;
|
|
111
|
+
}
|
|
112
|
+
if (parsed.values.help === true) {
|
|
113
|
+
log(USAGE);
|
|
114
|
+
return { ...failure, exitCode: 0 };
|
|
115
|
+
}
|
|
116
|
+
if (parsed.positionals.length === 0) {
|
|
117
|
+
log(USAGE);
|
|
118
|
+
return failure;
|
|
119
|
+
}
|
|
120
|
+
for (const path of parsed.positionals) {
|
|
121
|
+
if (!existsSync(path)) {
|
|
122
|
+
log(`path does not exist: ${path}`);
|
|
123
|
+
return failure;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const dryRun = parsed.values['dry-run'] === true;
|
|
127
|
+
const files = new Set();
|
|
128
|
+
for (const path of parsed.positionals) {
|
|
129
|
+
collectFiles(resolve(path), files);
|
|
130
|
+
}
|
|
131
|
+
let filesChanged = 0;
|
|
132
|
+
let propsRenamed = 0;
|
|
133
|
+
let warnings = 0;
|
|
134
|
+
for (const file of files) {
|
|
135
|
+
const source = readFileSync(file, 'utf8');
|
|
136
|
+
// The `children` removal is a 4.0.0 breaking change to report, not a
|
|
137
|
+
// rename to apply, so it never contributes to filesChanged.
|
|
138
|
+
const childrenWarnings = findChildrenAssignments(source, file);
|
|
139
|
+
const result = file.endsWith('.svelte')
|
|
140
|
+
? transformSvelte(source, file)
|
|
141
|
+
: { code: source, changed: false, propsRenamed: 0, warnings: [] };
|
|
142
|
+
for (const warning of [...result.warnings, ...childrenWarnings]) {
|
|
143
|
+
log(`${warning.file}:${warning.line}:${warning.column} WARN ${warning.message}`);
|
|
144
|
+
}
|
|
145
|
+
warnings += result.warnings.length + childrenWarnings.length;
|
|
146
|
+
if (!result.changed) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
filesChanged += 1;
|
|
150
|
+
propsRenamed += result.propsRenamed;
|
|
151
|
+
if (dryRun) {
|
|
152
|
+
printLineDiff(file, source, result.code, log);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
writeFileSync(file, result.code);
|
|
156
|
+
log(`${file}: ${result.propsRenamed} prop(s) renamed`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
log(`${dryRun ? '[dry run] ' : ''}scanned ${files.size} file(s), changed ${filesChanged}, ` +
|
|
160
|
+
`renamed ${propsRenamed} prop(s), ${warnings} warning(s)`);
|
|
161
|
+
return {
|
|
162
|
+
exitCode: 0,
|
|
163
|
+
filesScanned: files.size,
|
|
164
|
+
filesChanged,
|
|
165
|
+
propsRenamed,
|
|
166
|
+
warnings
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const entryPoint = process.argv.at(1) ?? '';
|
|
170
|
+
if (entryPoint !== '' && import.meta.url === pathToFileURL(entryPoint).href) {
|
|
171
|
+
const summary = runCodemod(process.argv.slice(2), (line) => {
|
|
172
|
+
console.log(line);
|
|
173
|
+
});
|
|
174
|
+
process.exitCode = summary.exitCode;
|
|
175
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every event-prop spelling this library still accepts but has deprecated,
|
|
3
|
+
* mapped to the lowercase spelling a consumer should use instead
|
|
4
|
+
* (DESIGN_PRINCIPLES.md §3: event props are lowercase throughout). Generated
|
|
5
|
+
* from the `@deprecated` tags in `src/lib/**\/properties.ts` — the tag names
|
|
6
|
+
* the replacement, so the library's own declarations are the source of truth
|
|
7
|
+
* and this table is a snapshot of them.
|
|
8
|
+
*
|
|
9
|
+
* `component` is the exported component name a consumer imports, which is
|
|
10
|
+
* usually but not always the `properties.ts` directory name: Stepper's
|
|
11
|
+
* `properties.ts` declares props for both `Stepper` and `Step`, and the
|
|
12
|
+
* `onClick`/`onclick` entry attributed to `Step` comes from that one shared
|
|
13
|
+
* file (see `scripts/codemod/generate-maps.ts`'s `OWNER_COMPONENTS`).
|
|
14
|
+
*
|
|
15
|
+
* Every entry is a same-package rewrite (a consumer moving off a spelling
|
|
16
|
+
* this library itself deprecated), so there is no import specifier to touch,
|
|
17
|
+
* only the attribute name.
|
|
18
|
+
*
|
|
19
|
+
* `scripts/codemod/generate-maps.ts` recomputes this table from source;
|
|
20
|
+
* `legacy-pairs.test.ts` asserts the committed array below matches its
|
|
21
|
+
* output, so drift fails CI instead of shipping quietly.
|
|
22
|
+
*/
|
|
23
|
+
export const LEGACY_PAIRS = [
|
|
24
|
+
{ component: 'Accordion', legacy: 'onToggle', corrected: 'ontoggle' },
|
|
25
|
+
{ component: 'AreaChart', legacy: 'onPointHover', corrected: 'onpointhover' },
|
|
26
|
+
{ component: 'AreaChart', legacy: 'onPointClick', corrected: 'onpointclick' },
|
|
27
|
+
{ component: 'AttachmentChipRow', legacy: 'onRemoveImage', corrected: 'onremoveimage' },
|
|
28
|
+
{ component: 'AttachmentChipRow', legacy: 'onRemoveFile', corrected: 'onremovefile' },
|
|
29
|
+
{ component: 'AttachmentChipRow', legacy: 'onRemoveVideo', corrected: 'onremovevideo' },
|
|
30
|
+
{ component: 'AttachmentChipRow', legacy: 'onOpenImage', corrected: 'onopenimage' },
|
|
31
|
+
{ component: 'AttachmentChipRow', legacy: 'onOpenVideo', corrected: 'onopenvideo' },
|
|
32
|
+
{ component: 'AttachmentChipRow', legacy: 'onOpenFile', corrected: 'onopenfile' },
|
|
33
|
+
{ component: 'Banner', legacy: 'onDismiss', corrected: 'ondismiss' },
|
|
34
|
+
{ component: 'BarChart', legacy: 'onChartReady', corrected: 'onchartready' },
|
|
35
|
+
{ component: 'BarChart', legacy: 'onBarClick', corrected: 'onbarclick' },
|
|
36
|
+
{ component: 'BarChart', legacy: 'onBarHover', corrected: 'onbarhover' },
|
|
37
|
+
{ component: 'Book', legacy: 'onPageChange', corrected: 'onpagechange' },
|
|
38
|
+
{ component: 'Calendar', legacy: 'onSelect', corrected: 'onselect' },
|
|
39
|
+
{ component: 'Calendar', legacy: 'onRangeSelect', corrected: 'onrangeselect' },
|
|
40
|
+
{ component: 'Calendar', legacy: 'onMonthChange', corrected: 'onmonthchange' },
|
|
41
|
+
{ component: 'Chat', legacy: 'onSend', corrected: 'onsend' },
|
|
42
|
+
{ component: 'Chat', legacy: 'onSuggestion', corrected: 'onsuggestion' },
|
|
43
|
+
{ component: 'Chat', legacy: 'onClose', corrected: 'onclose' },
|
|
44
|
+
{ component: 'Chat', legacy: 'onStop', corrected: 'onstop' },
|
|
45
|
+
{ component: 'Chat', legacy: 'onVoice', corrected: 'onvoice' },
|
|
46
|
+
{ component: 'Chat', legacy: 'onAttach', corrected: 'onattach' },
|
|
47
|
+
{ component: 'Chat', legacy: 'onRetry', corrected: 'onretry' },
|
|
48
|
+
{ component: 'Chat', legacy: 'onFeedback', corrected: 'onfeedback' },
|
|
49
|
+
{ component: 'ChatBubble', legacy: 'onOpen', corrected: 'onopen' },
|
|
50
|
+
{ component: 'ChatBubble', legacy: 'onClose', corrected: 'onclose' },
|
|
51
|
+
{ component: 'ChatBubble', legacy: 'onToggle', corrected: 'ontoggle' },
|
|
52
|
+
{ component: 'ChatComposer', legacy: 'onSubmit', corrected: 'onsubmit' },
|
|
53
|
+
{ component: 'ChatComposer', legacy: 'onStop', corrected: 'onstop' },
|
|
54
|
+
{ component: 'ChatComposer', legacy: 'onVoice', corrected: 'onvoice' },
|
|
55
|
+
{ component: 'ChatComposer', legacy: 'onAttach', corrected: 'onattach' },
|
|
56
|
+
{ component: 'ChatComposer', legacy: 'onAttachClick', corrected: 'onattachclick' },
|
|
57
|
+
{ component: 'ChatComposer', legacy: 'onRemoveRichImage', corrected: 'onremoverichimage' },
|
|
58
|
+
{ component: 'ChatComposer', legacy: 'onRemoveRichFile', corrected: 'onremoverichfile' },
|
|
59
|
+
{ component: 'ChatComposer', legacy: 'onRemoveRichVideo', corrected: 'onremoverichvideo' },
|
|
60
|
+
{ component: 'ChatComposer', legacy: 'onOpenRichImage', corrected: 'onopenrichimage' },
|
|
61
|
+
{ component: 'ChatComposer', legacy: 'onOpenRichVideo', corrected: 'onopenrichvideo' },
|
|
62
|
+
{ component: 'ChatComposer', legacy: 'onOpenRichFile', corrected: 'onopenrichfile' },
|
|
63
|
+
{ component: 'ChatComposer', legacy: 'onAction', corrected: 'onaction' },
|
|
64
|
+
{ component: 'ChatHeader', legacy: 'onClose', corrected: 'onclose' },
|
|
65
|
+
{ component: 'ChatMessage', legacy: 'onRetry', corrected: 'onretry' },
|
|
66
|
+
{ component: 'ChatMessage', legacy: 'onFeedback', corrected: 'onfeedback' },
|
|
67
|
+
{ component: 'ChatMessage', legacy: 'onCopy', corrected: 'oncopy' },
|
|
68
|
+
{ component: 'ChatMessageList', legacy: 'onScrollState', corrected: 'onscrollstate' },
|
|
69
|
+
{ component: 'ChatMessageList', legacy: 'onRetry', corrected: 'onretry' },
|
|
70
|
+
{ component: 'ChatMessageList', legacy: 'onFeedback', corrected: 'onfeedback' },
|
|
71
|
+
{ component: 'ChatSuggestions', legacy: 'onSelect', corrected: 'onselect' },
|
|
72
|
+
{ component: 'CheckListItem', legacy: 'onClick', corrected: 'onclick' },
|
|
73
|
+
{ component: 'Checkbox', legacy: 'onClick', corrected: 'onclick' },
|
|
74
|
+
{ component: 'ChipInput', legacy: 'onAdd', corrected: 'onadd' },
|
|
75
|
+
{ component: 'ChipInput', legacy: 'onDismiss', corrected: 'ondismiss' },
|
|
76
|
+
{ component: 'ChipInput', legacy: 'onEdit', corrected: 'onedit' },
|
|
77
|
+
{ component: 'ChipInput', legacy: 'onChange', corrected: 'onchange' },
|
|
78
|
+
{ component: 'Choicebox', legacy: 'onClick', corrected: 'onclick' },
|
|
79
|
+
{ component: 'ColorPicker', legacy: 'onChange', corrected: 'onchange' },
|
|
80
|
+
{ component: 'ColorPicker', legacy: 'onInput', corrected: 'oninput' },
|
|
81
|
+
{ component: 'Combobox', legacy: 'onSelect', corrected: 'onselect' },
|
|
82
|
+
{ component: 'Combobox', legacy: 'onInput', corrected: 'oninput' },
|
|
83
|
+
{ component: 'Combobox', legacy: 'onOpen', corrected: 'onopen' },
|
|
84
|
+
{ component: 'Combobox', legacy: 'onClose', corrected: 'onclose' },
|
|
85
|
+
{ component: 'Combobox', legacy: 'onChange', corrected: 'onchange' },
|
|
86
|
+
{ component: 'Combobox', legacy: 'onAdd', corrected: 'onadd' },
|
|
87
|
+
{ component: 'Combobox', legacy: 'onRemove', corrected: 'onremove' },
|
|
88
|
+
{ component: 'Combobox', legacy: 'onCreate', corrected: 'oncreate' },
|
|
89
|
+
{ component: 'CommandMenu', legacy: 'onSelect', corrected: 'onselect' },
|
|
90
|
+
{ component: 'CommandMenu', legacy: 'onClose', corrected: 'onclose' },
|
|
91
|
+
{ component: 'ContextMenu', legacy: 'onSelect', corrected: 'onselect' },
|
|
92
|
+
{ component: 'ContextMenu', legacy: 'onOpen', corrected: 'onopen' },
|
|
93
|
+
{ component: 'ContextMenu', legacy: 'onClose', corrected: 'onclose' },
|
|
94
|
+
{ component: 'DateRangePicker', legacy: 'onApply', corrected: 'onapply' },
|
|
95
|
+
{ component: 'DateRangePicker', legacy: 'onApplySingle', corrected: 'onapplysingle' },
|
|
96
|
+
{ component: 'DateRangePicker', legacy: 'onApplyCompare', corrected: 'onapplycompare' },
|
|
97
|
+
{ component: 'DateRangePicker', legacy: 'onCancel', corrected: 'oncancel' },
|
|
98
|
+
{ component: 'DateRangePicker', legacy: 'onOpenToggle', corrected: 'onopentoggle' },
|
|
99
|
+
{ component: 'DateRangePicker', legacy: 'onClear', corrected: 'onclear' },
|
|
100
|
+
{ component: 'Draggable', legacy: 'onMoveStart', corrected: 'onmovestart' },
|
|
101
|
+
{ component: 'Draggable', legacy: 'onMove', corrected: 'onmove' },
|
|
102
|
+
{ component: 'Draggable', legacy: 'onMoveEnd', corrected: 'onmoveend' },
|
|
103
|
+
{ component: 'DualAxisBarChart', legacy: 'onBarClick', corrected: 'onbarclick' },
|
|
104
|
+
{ component: 'FileDropzoneTrigger', legacy: 'onClick', corrected: 'onclick' },
|
|
105
|
+
{ component: 'FileInput', legacy: 'onFiles', corrected: 'onfiles' },
|
|
106
|
+
{ component: 'FileInput', legacy: 'onError', corrected: 'onerror' },
|
|
107
|
+
{ component: 'FunnelChart', legacy: 'onStageClick', corrected: 'onstageclick' },
|
|
108
|
+
{ component: 'FunnelChart', legacy: 'onStageHover', corrected: 'onstagehover' },
|
|
109
|
+
{ component: 'Gallery', legacy: 'onImageClick', corrected: 'onimageclick' },
|
|
110
|
+
{ component: 'Gallery', legacy: 'onEditClick', corrected: 'oneditclick' },
|
|
111
|
+
{ component: 'Gallery', legacy: 'onDeleteClick', corrected: 'ondeleteclick' },
|
|
112
|
+
{ component: 'Gallery', legacy: 'onOpen', corrected: 'onopen' },
|
|
113
|
+
{ component: 'Gallery', legacy: 'onDismiss', corrected: 'onclose' },
|
|
114
|
+
{ component: 'Gallery', legacy: 'onIndexChange', corrected: 'onchange' },
|
|
115
|
+
{ component: 'HITL', legacy: 'onConfirm', corrected: 'onconfirm' },
|
|
116
|
+
{ component: 'HITL', legacy: 'onMicToggle', corrected: 'onmictoggle' },
|
|
117
|
+
{ component: 'IframeViewer', legacy: 'onMessage', corrected: 'onmessage' },
|
|
118
|
+
{ component: 'Img', legacy: 'onError', corrected: 'onerror' },
|
|
119
|
+
{ component: 'Input', legacy: 'onLeftIconClick', corrected: 'onlefticonclick' },
|
|
120
|
+
{ component: 'Input', legacy: 'onRightIconClick', corrected: 'onrighticonclick' },
|
|
121
|
+
{ component: 'Input', legacy: 'onInput', corrected: 'oninput' },
|
|
122
|
+
{ component: 'Input', legacy: 'onFocus', corrected: 'onfocus' },
|
|
123
|
+
{ component: 'Input', legacy: 'onFocusout', corrected: 'onfocusout' },
|
|
124
|
+
{ component: 'Input', legacy: 'onBlur', corrected: 'onblur' },
|
|
125
|
+
{ component: 'Input', legacy: 'onPaste', corrected: 'onpaste' },
|
|
126
|
+
{ component: 'Input', legacy: 'onClick', corrected: 'onclick' },
|
|
127
|
+
{ component: 'Input', legacy: 'onStateChange', corrected: 'onstatechange' },
|
|
128
|
+
{ component: 'Input', legacy: 'onKeyDown', corrected: 'onkeydown' },
|
|
129
|
+
{ component: 'LineChart', legacy: 'onPointClick', corrected: 'onpointclick' },
|
|
130
|
+
{ component: 'LineChart', legacy: 'onPointHover', corrected: 'onpointhover' },
|
|
131
|
+
{ component: 'LineChart', legacy: 'onChartReady', corrected: 'onchartready' },
|
|
132
|
+
{ component: 'ListItem', legacy: 'onleftImageClick', corrected: 'onleftimageclick' },
|
|
133
|
+
{ component: 'ListItem', legacy: 'onLeftImageClick', corrected: 'onleftimageclick' },
|
|
134
|
+
{ component: 'ListItem', legacy: 'onrightImageClick', corrected: 'onrightimageclick' },
|
|
135
|
+
{ component: 'ListItem', legacy: 'onRightImageClick', corrected: 'onrightimageclick' },
|
|
136
|
+
{ component: 'ListItem', legacy: 'oncenterTextClick', corrected: 'oncentertextclick' },
|
|
137
|
+
{ component: 'ListItem', legacy: 'onCenterTextClick', corrected: 'oncentertextclick' },
|
|
138
|
+
{ component: 'ListItem', legacy: 'onitemClick', corrected: 'onitemclick' },
|
|
139
|
+
{ component: 'ListItem', legacy: 'onItemClick', corrected: 'onitemclick' },
|
|
140
|
+
{ component: 'ListItem', legacy: 'ontopSectionClick', corrected: 'ontopsectionclick' },
|
|
141
|
+
{ component: 'ListItem', legacy: 'onTopSectionClick', corrected: 'ontopsectionclick' },
|
|
142
|
+
{ component: 'LottiePlayer', legacy: 'onComplete', corrected: 'oncomplete' },
|
|
143
|
+
{ component: 'LottiePlayer', legacy: 'onError', corrected: 'onerror' },
|
|
144
|
+
{ component: 'MediaPlayer', legacy: 'onVolumeChange', corrected: 'onvolumechange' },
|
|
145
|
+
{ component: 'MediaUpload', legacy: 'onFilesChange', corrected: 'onchange' },
|
|
146
|
+
{ component: 'MediaUpload', legacy: 'onRemove', corrected: 'onremove' },
|
|
147
|
+
{ component: 'MediaUpload', legacy: 'onRejected', corrected: 'onerror' },
|
|
148
|
+
{ component: 'Menu', legacy: 'onSelect', corrected: 'onselect' },
|
|
149
|
+
{ component: 'Menu', legacy: 'onOpen', corrected: 'onopen' },
|
|
150
|
+
{ component: 'Menu', legacy: 'onClose', corrected: 'onclose' },
|
|
151
|
+
{ component: 'Modal', legacy: 'onClose', corrected: 'onclose' },
|
|
152
|
+
{ component: 'Modal', legacy: 'onheaderRightImageClick', corrected: 'onheaderrightimageclick' },
|
|
153
|
+
{ component: 'Modal', legacy: 'onHeaderRightImageClick', corrected: 'onheaderrightimageclick' },
|
|
154
|
+
{ component: 'Modal', legacy: 'onheaderLeftImageClick', corrected: 'onheaderleftimageclick' },
|
|
155
|
+
{ component: 'Modal', legacy: 'onHeaderLeftImageClick', corrected: 'onheaderleftimageclick' },
|
|
156
|
+
{ component: 'Modal', legacy: 'onprimaryButtonClick', corrected: 'onprimarybuttonclick' },
|
|
157
|
+
{ component: 'Modal', legacy: 'onPrimaryButtonClick', corrected: 'onprimarybuttonclick' },
|
|
158
|
+
{ component: 'Modal', legacy: 'onsecondaryButtonClick', corrected: 'onsecondarybuttonclick' },
|
|
159
|
+
{ component: 'Modal', legacy: 'onSecondaryButtonClick', corrected: 'onsecondarybuttonclick' },
|
|
160
|
+
{ component: 'Modal', legacy: 'onoverlayClick', corrected: 'onoverlayclick' },
|
|
161
|
+
{ component: 'Modal', legacy: 'onOverlayClick', corrected: 'onoverlayclick' },
|
|
162
|
+
{ component: 'Pagination', legacy: 'onChange', corrected: 'onchange' },
|
|
163
|
+
{ component: 'Pagination', legacy: 'onLoadMore', corrected: 'onloadmore' },
|
|
164
|
+
{ component: 'PieChart', legacy: 'onChartReady', corrected: 'onchartready' },
|
|
165
|
+
{ component: 'PieChart', legacy: 'onSliceClick', corrected: 'onsliceclick' },
|
|
166
|
+
{ component: 'PieChart', legacy: 'onSliceHover', corrected: 'onslicehover' },
|
|
167
|
+
{ component: 'Pill', legacy: 'onDismiss', corrected: 'ondismiss' },
|
|
168
|
+
{ component: 'Radio', legacy: 'onChange', corrected: 'onchange' },
|
|
169
|
+
{ component: 'Resizable', legacy: 'onResize', corrected: 'onresize' },
|
|
170
|
+
{ component: 'Resizable', legacy: 'onResizeStart', corrected: 'onresizestart' },
|
|
171
|
+
{ component: 'Resizable', legacy: 'onResizeEnd', corrected: 'onresizeend' },
|
|
172
|
+
{ component: 'SankeyChart', legacy: 'onNodeClick', corrected: 'onnodeclick' },
|
|
173
|
+
{ component: 'SankeyChart', legacy: 'onLinkClick', corrected: 'onlinkclick' },
|
|
174
|
+
{ component: 'SankeyChart', legacy: 'onNodeHover', corrected: 'onnodehover' },
|
|
175
|
+
{ component: 'SankeyChart', legacy: 'onLinkHover', corrected: 'onlinkhover' },
|
|
176
|
+
{ component: 'Scroller', legacy: 'onScrollPosition', corrected: 'onscrollposition' },
|
|
177
|
+
{ component: 'Select', legacy: 'onChange', corrected: 'onchange' },
|
|
178
|
+
{ component: 'Select', legacy: 'onOpen', corrected: 'onopen' },
|
|
179
|
+
{ component: 'Select', legacy: 'onClose', corrected: 'onclose' },
|
|
180
|
+
{ component: 'Sheet', legacy: 'onClose', corrected: 'onclose' },
|
|
181
|
+
{ component: 'Sheet', legacy: 'onAfterOpen', corrected: 'onafteropen' },
|
|
182
|
+
{ component: 'Sheet', legacy: 'onAfterClose', corrected: 'onafterclose' },
|
|
183
|
+
{ component: 'Slider', legacy: 'onChange', corrected: 'onchange' },
|
|
184
|
+
{ component: 'Slider', legacy: 'onInput', corrected: 'oninput' },
|
|
185
|
+
{ component: 'Snippet', legacy: 'onCopy', corrected: 'oncopy' },
|
|
186
|
+
{ component: 'SplitButton', legacy: 'onSelect', corrected: 'onselect' },
|
|
187
|
+
{ component: 'SplitInput', legacy: 'onChange', corrected: 'onchange' },
|
|
188
|
+
{ component: 'SplitInput', legacy: 'onInput', corrected: 'oninput' },
|
|
189
|
+
{ component: 'SplitInput', legacy: 'onComplete', corrected: 'oncomplete' },
|
|
190
|
+
{ component: 'StatCard', legacy: 'onCheckboxChange', corrected: 'oncheckboxchange' },
|
|
191
|
+
{ component: 'Status', legacy: 'onbuttonClick', corrected: 'onbuttonclick' },
|
|
192
|
+
{ component: 'Status', legacy: 'onButtonClick', corrected: 'onbuttonclick' },
|
|
193
|
+
{ component: 'Stepper', legacy: 'onstepclick', corrected: 'onhandlestepclick' },
|
|
194
|
+
{ component: 'Stepper', legacy: 'onStepClick', corrected: 'onhandlestepclick' },
|
|
195
|
+
{ component: 'Stepper', legacy: 'onhandleStepClick', corrected: 'onhandlestepclick' },
|
|
196
|
+
{ component: 'Stepper', legacy: 'onHandleStepClick', corrected: 'onhandlestepclick' },
|
|
197
|
+
{ component: 'Step', legacy: 'onClick', corrected: 'onclick' },
|
|
198
|
+
{ component: 'Table', legacy: 'onRowClick', corrected: 'onrowclick' },
|
|
199
|
+
{ component: 'Table', legacy: 'onSort', corrected: 'onsort' },
|
|
200
|
+
{ component: 'Table', legacy: 'onSearchChange', corrected: 'onsearchchange' },
|
|
201
|
+
{ component: 'Tabs', legacy: 'onChange', corrected: 'onchange' },
|
|
202
|
+
{ component: 'Tabs', legacy: 'onKeyChange', corrected: 'onkeychange' },
|
|
203
|
+
{ component: 'TaskList', legacy: 'onRetry', corrected: 'onretry' },
|
|
204
|
+
{ component: 'ThemeSwitcher', legacy: 'onChange', corrected: 'onchange' },
|
|
205
|
+
{ component: 'ThinkingIndicator', legacy: 'onToggle', corrected: 'ontoggle' },
|
|
206
|
+
{ component: 'ThinkingIndicator', legacy: 'onRowSelect', corrected: 'onrowselect' },
|
|
207
|
+
{ component: 'ThinkingIndicator', legacy: 'onSettled', corrected: 'onsettled' },
|
|
208
|
+
{ component: 'Toast', legacy: 'onToastHide', corrected: 'ontoasthide' },
|
|
209
|
+
{ component: 'Toggle', legacy: 'onClick', corrected: 'onclick' },
|
|
210
|
+
{ component: 'ToolCallLog', legacy: 'onChipClick', corrected: 'onchipclick' },
|
|
211
|
+
{ component: 'Toolbar', legacy: 'onbackClick', corrected: 'onbackclick' },
|
|
212
|
+
{ component: 'Toolbar', legacy: 'onBackClick', corrected: 'onbackclick' },
|
|
213
|
+
{ component: 'TypewriterText', legacy: 'onProgress', corrected: 'onprogress' }
|
|
214
|
+
];
|
|
215
|
+
/** component name -> (legacy prop name -> corrected prop name). */
|
|
216
|
+
export function legacyRenameTable() {
|
|
217
|
+
const table = new Map();
|
|
218
|
+
for (const pair of LEGACY_PAIRS) {
|
|
219
|
+
const component = table.get(pair.component) ?? new Map();
|
|
220
|
+
component.set(pair.legacy, pair.corrected);
|
|
221
|
+
table.set(pair.component, component);
|
|
222
|
+
}
|
|
223
|
+
return table;
|
|
224
|
+
}
|
|
225
|
+
/** Every legacy prop name across all components, for unresolved-tag warnings. */
|
|
226
|
+
export function legacyProps() {
|
|
227
|
+
return new Set(LEGACY_PAIRS.map((pair) => pair.legacy));
|
|
228
|
+
}
|