@simplybusiness/mobius 10.3.0 → 10.3.2
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/CHANGELOG.md +12 -0
- package/dist/cjs/components/AddressLookup/AddressLookup.js +224 -198
- package/dist/cjs/components/AddressLookup/AddressLookup.js.map +3 -3
- package/dist/cjs/components/AddressLookup/index.js +224 -198
- package/dist/cjs/components/AddressLookup/index.js.map +3 -3
- package/dist/cjs/components/Alert/Alert.js +37 -11
- package/dist/cjs/components/Alert/Alert.js.map +3 -3
- package/dist/cjs/components/Alert/index.js +37 -11
- package/dist/cjs/components/Alert/index.js.map +3 -3
- package/dist/cjs/components/Checkbox/Checkbox.js +199 -173
- package/dist/cjs/components/Checkbox/Checkbox.js.map +3 -3
- package/dist/cjs/components/Checkbox/CheckboxGroup.js +199 -173
- package/dist/cjs/components/Checkbox/CheckboxGroup.js.map +3 -3
- package/dist/cjs/components/Checkbox/index.js +199 -173
- package/dist/cjs/components/Checkbox/index.js.map +3 -3
- package/dist/cjs/components/Combobox/Combobox.js +224 -198
- package/dist/cjs/components/Combobox/Combobox.js.map +3 -3
- package/dist/cjs/components/Combobox/index.js +224 -198
- package/dist/cjs/components/Combobox/index.js.map +3 -3
- package/dist/cjs/components/DateField/DateField.js +215 -189
- package/dist/cjs/components/DateField/DateField.js.map +3 -3
- package/dist/cjs/components/DateField/index.js +215 -189
- package/dist/cjs/components/DateField/index.js.map +3 -3
- package/dist/cjs/components/ErrorMessage/ErrorMessage.js +199 -173
- package/dist/cjs/components/ErrorMessage/ErrorMessage.js.map +3 -3
- package/dist/cjs/components/ErrorMessage/index.js +199 -173
- package/dist/cjs/components/ErrorMessage/index.js.map +3 -3
- package/dist/cjs/components/ExpandableText/ExpandableText.js +196 -170
- package/dist/cjs/components/ExpandableText/ExpandableText.js.map +3 -3
- package/dist/cjs/components/ExpandableText/index.js +196 -170
- package/dist/cjs/components/ExpandableText/index.js.map +3 -3
- package/dist/cjs/components/MaskedField/MaskedField.js +215 -189
- package/dist/cjs/components/MaskedField/MaskedField.js.map +3 -3
- package/dist/cjs/components/MaskedField/index.js +215 -189
- package/dist/cjs/components/MaskedField/index.js.map +3 -3
- package/dist/cjs/components/NumberField/NumberField.js +215 -189
- package/dist/cjs/components/NumberField/NumberField.js.map +3 -3
- package/dist/cjs/components/NumberField/index.js +215 -189
- package/dist/cjs/components/NumberField/index.js.map +3 -3
- package/dist/cjs/components/PasswordField/PasswordField.js +215 -189
- package/dist/cjs/components/PasswordField/PasswordField.js.map +3 -3
- package/dist/cjs/components/PasswordField/ShowHideButton.js +196 -170
- package/dist/cjs/components/PasswordField/ShowHideButton.js.map +3 -3
- package/dist/cjs/components/PasswordField/index.js +215 -189
- package/dist/cjs/components/PasswordField/index.js.map +3 -3
- package/dist/cjs/components/Radio/Radio.js +199 -173
- package/dist/cjs/components/Radio/Radio.js.map +3 -3
- package/dist/cjs/components/Radio/RadioGroup.js +199 -173
- package/dist/cjs/components/Radio/RadioGroup.js.map +3 -3
- package/dist/cjs/components/Radio/index.js +199 -173
- package/dist/cjs/components/Radio/index.js.map +3 -3
- package/dist/cjs/components/Select/Select.js +199 -173
- package/dist/cjs/components/Select/Select.js.map +3 -3
- package/dist/cjs/components/Select/index.js +199 -173
- package/dist/cjs/components/Select/index.js.map +3 -3
- package/dist/cjs/components/Text/Text.js +2 -1
- package/dist/cjs/components/Text/Text.js.map +2 -2
- package/dist/cjs/components/Text/index.js +2 -1
- package/dist/cjs/components/Text/index.js.map +2 -2
- package/dist/cjs/components/TextArea/TextArea.js +199 -173
- package/dist/cjs/components/TextArea/TextArea.js.map +3 -3
- package/dist/cjs/components/TextArea/index.js +199 -173
- package/dist/cjs/components/TextArea/index.js.map +3 -3
- package/dist/cjs/components/TextField/TextField.js +215 -189
- package/dist/cjs/components/TextField/TextField.js.map +3 -3
- package/dist/cjs/components/TextField/index.js +215 -189
- package/dist/cjs/components/TextField/index.js.map +3 -3
- package/dist/cjs/components/TextOrHTML/TextOrHTML.js +32 -6
- package/dist/cjs/components/TextOrHTML/TextOrHTML.js.map +3 -3
- package/dist/cjs/components/TextOrHTML/index.js +32 -6
- package/dist/cjs/components/TextOrHTML/index.js.map +3 -3
- package/dist/cjs/components/index.js +205 -178
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/index.js +205 -178
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/meta.json +299 -119
- package/dist/esm/{chunk-ZS5MFZHD.js → chunk-A66R42LG.js} +2 -1
- package/dist/esm/{chunk-ZS5MFZHD.js.map → chunk-A66R42LG.js.map} +2 -2
- package/dist/esm/chunk-DYTHXKMX.js +67 -0
- package/dist/esm/chunk-DYTHXKMX.js.map +7 -0
- package/dist/esm/{chunk-QWD72EVP.js → chunk-JNAQ76CR.js} +2 -2
- package/dist/esm/{chunk-I6EUIFUJ.js → chunk-W2RQH4WS.js} +2 -2
- package/dist/esm/components/AddressLookup/AddressLookup.js +4 -4
- package/dist/esm/components/AddressLookup/index.js +4 -4
- package/dist/esm/components/Alert/Alert.js +3 -3
- package/dist/esm/components/Alert/index.js +3 -3
- package/dist/esm/components/Checkbox/Checkbox.js +4 -4
- package/dist/esm/components/Checkbox/CheckboxGroup.js +4 -4
- package/dist/esm/components/Checkbox/index.js +4 -4
- package/dist/esm/components/Combobox/Combobox.js +4 -4
- package/dist/esm/components/Combobox/index.js +4 -4
- package/dist/esm/components/DateField/DateField.js +4 -4
- package/dist/esm/components/DateField/index.js +4 -4
- package/dist/esm/components/ErrorMessage/ErrorMessage.js +4 -4
- package/dist/esm/components/ErrorMessage/index.js +4 -4
- package/dist/esm/components/ExpandableText/ExpandableText.js +4 -4
- package/dist/esm/components/ExpandableText/index.js +4 -4
- package/dist/esm/components/MaskedField/MaskedField.js +4 -4
- package/dist/esm/components/MaskedField/index.js +4 -4
- package/dist/esm/components/NumberField/NumberField.js +4 -4
- package/dist/esm/components/NumberField/index.js +4 -4
- package/dist/esm/components/PasswordField/PasswordField.js +4 -4
- package/dist/esm/components/PasswordField/ShowHideButton.js +4 -4
- package/dist/esm/components/PasswordField/index.js +4 -4
- package/dist/esm/components/Radio/Radio.js +4 -4
- package/dist/esm/components/Radio/RadioGroup.js +4 -4
- package/dist/esm/components/Radio/index.js +4 -4
- package/dist/esm/components/Select/Select.js +4 -4
- package/dist/esm/components/Select/index.js +4 -4
- package/dist/esm/components/Text/Text.js +5 -3
- package/dist/esm/components/Text/index.js +5 -3
- package/dist/esm/components/TextArea/TextArea.js +4 -4
- package/dist/esm/components/TextArea/index.js +4 -4
- package/dist/esm/components/TextField/TextField.js +4 -4
- package/dist/esm/components/TextField/index.js +4 -4
- package/dist/esm/components/TextOrHTML/TextOrHTML.js +2 -2
- package/dist/esm/components/TextOrHTML/index.js +2 -2
- package/dist/esm/components/index.js +7 -5
- package/dist/esm/index.js +7 -5
- package/dist/esm/meta.json +176 -161
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/Text/Text.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/Table/Table.test.tsx +2 -5
- package/src/components/Text/Text.test.tsx +3 -4
- package/src/components/Text/Text.tsx +1 -1
- package/src/components/TextOrHTML/TextOrHTML.test.tsx +54 -3
- package/src/components/TextOrHTML/TextOrHTML.tsx +46 -9
- package/dist/esm/chunk-VIDKIVA6.js +0 -40
- package/dist/esm/chunk-VIDKIVA6.js.map +0 -7
- /package/dist/esm/{chunk-QWD72EVP.js.map → chunk-JNAQ76CR.js.map} +0 -0
- /package/dist/esm/{chunk-I6EUIFUJ.js.map → chunk-W2RQH4WS.js.map} +0 -0
|
@@ -16,6 +16,7 @@ export interface TextProps extends DOMProps, RefAttributes<TextElementType> {
|
|
|
16
16
|
children: ReactNode;
|
|
17
17
|
style?: React.CSSProperties;
|
|
18
18
|
}
|
|
19
|
+
export declare const getElementType: (variant: TextVariantType | undefined, elementType: ElementType | undefined) => ElementType;
|
|
19
20
|
declare const Text: {
|
|
20
21
|
({ ref, elementType, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
|
|
21
22
|
displayName: string;
|
package/package.json
CHANGED
|
@@ -231,10 +231,7 @@ describe("Test for Table", () => {
|
|
|
231
231
|
expect(screen.getByTestId("header-cell").nodeName).toBe("TH");
|
|
232
232
|
});
|
|
233
233
|
|
|
234
|
-
|
|
235
|
-
// improvement — <th> elements should ideally have scope="col" or scope="row"
|
|
236
|
-
// to associate headers with their data cells.
|
|
237
|
-
it("HeaderCell does not apply a scope attribute", () => {
|
|
234
|
+
it("HeaderCell applies scope='col' by default", () => {
|
|
238
235
|
render(
|
|
239
236
|
<Table>
|
|
240
237
|
<Table.Head>
|
|
@@ -246,7 +243,7 @@ describe("Test for Table", () => {
|
|
|
246
243
|
</Table.Head>
|
|
247
244
|
</Table>,
|
|
248
245
|
);
|
|
249
|
-
expect(screen.getByTestId("header-cell")).
|
|
246
|
+
expect(screen.getByTestId("header-cell")).toHaveAttribute("scope", "col");
|
|
250
247
|
});
|
|
251
248
|
});
|
|
252
249
|
|
|
@@ -111,11 +111,10 @@ describe("Text", () => {
|
|
|
111
111
|
expect(container.firstChild?.nodeName).toBe("SPAN");
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
-
it("
|
|
115
|
-
//
|
|
116
|
-
// variant only affects CSS classes -- not the rendered element
|
|
114
|
+
it("infers element type from variant when no elementType is provided", () => {
|
|
115
|
+
// h1-h4 variants render as their corresponding heading elements
|
|
117
116
|
const { container } = render(<Text variant="h1">Heading text</Text>);
|
|
118
|
-
expect(container.firstChild?.nodeName).toBe("
|
|
117
|
+
expect(container.firstChild?.nodeName).toBe("H1");
|
|
119
118
|
});
|
|
120
119
|
});
|
|
121
120
|
|
|
@@ -27,7 +27,7 @@ export interface TextProps extends DOMProps, RefAttributes<TextElementType> {
|
|
|
27
27
|
style?: React.CSSProperties;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const getElementType = (
|
|
30
|
+
export const getElementType = (
|
|
31
31
|
variant: TextVariantType | undefined,
|
|
32
32
|
elementType: ElementType | undefined,
|
|
33
33
|
): ElementType => {
|
|
@@ -138,16 +138,67 @@ describe("TextOrHTML", () => {
|
|
|
138
138
|
expect(div?.innerHTML).toBe("<strong>Bold text</strong>");
|
|
139
139
|
});
|
|
140
140
|
|
|
141
|
-
it("detects plain text and
|
|
141
|
+
it("detects plain text and renders directly in a Text component without nested span", () => {
|
|
142
142
|
render(
|
|
143
143
|
<TextOrHTML text="Just plain text" autoDetect data-testid="test" />,
|
|
144
144
|
);
|
|
145
145
|
const element = screen.getByTestId("test");
|
|
146
146
|
expect(element).toHaveClass("mobius");
|
|
147
147
|
expect(element).toHaveClass(CLASS_NAME);
|
|
148
|
+
expect(element).toHaveTextContent("Just plain text");
|
|
148
149
|
// eslint-disable-next-line testing-library/no-node-access
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
expect(element.querySelector("span")).toBeNull();
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it("applies htmlClassName to the Text element for plain text", () => {
|
|
154
|
+
render(
|
|
155
|
+
<TextOrHTML
|
|
156
|
+
text="Please enter your full name"
|
|
157
|
+
htmlClassName="mobius-question__secondary-text"
|
|
158
|
+
autoDetect
|
|
159
|
+
data-testid="test"
|
|
160
|
+
/>,
|
|
161
|
+
);
|
|
162
|
+
const element = screen.getByTestId("test");
|
|
163
|
+
expect(element).toHaveClass("mobius-question__secondary-text");
|
|
164
|
+
expect(element).toHaveClass("mobius");
|
|
165
|
+
expect(element).toHaveClass(CLASS_NAME);
|
|
166
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
167
|
+
expect(element.querySelector("span")).toBeNull();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it("renders inline HTML in non-block text with autoDetect", () => {
|
|
171
|
+
render(
|
|
172
|
+
<TextOrHTML
|
|
173
|
+
text="This is <strong>bold</strong> text"
|
|
174
|
+
autoDetect
|
|
175
|
+
data-testid="test"
|
|
176
|
+
/>,
|
|
177
|
+
);
|
|
178
|
+
const element = screen.getByTestId("test");
|
|
179
|
+
expect(element).toHaveClass("mobius");
|
|
180
|
+
expect(element.nodeName).toBe("P");
|
|
181
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
182
|
+
expect(element.querySelector("strong")).toBeInTheDocument();
|
|
183
|
+
expect(element).toHaveTextContent("This is bold text");
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it("decodes HTML entities in text that contains no HTML tags with autoDetect", () => {
|
|
187
|
+
const entities = [
|
|
188
|
+
{ text: "before & after", expected: "before & after" },
|
|
189
|
+
{ text: "before < after", expected: "before < after" },
|
|
190
|
+
{ text: "before > after", expected: "before > after" },
|
|
191
|
+
{ text: "before ' after", expected: "before ' after" },
|
|
192
|
+
{ text: "before " after", expected: 'before " after' },
|
|
193
|
+
];
|
|
194
|
+
|
|
195
|
+
for (const { text, expected } of entities) {
|
|
196
|
+
const { unmount } = render(
|
|
197
|
+
<TextOrHTML text={text} autoDetect data-testid="test" />,
|
|
198
|
+
);
|
|
199
|
+
expect(screen.getByTestId("test")).toHaveTextContent(expected);
|
|
200
|
+
unmount();
|
|
201
|
+
}
|
|
151
202
|
});
|
|
152
203
|
|
|
153
204
|
it("detects HTML with leading whitespace", () => {
|
|
@@ -1,11 +1,30 @@
|
|
|
1
|
+
import classNames from "classnames/dedupe";
|
|
1
2
|
import type { RefAttributes } from "react";
|
|
2
3
|
import { useMemo } from "react";
|
|
3
4
|
import type { TextElementType, TextProps } from "../Text/Text";
|
|
4
|
-
import { Text } from "../Text/Text";
|
|
5
|
+
import { Text, getElementType } from "../Text/Text";
|
|
5
6
|
|
|
6
7
|
export type HTMLElementType = "span" | "div";
|
|
7
8
|
|
|
8
|
-
const
|
|
9
|
+
const isBlockHTML = (text: string) => /^\s*<[a-z]/i.test(text);
|
|
10
|
+
const containsHTML = (text: string) =>
|
|
11
|
+
/<[a-z/]/i.test(text) || /&(?:#\d+|#x[\da-f]+|[a-z]\w*);/i.test(text); // tag or entity
|
|
12
|
+
|
|
13
|
+
const buildTextClasses = (
|
|
14
|
+
textProps: Omit<TextProps, "children">,
|
|
15
|
+
htmlClassName?: string,
|
|
16
|
+
) => {
|
|
17
|
+
const { variant, elementType, spacing, className } = textProps;
|
|
18
|
+
const variantType = variant || getElementType(variant, elementType);
|
|
19
|
+
return classNames(
|
|
20
|
+
"mobius",
|
|
21
|
+
"mobius-text",
|
|
22
|
+
{ [`--is-${variantType}`]: variantType },
|
|
23
|
+
{ [`--has-line-height-${spacing}`]: spacing },
|
|
24
|
+
className,
|
|
25
|
+
htmlClassName,
|
|
26
|
+
);
|
|
27
|
+
};
|
|
9
28
|
|
|
10
29
|
export interface TextOrHTMLProps
|
|
11
30
|
extends Omit<TextProps, "children">, RefAttributes<TextElementType> {
|
|
@@ -30,17 +49,35 @@ const TextOrHTML = ({
|
|
|
30
49
|
autoDetect = false,
|
|
31
50
|
...textProps
|
|
32
51
|
}: TextOrHTMLProps) => {
|
|
33
|
-
const
|
|
34
|
-
const shouldWrapInText = autoDetect
|
|
35
|
-
? textWrapper || !textIsHTML
|
|
36
|
-
: textWrapper;
|
|
37
|
-
const resolvedElementType = htmlElementType ?? (textIsHTML ? "div" : "span");
|
|
38
|
-
const DangerousComponent = resolvedElementType;
|
|
52
|
+
const textIsBlockHTML = autoDetect && isBlockHTML(text);
|
|
39
53
|
|
|
40
54
|
// Memoize the dangerouslySetInnerHTML object to prevent unnecessary re-renders
|
|
41
55
|
// See: https://github.com/facebook/react/issues/31660
|
|
42
56
|
const dangerousHTML = useMemo(() => ({ __html: text }), [text]);
|
|
43
57
|
|
|
58
|
+
// Non-block text with autoDetect: render directly on a Text-equivalent element,
|
|
59
|
+
// avoiding unnecessary <span> nesting inside <p>.
|
|
60
|
+
if (autoDetect && !textIsBlockHTML) {
|
|
61
|
+
const { variant, spacing, elementType, className, ...domProps } = textProps;
|
|
62
|
+
const Element = getElementType(variant, elementType);
|
|
63
|
+
const classes = buildTextClasses(textProps, htmlClassName);
|
|
64
|
+
|
|
65
|
+
return containsHTML(text) ? (
|
|
66
|
+
<Element
|
|
67
|
+
ref={ref}
|
|
68
|
+
{...domProps}
|
|
69
|
+
className={classes}
|
|
70
|
+
dangerouslySetInnerHTML={dangerousHTML}
|
|
71
|
+
/>
|
|
72
|
+
) : (
|
|
73
|
+
<Element ref={ref} {...domProps} className={classes}>
|
|
74
|
+
{text}
|
|
75
|
+
</Element>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const DangerousComponent =
|
|
80
|
+
htmlElementType ?? (textIsBlockHTML ? "div" : "span");
|
|
44
81
|
const dangerousElement = (
|
|
45
82
|
<DangerousComponent
|
|
46
83
|
className={htmlClassName}
|
|
@@ -48,7 +85,7 @@ const TextOrHTML = ({
|
|
|
48
85
|
/>
|
|
49
86
|
);
|
|
50
87
|
|
|
51
|
-
if (
|
|
88
|
+
if (textWrapper) {
|
|
52
89
|
return (
|
|
53
90
|
<Text ref={ref} {...textProps}>
|
|
54
91
|
{dangerousElement}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Text
|
|
3
|
-
} from "./chunk-ZS5MFZHD.js";
|
|
4
|
-
|
|
5
|
-
// src/components/TextOrHTML/TextOrHTML.tsx
|
|
6
|
-
import { useMemo } from "react";
|
|
7
|
-
import { jsx } from "react/jsx-runtime";
|
|
8
|
-
var isHTML = (text) => /^\s*<[a-z]/i.test(text);
|
|
9
|
-
var TextOrHTML = ({
|
|
10
|
-
ref,
|
|
11
|
-
text,
|
|
12
|
-
htmlClassName,
|
|
13
|
-
htmlElementType,
|
|
14
|
-
textWrapper = false,
|
|
15
|
-
autoDetect = false,
|
|
16
|
-
...textProps
|
|
17
|
-
}) => {
|
|
18
|
-
const textIsHTML = autoDetect && isHTML(text);
|
|
19
|
-
const shouldWrapInText = autoDetect ? textWrapper || !textIsHTML : textWrapper;
|
|
20
|
-
const resolvedElementType = htmlElementType ?? (textIsHTML ? "div" : "span");
|
|
21
|
-
const DangerousComponent = resolvedElementType;
|
|
22
|
-
const dangerousHTML = useMemo(() => ({ __html: text }), [text]);
|
|
23
|
-
const dangerousElement = /* @__PURE__ */ jsx(
|
|
24
|
-
DangerousComponent,
|
|
25
|
-
{
|
|
26
|
-
className: htmlClassName,
|
|
27
|
-
dangerouslySetInnerHTML: dangerousHTML
|
|
28
|
-
}
|
|
29
|
-
);
|
|
30
|
-
if (shouldWrapInText) {
|
|
31
|
-
return /* @__PURE__ */ jsx(Text, { ref, ...textProps, children: dangerousElement });
|
|
32
|
-
}
|
|
33
|
-
return dangerousElement;
|
|
34
|
-
};
|
|
35
|
-
TextOrHTML.displayName = "TextOrHTML";
|
|
36
|
-
|
|
37
|
-
export {
|
|
38
|
-
TextOrHTML
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=chunk-VIDKIVA6.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/TextOrHTML/TextOrHTML.tsx"],
|
|
4
|
-
"sourcesContent": ["import type { RefAttributes } from \"react\";\nimport { useMemo } from \"react\";\nimport type { TextElementType, TextProps } from \"../Text/Text\";\nimport { Text } from \"../Text/Text\";\n\nexport type HTMLElementType = \"span\" | \"div\";\n\nconst isHTML = (text: string) => /^\\s*<[a-z]/i.test(text);\n\nexport interface TextOrHTMLProps\n extends Omit<TextProps, \"children\">, RefAttributes<TextElementType> {\n /** HTML string to be rendered with dangerouslySetInnerHTML */\n text: string;\n /** Custom class name for the dangerous HTML element */\n htmlClassName?: string;\n /** HTML element type for the dangerous HTML element */\n htmlElementType?: HTMLElementType;\n /** If true, wraps the dangerous HTML element inside a Text component */\n textWrapper?: boolean;\n /** If true, auto-detects whether text is HTML or plain text to determine wrapping and element type */\n autoDetect?: boolean;\n}\n\nconst TextOrHTML = ({\n ref,\n text,\n htmlClassName,\n htmlElementType,\n textWrapper = false,\n autoDetect = false,\n ...textProps\n}: TextOrHTMLProps) => {\n const textIsHTML = autoDetect && isHTML(text);\n const shouldWrapInText = autoDetect\n ? textWrapper || !textIsHTML\n : textWrapper;\n const resolvedElementType = htmlElementType ?? (textIsHTML ? \"div\" : \"span\");\n const DangerousComponent = resolvedElementType;\n\n // Memoize the dangerouslySetInnerHTML object to prevent unnecessary re-renders\n // See: https://github.com/facebook/react/issues/31660\n const dangerousHTML = useMemo(() => ({ __html: text }), [text]);\n\n const dangerousElement = (\n <DangerousComponent\n className={htmlClassName}\n dangerouslySetInnerHTML={dangerousHTML}\n />\n );\n\n if (shouldWrapInText) {\n return (\n <Text ref={ref} {...textProps}>\n {dangerousElement}\n </Text>\n );\n }\n\n return dangerousElement;\n};\n\nTextOrHTML.displayName = \"TextOrHTML\";\nexport { TextOrHTML };\n"],
|
|
5
|
-
"mappings": ";;;;;AACA,SAAS,eAAe;AA2CpB;AArCJ,IAAM,SAAS,CAAC,SAAiB,cAAc,KAAK,IAAI;AAgBxD,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AAAA,EACb,GAAG;AACL,MAAuB;AACrB,QAAM,aAAa,cAAc,OAAO,IAAI;AAC5C,QAAM,mBAAmB,aACrB,eAAe,CAAC,aAChB;AACJ,QAAM,sBAAsB,oBAAoB,aAAa,QAAQ;AACrE,QAAM,qBAAqB;AAI3B,QAAM,gBAAgB,QAAQ,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC;AAE9D,QAAM,mBACJ;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,yBAAyB;AAAA;AAAA,EAC3B;AAGF,MAAI,kBAAkB;AACpB,WACE,oBAAC,QAAK,KAAW,GAAG,WACjB,4BACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAEA,WAAW,cAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|