@multiplatform.one/markdown 6.7.0 → 7.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/dist/cjs/Aside/index.cjs +8 -3
- package/dist/cjs/Aside/index.native.js +13 -3
- package/dist/cjs/Aside/index.native.js.map +1 -1
- package/dist/cjs/shared/textRidesText.cjs +57 -0
- package/dist/cjs/shared/textRidesText.native.js +81 -0
- package/dist/cjs/shared/textRidesText.native.js.map +1 -0
- package/dist/esm/Aside/index.mjs +9 -4
- package/dist/esm/Aside/index.mjs.map +1 -1
- package/dist/esm/Aside/index.native.js +14 -4
- package/dist/esm/Aside/index.native.js.map +1 -1
- package/dist/esm/shared/textRidesText.mjs +31 -0
- package/dist/esm/shared/textRidesText.mjs.map +1 -0
- package/dist/esm/shared/textRidesText.native.js +52 -0
- package/dist/esm/shared/textRidesText.native.js.map +1 -0
- package/dist/jsx/Aside/index.mjs +9 -4
- package/dist/jsx/Aside/index.mjs.map +1 -1
- package/dist/jsx/Aside/index.native.js +13 -3
- package/dist/jsx/Aside/index.native.js.map +1 -1
- package/dist/jsx/shared/textRidesText.mjs +31 -0
- package/dist/jsx/shared/textRidesText.mjs.map +1 -0
- package/dist/jsx/shared/textRidesText.native.js +81 -0
- package/dist/jsx/shared/textRidesText.native.js.map +1 -0
- package/package.json +13 -13
- package/src/Aside/Aside.lc50.spec.tsx +43 -0
- package/src/Aside/index.tsx +16 -4
- package/src/shared/textRidesText.ts +57 -0
- package/types/Aside/index.d.ts.map +1 -1
- package/types/shared/textRidesText.d.ts +20 -0
- package/types/shared/textRidesText.d.ts.map +1 -0
package/dist/cjs/Aside/index.cjs
CHANGED
|
@@ -32,6 +32,7 @@ var import_theme = require("@multiplatform.one/theme");
|
|
|
32
32
|
var import_react = require("react");
|
|
33
33
|
var import_tamagui = require("tamagui");
|
|
34
34
|
var import_cutoffGradient = require("../shared/cutoffGradient.cjs");
|
|
35
|
+
var import_textRidesText = require("../shared/textRidesText.cjs");
|
|
35
36
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
37
|
const zIndex = {
|
|
37
38
|
localTop: 100
|
|
@@ -45,7 +46,8 @@ function MDXAside({
|
|
|
45
46
|
knobProps
|
|
46
47
|
} = (0, import_theme.useResolvedKnobs)();
|
|
47
48
|
const gradientColors = (0, import_cutoffGradient.useCutoffGradientColors)();
|
|
48
|
-
const
|
|
49
|
+
const flattened = Array.isArray(children) ? import_react.Children.toArray(children) : null;
|
|
50
|
+
const areChildrenString = (0, import_textRidesText.isBareTextChild)(children) || Boolean(flattened && flattened.length > 0 && flattened.every(import_textRidesText.isBareTextChild));
|
|
49
51
|
const [expanded, setExpanded] = (0, import_react.useState)(false);
|
|
50
52
|
const [contentHeight, setContentHeight] = (0, import_react.useState)();
|
|
51
53
|
const shouldCutoff = !areChildrenString && (contentHeight === void 0 || contentHeight > cutoffMaxHeight);
|
|
@@ -72,10 +74,13 @@ function MDXAside({
|
|
|
72
74
|
children: [areChildrenString ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, {
|
|
73
75
|
color: "$color10",
|
|
74
76
|
marginVertical: "$-5",
|
|
75
|
-
children
|
|
77
|
+
children: flattened ? flattened.join("") : children
|
|
76
78
|
}) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
|
|
77
79
|
onLayout: event => setContentHeight(event.nativeEvent.layout.height),
|
|
78
|
-
children
|
|
80
|
+
children: (0, import_textRidesText.wrapBareTextChildren)(children, (label, key) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, {
|
|
81
|
+
color: "$color10",
|
|
82
|
+
children: label
|
|
83
|
+
}, key))
|
|
79
84
|
}), cutoff && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
80
85
|
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_linear_gradient.LinearGradient, {
|
|
81
86
|
position: "absolute",
|
|
@@ -35,6 +35,7 @@ var import_theme = require("@multiplatform.one/theme");
|
|
|
35
35
|
var import_react = require("react");
|
|
36
36
|
var import_tamagui = require("tamagui");
|
|
37
37
|
var import_cutoffGradient = require("../shared/cutoffGradient.native.js");
|
|
38
|
+
var import_textRidesText = require("../shared/textRidesText.native.js");
|
|
38
39
|
var zIndex = {
|
|
39
40
|
localTop: 100
|
|
40
41
|
};
|
|
@@ -48,7 +49,8 @@ function MDXAside(param) {
|
|
|
48
49
|
knobProps
|
|
49
50
|
} = (0, import_theme.useResolvedKnobs)();
|
|
50
51
|
var gradientColors = (0, import_cutoffGradient.useCutoffGradientColors)();
|
|
51
|
-
var
|
|
52
|
+
var flattened = Array.isArray(children) ? import_react.Children.toArray(children) : null;
|
|
53
|
+
var areChildrenString = (0, import_textRidesText.isBareTextChild)(children) || Boolean(flattened && flattened.length > 0 && flattened.every(import_textRidesText.isBareTextChild));
|
|
52
54
|
var [expanded, setExpanded] = (0, import_react.useState)(false);
|
|
53
55
|
var [contentHeight, setContentHeight] = (0, import_react.useState)();
|
|
54
56
|
var shouldCutoff = !areChildrenString && (contentHeight === void 0 || contentHeight > cutoffMaxHeight);
|
|
@@ -75,12 +77,20 @@ function MDXAside(param) {
|
|
|
75
77
|
children: [areChildrenString ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, {
|
|
76
78
|
color: "$color10",
|
|
77
79
|
marginVertical: "$-5",
|
|
78
|
-
children
|
|
80
|
+
children: flattened ? flattened.join("") : children
|
|
79
81
|
}) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
|
|
80
82
|
onLayout: function onLayout(event) {
|
|
81
83
|
return setContentHeight(event.nativeEvent.layout.height);
|
|
82
84
|
},
|
|
83
|
-
children
|
|
85
|
+
children: (
|
|
86
|
+
/* LC-82: mixed element+string children — string runs still ride a
|
|
87
|
+
Text component instead of crashing native. */
|
|
88
|
+
(0, import_textRidesText.wrapBareTextChildren)(children, function (label, key) {
|
|
89
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, {
|
|
90
|
+
color: "$color10",
|
|
91
|
+
children: label
|
|
92
|
+
}, key);
|
|
93
|
+
}))
|
|
84
94
|
}), cutoff && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
85
95
|
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_linear_gradient.LinearGradient, {
|
|
86
96
|
position: "absolute",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Aside_exports","__export","MDXAside","MDXNote","module","exports","import_jsx_runtime","require","import_components","import_linear_gradient","import_theme","import_react","import_tamagui","import_cutoffGradient","zIndex","localTop","cutoffMaxHeight","param","children","props","knobProps","useResolvedKnobs","gradientColors","useCutoffGradientColors","areChildrenString","expanded","setExpanded","useState","contentHeight","setContentHeight","shouldCutoff","cutoff","jsxs","YStack","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","jsx","Paragraph","color","onLayout","event","nativeEvent","layout","height","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Aside_exports","__export","MDXAside","MDXNote","module","exports","import_jsx_runtime","require","import_components","import_linear_gradient","import_theme","import_react","import_tamagui","import_cutoffGradient","import_textRidesText","zIndex","localTop","cutoffMaxHeight","param","children","props","knobProps","useResolvedKnobs","gradientColors","useCutoffGradientColors","flattened","Array","isArray","Children","toArray","areChildrenString","isBareTextChild","Boolean","length","every","expanded","setExpanded","useState","contentHeight","setContentHeight","shouldCutoff","cutoff","jsxs","YStack","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","jsx","Paragraph","color","join","onLayout","event","nativeEvent","layout","height","wrapBareTextChildren","label","key","Fragment","LinearGradient","bottom","left","right","colors","pointerEvents","XStack"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var textRidesText_exports = {};
|
|
24
|
+
__export(textRidesText_exports, {
|
|
25
|
+
isBareTextChild: () => isBareTextChild,
|
|
26
|
+
wrapBareTextChildren: () => wrapBareTextChildren
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(textRidesText_exports);
|
|
29
|
+
var import_react = require("react");
|
|
30
|
+
const isBareTextChild = child => typeof child === "string" || typeof child === "number";
|
|
31
|
+
function coalesceBareTextRuns(children, renderLabel) {
|
|
32
|
+
const out = [];
|
|
33
|
+
let run;
|
|
34
|
+
let runIndex = 0;
|
|
35
|
+
const flushRun = () => {
|
|
36
|
+
if (run !== void 0 && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
37
|
+
run = void 0;
|
|
38
|
+
};
|
|
39
|
+
for (const child of children) {
|
|
40
|
+
if (isBareTextChild(child)) {
|
|
41
|
+
run = (run ?? "") + String(child);
|
|
42
|
+
} else {
|
|
43
|
+
flushRun();
|
|
44
|
+
out.push(child);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
flushRun();
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
function wrapBareTextChildren(children, renderLabel) {
|
|
51
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
52
|
+
if (Array.isArray(children)) {
|
|
53
|
+
const flattened = import_react.Children.toArray(children);
|
|
54
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
55
|
+
}
|
|
56
|
+
return children;
|
|
57
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
}), mod);
|
|
25
|
+
var textRidesText_exports = {};
|
|
26
|
+
__export(textRidesText_exports, {
|
|
27
|
+
isBareTextChild: () => isBareTextChild,
|
|
28
|
+
wrapBareTextChildren: () => wrapBareTextChildren
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(textRidesText_exports);
|
|
31
|
+
var import_react = require("react");
|
|
32
|
+
var isBareTextChild = function isBareTextChild2(child) {
|
|
33
|
+
return typeof child === "string" || typeof child === "number";
|
|
34
|
+
};
|
|
35
|
+
function coalesceBareTextRuns(children, renderLabel) {
|
|
36
|
+
var out = [];
|
|
37
|
+
var run;
|
|
38
|
+
var runIndex = 0;
|
|
39
|
+
var flushRun = function flushRun2() {
|
|
40
|
+
if (run !== void 0 && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
41
|
+
run = void 0;
|
|
42
|
+
};
|
|
43
|
+
var _iteratorNormalCompletion = true,
|
|
44
|
+
_didIteratorError = false,
|
|
45
|
+
_iteratorError = void 0;
|
|
46
|
+
try {
|
|
47
|
+
for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
48
|
+
var child = _step.value;
|
|
49
|
+
if (isBareTextChild(child)) {
|
|
50
|
+
run = (run !== null && run !== void 0 ? run : "") + String(child);
|
|
51
|
+
} else {
|
|
52
|
+
flushRun();
|
|
53
|
+
out.push(child);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_didIteratorError = true;
|
|
58
|
+
_iteratorError = err;
|
|
59
|
+
} finally {
|
|
60
|
+
try {
|
|
61
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
62
|
+
_iterator.return();
|
|
63
|
+
}
|
|
64
|
+
} finally {
|
|
65
|
+
if (_didIteratorError) {
|
|
66
|
+
throw _iteratorError;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
flushRun();
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
function wrapBareTextChildren(children, renderLabel) {
|
|
74
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
75
|
+
if (Array.isArray(children)) {
|
|
76
|
+
var flattened = import_react.Children.toArray(children);
|
|
77
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
78
|
+
}
|
|
79
|
+
return children;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=textRidesText.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","textRidesText_exports","__export","isBareTextChild","wrapBareTextChildren","module","exports","import_react","require","isBareTextChild2","child","coalesceBareTextRuns","children","renderLabel","out","run","runIndex","flushRun","flushRun2","push","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","String","err"],"sources":["../../../src/shared/textRidesText.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAA;AAAA;AAYAC,MAAA,CAAAC,OAAA,GAAAV,YAAyB,CAAAK,qBAAA;AAGlB,IAAAM,YAAM,GAAAC,OAAmB,SAC9B;AAEF,IAAAL,eAAS,YACPM,gBACAA,CAAAC,KACa;EACb,OAAM,OAAoBA,KAAA,wBAAAA,KAAA;AAC1B;AACA,SAAIC,oBAAWA,CAAAC,QAAA,EAAAC,WAAA;EACf,IAAAC,GAAM;EACJ,IAAAC,GAAI;EACJ,IAAAC,QAAM;EACR,IAAAC,QAAA,YAAAC,UAAA;IACA,IAAAH,GAAA,KAAW,MAAS,IAAAA,GAAA,KAAU,IAAAD,GAAA,CAAAK,IAAA,CAAAN,WAAA,CAAAE,GAAA,cAAAC,QAAA;IAC5BD,GAAA,GAAI;EACF;EAAgC,IAClCK,yBAAO;IAAAC,iBAAA;IAAAC,cAAA;EACL;IACA,SAAIC,SAAU,GAAAX,QAAA,CAAAY,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MAChB,IAAAV,KAAA,GAAAgB,KAAA,CAAA1B,KAAA;MACF,IAAAG,eAAA,CAAAO,KAAA;QACAK,GAAS,IAAAA,GAAA,aAAAA,GAAA,cAAAA,GAAA,SAAAc,MAAA,CAAAnB,KAAA;MACT,OAAO;QACTO,QAAA;QAOOH,GAAS,CAAAK,IAAA,CAAAT,KAAA;MAIV;IACJ;EACE,SAAMoB,GAAA;IACNT,iBAAc,GAAK;IACrBC,cAAA,GAAAQ,GAAA;EACA,UAAO;IACT","ignoreList":[]}
|
package/dist/esm/Aside/index.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Alert } from "@multiplatform.one/components";
|
|
2
2
|
import { LinearGradient } from "@tamagui/linear-gradient";
|
|
3
3
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
4
|
-
import { useState } from "react";
|
|
4
|
+
import { Children, useState } from "react";
|
|
5
5
|
import { Button, Paragraph, XStack, YStack } from "tamagui";
|
|
6
6
|
import { useCutoffGradientColors } from "../shared/cutoffGradient.mjs";
|
|
7
|
+
import { isBareTextChild, wrapBareTextChildren } from "../shared/textRidesText.mjs";
|
|
7
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
9
|
const zIndex = {
|
|
9
10
|
localTop: 100
|
|
@@ -17,7 +18,8 @@ function MDXAside({
|
|
|
17
18
|
knobProps
|
|
18
19
|
} = useResolvedKnobs();
|
|
19
20
|
const gradientColors = useCutoffGradientColors();
|
|
20
|
-
const
|
|
21
|
+
const flattened = Array.isArray(children) ? Children.toArray(children) : null;
|
|
22
|
+
const areChildrenString = isBareTextChild(children) || Boolean(flattened && flattened.length > 0 && flattened.every(isBareTextChild));
|
|
21
23
|
const [expanded, setExpanded] = useState(false);
|
|
22
24
|
const [contentHeight, setContentHeight] = useState();
|
|
23
25
|
const shouldCutoff = !areChildrenString && (contentHeight === void 0 || contentHeight > cutoffMaxHeight);
|
|
@@ -44,10 +46,13 @@ function MDXAside({
|
|
|
44
46
|
children: [areChildrenString ? /* @__PURE__ */jsx(Paragraph, {
|
|
45
47
|
color: "$color10",
|
|
46
48
|
marginVertical: "$-5",
|
|
47
|
-
children
|
|
49
|
+
children: flattened ? flattened.join("") : children
|
|
48
50
|
}) : /* @__PURE__ */jsx(YStack, {
|
|
49
51
|
onLayout: event => setContentHeight(event.nativeEvent.layout.height),
|
|
50
|
-
children
|
|
52
|
+
children: wrapBareTextChildren(children, (label, key) => /* @__PURE__ */jsx(Paragraph, {
|
|
53
|
+
color: "$color10",
|
|
54
|
+
children: label
|
|
55
|
+
}, key))
|
|
51
56
|
}), cutoff && /* @__PURE__ */jsxs(Fragment, {
|
|
52
57
|
children: [/* @__PURE__ */jsx(LinearGradient, {
|
|
53
58
|
position: "absolute",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Alert","LinearGradient","useResolvedKnobs","useState","Button","Paragraph","XStack","YStack","useCutoffGradientColors","Fragment","jsx","jsxs","zIndex","localTop","cutoffMaxHeight","MDXAside","children","props","knobProps","gradientColors","areChildrenString","expanded","setExpanded","contentHeight","setContentHeight","shouldCutoff","cutoff","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","color","onLayout","event","nativeEvent","layout","height","bottom","left","right","colors","pointerEvents","justifyContent","onPress","MDXNote","intent","icon","marginBottom"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAA,QAAa;AACtB,SAASC,cAAA,QAAsB;AAC/B,SAASC,gBAAA,QAAwB;AACjC,SAASC,QAAA,QAAgC;
|
|
1
|
+
{"version":3,"names":["Alert","LinearGradient","useResolvedKnobs","Children","useState","Button","Paragraph","XStack","YStack","useCutoffGradientColors","isBareTextChild","wrapBareTextChildren","Fragment","jsx","jsxs","zIndex","localTop","cutoffMaxHeight","MDXAside","children","props","knobProps","gradientColors","flattened","Array","isArray","toArray","areChildrenString","Boolean","length","every","expanded","setExpanded","contentHeight","setContentHeight","shouldCutoff","cutoff","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","color","join","onLayout","event","nativeEvent","layout","height","label","key","bottom","left","right","colors","pointerEvents","justifyContent","onPress","MDXNote","intent","icon","marginBottom"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -2,9 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { Alert } from "@multiplatform.one/components";
|
|
3
3
|
import { LinearGradient } from "@tamagui/linear-gradient";
|
|
4
4
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
5
|
-
import { useState } from "react";
|
|
5
|
+
import { Children, useState } from "react";
|
|
6
6
|
import { Button, Paragraph, XStack, YStack } from "tamagui";
|
|
7
7
|
import { useCutoffGradientColors } from "../shared/cutoffGradient.native.js";
|
|
8
|
+
import { isBareTextChild, wrapBareTextChildren } from "../shared/textRidesText.native.js";
|
|
8
9
|
var zIndex = {
|
|
9
10
|
localTop: 100
|
|
10
11
|
};
|
|
@@ -18,7 +19,8 @@ function MDXAside(param) {
|
|
|
18
19
|
knobProps
|
|
19
20
|
} = useResolvedKnobs();
|
|
20
21
|
var gradientColors = useCutoffGradientColors();
|
|
21
|
-
var
|
|
22
|
+
var flattened = Array.isArray(children) ? Children.toArray(children) : null;
|
|
23
|
+
var areChildrenString = isBareTextChild(children) || Boolean(flattened && flattened.length > 0 && flattened.every(isBareTextChild));
|
|
22
24
|
var [expanded, setExpanded] = useState(false);
|
|
23
25
|
var [contentHeight, setContentHeight] = useState();
|
|
24
26
|
var shouldCutoff = !areChildrenString && (contentHeight === void 0 || contentHeight > cutoffMaxHeight);
|
|
@@ -45,12 +47,20 @@ function MDXAside(param) {
|
|
|
45
47
|
children: [areChildrenString ? /* @__PURE__ */_jsx(Paragraph, {
|
|
46
48
|
color: "$color10",
|
|
47
49
|
marginVertical: "$-5",
|
|
48
|
-
children
|
|
50
|
+
children: flattened ? flattened.join("") : children
|
|
49
51
|
}) : /* @__PURE__ */_jsx(YStack, {
|
|
50
52
|
onLayout: function onLayout(event) {
|
|
51
53
|
return setContentHeight(event.nativeEvent.layout.height);
|
|
52
54
|
},
|
|
53
|
-
children
|
|
55
|
+
children: (
|
|
56
|
+
/* LC-82: mixed element+string children — string runs still ride a
|
|
57
|
+
Text component instead of crashing native. */
|
|
58
|
+
wrapBareTextChildren(children, function (label, key) {
|
|
59
|
+
return /* @__PURE__ */_jsx(Paragraph, {
|
|
60
|
+
color: "$color10",
|
|
61
|
+
children: label
|
|
62
|
+
}, key);
|
|
63
|
+
}))
|
|
54
64
|
}), cutoff && /* @__PURE__ */_jsxs(_Fragment, {
|
|
55
65
|
children: [/* @__PURE__ */_jsx(LinearGradient, {
|
|
56
66
|
position: "absolute",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Alert","LinearGradient","useResolvedKnobs","useState","Button","Paragraph","XStack","YStack","useCutoffGradientColors","zIndex","localTop","cutoffMaxHeight","MDXAside","param","children","props","knobProps","gradientColors","areChildrenString","expanded","setExpanded","contentHeight","setContentHeight","shouldCutoff","cutoff","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","color","onLayout","event","nativeEvent","layout","height","
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Alert","LinearGradient","useResolvedKnobs","Children","useState","Button","Paragraph","XStack","YStack","useCutoffGradientColors","isBareTextChild","wrapBareTextChildren","zIndex","localTop","cutoffMaxHeight","MDXAside","param","children","props","knobProps","gradientColors","flattened","Array","isArray","toArray","areChildrenString","Boolean","length","every","expanded","setExpanded","contentHeight","setContentHeight","shouldCutoff","cutoff","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","color","join","onLayout","event","nativeEvent","layout","height","label","key","bottom","left","right","colors","pointerEvents"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,EAAaC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AACtB,SAASC,KAAA,uCAAsB;AAC/B,SAASC,cAAA,kCAAwB;AACjC,SAASC,gBAAU,kCAAgC;AACnD,SAASC,QAAQ,EAAAC,QAAA,QAAW,OAAQ;AACpC,SAASC,MAAA,EAAAC,SAAA,EAAAC,MAAA,EAAAC,MAA+B;AACxC,SAASC,uBAAiB,4CAA4B;AA+C9C,SAgBAC,eAAA,EAAAC,oBAhBA;AA7CR,IAAAC,MAAM;EACNC,QAAM;AAMC;AACL,IAAAC,eAAQ,GAAU,GAAI;AACtB,SAAMC,SAAAC,KAAA,EAAiB;EAGvB;IAAMC,QAAA;IAAA,GAAYC;EAAM,IAAAF,KAAQ;EAChC;IAAMG;EAAA,IAAAjB,gBACJ;EAEF,IAAAkB,cAAiB,GAAAX,uBAAwB,EAAK;EAC9C,IAAAY,SAAO,GAAAC,KAAA,CAAeC,OAAA,CAAAN,QAAgB,IAAId,QAAA,CAA6BqB,OAAA,CAAAP,QAAA;EAEvE,IAAAQ,iBACE,GAACf,eAAA,CAAAO,QAAsB,KAAAS,OAAA,CAAAL,SAAkB,IAAaA,SAAA,CAAAM,MAAgB,QAAAN,SAAA,CAAAO,KAAA,CAAAlB,eAAA;EACxE,KAAAmB,QAAM,EAASC,WAAA,IAAA1B,QAAiB;EAEhC,KAAA2B,aACE,EAAAC,gBAAA,IAAA5B,QAAA;EAAA,IAAC6B,YAAA,IAAAR,iBAAA,KAAAM,aAAA,eAAAA,aAAA,GAAAjB,eAAA;EAAA,IAAAoB,MAAA,GAAAD,YAAA,KAAAJ,QAAA;EAAA,OACC,eAAOhC,KAAA,CAAAW,MAAA;IAAA2B,MACH,SAAU;IAAA,GACdhB,SAAA,CAAAiB,GAAc;IAAuBC,YACjC,EAAAlB,SAAU,CAAAkB,YAAA,CAAAA,YAAA;IAAA,GACdlB,SAAA,CAAAmB,YAAiB;IAAAC,gBACP;IAAAC,SACV,MAAS;IAAAC,QACJ,YAAU;IAAA,IAAAP,MACb;MAAgBQ,cAChB;MAA0CC,iBAC7B,EAAAxB,SAAA,CAAAmB,YAAA,CAAAM,OAAA;MAAAC,WACb;MAAeC,aACf,OAAiB;MAAAC,eACJ;MAAAC,WACb,EAAW;MAAAC,SACX,EAAAnC,eAAU;MACZoC,QAAA;IAAA;IACI,GAEHhC,KAAA;IAAAD,QAAA,GAaCQ,iBAIA,kBAAA9B,IAAA,CAAAW,SACE;MAAA6C,KAAA;MAAAT,cAAC;MAAAzB,QAAA,EAAAI,SAAA,GAAAA,SAAA,CAAA+B,IAAA,OAAAnC;IAAA,oBACUtB,IAAA,CAAAa,MAAA;MAAA6C,QACT,WAAQA,SAAAC,KAAA;QAAA,OACRtB,gBAAM,CAAAsB,KAAA,CAAAC,WAAA,CAAAC,MAAA,CAAAC,MAAA;MAAA;MACCxC,QACP;MAAQ;AACA;MACMN,oBACC,CAAAM,QAAA,YAAAyC,KAAA,EAAAC,GAAA;QAAA,sBAAAhE,IAAA,CAAAW,SAAA;UACjB6C,KAAA;UACAlC,QAAA,EAAAyC;QAAC,GAAAC,GAAA;MAAA;IACU,IACFzB,MAAA,IACP,eAAMrC,KAAA,CAAAE,SAAA;MAAAkB,QACN,GAAO,eACPtB,IAAe,CAAAM,cAAA;QAAAwC,QACf,EAAQ,UAAO;QAAWmB,MAE1B;QAAmDC,IAAA;QACrDC,KAAA;QACFL,MAAA;QAAAM,MAAA,EAAA3C,cAAA;QAAA4C,aAAA;QAEJpD,MAAA,EAAAA,MAAA,CAAAC;MAEJ,IAOgB,eAAUlB,IAAU,CAAAY,MAAG,EAAM;QAEzCkC,QAAA,YAAC;QAILmB,MAAA","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Children } from "react";
|
|
2
|
+
const isBareTextChild = child => typeof child === "string" || typeof child === "number";
|
|
3
|
+
function coalesceBareTextRuns(children, renderLabel) {
|
|
4
|
+
const out = [];
|
|
5
|
+
let run;
|
|
6
|
+
let runIndex = 0;
|
|
7
|
+
const flushRun = () => {
|
|
8
|
+
if (run !== void 0 && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
9
|
+
run = void 0;
|
|
10
|
+
};
|
|
11
|
+
for (const child of children) {
|
|
12
|
+
if (isBareTextChild(child)) {
|
|
13
|
+
run = (run ?? "") + String(child);
|
|
14
|
+
} else {
|
|
15
|
+
flushRun();
|
|
16
|
+
out.push(child);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
flushRun();
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
function wrapBareTextChildren(children, renderLabel) {
|
|
23
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
24
|
+
if (Array.isArray(children)) {
|
|
25
|
+
const flattened = Children.toArray(children);
|
|
26
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
27
|
+
}
|
|
28
|
+
return children;
|
|
29
|
+
}
|
|
30
|
+
export { isBareTextChild, wrapBareTextChildren };
|
|
31
|
+
//# sourceMappingURL=textRidesText.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","isBareTextChild","child","coalesceBareTextRuns","children","renderLabel","out","run","runIndex","flushRun","push","String","wrapBareTextChildren","Array","isArray","flattened","toArray","some"],"sources":["../../../src/shared/textRidesText.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,QAAA,QAAgB;AAGlB,MAAMC,eAAA,GAAmBC,KAAA,IAC9B,OAAOA,KAAA,KAAU,YAAY,OAAOA,KAAA,KAAU;AAEhD,SAASC,qBACPC,QAAA,EACAC,WAAA,EACa;EACb,MAAMC,GAAA,GAAmB,EAAC;EAC1B,IAAIC,GAAA;EACJ,IAAIC,QAAA,GAAW;EACf,MAAMC,QAAA,GAAWA,CAAA,KAAM;IACrB,IAAIF,GAAA,KAAQ,UAAaA,GAAA,KAAQ,IAAID,GAAA,CAAII,IAAA,CAAKL,WAAA,CAAYE,GAAA,EAAK,YAAYC,QAAA,EAAU,EAAE,CAAC;IACxFD,GAAA,GAAM;EACR;EACA,WAAWL,KAAA,IAASE,QAAA,EAAU;IAC5B,IAAIH,eAAA,CAAgBC,KAAK,GAAG;MAC1BK,GAAA,IAAOA,GAAA,IAAO,MAAMI,MAAA,CAAOT,KAAK;IAClC,OAAO;MACLO,QAAA,CAAS;MACTH,GAAA,CAAII,IAAA,CAAKR,KAAK;IAChB;EACF;EACAO,QAAA,CAAS;EACT,OAAOH,GAAA;AACT;AAOO,SAASM,qBACdR,QAAA,EACAC,WAAA,EACW;EACX,IAAIJ,eAAA,CAAgBG,QAAQ,GAAG,OAAOC,WAAA,CAAYM,MAAA,CAAOP,QAAQ,CAAC;EAClE,IAAIS,KAAA,CAAMC,OAAA,CAAQV,QAAQ,GAAG;IAC3B,MAAMW,SAAA,GAAYf,QAAA,CAASgB,OAAA,CAAQZ,QAAQ;IAC3C,IAAIW,SAAA,CAAUE,IAAA,CAAKhB,eAAe,GAAG,OAAOE,oBAAA,CAAqBY,SAAA,EAAWV,WAAW;EACzF;EACA,OAAOD,QAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Children } from "react";
|
|
2
|
+
var isBareTextChild = function isBareTextChild2(child) {
|
|
3
|
+
return typeof child === "string" || typeof child === "number";
|
|
4
|
+
};
|
|
5
|
+
function coalesceBareTextRuns(children, renderLabel) {
|
|
6
|
+
var out = [];
|
|
7
|
+
var run;
|
|
8
|
+
var runIndex = 0;
|
|
9
|
+
var flushRun = function flushRun2() {
|
|
10
|
+
if (run !== void 0 && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
11
|
+
run = void 0;
|
|
12
|
+
};
|
|
13
|
+
var _iteratorNormalCompletion = true,
|
|
14
|
+
_didIteratorError = false,
|
|
15
|
+
_iteratorError = void 0;
|
|
16
|
+
try {
|
|
17
|
+
for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
18
|
+
var child = _step.value;
|
|
19
|
+
if (isBareTextChild(child)) {
|
|
20
|
+
run = (run !== null && run !== void 0 ? run : "") + String(child);
|
|
21
|
+
} else {
|
|
22
|
+
flushRun();
|
|
23
|
+
out.push(child);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
} catch (err) {
|
|
27
|
+
_didIteratorError = true;
|
|
28
|
+
_iteratorError = err;
|
|
29
|
+
} finally {
|
|
30
|
+
try {
|
|
31
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
32
|
+
_iterator.return();
|
|
33
|
+
}
|
|
34
|
+
} finally {
|
|
35
|
+
if (_didIteratorError) {
|
|
36
|
+
throw _iteratorError;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
flushRun();
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
function wrapBareTextChildren(children, renderLabel) {
|
|
44
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
45
|
+
if (Array.isArray(children)) {
|
|
46
|
+
var flattened = Children.toArray(children);
|
|
47
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
48
|
+
}
|
|
49
|
+
return children;
|
|
50
|
+
}
|
|
51
|
+
export { isBareTextChild, wrapBareTextChildren };
|
|
52
|
+
//# sourceMappingURL=textRidesText.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","isBareTextChild","isBareTextChild2","child","coalesceBareTextRuns","children","renderLabel","out","run","runIndex","flushRun","flushRun2","push","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","value","String","err","return"],"sources":["../../../src/shared/textRidesText.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,QAAA,QAAgB;AAGlB,IAAAC,eAAM,YAAmBC,gBACvBA,CAAAC,KAAU;EAEnB,OAAS,OAAAA,KAAA,aACP,WACAA,KAAA,KACa;AACb;AACA,SAAIC,qBAAAC,QAAA,EAAAC,WAAA;EACJ,IAAIC,GAAA;EACJ,IAAAC,GAAM;EACJ,IAAAC,QAAI,GAAQ;EACZ,IAAAC,QAAM,YAAAC,UAAA;IACR,IAAAH,GAAA,eAAAA,GAAA,SAAAD,GAAA,CAAAK,IAAA,CAAAN,WAAA,CAAAE,GAAA,cAAAC,QAAA;IACAD,GAAA,QAAW;EACT;EACE,IAAAK,yBAAoB,GAAO,IAAK;IAAAC,iBAAA;IAAAC,cAAA;EAAA,IAClC;IACE,SAAAC,SAAS,GAAAX,QAAA,CAAAY,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MACT,IAAIV,KAAK,GAAAgB,KAAK,CAAAG,KAAA;MAChB,IAAArB,eAAA,CAAAE,KAAA;QACFK,GAAA,IAAAA,GAAA,aAAAA,GAAA,cAAAA,GAAA,SAAAe,MAAA,CAAApB,KAAA;MACA,OAAS;QACTO,QAAO;QACTH,GAAA,CAAAK,IAAA,CAAAT,KAAA;MAOO;IAIL;EACA,SAAIqB,GAAM;IACRV,iBAAM,GAAY;IAClBC,cAAc,GAAAS,GAAK;EACrB;IACA;MACF,KAAAX,yBAAA,IAAAG,SAAA,CAAAS,MAAA","ignoreList":[]}
|
package/dist/jsx/Aside/index.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Alert } from "@multiplatform.one/components";
|
|
2
2
|
import { LinearGradient } from "@tamagui/linear-gradient";
|
|
3
3
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
4
|
-
import { useState } from "react";
|
|
4
|
+
import { Children, useState } from "react";
|
|
5
5
|
import { Button, Paragraph, XStack, YStack } from "tamagui";
|
|
6
6
|
import { useCutoffGradientColors } from "../shared/cutoffGradient.mjs";
|
|
7
|
+
import { isBareTextChild, wrapBareTextChildren } from "../shared/textRidesText.mjs";
|
|
7
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
9
|
const zIndex = {
|
|
9
10
|
localTop: 100
|
|
@@ -17,7 +18,8 @@ function MDXAside({
|
|
|
17
18
|
knobProps
|
|
18
19
|
} = useResolvedKnobs();
|
|
19
20
|
const gradientColors = useCutoffGradientColors();
|
|
20
|
-
const
|
|
21
|
+
const flattened = Array.isArray(children) ? Children.toArray(children) : null;
|
|
22
|
+
const areChildrenString = isBareTextChild(children) || Boolean(flattened && flattened.length > 0 && flattened.every(isBareTextChild));
|
|
21
23
|
const [expanded, setExpanded] = useState(false);
|
|
22
24
|
const [contentHeight, setContentHeight] = useState();
|
|
23
25
|
const shouldCutoff = !areChildrenString && (contentHeight === void 0 || contentHeight > cutoffMaxHeight);
|
|
@@ -44,10 +46,13 @@ function MDXAside({
|
|
|
44
46
|
children: [areChildrenString ? /* @__PURE__ */jsx(Paragraph, {
|
|
45
47
|
color: "$color10",
|
|
46
48
|
marginVertical: "$-5",
|
|
47
|
-
children
|
|
49
|
+
children: flattened ? flattened.join("") : children
|
|
48
50
|
}) : /* @__PURE__ */jsx(YStack, {
|
|
49
51
|
onLayout: event => setContentHeight(event.nativeEvent.layout.height),
|
|
50
|
-
children
|
|
52
|
+
children: wrapBareTextChildren(children, (label, key) => /* @__PURE__ */jsx(Paragraph, {
|
|
53
|
+
color: "$color10",
|
|
54
|
+
children: label
|
|
55
|
+
}, key))
|
|
51
56
|
}), cutoff && /* @__PURE__ */jsxs(Fragment, {
|
|
52
57
|
children: [/* @__PURE__ */jsx(LinearGradient, {
|
|
53
58
|
position: "absolute",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Alert","LinearGradient","useResolvedKnobs","useState","Button","Paragraph","XStack","YStack","useCutoffGradientColors","Fragment","jsx","jsxs","zIndex","localTop","cutoffMaxHeight","MDXAside","children","props","knobProps","gradientColors","areChildrenString","expanded","setExpanded","contentHeight","setContentHeight","shouldCutoff","cutoff","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","color","onLayout","event","nativeEvent","layout","height","bottom","left","right","colors","pointerEvents","justifyContent","onPress","MDXNote","intent","icon","marginBottom"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAA,QAAa;AACtB,SAASC,cAAA,QAAsB;AAC/B,SAASC,gBAAA,QAAwB;AACjC,SAASC,QAAA,QAAgC;
|
|
1
|
+
{"version":3,"names":["Alert","LinearGradient","useResolvedKnobs","Children","useState","Button","Paragraph","XStack","YStack","useCutoffGradientColors","isBareTextChild","wrapBareTextChildren","Fragment","jsx","jsxs","zIndex","localTop","cutoffMaxHeight","MDXAside","children","props","knobProps","gradientColors","flattened","Array","isArray","toArray","areChildrenString","Boolean","length","every","expanded","setExpanded","contentHeight","setContentHeight","shouldCutoff","cutoff","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","color","join","onLayout","event","nativeEvent","layout","height","label","key","bottom","left","right","colors","pointerEvents","justifyContent","onPress","MDXNote","intent","icon","marginBottom"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -35,6 +35,7 @@ var import_theme = require("@multiplatform.one/theme");
|
|
|
35
35
|
var import_react = require("react");
|
|
36
36
|
var import_tamagui = require("tamagui");
|
|
37
37
|
var import_cutoffGradient = require("../shared/cutoffGradient.native.js");
|
|
38
|
+
var import_textRidesText = require("../shared/textRidesText.native.js");
|
|
38
39
|
var zIndex = {
|
|
39
40
|
localTop: 100
|
|
40
41
|
};
|
|
@@ -48,7 +49,8 @@ function MDXAside(param) {
|
|
|
48
49
|
knobProps
|
|
49
50
|
} = (0, import_theme.useResolvedKnobs)();
|
|
50
51
|
var gradientColors = (0, import_cutoffGradient.useCutoffGradientColors)();
|
|
51
|
-
var
|
|
52
|
+
var flattened = Array.isArray(children) ? import_react.Children.toArray(children) : null;
|
|
53
|
+
var areChildrenString = (0, import_textRidesText.isBareTextChild)(children) || Boolean(flattened && flattened.length > 0 && flattened.every(import_textRidesText.isBareTextChild));
|
|
52
54
|
var [expanded, setExpanded] = (0, import_react.useState)(false);
|
|
53
55
|
var [contentHeight, setContentHeight] = (0, import_react.useState)();
|
|
54
56
|
var shouldCutoff = !areChildrenString && (contentHeight === void 0 || contentHeight > cutoffMaxHeight);
|
|
@@ -75,12 +77,20 @@ function MDXAside(param) {
|
|
|
75
77
|
children: [areChildrenString ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, {
|
|
76
78
|
color: "$color10",
|
|
77
79
|
marginVertical: "$-5",
|
|
78
|
-
children
|
|
80
|
+
children: flattened ? flattened.join("") : children
|
|
79
81
|
}) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
|
|
80
82
|
onLayout: function onLayout(event) {
|
|
81
83
|
return setContentHeight(event.nativeEvent.layout.height);
|
|
82
84
|
},
|
|
83
|
-
children
|
|
85
|
+
children: (
|
|
86
|
+
/* LC-82: mixed element+string children — string runs still ride a
|
|
87
|
+
Text component instead of crashing native. */
|
|
88
|
+
(0, import_textRidesText.wrapBareTextChildren)(children, function (label, key) {
|
|
89
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, {
|
|
90
|
+
color: "$color10",
|
|
91
|
+
children: label
|
|
92
|
+
}, key);
|
|
93
|
+
}))
|
|
84
94
|
}), cutoff && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
85
95
|
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_linear_gradient.LinearGradient, {
|
|
86
96
|
position: "absolute",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","Aside_exports","MDXAside","MDXNote","module","exports","import_jsx_runtime","require","import_components","import_linear_gradient","import_theme","import_react","import_tamagui","import_cutoffGradient","zIndex","localTop","cutoffMaxHeight","param","children","props","knobProps","useResolvedKnobs","gradientColors","useCutoffGradientColors","areChildrenString","expanded","setExpanded","useState","contentHeight","setContentHeight","shouldCutoff","cutoff","jsxs","YStack","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","jsx","Paragraph","color","onLayout","event","nativeEvent","layout","height"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAsB;AAC/B,IAAAC,gBAAS,GAAAF,MAAA,CAAAG,wBAAwB;AACjC,IAAAC,
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","Aside_exports","MDXAside","MDXNote","module","exports","import_jsx_runtime","require","import_components","import_linear_gradient","import_theme","import_react","import_tamagui","import_cutoffGradient","import_textRidesText","zIndex","localTop","cutoffMaxHeight","param","children","props","knobProps","useResolvedKnobs","gradientColors","useCutoffGradientColors","flattened","Array","isArray","Children","toArray","areChildrenString","isBareTextChild","Boolean","length","every","expanded","setExpanded","useState","contentHeight","setContentHeight","shouldCutoff","cutoff","jsxs","YStack","render","gap","borderRadius","panelPadding","marginHorizontal","marginTop","position","marginVertical","paddingHorizontal","padding","borderWidth","paddingBottom","backgroundColor","borderColor","maxHeight","overflow","jsx","Paragraph","color","join","onLayout","event","nativeEvent","layout","height"],"sources":["../../../src/Aside/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Children } from "react";
|
|
2
|
+
const isBareTextChild = child => typeof child === "string" || typeof child === "number";
|
|
3
|
+
function coalesceBareTextRuns(children, renderLabel) {
|
|
4
|
+
const out = [];
|
|
5
|
+
let run;
|
|
6
|
+
let runIndex = 0;
|
|
7
|
+
const flushRun = () => {
|
|
8
|
+
if (run !== void 0 && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
9
|
+
run = void 0;
|
|
10
|
+
};
|
|
11
|
+
for (const child of children) {
|
|
12
|
+
if (isBareTextChild(child)) {
|
|
13
|
+
run = (run ?? "") + String(child);
|
|
14
|
+
} else {
|
|
15
|
+
flushRun();
|
|
16
|
+
out.push(child);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
flushRun();
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
function wrapBareTextChildren(children, renderLabel) {
|
|
23
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
24
|
+
if (Array.isArray(children)) {
|
|
25
|
+
const flattened = Children.toArray(children);
|
|
26
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
27
|
+
}
|
|
28
|
+
return children;
|
|
29
|
+
}
|
|
30
|
+
export { isBareTextChild, wrapBareTextChildren };
|
|
31
|
+
//# sourceMappingURL=textRidesText.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","isBareTextChild","child","coalesceBareTextRuns","children","renderLabel","out","run","runIndex","flushRun","push","String","wrapBareTextChildren","Array","isArray","flattened","toArray","some"],"sources":["../../../src/shared/textRidesText.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,QAAA,QAAgB;AAGlB,MAAMC,eAAA,GAAmBC,KAAA,IAC9B,OAAOA,KAAA,KAAU,YAAY,OAAOA,KAAA,KAAU;AAEhD,SAASC,qBACPC,QAAA,EACAC,WAAA,EACa;EACb,MAAMC,GAAA,GAAmB,EAAC;EAC1B,IAAIC,GAAA;EACJ,IAAIC,QAAA,GAAW;EACf,MAAMC,QAAA,GAAWA,CAAA,KAAM;IACrB,IAAIF,GAAA,KAAQ,UAAaA,GAAA,KAAQ,IAAID,GAAA,CAAII,IAAA,CAAKL,WAAA,CAAYE,GAAA,EAAK,YAAYC,QAAA,EAAU,EAAE,CAAC;IACxFD,GAAA,GAAM;EACR;EACA,WAAWL,KAAA,IAASE,QAAA,EAAU;IAC5B,IAAIH,eAAA,CAAgBC,KAAK,GAAG;MAC1BK,GAAA,IAAOA,GAAA,IAAO,MAAMI,MAAA,CAAOT,KAAK;IAClC,OAAO;MACLO,QAAA,CAAS;MACTH,GAAA,CAAII,IAAA,CAAKR,KAAK;IAChB;EACF;EACAO,QAAA,CAAS;EACT,OAAOH,GAAA;AACT;AAOO,SAASM,qBACdR,QAAA,EACAC,WAAA,EACW;EACX,IAAIJ,eAAA,CAAgBG,QAAQ,GAAG,OAAOC,WAAA,CAAYM,MAAA,CAAOP,QAAQ,CAAC;EAClE,IAAIS,KAAA,CAAMC,OAAA,CAAQV,QAAQ,GAAG;IAC3B,MAAMW,SAAA,GAAYf,QAAA,CAASgB,OAAA,CAAQZ,QAAQ;IAC3C,IAAIW,SAAA,CAAUE,IAAA,CAAKhB,eAAe,GAAG,OAAOE,oBAAA,CAAqBY,SAAA,EAAWV,WAAW;EACzF;EACA,OAAOD,QAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
}), mod);
|
|
25
|
+
var textRidesText_exports = {};
|
|
26
|
+
__export(textRidesText_exports, {
|
|
27
|
+
isBareTextChild: () => isBareTextChild,
|
|
28
|
+
wrapBareTextChildren: () => wrapBareTextChildren
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(textRidesText_exports);
|
|
31
|
+
var import_react = require("react");
|
|
32
|
+
var isBareTextChild = function isBareTextChild2(child) {
|
|
33
|
+
return typeof child === "string" || typeof child === "number";
|
|
34
|
+
};
|
|
35
|
+
function coalesceBareTextRuns(children, renderLabel) {
|
|
36
|
+
var out = [];
|
|
37
|
+
var run;
|
|
38
|
+
var runIndex = 0;
|
|
39
|
+
var flushRun = function flushRun2() {
|
|
40
|
+
if (run !== void 0 && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
41
|
+
run = void 0;
|
|
42
|
+
};
|
|
43
|
+
var _iteratorNormalCompletion = true,
|
|
44
|
+
_didIteratorError = false,
|
|
45
|
+
_iteratorError = void 0;
|
|
46
|
+
try {
|
|
47
|
+
for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
48
|
+
var child = _step.value;
|
|
49
|
+
if (isBareTextChild(child)) {
|
|
50
|
+
run = (run !== null && run !== void 0 ? run : "") + String(child);
|
|
51
|
+
} else {
|
|
52
|
+
flushRun();
|
|
53
|
+
out.push(child);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_didIteratorError = true;
|
|
58
|
+
_iteratorError = err;
|
|
59
|
+
} finally {
|
|
60
|
+
try {
|
|
61
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
62
|
+
_iterator.return();
|
|
63
|
+
}
|
|
64
|
+
} finally {
|
|
65
|
+
if (_didIteratorError) {
|
|
66
|
+
throw _iteratorError;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
flushRun();
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
function wrapBareTextChildren(children, renderLabel) {
|
|
74
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
75
|
+
if (Array.isArray(children)) {
|
|
76
|
+
var flattened = import_react.Children.toArray(children);
|
|
77
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
78
|
+
}
|
|
79
|
+
return children;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=textRidesText.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","textRidesText_exports","isBareTextChild","wrapBareTextChildren","module","exports","import_react","require","isBareTextChild2","child","coalesceBareTextRuns","children","renderLabel"],"sources":["../../../src/shared/textRidesText.ts"],"sourcesContent":[null],"mappings":"AAYA,YAAS;;AAGF,IAAAA,SAAM,GAAAC,MAAA,CAAAC,cACX;AAEF,IAAAC,gBAAS,GAAAF,MAAA,CACPG,wBAEa;AACb,IAAAC,iBAA0B,GAAAJ,MAAA,CAAAK,mBAAA;AAC1B,IAAAC,YAAI,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AACJ,IAAAC,QAAI,GAAAA,CAAAC,MAAW,EAAAC,GAAA;EACf,SAAMC,IAAA,IAAWD,GAAA,EACfZ,SAAI,CAAAW,MAAQ,EAAAE,IAAa;IAAAC,GAAA,EAAQF,GAAI,CAAAC,IAAI;IAAAE,UAAK;EAAY,CAAK;AAC/D;AAAM,IACRC,WAAA,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;EACA,IAAAF,IAAA,IAAW,OAAAA,IAAS,aAAU,WAAAA,IAAA;IAC5B,KAAI,IAAAG,GAAA,IAAAhB,iBAAwB,CAAAa,IAAA,GAC1B,KAAAX,YAAc,CAAAe,IAAM,CAAAL,EAAA,EAAOI,GAAA,KAAKA,GAAA,KAAAF,MAAA,EAClCnB,SAAO,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EACL;EACA,OAAAE,EAAI;AAAU;AAChB,IACFM,YAAA,GAAAC,GAAA,IAAAR,WAAA,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AACA,IAAAE,qBAAS;AACThB,QAAA,CAAOgB,qBAAA;EACTC,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAOOC,oBAAS,EAAAA,CAAA,KACdA;AAGA;AACAC,MAAI,CAAAC,OAAM,GAAAP,YAAgB,CAAAG,qBAAG;AAC3B,IAAAK,YAAM,GAAAC,OAAY,QAAS;AAC3B,IAAAL,eAAc,YAAKM,gBAAkBA,CAAOC,KAAA;EAC9C,cAAAA,KAAA,wBAAAA,KAAA;AACA;AACF,SAAAC,qBAAAC,QAAA,EAAAC,WAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/markdown",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"description": "Cross-platform markdown renderer with Shiki syntax highlighting for React and React Native",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cross-platform",
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@mdx-js/mdx": "^3.1.1",
|
|
65
65
|
"@mdx-js/react": "^3.1.1",
|
|
66
|
-
"@tamagui/linear-gradient": "2.
|
|
67
|
-
"@tamagui/react-native-svg": "2.
|
|
66
|
+
"@tamagui/linear-gradient": "2.7.6",
|
|
67
|
+
"@tamagui/react-native-svg": "2.7.6",
|
|
68
68
|
"mermaid": "^11.14.0",
|
|
69
69
|
"parse-numeric-range": "^1.3.0",
|
|
70
70
|
"rehype-autolink-headings": "^7.1.0",
|
|
@@ -74,17 +74,17 @@
|
|
|
74
74
|
"remark-mdx-frontmatter": "^5.2.0",
|
|
75
75
|
"remark-parse": "^11.0.0",
|
|
76
76
|
"shiki": "^4.0.2",
|
|
77
|
-
"tamagui": "2.
|
|
77
|
+
"tamagui": "2.7.6",
|
|
78
78
|
"unified": "^11.0.5",
|
|
79
79
|
"unist-util-visit": "^5.1.0",
|
|
80
|
-
"@multiplatform.one/
|
|
81
|
-
"@multiplatform.one/
|
|
82
|
-
"@multiplatform.one/
|
|
83
|
-
"@multiplatform.one/
|
|
84
|
-
"@multiplatform.one/theme": "
|
|
80
|
+
"@multiplatform.one/components": "7.1.0",
|
|
81
|
+
"@multiplatform.one/platform": "7.1.0",
|
|
82
|
+
"@multiplatform.one/router": "7.1.0",
|
|
83
|
+
"@multiplatform.one/table-primitives": "7.1.0",
|
|
84
|
+
"@multiplatform.one/theme": "7.1.0"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@tamagui/build": "2.
|
|
87
|
+
"@tamagui/build": "2.7.6",
|
|
88
88
|
"@testing-library/react": "^16.3.2",
|
|
89
89
|
"@types/mdast": "^4.0.4",
|
|
90
90
|
"@types/mdx": "^2.0.13",
|
|
@@ -94,9 +94,9 @@
|
|
|
94
94
|
"react": "19.2.5",
|
|
95
95
|
"react-dom": "19.2.5",
|
|
96
96
|
"vitest": "^4.1.5",
|
|
97
|
-
"@multiplatform.one/config": "
|
|
98
|
-
"@multiplatform.one/storybook": "
|
|
99
|
-
"@multiplatform.one/test-utils": "
|
|
97
|
+
"@multiplatform.one/config": "7.1.0",
|
|
98
|
+
"@multiplatform.one/storybook": "7.1.0",
|
|
99
|
+
"@multiplatform.one/test-utils": "7.1.0"
|
|
100
100
|
},
|
|
101
101
|
"peerDependencies": {
|
|
102
102
|
"react": "^19.1.0",
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-82 TEXT-RIDES-TEXT (catalog arm): MDXAside wraps ALL bare string/number
|
|
3
|
+
* children — an all-strings array coalesces into the singleton Paragraph
|
|
4
|
+
* path, and string runs inside mixed element+string children ride their own
|
|
5
|
+
* Paragraph — so `{text}{cond ? suffix : ""}` renders instead of tripping
|
|
6
|
+
* the native "Text strings must be rendered within a <Text> component"
|
|
7
|
+
* invariant.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
11
|
+
import { screen } from "@testing-library/react";
|
|
12
|
+
import { Paragraph } from "tamagui";
|
|
13
|
+
import { describe, expect, it } from "vitest";
|
|
14
|
+
import { MDXAside } from "./index";
|
|
15
|
+
|
|
16
|
+
describe("MDXAside LC-82 TEXT-RIDES-TEXT", () => {
|
|
17
|
+
it("renders an all-strings array as the coalesced singleton Paragraph (no cutoff)", () => {
|
|
18
|
+
const { container } = renderWithProviders(
|
|
19
|
+
<MDXAside>
|
|
20
|
+
{"just a note"}
|
|
21
|
+
{" with a suffix"}
|
|
22
|
+
</MDXAside>,
|
|
23
|
+
);
|
|
24
|
+
const text = screen.getByText("just a note with a suffix");
|
|
25
|
+
expect(text).toBeInTheDocument();
|
|
26
|
+
expect(text.tagName).not.toBe("DIV");
|
|
27
|
+
// Text-only asides never grow cutoff chrome.
|
|
28
|
+
expect(screen.queryByText("Show more")).toBeNull();
|
|
29
|
+
expect(container.querySelector("aside")).toBeTruthy();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("wraps string runs inside mixed element+string children", () => {
|
|
33
|
+
renderWithProviders(
|
|
34
|
+
<MDXAside>
|
|
35
|
+
<Paragraph>first block</Paragraph>
|
|
36
|
+
{"trailing note"}
|
|
37
|
+
</MDXAside>,
|
|
38
|
+
);
|
|
39
|
+
const trailing = screen.getByText("trailing note");
|
|
40
|
+
expect(trailing).toBeInTheDocument();
|
|
41
|
+
expect(trailing.tagName).not.toBe("DIV");
|
|
42
|
+
});
|
|
43
|
+
});
|
package/src/Aside/index.tsx
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Alert } from "@multiplatform.one/components";
|
|
2
2
|
import { LinearGradient } from "@tamagui/linear-gradient";
|
|
3
3
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
4
|
-
import { useState, type ReactNode } from "react";
|
|
4
|
+
import { Children, useState, type ReactNode } from "react";
|
|
5
5
|
import { Button, Paragraph, XStack, YStack } from "tamagui";
|
|
6
6
|
import { useCutoffGradientColors } from "../shared/cutoffGradient";
|
|
7
|
+
import { isBareTextChild, wrapBareTextChildren } from "../shared/textRidesText";
|
|
7
8
|
|
|
8
9
|
const zIndex = { localTop: 100 };
|
|
9
10
|
const cutoffMaxHeight = 300;
|
|
@@ -15,7 +16,12 @@ export interface MDXAsideProps {
|
|
|
15
16
|
export function MDXAside({ children, ...props }: MDXAsideProps & Record<string, unknown>) {
|
|
16
17
|
const { knobProps } = useResolvedKnobs();
|
|
17
18
|
const gradientColors = useCutoffGradientColors();
|
|
18
|
-
|
|
19
|
+
// LC-82 TEXT-RIDES-TEXT: an ARRAY of bare strings is text too — treat it
|
|
20
|
+
// like the singleton string path (one coalesced Paragraph, no cutoff).
|
|
21
|
+
const flattened = Array.isArray(children) ? Children.toArray(children) : null;
|
|
22
|
+
const areChildrenString =
|
|
23
|
+
isBareTextChild(children) ||
|
|
24
|
+
Boolean(flattened && flattened.length > 0 && flattened.every(isBareTextChild));
|
|
19
25
|
const [expanded, setExpanded] = useState(false);
|
|
20
26
|
const [contentHeight, setContentHeight] = useState<number | undefined>();
|
|
21
27
|
// only cut off element children whose content actually exceeds the max height
|
|
@@ -46,11 +52,17 @@ export function MDXAside({ children, ...props }: MDXAsideProps & Record<string,
|
|
|
46
52
|
>
|
|
47
53
|
{areChildrenString ? (
|
|
48
54
|
<Paragraph color="$color10" marginVertical="$-5">
|
|
49
|
-
{children}
|
|
55
|
+
{flattened ? flattened.join("") : children}
|
|
50
56
|
</Paragraph>
|
|
51
57
|
) : (
|
|
52
58
|
<YStack onLayout={(event) => setContentHeight(event.nativeEvent.layout.height)}>
|
|
53
|
-
{children
|
|
59
|
+
{/* LC-82: mixed element+string children — string runs still ride a
|
|
60
|
+
Text component instead of crashing native. */}
|
|
61
|
+
{wrapBareTextChildren(children, (label, key) => (
|
|
62
|
+
<Paragraph key={key} color="$color10">
|
|
63
|
+
{label}
|
|
64
|
+
</Paragraph>
|
|
65
|
+
))}
|
|
54
66
|
</YStack>
|
|
55
67
|
)}
|
|
56
68
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-82 TEXT-RIDES-TEXT (catalog arm) — wrap-and-coalesce for child slots
|
|
3
|
+
* that render into Views. Local copy of the reference remedy in
|
|
4
|
+
* `public/forms/src/Button/index.tsx` (also mirrored in
|
|
5
|
+
* `public/components/src/shared/textRidesText.ts` — markdown consumes
|
|
6
|
+
* components through its published barrel, so the helper cannot be imported
|
|
7
|
+
* cross-package): runs of adjacent bare string/number children coalesce into
|
|
8
|
+
* one concatenated label handed to the slot's own Text wrapper; element
|
|
9
|
+
* children pass through untouched, order preserved.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { ReactNode } from "react";
|
|
13
|
+
import { Children } from "react";
|
|
14
|
+
|
|
15
|
+
/** Bare string/number children are legal only inside Text. */
|
|
16
|
+
export const isBareTextChild = (child: unknown): child is string | number =>
|
|
17
|
+
typeof child === "string" || typeof child === "number";
|
|
18
|
+
|
|
19
|
+
function coalesceBareTextRuns(
|
|
20
|
+
children: ReturnType<typeof Children.toArray>,
|
|
21
|
+
renderLabel: (label: string, key: string) => ReactNode,
|
|
22
|
+
): ReactNode[] {
|
|
23
|
+
const out: ReactNode[] = [];
|
|
24
|
+
let run: string | undefined;
|
|
25
|
+
let runIndex = 0;
|
|
26
|
+
const flushRun = () => {
|
|
27
|
+
if (run !== undefined && run !== "") out.push(renderLabel(run, `lc50-run-${runIndex++}`));
|
|
28
|
+
run = undefined;
|
|
29
|
+
};
|
|
30
|
+
for (const child of children) {
|
|
31
|
+
if (isBareTextChild(child)) {
|
|
32
|
+
run = (run ?? "") + String(child);
|
|
33
|
+
} else {
|
|
34
|
+
flushRun();
|
|
35
|
+
out.push(child);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
flushRun();
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Wrap ALL bare string/number children of a View-rendering slot: singleton
|
|
44
|
+
* strings/numbers and runs inside arrays go through `renderLabel` (the slot's
|
|
45
|
+
* Text wrapper); pure-element children return unchanged.
|
|
46
|
+
*/
|
|
47
|
+
export function wrapBareTextChildren(
|
|
48
|
+
children: ReactNode,
|
|
49
|
+
renderLabel: (label: string, key?: string) => ReactNode,
|
|
50
|
+
): ReactNode {
|
|
51
|
+
if (isBareTextChild(children)) return renderLabel(String(children));
|
|
52
|
+
if (Array.isArray(children)) {
|
|
53
|
+
const flattened = Children.toArray(children);
|
|
54
|
+
if (flattened.some(isBareTextChild)) return coalesceBareTextRuns(flattened, renderLabel);
|
|
55
|
+
}
|
|
56
|
+
return children;
|
|
57
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Aside/index.tsx"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Aside/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2CA+EvF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2CAMrF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-82 TEXT-RIDES-TEXT (catalog arm) — wrap-and-coalesce for child slots
|
|
3
|
+
* that render into Views. Local copy of the reference remedy in
|
|
4
|
+
* `public/forms/src/Button/index.tsx` (also mirrored in
|
|
5
|
+
* `public/components/src/shared/textRidesText.ts` — markdown consumes
|
|
6
|
+
* components through its published barrel, so the helper cannot be imported
|
|
7
|
+
* cross-package): runs of adjacent bare string/number children coalesce into
|
|
8
|
+
* one concatenated label handed to the slot's own Text wrapper; element
|
|
9
|
+
* children pass through untouched, order preserved.
|
|
10
|
+
*/
|
|
11
|
+
import type { ReactNode } from "react";
|
|
12
|
+
/** Bare string/number children are legal only inside Text. */
|
|
13
|
+
export declare const isBareTextChild: (child: unknown) => child is string | number;
|
|
14
|
+
/**
|
|
15
|
+
* Wrap ALL bare string/number children of a View-rendering slot: singleton
|
|
16
|
+
* strings/numbers and runs inside arrays go through `renderLabel` (the slot's
|
|
17
|
+
* Text wrapper); pure-element children return unchanged.
|
|
18
|
+
*/
|
|
19
|
+
export declare function wrapBareTextChildren(children: ReactNode, renderLabel: (label: string, key?: string) => ReactNode): ReactNode;
|
|
20
|
+
//# sourceMappingURL=textRidesText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textRidesText.d.ts","sourceRoot":"","sources":["../../src/shared/textRidesText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,8DAA8D;AAC9D,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,GAAG,MACX,CAAC;AAyBzD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,SAAS,GACtD,SAAS,CAOX"}
|