bestax-migrate 2.29.2 → 2.30.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/dist/sources/bulma-classes/class-map.d.ts +48 -3
- package/dist/sources/bulma-classes/class-map.d.ts.map +1 -1
- package/dist/sources/bulma-classes/class-map.js +78 -36
- package/dist/sources/bulma-classes/plan.d.ts.map +1 -1
- package/dist/sources/bulma-classes/plan.js +76 -17
- package/dist/sources/bulma-classes/rules.d.ts.map +1 -1
- package/dist/sources/bulma-classes/rules.js +1 -0
- package/package.json +2 -2
|
@@ -52,6 +52,25 @@ export interface Modifier {
|
|
|
52
52
|
readonly name: string;
|
|
53
53
|
readonly value: string;
|
|
54
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Another of the root's modifiers whose prop this one writes another value
|
|
57
|
+
* of, and that value renders that modifier's class too (`Field`'s
|
|
58
|
+
* `hasAddons="centered"` renders `has-addons` beside `has-addons-centered`).
|
|
59
|
+
* The class converts only beside that one, the two as the one value, and
|
|
60
|
+
* stays a class on its own. Beside it, `tagIn` and `needsAttr` hold as they
|
|
61
|
+
* do for any modifier.
|
|
62
|
+
*/
|
|
63
|
+
readonly beside?: string;
|
|
64
|
+
/**
|
|
65
|
+
* The tag the target renders with this class's prop and no `as`, in place
|
|
66
|
+
* of the root's `tag` (`Image` puts a ratio on a <figure>), so the element
|
|
67
|
+
* converts with `as` only on another tag. The planner's tag check, which
|
|
68
|
+
* comes before every refusal, reads it, and the render truth test holds it
|
|
69
|
+
* to one of the tags it renders the root on. Only one such class converts
|
|
70
|
+
* on an element; a second stays a class, the way a second class for a prop
|
|
71
|
+
* already written does.
|
|
72
|
+
*/
|
|
73
|
+
readonly rendersTag?: string;
|
|
55
74
|
}
|
|
56
75
|
/**
|
|
57
76
|
* - `mapped`: converts to `target`.
|
|
@@ -351,6 +370,14 @@ export interface RootEntry {
|
|
|
351
370
|
* no prop for them.
|
|
352
371
|
*/
|
|
353
372
|
readonly omits?: Readonly<Record<string, string>>;
|
|
373
|
+
/**
|
|
374
|
+
* How to keep this class on an element another root converts, where
|
|
375
|
+
* wrapping or nesting its component is not always the answer: `.container`
|
|
376
|
+
* there is often only centering the element, which `mx="auto"` does. For
|
|
377
|
+
* that element's TODO and the MCP lookup, which otherwise say to wrap or
|
|
378
|
+
* nest it.
|
|
379
|
+
*/
|
|
380
|
+
readonly onAnother?: string;
|
|
354
381
|
/**
|
|
355
382
|
* Bulma styles this root's modifiers, and the classes it omits, only on
|
|
356
383
|
* the element that carries the root itself (`.image.is-64x64`), so on an
|
|
@@ -358,6 +385,19 @@ export interface RootEntry {
|
|
|
358
385
|
*/
|
|
359
386
|
readonly modifiersNeedRoot?: boolean;
|
|
360
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* Whether a root's target renders this tag: the one it renders by itself (or
|
|
390
|
+
* `renders`, the heading its size picks), or one its `as` takes. A root that
|
|
391
|
+
* doesn't loses to one that does on the same element.
|
|
392
|
+
*/
|
|
393
|
+
export declare function reachesTag(entry: RootEntry, tag: string, renders?: string): boolean;
|
|
394
|
+
/**
|
|
395
|
+
* How well a root fits an element's tag, for picking one of two: 2 when the
|
|
396
|
+
* tag is its target's own (`Hero`'s <section>), 1 when its target reaches it
|
|
397
|
+
* only through `as` (`Container`'s), 0 when it can't render it. The higher
|
|
398
|
+
* wins, so `<section className="hero container">` is a `Hero`.
|
|
399
|
+
*/
|
|
400
|
+
export declare function tagFit(entry: RootEntry, tag: string): number;
|
|
361
401
|
export declare const COLORS: readonly ["primary", "link", "info", "success", "warning", "danger", "black", "black-bis", "black-ter", "grey-darker", "grey-dark", "grey", "grey-light", "grey-lighter", "white", "white-bis", "white-ter", "light", "dark"];
|
|
362
402
|
export declare const SIZES: readonly ["0", "1", "2", "3", "4", "5", "6", "auto"];
|
|
363
403
|
export declare const TEXT_SIZES: readonly ["1", "2", "3", "4", "5", "6", "7"];
|
|
@@ -391,9 +431,14 @@ export declare const ROOTS: Readonly<Record<string, RootEntry>>;
|
|
|
391
431
|
*/
|
|
392
432
|
export declare const PLACED: Readonly<Record<string, RootEntry>>;
|
|
393
433
|
/**
|
|
394
|
-
* Which root wins when an element carries two (`column box`)
|
|
395
|
-
* surface, so the element keeps the role that decides
|
|
396
|
-
*
|
|
434
|
+
* Which root wins when an element carries two (`column box`) that fit its tag
|
|
435
|
+
* alike: layout before surface, so the element keeps the role that decides
|
|
436
|
+
* where it sits. A better fit beats a higher place here (`tagFit`): `Image`
|
|
437
|
+
* takes a `<figure className="image container">`, which `Container` can't
|
|
438
|
+
* render, and `Hero` a `<section className="hero container">`, whose tag is
|
|
439
|
+
* its own and only reached through `as` by `Container`. The other root stays
|
|
440
|
+
* in `className`, which renders the same either way, and the element gets a
|
|
441
|
+
* TODO naming its component.
|
|
397
442
|
*/
|
|
398
443
|
export declare const PRECEDENCE: readonly string[];
|
|
399
444
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-map.d.ts","sourceRoot":"","sources":["../../../src/sources/bulma-classes/class-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,MAAM,GAChB;IAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE9E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"class-map.d.ts","sourceRoot":"","sources":["../../../src/sources/bulma-classes/class-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,27 @@
|
|
|
21
21
|
export function inTagSet(set, tag) {
|
|
22
22
|
return 'on' in set ? set.on.includes(tag) : !set.except.includes(tag);
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Whether a root's target renders this tag: the one it renders by itself (or
|
|
26
|
+
* `renders`, the heading its size picks), or one its `as` takes. A root that
|
|
27
|
+
* doesn't loses to one that does on the same element.
|
|
28
|
+
*/
|
|
29
|
+
export function reachesTag(entry, tag, renders = entry.tag) {
|
|
30
|
+
if (tag === renders || entry.as === 'any')
|
|
31
|
+
return true;
|
|
32
|
+
return entry.as?.includes(tag) ?? false;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* How well a root fits an element's tag, for picking one of two: 2 when the
|
|
36
|
+
* tag is its target's own (`Hero`'s <section>), 1 when its target reaches it
|
|
37
|
+
* only through `as` (`Container`'s), 0 when it can't render it. The higher
|
|
38
|
+
* wins, so `<section className="hero container">` is a `Hero`.
|
|
39
|
+
*/
|
|
40
|
+
export function tagFit(entry, tag) {
|
|
41
|
+
if (entry.tag === tag)
|
|
42
|
+
return 2;
|
|
43
|
+
return reachesTag(entry, tag) ? 1 : 0;
|
|
44
|
+
}
|
|
24
45
|
// ---- Value vocabularies (held to @allxsmith/bestax-bulma/constants) --------
|
|
25
46
|
export const COLORS = [
|
|
26
47
|
'primary',
|
|
@@ -269,6 +290,13 @@ function perViewport(prefix, values, prop, viewports) {
|
|
|
269
290
|
function flags(map) {
|
|
270
291
|
return Object.fromEntries(Object.entries(map).map(([token, prop]) => [token, flag(prop)]));
|
|
271
292
|
}
|
|
293
|
+
/** The same modifiers, each converting only beside `other`. */
|
|
294
|
+
function beside(other, modifiers) {
|
|
295
|
+
return Object.fromEntries(Object.entries(modifiers).map(([token, modifier]) => [
|
|
296
|
+
token,
|
|
297
|
+
{ ...modifier, beside: other },
|
|
298
|
+
]));
|
|
299
|
+
}
|
|
272
300
|
const BASE = {
|
|
273
301
|
status: 'mapped',
|
|
274
302
|
textColor: 'textColor',
|
|
@@ -700,6 +728,9 @@ export const ROOTS = {
|
|
|
700
728
|
'breakpoint',
|
|
701
729
|
'isMax',
|
|
702
730
|
],
|
|
731
|
+
// On another root's element it is often there only to center it (a sized
|
|
732
|
+
// `.image`), which `mx="auto"` does and nothing else `.container` sets.
|
|
733
|
+
onAnother: 'where it is only there to center this element, `mx="auto"` centers it, and otherwise wrap the element in a `Container`; either way drop the class, then check the layout',
|
|
703
734
|
},
|
|
704
735
|
content: {
|
|
705
736
|
...BASE,
|
|
@@ -743,8 +774,6 @@ export const ROOTS = {
|
|
|
743
774
|
...BASE,
|
|
744
775
|
target: 'Field',
|
|
745
776
|
tag: 'div',
|
|
746
|
-
// `has-addons-centered`, `is-grouped-right` and the like stay classes:
|
|
747
|
-
// the prop values that render them render `has-addons` too.
|
|
748
777
|
modifiers: {
|
|
749
778
|
...flags({
|
|
750
779
|
'is-horizontal': 'horizontal',
|
|
@@ -754,6 +783,11 @@ export const ROOTS = {
|
|
|
754
783
|
// `grouped` renders `is-grouped` for `true` and its three layouts, and
|
|
755
784
|
// for nothing else truthy.
|
|
756
785
|
'is-grouped': { writes: [{ prop: 'grouped' }], onlyTrue: true },
|
|
786
|
+
// The prop values that render `has-addons-centered`, `is-grouped-right`
|
|
787
|
+
// and the like render `has-addons` or `is-grouped` too, so each converts
|
|
788
|
+
// only beside that class, and stays a class on its own.
|
|
789
|
+
...beside('has-addons', tokens('has-addons-', ['centered', 'right'], 'hasAddons')),
|
|
790
|
+
...beside('is-grouped', tokens('is-grouped-', ['centered', 'right', 'multiline'], 'grouped')),
|
|
757
791
|
},
|
|
758
792
|
wrapsChildren: {
|
|
759
793
|
in: 'field-body',
|
|
@@ -1442,42 +1476,45 @@ export const ROOTS = {
|
|
|
1442
1476
|
ownProps: ['textColor', 'bgColor', 'color', 'iconProps', 'items'],
|
|
1443
1477
|
},
|
|
1444
1478
|
// `Image` renders `.image` and the `<img>` inside it together, from `src`
|
|
1445
|
-
// and `alt`. A ratio
|
|
1479
|
+
// and `alt`. A ratio as `size` puts it on a <figure> unless `as` says
|
|
1480
|
+
// otherwise.
|
|
1446
1481
|
image: {
|
|
1447
1482
|
...BASE,
|
|
1448
1483
|
target: 'Image',
|
|
1449
1484
|
tag: 'div',
|
|
1450
1485
|
as: ['div', 'figure', 'p'],
|
|
1451
|
-
modifiers:
|
|
1452
|
-
'
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1486
|
+
modifiers: {
|
|
1487
|
+
...tokens('is-', [
|
|
1488
|
+
'16x16',
|
|
1489
|
+
'24x24',
|
|
1490
|
+
'32x32',
|
|
1491
|
+
'48x48',
|
|
1492
|
+
'64x64',
|
|
1493
|
+
'96x96',
|
|
1494
|
+
'128x128',
|
|
1495
|
+
'square',
|
|
1496
|
+
], 'size'),
|
|
1497
|
+
...Object.fromEntries([
|
|
1498
|
+
'1by1',
|
|
1499
|
+
'5by4',
|
|
1500
|
+
'4by3',
|
|
1501
|
+
'3by2',
|
|
1502
|
+
'5by3',
|
|
1503
|
+
'16by9',
|
|
1504
|
+
'2by1',
|
|
1505
|
+
'3by1',
|
|
1506
|
+
'4by5',
|
|
1507
|
+
'3by4',
|
|
1508
|
+
'2by3',
|
|
1509
|
+
'3by5',
|
|
1510
|
+
'9by16',
|
|
1511
|
+
'1by2',
|
|
1512
|
+
'1by3',
|
|
1513
|
+
].map(ratio => [
|
|
1514
|
+
`is-${ratio}`,
|
|
1515
|
+
{ ...set('size', ratio), rendersTag: 'figure' },
|
|
1516
|
+
])),
|
|
1517
|
+
},
|
|
1481
1518
|
modifiersNeedRoot: true,
|
|
1482
1519
|
absorbs: {
|
|
1483
1520
|
tag: 'img',
|
|
@@ -1910,9 +1947,14 @@ export const PLACED = {
|
|
|
1910
1947
|
},
|
|
1911
1948
|
};
|
|
1912
1949
|
/**
|
|
1913
|
-
* Which root wins when an element carries two (`column box`)
|
|
1914
|
-
* surface, so the element keeps the role that decides
|
|
1915
|
-
*
|
|
1950
|
+
* Which root wins when an element carries two (`column box`) that fit its tag
|
|
1951
|
+
* alike: layout before surface, so the element keeps the role that decides
|
|
1952
|
+
* where it sits. A better fit beats a higher place here (`tagFit`): `Image`
|
|
1953
|
+
* takes a `<figure className="image container">`, which `Container` can't
|
|
1954
|
+
* render, and `Hero` a `<section className="hero container">`, whose tag is
|
|
1955
|
+
* its own and only reached through `as` by `Container`. The other root stays
|
|
1956
|
+
* in `className`, which renders the same either way, and the element gets a
|
|
1957
|
+
* TODO naming its component.
|
|
1916
1958
|
*/
|
|
1917
1959
|
export const PRECEDENCE = [
|
|
1918
1960
|
'columns',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/sources/bulma-classes/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/sources/bulma-classes/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* way. And a Bulma 0.9 helper v1 removed (`REPLACED_IN_V1`), which styles
|
|
15
15
|
* nothing under v1, converts as the v1 helper that does its job.
|
|
16
16
|
*/
|
|
17
|
-
import { FORWARDS_REF, HELPER_PROPS, HELPER_TOKENS, inTagSet, legacyHint, modifierFor, modifiesRoot, numberAttrsOf, placedFor, PRECEDENCE, replacedBy, rootFor, rootItNeeds, WRAPPER_OWN_PROPS, wrapperFor, } from './class-map.js';
|
|
17
|
+
import { FORWARDS_REF, HELPER_PROPS, HELPER_TOKENS, inTagSet, legacyHint, modifierFor, modifiesRoot, numberAttrsOf, placedFor, PRECEDENCE, reachesTag, replacedBy, rootFor, rootItNeeds, tagFit, WRAPPER_OWN_PROPS, wrapperFor, } from './class-map.js';
|
|
18
18
|
import { glyphProps, readDrawnGlyph, readGlyph, readHiddenGlyph, } from './glyph.js';
|
|
19
19
|
import { aTag } from '../_shared/articles.js';
|
|
20
20
|
import { ruleId } from './rules.js';
|
|
@@ -54,13 +54,6 @@ function precedence(token) {
|
|
|
54
54
|
function rootLabel(tokens) {
|
|
55
55
|
return tokens.find(token => rootFor(token)?.status === 'mapped') ?? 'button';
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Whether the target renders this tag: the one it renders by itself (or the
|
|
59
|
-
* heading its size picks), or one its `as` takes.
|
|
60
|
-
*/
|
|
61
|
-
function reachesTag(entry, tag, renders = entry.tag) {
|
|
62
|
-
return (tag === renders || entry.as === 'any' || (entry.as?.includes(tag) ?? false));
|
|
63
|
-
}
|
|
64
57
|
function tagsItReaches(entry) {
|
|
65
58
|
if (entry.as === 'any')
|
|
66
59
|
return 'any tag through `as`';
|
|
@@ -68,6 +61,41 @@ function tagsItReaches(entry) {
|
|
|
68
61
|
return entry.as.map(tag => `<${tag}>`).join(', ');
|
|
69
62
|
return `only <${entry.tag}>`;
|
|
70
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* A TODO for each other component class on an element that converts
|
|
66
|
+
* (`columns box`). The class stays in `className`, which renders the same,
|
|
67
|
+
* but on a bestax component it is raw Bulma markup the lint rule reports, so
|
|
68
|
+
* each says which root won and why, and how to keep what the class does.
|
|
69
|
+
*/
|
|
70
|
+
function secondComponents(carried, fixed, root, target, tag) {
|
|
71
|
+
return carried.flatMap(token => {
|
|
72
|
+
const other = rootFor(token);
|
|
73
|
+
if (token === root || other?.status !== 'mapped')
|
|
74
|
+
return [];
|
|
75
|
+
const name = other.target;
|
|
76
|
+
if (name === target)
|
|
77
|
+
return [];
|
|
78
|
+
const why = !fixed.includes(token)
|
|
79
|
+
? `since \`.${token}\` is there only when its condition holds, and the codemod picks from the classes the element always carries`
|
|
80
|
+
: root === undefined
|
|
81
|
+
? 'since an item of a list converts by where it sits'
|
|
82
|
+
: !reachesTag(other, tag)
|
|
83
|
+
? `since \`${name}\` renders ${tagsItReaches(other)}, not ${aTag(tag)}`
|
|
84
|
+
: tagFit(rootFor(root), tag) > tagFit(other, tag)
|
|
85
|
+
? `since ${aTag(tag)} is \`${target}\`'s own element, and \`${name}\` renders one only through \`as\``
|
|
86
|
+
: precedence(root) < precedence(token)
|
|
87
|
+
? `since the codemod ranks \`.${root}\` first, putting layout and parts ahead of surfaces`
|
|
88
|
+
: `since \`.${root}\` comes first on the element`;
|
|
89
|
+
const advice = other.onAnother ??
|
|
90
|
+
`to use \`${name}\`, give it an element of its own around or inside this one and drop the class, then check the layout, since two elements space differently from one`;
|
|
91
|
+
return [
|
|
92
|
+
{
|
|
93
|
+
rule: ruleId('second-component', name),
|
|
94
|
+
message: `\`.${token}\` is bestax \`${name}\`'s class too, and an element converts to one component: \`${target}\` here, ${why}, so \`.${token}\` stays in its \`className\`, which renders the same; ${advice}`,
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
});
|
|
98
|
+
}
|
|
71
99
|
/**
|
|
72
100
|
* Every class the element may carry: its fixed ones, and any a condition
|
|
73
101
|
* adds, which the element has to be right with as well as without.
|
|
@@ -151,11 +179,15 @@ function planElement(facts) {
|
|
|
151
179
|
: tokens.find(token => rootFor(token)?.status === 'fold');
|
|
152
180
|
if (wrapper)
|
|
153
181
|
return planFold(facts, wrapper, todos);
|
|
154
|
-
|
|
155
|
-
|
|
182
|
+
// Of two roots, the one that fits the element's tag best wins (its own tag,
|
|
183
|
+
// then one `as` reaches), and the table's precedence decides a tie.
|
|
184
|
+
const roots = placed
|
|
185
|
+
? []
|
|
156
186
|
: tokens
|
|
157
187
|
.filter(token => rootFor(token)?.status === 'mapped')
|
|
158
|
-
.sort((a, b) => precedence(a) - precedence(b))
|
|
188
|
+
.sort((a, b) => precedence(a) - precedence(b));
|
|
189
|
+
const fit = (token) => tagFit(rootFor(token), tag);
|
|
190
|
+
const root = roots.reduce((best, token) => best === undefined || fit(token) > fit(best) ? token : best, undefined);
|
|
159
191
|
let entry;
|
|
160
192
|
if (placed) {
|
|
161
193
|
entry = placed;
|
|
@@ -189,12 +221,17 @@ function planElement(facts) {
|
|
|
189
221
|
// On a tag the target can't render, the tag is the work that comes first:
|
|
190
222
|
// any other refusal would ask for work (an attribute added or dropped, a
|
|
191
223
|
// child moved) that a re-run then refuses on the tag anyway.
|
|
224
|
+
// What the classes write picks the tag the target renders with no `as`:
|
|
225
|
+
// Title's `size` its heading, and the one class with a `rendersTag`
|
|
226
|
+
// (`Image`'s ratio) its <figure>.
|
|
192
227
|
let renders = entry.tag;
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
228
|
+
const picked = propsFrom(entry, tokens, tag, root, facts.attributes);
|
|
229
|
+
const size = picked.writes.get('size');
|
|
230
|
+
if (entry.sizeDrivesTag && tag !== 'p' && size !== undefined) {
|
|
231
|
+
renders = `h${size}`;
|
|
197
232
|
}
|
|
233
|
+
if (picked.rendersTag)
|
|
234
|
+
renders = picked.rendersTag;
|
|
198
235
|
let as;
|
|
199
236
|
if (renders !== tag) {
|
|
200
237
|
if (!reachesTag(entry, tag, renders)) {
|
|
@@ -517,6 +554,7 @@ function planElement(facts) {
|
|
|
517
554
|
if (entry.classNameReplaces && (rest.length > 0 || conditionalStays)) {
|
|
518
555
|
return refuse('attr', 'className', `bestax \`${target}\` writes a \`className\` it's given in place of \`.${root}\`, so this converts only with no other class; keep it as markup`);
|
|
519
556
|
}
|
|
557
|
+
todos.push(...secondComponents(carried, tokens, root, target, tag));
|
|
520
558
|
// A glyph the target renders from props takes the place of the only child.
|
|
521
559
|
const glyph = moved ?? (entry.readsGlyph ? readGlyph(facts.soleChild) : undefined);
|
|
522
560
|
return {
|
|
@@ -831,6 +869,7 @@ function buildIcons(children, target) {
|
|
|
831
869
|
*/
|
|
832
870
|
function propsFrom(entry, tokens, tag, root, attributes) {
|
|
833
871
|
const numbers = [];
|
|
872
|
+
let rendersTag;
|
|
834
873
|
// What the root itself needs comes first, so no class can take its prop.
|
|
835
874
|
const writes = new Map((entry.writes ?? []).map(write => [write.prop, write.value ?? true]));
|
|
836
875
|
/** The tokens each written prop came from, so a group rule can undo it. */
|
|
@@ -841,11 +880,24 @@ function propsFrom(entry, tokens, tag, root, attributes) {
|
|
|
841
880
|
...tokens.filter(token => !replacedBy(token)),
|
|
842
881
|
...tokens.filter(token => replacedBy(token)),
|
|
843
882
|
];
|
|
844
|
-
|
|
883
|
+
// A class that converts only beside another (`has-addons-centered`) goes
|
|
884
|
+
// first, so the value it writes takes the prop ahead of that one's flag and
|
|
885
|
+
// renders both classes. On its own it stays a class. Neither is ever a
|
|
886
|
+
// removed class, so the two orders compose.
|
|
887
|
+
const paired = (token) => {
|
|
888
|
+
const other = modifierFor(entry, token)?.beside;
|
|
889
|
+
return other !== undefined && tokens.includes(other);
|
|
890
|
+
};
|
|
891
|
+
for (const token of [
|
|
892
|
+
...claiming.filter(paired),
|
|
893
|
+
...claiming.filter(token => !paired(token)),
|
|
894
|
+
]) {
|
|
845
895
|
if (converted.has(token))
|
|
846
896
|
continue;
|
|
847
897
|
const modifier = modifierFor(entry, token);
|
|
848
898
|
if (modifier) {
|
|
899
|
+
if (modifier.beside && !paired(token))
|
|
900
|
+
continue;
|
|
849
901
|
if (modifier.tagIn && !modifier.tagIn.includes(tag))
|
|
850
902
|
continue;
|
|
851
903
|
if (modifier.needsAttr && !attributes.has(modifier.needsAttr.name)) {
|
|
@@ -853,13 +905,20 @@ function propsFrom(entry, tokens, tag, root, attributes) {
|
|
|
853
905
|
}
|
|
854
906
|
if (modifier.writes.some(write => writes.has(write.prop)))
|
|
855
907
|
continue;
|
|
908
|
+
// Only one class picks the tag, as only one sets a prop: a second one
|
|
909
|
+
// stays a class, the way a second size does.
|
|
910
|
+
if (modifier.rendersTag && rendersTag)
|
|
911
|
+
continue;
|
|
856
912
|
for (const write of modifier.writes) {
|
|
857
913
|
writes.set(write.prop, write.value ?? true);
|
|
858
914
|
sourceOf.set(write.prop, token);
|
|
859
915
|
if (write.numeric)
|
|
860
916
|
numbers.push(write.prop);
|
|
861
917
|
}
|
|
918
|
+
rendersTag ??= modifier.rendersTag;
|
|
862
919
|
converted.add(token);
|
|
920
|
+
if (modifier.beside)
|
|
921
|
+
converted.add(modifier.beside);
|
|
863
922
|
continue;
|
|
864
923
|
}
|
|
865
924
|
const helper = entry.noHelpers ? undefined : HELPER_TOKENS.get(token);
|
|
@@ -910,7 +969,7 @@ function propsFrom(entry, tokens, tag, root, attributes) {
|
|
|
910
969
|
(groupOf.has('overflowX') || groupOf.has('overflowY'))) {
|
|
911
970
|
undo('overflow');
|
|
912
971
|
}
|
|
913
|
-
return { writes, converted, numbers };
|
|
972
|
+
return { writes, converted, numbers, rendersTag };
|
|
914
973
|
}
|
|
915
974
|
/** `a`, `a or b`, `a, b or c`, each in backticks. */
|
|
916
975
|
function orList(names, word = 'or') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/sources/bulma-classes/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,eAAO,MAAM,KAAK,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/sources/bulma-classes/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,eAAO,MAAM,KAAK,EAAE,WAAW,CAAC,MAAM,CAepC,CAAC;AAqCH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK1D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bestax-migrate",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.30.0",
|
|
4
4
|
"description": "Codemods for migrating existing React apps from other Bulma libraries to @allxsmith/bestax-bulma",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"jscodeshift": "^17.3.0",
|
|
41
41
|
"parse5": "^7.3.0",
|
|
42
42
|
"property-information": "^7.2.0",
|
|
43
|
-
"@allxsmith/bestax-bulma": "^5.
|
|
43
|
+
"@allxsmith/bestax-bulma": "^5.41.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@jest/globals": "^30.0.0",
|