@frontify/fondue 12.0.0-beta.0 → 12.0.0-beta.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/dist/components/Breadcrumbs/BreadcrumbItem.d.ts +0 -1
- package/dist/components/Breadcrumbs/BreadcrumbItem.es.js +23 -23
- package/dist/components/Breadcrumbs/BreadcrumbItem.es.js.map +1 -1
- package/dist/components/Breadcrumbs/CurrentBreadcrumbItem.es.js +1 -1
- package/dist/components/Breadcrumbs/CurrentBreadcrumbItem.es.js.map +1 -1
- package/dist/components/RichTextEditor/EditorActions/Plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js +13 -12
- package/dist/components/RichTextEditor/EditorActions/Plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js.map +1 -1
- package/dist/components/RichTextEditor/EditorActions/Plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.d.ts +0 -1
- package/dist/components/RichTextEditor/EditorActions/Plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js +12 -12
- package/dist/components/RichTextEditor/EditorActions/Plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js.map +1 -1
- package/dist/components/RichTextEditor/TextStyleDropdown/DropdownTrigger.es.js +20 -20
- package/dist/components/RichTextEditor/TextStyleDropdown/DropdownTrigger.es.js.map +1 -1
- package/dist/components/RichTextEditor/TextStyleDropdown/TextStyleDropdown.es.js +34 -27
- package/dist/components/RichTextEditor/TextStyleDropdown/TextStyleDropdown.es.js.map +1 -1
- package/dist/components/RichTextEditor/components/quote.d.ts +3 -0
- package/dist/components/RichTextEditor/components/quote.es.js +16 -0
- package/dist/components/RichTextEditor/components/quote.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.es.js +38 -37
- package/dist/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.es.js.map +1 -1
- package/dist/components/RichTextEditor/utils/defaultDesignTokens.es.js +12 -2
- package/dist/components/RichTextEditor/utils/defaultDesignTokens.es.js.map +1 -1
- package/dist/components/RichTextEditor/utils/editorConfig.es.js +50 -44
- package/dist/components/RichTextEditor/utils/editorConfig.es.js.map +1 -1
- package/dist/components/RichTextEditor/utils/textStyles.d.ts +2 -0
- package/dist/components/RichTextEditor/utils/textStyles.es.js +6 -4
- package/dist/components/RichTextEditor/utils/textStyles.es.js.map +1 -1
- package/dist/components/TextInput/TextInput.es.js +40 -38
- package/dist/components/TextInput/TextInput.es.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.es.js +11 -11
- package/dist/components/Tooltip/Tooltip.es.js.map +1 -1
- package/dist/index.cjs.js +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +3554 -3553
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +4 -4
- package/dist/index.umd.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/elements.d.ts +2 -0
- package/dist/utilities/elements.es.js +5 -0
- package/dist/utilities/elements.es.js.map +1 -0
- package/dist/utilities/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,50 +1,51 @@
|
|
|
1
1
|
import "react";
|
|
2
2
|
import "../../context/RichTextEditorContext.es.js";
|
|
3
|
-
import {
|
|
4
|
-
import { OL_CLASSES as
|
|
5
|
-
import { UL_CLASSES as
|
|
6
|
-
import { ELEMENT_CHECK_ITEM as
|
|
7
|
-
import { TextStyles as
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
3
|
+
import { ELEMENT_LINK as s, ELEMENT_LI as $, ELEMENT_OL as p, ELEMENT_UL as u, ELEMENT_PARAGRAPH as L } from "@udecode/plate";
|
|
4
|
+
import { OL_CLASSES as i } from "../../components/ordered-list.es.js";
|
|
5
|
+
import { UL_CLASSES as m } from "../../components/unordered-list.es.js";
|
|
6
|
+
import { ELEMENT_CHECK_ITEM as h } from "../../EditorActions/Plugins/CheckboxListPlugin/id.es.js";
|
|
7
|
+
import { TextStyles as l } from "../../utils/textStyles.es.js";
|
|
8
|
+
import a from "../../../../node_modules/escape-html/index.es.js";
|
|
9
|
+
import { reactCssPropsToCss as e } from "./reactCssPropsToCss.es.js";
|
|
10
|
+
import { serializeLeafToHtml as o } from "./serializeLeafToHtml.es.js";
|
|
11
|
+
const N = (E, t) => {
|
|
12
|
+
if (!E.children)
|
|
13
|
+
return o(E);
|
|
14
|
+
const r = E.children.map((c) => N(c, t)).join("");
|
|
15
|
+
switch (E.type) {
|
|
16
|
+
case l.ELEMENT_HEADING1:
|
|
17
|
+
return `<h1 style="${e(t.heading1)}">${r}</h1>`;
|
|
18
|
+
case l.ELEMENT_HEADING2:
|
|
19
|
+
return `<h2 style="${e(t.heading2)}">${r}</h2>`;
|
|
20
|
+
case l.ELEMENT_HEADING3:
|
|
21
|
+
return `<h3 style="${e(t.heading3)}">${r}</h3>`;
|
|
22
|
+
case l.ELEMENT_HEADING4:
|
|
23
|
+
return `<h4 style="${e(t.heading4)}">${r}</h4>`;
|
|
24
|
+
case l.ELEMENT_CUSTOM1:
|
|
25
|
+
return `<p style="${e(t.custom1)}">${r}</p>`;
|
|
26
|
+
case l.ELEMENT_CUSTOM2:
|
|
27
|
+
return `<p style="${e(t.custom2)}">${r}</p>`;
|
|
28
|
+
case l.ELEMENT_CUSTOM3:
|
|
29
|
+
return `<p style="${e(t.custom3)}">${r}</p>`;
|
|
30
|
+
case l.ELEMENT_QUOTE:
|
|
31
|
+
return `<p style="${e(t.quote)}">${r}</p>`;
|
|
32
|
+
case L:
|
|
32
33
|
return `<p>${r}</p>`;
|
|
33
|
-
case o:
|
|
34
|
-
return `<ul class="${i}">${r}</ul>`;
|
|
35
34
|
case u:
|
|
36
|
-
return `<
|
|
37
|
-
case L:
|
|
38
|
-
return `<li>${r}</li>`;
|
|
35
|
+
return `<ul class="${m}">${r}</ul>`;
|
|
39
36
|
case p:
|
|
40
|
-
return
|
|
41
|
-
case
|
|
37
|
+
return `<ol class="${i}">${r}</ol>`;
|
|
38
|
+
case $:
|
|
39
|
+
return `<li>${r}</li>`;
|
|
40
|
+
case s:
|
|
41
|
+
return E.chosenLink ? `<a style="${e(t.link)}" target=${E.chosenLink.openInNewTab ? "_blank" : "_self"} href="${a(E.chosenLink.searchResult.link)}">${r}</a>` : `<a style="${e(t.link)}" href="${a(E.url)}">${r}</a>`;
|
|
42
|
+
case h:
|
|
42
43
|
return `<input type="checkbox"/><label>${r}</label>`;
|
|
43
44
|
default:
|
|
44
45
|
return r;
|
|
45
46
|
}
|
|
46
47
|
};
|
|
47
48
|
export {
|
|
48
|
-
|
|
49
|
+
N as serializeNodeToHtmlRecursive
|
|
49
50
|
};
|
|
50
51
|
//# sourceMappingURL=serializeNodeToHtmlRecursive.es.js.map
|
package/dist/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeNodeToHtmlRecursive.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"serializeNodeToHtmlRecursive.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.ts"],"sourcesContent":["import { OL_CLASSES, UL_CLASSES } from '@components/RichTextEditor/components';\nimport { ELEMENT_CHECK_ITEM } from '../../EditorActions/Plugins/CheckboxListPlugin/id';\nimport { DesignTokens } from '@components/RichTextEditor/types';\nimport { TextStyles } from '@components/RichTextEditor/utils/textStyles';\nimport { ELEMENT_LI, ELEMENT_LINK, ELEMENT_OL, ELEMENT_PARAGRAPH, ELEMENT_UL, TDescendant } from '@udecode/plate';\nimport escapeHtml from 'escape-html';\nimport { reactCssPropsToCss } from './reactCssPropsToCss';\nimport { serializeLeafToHtml } from './serializeLeafToHtml';\n\nexport const serializeNodeToHtmlRecursive = (node: TDescendant, designTokens: DesignTokens): string => {\n if (!node.children) {\n return serializeLeafToHtml(node);\n }\n\n const children = node.children.map((n: TDescendant) => serializeNodeToHtmlRecursive(n, designTokens)).join('');\n\n switch (node.type) {\n case TextStyles.ELEMENT_HEADING1:\n return `<h1 style=\"${reactCssPropsToCss(designTokens.heading1)}\">${children}</h1>`;\n case TextStyles.ELEMENT_HEADING2:\n return `<h2 style=\"${reactCssPropsToCss(designTokens.heading2)}\">${children}</h2>`;\n case TextStyles.ELEMENT_HEADING3:\n return `<h3 style=\"${reactCssPropsToCss(designTokens.heading3)}\">${children}</h3>`;\n case TextStyles.ELEMENT_HEADING4:\n return `<h4 style=\"${reactCssPropsToCss(designTokens.heading4)}\">${children}</h4>`;\n case TextStyles.ELEMENT_CUSTOM1:\n return `<p style=\"${reactCssPropsToCss(designTokens.custom1)}\">${children}</p>`;\n case TextStyles.ELEMENT_CUSTOM2:\n return `<p style=\"${reactCssPropsToCss(designTokens.custom2)}\">${children}</p>`;\n case TextStyles.ELEMENT_CUSTOM3:\n return `<p style=\"${reactCssPropsToCss(designTokens.custom3)}\">${children}</p>`;\n case TextStyles.ELEMENT_QUOTE:\n return `<p style=\"${reactCssPropsToCss(designTokens.quote)}\">${children}</p>`;\n case ELEMENT_PARAGRAPH:\n return `<p>${children}</p>`;\n case ELEMENT_UL:\n return `<ul class=\"${UL_CLASSES}\">${children}</ul>`;\n case ELEMENT_OL:\n return `<ol class=\"${OL_CLASSES}\">${children}</ol>`;\n case ELEMENT_LI:\n return `<li>${children}</li>`;\n case ELEMENT_LINK:\n if (node.chosenLink) {\n return `<a style=\"${reactCssPropsToCss(designTokens.link)}\" target=${\n node.chosenLink.openInNewTab ? '_blank' : '_self'\n } href=\"${escapeHtml(node.chosenLink.searchResult.link)}\">${children}</a>`;\n }\n return `<a style=\"${reactCssPropsToCss(designTokens.link)}\" href=\"${escapeHtml(node.url)}\">${children}</a>`;\n case ELEMENT_CHECK_ITEM:\n return `<input type=\"checkbox\"/><label>${children}</label>`;\n\n default:\n return children;\n }\n};\n"],"names":["escapeHtml"],"mappings":";;;;;;;;;;AASa,MAAA,IAA+B,CAAC,GAAmB,MAAuC;AAC/F,MAAA,CAAC,EAAK;AACN,WAAO,EAAoB,CAAI;AAGnC,QAAM,IAAW,EAAK,SAAS,IAAI,CAAC,MAAmB,EAA6B,GAAG,CAAY,CAAC,EAAE,KAAK,EAAE;AAE7G,UAAQ,EAAK;AAAA,SACJ,EAAW;AACZ,aAAO,cAAc,EAAmB,EAAa,QAAQ,MAAM;AAAA,SAClE,EAAW;AACZ,aAAO,cAAc,EAAmB,EAAa,QAAQ,MAAM;AAAA,SAClE,EAAW;AACZ,aAAO,cAAc,EAAmB,EAAa,QAAQ,MAAM;AAAA,SAClE,EAAW;AACZ,aAAO,cAAc,EAAmB,EAAa,QAAQ,MAAM;AAAA,SAClE,EAAW;AACZ,aAAO,aAAa,EAAmB,EAAa,OAAO,MAAM;AAAA,SAChE,EAAW;AACZ,aAAO,aAAa,EAAmB,EAAa,OAAO,MAAM;AAAA,SAChE,EAAW;AACZ,aAAO,aAAa,EAAmB,EAAa,OAAO,MAAM;AAAA,SAChE,EAAW;AACZ,aAAO,aAAa,EAAmB,EAAa,KAAK,MAAM;AAAA,SAC9D;AACD,aAAO,MAAM;AAAA,SACZ;AACD,aAAO,cAAc,MAAe;AAAA,SACnC;AACD,aAAO,cAAc,MAAe;AAAA,SACnC;AACD,aAAO,OAAO;AAAA,SACb;AACD,aAAI,EAAK,aACE,aAAa,EAAmB,EAAa,IAAI,aACpD,EAAK,WAAW,eAAe,WAAW,iBACpCA,EAAW,EAAK,WAAW,aAAa,IAAI,MAAM,UAEzD,aAAa,EAAmB,EAAa,IAAI,YAAYA,EAAW,EAAK,GAAG,MAAM;AAAA,SAC5F;AACD,aAAO,kCAAkC;AAAA;AAGlC,aAAA;AAAA;AAEnB;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const t = {
|
|
2
2
|
heading1: {
|
|
3
3
|
fontSize: "48px",
|
|
4
4
|
fontWeight: 700
|
|
@@ -23,9 +23,19 @@ const e = {
|
|
|
23
23
|
custom3: {
|
|
24
24
|
fontSize: "14px",
|
|
25
25
|
textDecoration: "underline"
|
|
26
|
+
},
|
|
27
|
+
quote: {
|
|
28
|
+
fontSize: "16px",
|
|
29
|
+
fontStyle: "italic"
|
|
30
|
+
},
|
|
31
|
+
link: {
|
|
32
|
+
fontSize: "14px",
|
|
33
|
+
color: "rgb(113, 89, 215)",
|
|
34
|
+
textDecoration: "underline",
|
|
35
|
+
cursor: "pointer"
|
|
26
36
|
}
|
|
27
37
|
};
|
|
28
38
|
export {
|
|
29
|
-
|
|
39
|
+
t as defaultDesignTokens
|
|
30
40
|
};
|
|
31
41
|
//# sourceMappingURL=defaultDesignTokens.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultDesignTokens.es.js","sources":["../../../../src/components/RichTextEditor/utils/defaultDesignTokens.ts"],"sourcesContent":["import { DesignTokens } from '../types';\n\nexport const defaultDesignTokens: DesignTokens = {\n heading1: {\n fontSize: '48px',\n fontWeight: 700,\n },\n heading2: {\n fontSize: '32px',\n fontWeight: 700,\n },\n heading3: {\n fontSize: '24px',\n },\n heading4: {\n fontSize: '18px',\n },\n custom1: {\n fontSize: '14px',\n },\n custom2: {\n fontSize: '14px',\n fontWeight: 600,\n },\n custom3: {\n fontSize: '14px',\n textDecoration: 'underline',\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,IAAoC;AAAA,EAC7C,UAAU;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACN,UAAU;AAAA,EACd;AAAA,EACA,UAAU;AAAA,IACN,UAAU;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,IACV,gBAAgB;AAAA,EACpB;AACJ;"}
|
|
1
|
+
{"version":3,"file":"defaultDesignTokens.es.js","sources":["../../../../src/components/RichTextEditor/utils/defaultDesignTokens.ts"],"sourcesContent":["import { DesignTokens } from '../types';\n\nexport const defaultDesignTokens: DesignTokens = {\n heading1: {\n fontSize: '48px',\n fontWeight: 700,\n },\n heading2: {\n fontSize: '32px',\n fontWeight: 700,\n },\n heading3: {\n fontSize: '24px',\n },\n heading4: {\n fontSize: '18px',\n },\n custom1: {\n fontSize: '14px',\n },\n custom2: {\n fontSize: '14px',\n fontWeight: 600,\n },\n custom3: {\n fontSize: '14px',\n textDecoration: 'underline',\n },\n quote: {\n fontSize: '16px',\n fontStyle: 'italic',\n },\n link: {\n fontSize: '14px',\n color: 'rgb(113, 89, 215)',\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,IAAoC;AAAA,EAC7C,UAAU;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACN,UAAU;AAAA,EACd;AAAA,EACA,UAAU;AAAA,IACN,UAAU;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,IACV,gBAAgB;AAAA,EACpB;AAAA,EACA,OAAO;AAAA,IACH,UAAU;AAAA,IACV,WAAW;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACF,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,QAAQ;AAAA,EACZ;AACJ;"}
|
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
import { createPluginFactory as t, createPlateUI as s, ELEMENT_LINK as
|
|
2
|
-
import { BoldMark as
|
|
3
|
-
import { CodeMark as
|
|
4
|
-
import { Custom1Element as
|
|
5
|
-
import { Custom2Element as
|
|
6
|
-
import { Custom3Element as
|
|
7
|
-
import { Heading1Element as
|
|
1
|
+
import { createPluginFactory as t, createPlateUI as s, ELEMENT_LINK as p, ELEMENT_UL as N, ELEMENT_OL as L, ELEMENT_LI as M, ELEMENT_LIC as d, MARK_BOLD as g, MARK_ITALIC as T, MARK_UNDERLINE as H, MARK_STRIKETHROUGH as P, MARK_CODE as _, createPlugins as f, createSoftBreakPlugin as C, createAlignPlugin as k, ELEMENT_PARAGRAPH as I, createIndentPlugin as A, createParagraphPlugin as U, createCodeBlockPlugin as y, createListPlugin as h, createBoldPlugin as D, createItalicPlugin as O, createUnderlinePlugin as G, createStrikethroughPlugin as R, createCodePlugin as S } from "@udecode/plate";
|
|
2
|
+
import { BoldMark as K } from "../components/bold.es.js";
|
|
3
|
+
import { CodeMark as v } from "../components/code.es.js";
|
|
4
|
+
import { Custom1Element as B } from "../components/custom1.es.js";
|
|
5
|
+
import { Custom2Element as x } from "../components/custom2.es.js";
|
|
6
|
+
import { Custom3Element as z } from "../components/custom3.es.js";
|
|
7
|
+
import { Heading1Element as Q } from "../components/heading1.es.js";
|
|
8
8
|
import { Heading2Element as b } from "../components/heading2.es.js";
|
|
9
9
|
import { Heading3Element as j } from "../components/heading3.es.js";
|
|
10
10
|
import { Heading4Element as F } from "../components/heading4.es.js";
|
|
11
11
|
import { ItalicMark as q } from "../components/italic.es.js";
|
|
12
12
|
import { LinkMarkupElementNode as w } from "../EditorActions/Plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js";
|
|
13
13
|
import { ListItemElement as J } from "../components/list-item.es.js";
|
|
14
|
-
import { ListItemContentElement as
|
|
15
|
-
import { OrderedListElement as
|
|
16
|
-
import { StrikethroughMark as
|
|
17
|
-
import { UnderlineMark as
|
|
18
|
-
import { UnorderedListElement as
|
|
19
|
-
import { createCheckboxListPlugin as
|
|
14
|
+
import { ListItemContentElement as V } from "../components/list-item-content.es.js";
|
|
15
|
+
import { OrderedListElement as W } from "../components/ordered-list.es.js";
|
|
16
|
+
import { StrikethroughMark as X } from "../components/strikethrough.es.js";
|
|
17
|
+
import { UnderlineMark as Y } from "../components/underline.es.js";
|
|
18
|
+
import { UnorderedListElement as Z } from "../components/unordered-list.es.js";
|
|
19
|
+
import { createCheckboxListPlugin as $ } from "../EditorActions/Plugins/CheckboxListPlugin/index.es.js";
|
|
20
20
|
import { ELEMENT_CHECK_ITEM as r } from "../EditorActions/Plugins/CheckboxListPlugin/id.es.js";
|
|
21
|
-
import { CheckboxListElementNode as
|
|
22
|
-
import { createLinkPlugin as
|
|
21
|
+
import { CheckboxListElementNode as ee } from "../EditorActions/Plugins/CheckboxListPlugin/CheckboxListElement.es.js";
|
|
22
|
+
import { createLinkPlugin as te } from "../EditorActions/Plugins/LinkPlugin/index.es.js";
|
|
23
23
|
import { TextStyles as e } from "./textStyles.es.js";
|
|
24
|
-
|
|
24
|
+
import { QuoteElement as re } from "../components/quote.es.js";
|
|
25
|
+
const Ae = () => {
|
|
25
26
|
const o = t({
|
|
26
27
|
key: e.ELEMENT_HEADING1,
|
|
27
28
|
isElement: !0,
|
|
28
|
-
component:
|
|
29
|
+
component: Q,
|
|
29
30
|
deserializeHtml: {
|
|
30
31
|
rules: [{ validNodeName: ["h1", "H1"] }]
|
|
31
32
|
}
|
|
@@ -53,31 +54,35 @@ const Ce = () => {
|
|
|
53
54
|
}), m = t({
|
|
54
55
|
key: e.ELEMENT_CUSTOM1,
|
|
55
56
|
isElement: !0,
|
|
56
|
-
component:
|
|
57
|
+
component: B
|
|
57
58
|
}), l = t({
|
|
58
59
|
key: e.ELEMENT_CUSTOM2,
|
|
59
60
|
isElement: !0,
|
|
60
|
-
component:
|
|
61
|
+
component: x
|
|
61
62
|
}), a = t({
|
|
62
63
|
key: e.ELEMENT_CUSTOM3,
|
|
63
64
|
isElement: !0,
|
|
64
|
-
component:
|
|
65
|
-
}), c =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
[
|
|
71
|
-
[
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
76
|
-
[
|
|
65
|
+
component: z
|
|
66
|
+
}), c = t({
|
|
67
|
+
key: e.ELEMENT_QUOTE,
|
|
68
|
+
isElement: !0,
|
|
69
|
+
component: re
|
|
70
|
+
}), u = s({
|
|
71
|
+
[p]: w,
|
|
72
|
+
[N]: Z,
|
|
73
|
+
[L]: W,
|
|
74
|
+
[M]: J,
|
|
75
|
+
[d]: V,
|
|
76
|
+
[g]: K,
|
|
77
|
+
[T]: q,
|
|
78
|
+
[H]: Y,
|
|
79
|
+
[P]: X,
|
|
80
|
+
[_]: v,
|
|
81
|
+
[r]: ee
|
|
77
82
|
});
|
|
78
|
-
return
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
return f([
|
|
84
|
+
C(),
|
|
85
|
+
k({
|
|
81
86
|
inject: {
|
|
82
87
|
props: {
|
|
83
88
|
validTypes: [
|
|
@@ -92,35 +97,36 @@ const Ce = () => {
|
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
99
|
}),
|
|
95
|
-
|
|
100
|
+
A({
|
|
96
101
|
inject: {
|
|
97
102
|
props: {
|
|
98
103
|
validTypes: [r]
|
|
99
104
|
}
|
|
100
105
|
}
|
|
101
106
|
}),
|
|
102
|
-
A(),
|
|
103
107
|
U(),
|
|
104
|
-
h(),
|
|
105
|
-
Z(),
|
|
106
|
-
ee(),
|
|
107
108
|
y(),
|
|
109
|
+
h(),
|
|
110
|
+
$(),
|
|
111
|
+
te(),
|
|
108
112
|
D(),
|
|
109
|
-
G(),
|
|
110
113
|
O(),
|
|
114
|
+
G(),
|
|
111
115
|
R(),
|
|
116
|
+
S(),
|
|
112
117
|
o(),
|
|
113
118
|
E(),
|
|
114
119
|
i(),
|
|
115
120
|
n(),
|
|
116
121
|
m(),
|
|
117
122
|
l(),
|
|
118
|
-
a()
|
|
123
|
+
a(),
|
|
124
|
+
c()
|
|
119
125
|
], {
|
|
120
|
-
components:
|
|
126
|
+
components: u
|
|
121
127
|
});
|
|
122
128
|
};
|
|
123
129
|
export {
|
|
124
|
-
|
|
130
|
+
Ae as getEditorConfig
|
|
125
131
|
};
|
|
126
132
|
//# sourceMappingURL=editorConfig.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorConfig.es.js","sources":["../../../../src/components/RichTextEditor/utils/editorConfig.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LI,\n ELEMENT_LIC,\n ELEMENT_LINK,\n ELEMENT_OL,\n ELEMENT_PARAGRAPH,\n ELEMENT_UL,\n MARK_BOLD,\n MARK_CODE,\n MARK_ITALIC,\n MARK_STRIKETHROUGH,\n MARK_UNDERLINE,\n createAlignPlugin,\n createBoldPlugin,\n createCodeBlockPlugin,\n createCodePlugin,\n createIndentPlugin,\n createItalicPlugin,\n createListPlugin,\n createParagraphPlugin,\n createPlateUI,\n createPluginFactory,\n createPlugins,\n createSoftBreakPlugin,\n createStrikethroughPlugin,\n createUnderlinePlugin,\n} from '@udecode/plate';\nimport {\n BoldMark,\n CodeMark,\n Custom1Element,\n Custom2Element,\n Custom3Element,\n Heading1Element,\n Heading2Element,\n Heading3Element,\n Heading4Element,\n ItalicMark,\n LinkMarkupElementNode,\n ListItemContentElement,\n ListItemElement,\n OrderedListElement,\n StrikethroughMark,\n UnderlineMark,\n UnorderedListElement,\n} from '../components';\nimport { createCheckboxListPlugin } from '../EditorActions/Plugins/CheckboxListPlugin/index';\nimport { ELEMENT_CHECK_ITEM } from '../EditorActions/Plugins/CheckboxListPlugin/id';\nimport { CheckboxListElementNode } from '../EditorActions/Plugins/CheckboxListPlugin/CheckboxListElement';\nimport { createLinkPlugin } from '../EditorActions/Plugins/LinkPlugin';\nimport { TextStyles } from './textStyles';\n\nexport const getEditorConfig = () => {\n const createHeading1Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING1,\n isElement: true,\n component: Heading1Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h1', 'H1'] }],\n },\n });\n\n const createHeading2Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING2,\n isElement: true,\n component: Heading2Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h2', 'H2'] }],\n },\n });\n\n const createHeading3Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING3,\n isElement: true,\n component: Heading3Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h3', 'H3'] }],\n },\n });\n\n const createHeading4Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING4,\n isElement: true,\n component: Heading4Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h4', 'H4'] }],\n },\n });\n\n const createCustom1Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_CUSTOM1,\n isElement: true,\n component: Custom1Element,\n });\n\n const createCustom2Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_CUSTOM2,\n isElement: true,\n component: Custom2Element,\n });\n\n const createCustom3Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_CUSTOM3,\n isElement: true,\n component: Custom3Element,\n });\n\n const components = createPlateUI({\n // this will override the components over the default ones\n [ELEMENT_LINK]: LinkMarkupElementNode,\n [ELEMENT_UL]: UnorderedListElement,\n [ELEMENT_OL]: OrderedListElement,\n [ELEMENT_LI]: ListItemElement,\n [ELEMENT_LIC]: ListItemContentElement,\n [MARK_BOLD]: BoldMark,\n [MARK_ITALIC]: ItalicMark,\n [MARK_UNDERLINE]: UnderlineMark,\n [MARK_STRIKETHROUGH]: StrikethroughMark,\n [MARK_CODE]: CodeMark,\n [ELEMENT_CHECK_ITEM]: CheckboxListElementNode,\n });\n\n return createPlugins(\n [\n createSoftBreakPlugin(),\n createAlignPlugin({\n inject: {\n props: {\n validTypes: [\n ELEMENT_PARAGRAPH,\n TextStyles.ELEMENT_HEADING1,\n TextStyles.ELEMENT_HEADING2,\n TextStyles.ELEMENT_HEADING3,\n TextStyles.ELEMENT_HEADING4,\n TextStyles.ELEMENT_CUSTOM1,\n TextStyles.ELEMENT_CUSTOM2,\n ],\n },\n },\n }),\n createIndentPlugin({\n inject: {\n props: {\n validTypes: [ELEMENT_CHECK_ITEM],\n },\n },\n }),\n createParagraphPlugin(),\n createCodeBlockPlugin(),\n createListPlugin(),\n createCheckboxListPlugin(),\n createLinkPlugin(),\n createBoldPlugin(),\n createItalicPlugin(),\n createUnderlinePlugin(),\n createStrikethroughPlugin(),\n createCodePlugin(),\n createHeading1Plugin(),\n createHeading2Plugin(),\n createHeading3Plugin(),\n createHeading4Plugin(),\n createCustom1Plugin(),\n createCustom2Plugin(),\n createCustom3Plugin(),\n ],\n {\n components,\n },\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editorConfig.es.js","sources":["../../../../src/components/RichTextEditor/utils/editorConfig.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LI,\n ELEMENT_LIC,\n ELEMENT_LINK,\n ELEMENT_OL,\n ELEMENT_PARAGRAPH,\n ELEMENT_UL,\n MARK_BOLD,\n MARK_CODE,\n MARK_ITALIC,\n MARK_STRIKETHROUGH,\n MARK_UNDERLINE,\n createAlignPlugin,\n createBoldPlugin,\n createCodeBlockPlugin,\n createCodePlugin,\n createIndentPlugin,\n createItalicPlugin,\n createListPlugin,\n createParagraphPlugin,\n createPlateUI,\n createPluginFactory,\n createPlugins,\n createSoftBreakPlugin,\n createStrikethroughPlugin,\n createUnderlinePlugin,\n} from '@udecode/plate';\nimport {\n BoldMark,\n CodeMark,\n Custom1Element,\n Custom2Element,\n Custom3Element,\n Heading1Element,\n Heading2Element,\n Heading3Element,\n Heading4Element,\n ItalicMark,\n LinkMarkupElementNode,\n ListItemContentElement,\n ListItemElement,\n OrderedListElement,\n StrikethroughMark,\n UnderlineMark,\n UnorderedListElement,\n} from '../components';\nimport { createCheckboxListPlugin } from '../EditorActions/Plugins/CheckboxListPlugin/index';\nimport { ELEMENT_CHECK_ITEM } from '../EditorActions/Plugins/CheckboxListPlugin/id';\nimport { CheckboxListElementNode } from '../EditorActions/Plugins/CheckboxListPlugin/CheckboxListElement';\nimport { createLinkPlugin } from '../EditorActions/Plugins/LinkPlugin';\nimport { TextStyles } from './textStyles';\nimport { QuoteElement } from '../components/quote';\n\nexport const getEditorConfig = () => {\n const createHeading1Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING1,\n isElement: true,\n component: Heading1Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h1', 'H1'] }],\n },\n });\n\n const createHeading2Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING2,\n isElement: true,\n component: Heading2Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h2', 'H2'] }],\n },\n });\n\n const createHeading3Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING3,\n isElement: true,\n component: Heading3Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h3', 'H3'] }],\n },\n });\n\n const createHeading4Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_HEADING4,\n isElement: true,\n component: Heading4Element,\n deserializeHtml: {\n rules: [{ validNodeName: ['h4', 'H4'] }],\n },\n });\n\n const createCustom1Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_CUSTOM1,\n isElement: true,\n component: Custom1Element,\n });\n\n const createCustom2Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_CUSTOM2,\n isElement: true,\n component: Custom2Element,\n });\n\n const createCustom3Plugin = createPluginFactory({\n key: TextStyles.ELEMENT_CUSTOM3,\n isElement: true,\n component: Custom3Element,\n });\n\n const createQuotePlugin = createPluginFactory({\n key: TextStyles.ELEMENT_QUOTE,\n isElement: true,\n component: QuoteElement,\n });\n\n const components = createPlateUI({\n // this will override the components over the default ones\n [ELEMENT_LINK]: LinkMarkupElementNode,\n [ELEMENT_UL]: UnorderedListElement,\n [ELEMENT_OL]: OrderedListElement,\n [ELEMENT_LI]: ListItemElement,\n [ELEMENT_LIC]: ListItemContentElement,\n [MARK_BOLD]: BoldMark,\n [MARK_ITALIC]: ItalicMark,\n [MARK_UNDERLINE]: UnderlineMark,\n [MARK_STRIKETHROUGH]: StrikethroughMark,\n [MARK_CODE]: CodeMark,\n [ELEMENT_CHECK_ITEM]: CheckboxListElementNode,\n });\n\n return createPlugins(\n [\n createSoftBreakPlugin(),\n createAlignPlugin({\n inject: {\n props: {\n validTypes: [\n ELEMENT_PARAGRAPH,\n TextStyles.ELEMENT_HEADING1,\n TextStyles.ELEMENT_HEADING2,\n TextStyles.ELEMENT_HEADING3,\n TextStyles.ELEMENT_HEADING4,\n TextStyles.ELEMENT_CUSTOM1,\n TextStyles.ELEMENT_CUSTOM2,\n ],\n },\n },\n }),\n createIndentPlugin({\n inject: {\n props: {\n validTypes: [ELEMENT_CHECK_ITEM],\n },\n },\n }),\n createParagraphPlugin(),\n createCodeBlockPlugin(),\n createListPlugin(),\n createCheckboxListPlugin(),\n createLinkPlugin(),\n createBoldPlugin(),\n createItalicPlugin(),\n createUnderlinePlugin(),\n createStrikethroughPlugin(),\n createCodePlugin(),\n createHeading1Plugin(),\n createHeading2Plugin(),\n createHeading3Plugin(),\n createHeading4Plugin(),\n createCustom1Plugin(),\n createCustom2Plugin(),\n createCustom3Plugin(),\n createQuotePlugin(),\n ],\n {\n components,\n },\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuDO,MAAM,KAAkB,MAAM;AACjC,QAAM,IAAuB,EAAoB;AAAA,IAC7C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,MACb,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,IAAI,GAAG;AAAA,IAC3C;AAAA,EAAA,CACH,GAEK,IAAuB,EAAoB;AAAA,IAC7C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,MACb,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,IAAI,GAAG;AAAA,IAC3C;AAAA,EAAA,CACH,GAEK,IAAuB,EAAoB;AAAA,IAC7C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,MACb,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,IAAI,GAAG;AAAA,IAC3C;AAAA,EAAA,CACH,GAEK,IAAuB,EAAoB;AAAA,IAC7C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,MACb,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,IAAI,GAAG;AAAA,IAC3C;AAAA,EAAA,CACH,GAEK,IAAsB,EAAoB;AAAA,IAC5C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,CACd,GAEK,IAAsB,EAAoB;AAAA,IAC5C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,CACd,GAEK,IAAsB,EAAoB;AAAA,IAC5C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,CACd,GAEK,IAAoB,EAAoB;AAAA,IAC1C,KAAK,EAAW;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,CACd,GAEK,IAAa,EAAc;AAAA,IAE7B,CAAC,IAAe;AAAA,IAChB,CAAC,IAAa;AAAA,IACd,CAAC,IAAa;AAAA,IACd,CAAC,IAAa;AAAA,IACd,CAAC,IAAc;AAAA,IACf,CAAC,IAAY;AAAA,IACb,CAAC,IAAc;AAAA,IACf,CAAC,IAAiB;AAAA,IAClB,CAAC,IAAqB;AAAA,IACtB,CAAC,IAAY;AAAA,IACb,CAAC,IAAqB;AAAA,EAAA,CACzB;AAED,SAAO,EACH;AAAA,IACI,EAAsB;AAAA,IACtB,EAAkB;AAAA,MACd,QAAQ;AAAA,QACJ,OAAO;AAAA,UACH,YAAY;AAAA,YACR;AAAA,YACA,EAAW;AAAA,YACX,EAAW;AAAA,YACX,EAAW;AAAA,YACX,EAAW;AAAA,YACX,EAAW;AAAA,YACX,EAAW;AAAA,UACf;AAAA,QACJ;AAAA,MACJ;AAAA,IAAA,CACH;AAAA,IACD,EAAmB;AAAA,MACf,QAAQ;AAAA,QACJ,OAAO;AAAA,UACH,YAAY,CAAC,CAAkB;AAAA,QACnC;AAAA,MACJ;AAAA,IAAA,CACH;AAAA,IACD,EAAsB;AAAA,IACtB,EAAsB;AAAA,IACtB,EAAiB;AAAA,IACjB,EAAyB;AAAA,IACzB,GAAiB;AAAA,IACjB,EAAiB;AAAA,IACjB,EAAmB;AAAA,IACnB,EAAsB;AAAA,IACtB,EAA0B;AAAA,IAC1B,EAAiB;AAAA,IACjB,EAAqB;AAAA,IACrB,EAAqB;AAAA,IACrB,EAAqB;AAAA,IACrB,EAAqB;AAAA,IACrB,EAAoB;AAAA,IACpB,EAAoB;AAAA,IACpB,EAAoB;AAAA,IACpB,EAAkB;AAAA,EAAA,GAEtB;AAAA,IACI;AAAA,EAAA,CAER;AACJ;"}
|
|
@@ -6,6 +6,8 @@ export declare enum TextStyles {
|
|
|
6
6
|
ELEMENT_CUSTOM1 = "custom1",
|
|
7
7
|
ELEMENT_CUSTOM2 = "custom2",
|
|
8
8
|
ELEMENT_CUSTOM3 = "custom3",
|
|
9
|
+
ELEMENT_QUOTE = "quote",
|
|
10
|
+
ELEMENT_LINK = "link",
|
|
9
11
|
ELEMENT_PARAGRAPH = "p"
|
|
10
12
|
}
|
|
11
13
|
export declare const textStyleTitles: Record<TextStyles, string>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var
|
|
2
|
-
const
|
|
1
|
+
var n = /* @__PURE__ */ ((E) => (E.ELEMENT_HEADING1 = "heading1", E.ELEMENT_HEADING2 = "heading2", E.ELEMENT_HEADING3 = "heading3", E.ELEMENT_HEADING4 = "heading4", E.ELEMENT_CUSTOM1 = "custom1", E.ELEMENT_CUSTOM2 = "custom2", E.ELEMENT_CUSTOM3 = "custom3", E.ELEMENT_QUOTE = "quote", E.ELEMENT_LINK = "link", E.ELEMENT_PARAGRAPH = "p", E))(n || {});
|
|
2
|
+
const a = {
|
|
3
3
|
heading1: "Heading 1",
|
|
4
4
|
heading2: "Heading 2",
|
|
5
5
|
heading3: "Heading 3",
|
|
@@ -7,10 +7,12 @@ const n = {
|
|
|
7
7
|
custom1: "Custom 01",
|
|
8
8
|
custom2: "Custom 02",
|
|
9
9
|
custom3: "Custom 03",
|
|
10
|
+
quote: "Quote",
|
|
11
|
+
link: "Link",
|
|
10
12
|
p: "Paragraph"
|
|
11
13
|
};
|
|
12
14
|
export {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
n as TextStyles,
|
|
16
|
+
a as textStyleTitles
|
|
15
17
|
};
|
|
16
18
|
//# sourceMappingURL=textStyles.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textStyles.es.js","sources":["../../../../src/components/RichTextEditor/utils/textStyles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport enum TextStyles {\n ELEMENT_HEADING1 = 'heading1',\n ELEMENT_HEADING2 = 'heading2',\n ELEMENT_HEADING3 = 'heading3',\n ELEMENT_HEADING4 = 'heading4',\n ELEMENT_CUSTOM1 = 'custom1',\n ELEMENT_CUSTOM2 = 'custom2',\n ELEMENT_CUSTOM3 = 'custom3',\n ELEMENT_PARAGRAPH = 'p',\n}\n\nexport const textStyleTitles: Record<TextStyles, string> = {\n [TextStyles.ELEMENT_HEADING1]: 'Heading 1',\n [TextStyles.ELEMENT_HEADING2]: 'Heading 2',\n [TextStyles.ELEMENT_HEADING3]: 'Heading 3',\n [TextStyles.ELEMENT_HEADING4]: 'Heading 4',\n [TextStyles.ELEMENT_CUSTOM1]: 'Custom 01',\n [TextStyles.ELEMENT_CUSTOM2]: 'Custom 02',\n [TextStyles.ELEMENT_CUSTOM3]: 'Custom 03',\n [TextStyles.ELEMENT_PARAGRAPH]: 'Paragraph',\n};\n"],"names":[],"mappings":"AAEY,IAAA,sBAAA,MACW,GAAA,mBAAA,YACA,EAAA,mBAAA,YACA,EAAA,mBAAA,YACA,EAAA,mBAAA,YACD,EAAA,kBAAA,WACA,EAAA,kBAAA,WACA,EAAA,kBAAA,
|
|
1
|
+
{"version":3,"file":"textStyles.es.js","sources":["../../../../src/components/RichTextEditor/utils/textStyles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport enum TextStyles {\n ELEMENT_HEADING1 = 'heading1',\n ELEMENT_HEADING2 = 'heading2',\n ELEMENT_HEADING3 = 'heading3',\n ELEMENT_HEADING4 = 'heading4',\n ELEMENT_CUSTOM1 = 'custom1',\n ELEMENT_CUSTOM2 = 'custom2',\n ELEMENT_CUSTOM3 = 'custom3',\n ELEMENT_QUOTE = 'quote',\n ELEMENT_LINK = 'link',\n ELEMENT_PARAGRAPH = 'p',\n}\n\nexport const textStyleTitles: Record<TextStyles, string> = {\n [TextStyles.ELEMENT_HEADING1]: 'Heading 1',\n [TextStyles.ELEMENT_HEADING2]: 'Heading 2',\n [TextStyles.ELEMENT_HEADING3]: 'Heading 3',\n [TextStyles.ELEMENT_HEADING4]: 'Heading 4',\n [TextStyles.ELEMENT_CUSTOM1]: 'Custom 01',\n [TextStyles.ELEMENT_CUSTOM2]: 'Custom 02',\n [TextStyles.ELEMENT_CUSTOM3]: 'Custom 03',\n [TextStyles.ELEMENT_QUOTE]: 'Quote',\n [TextStyles.ELEMENT_LINK]: 'Link',\n [TextStyles.ELEMENT_PARAGRAPH]: 'Paragraph',\n};\n"],"names":[],"mappings":"AAEY,IAAA,sBAAA,MACW,GAAA,mBAAA,YACA,EAAA,mBAAA,YACA,EAAA,mBAAA,YACA,EAAA,mBAAA,YACD,EAAA,kBAAA,WACA,EAAA,kBAAA,WACA,EAAA,kBAAA,WACF,EAAA,gBAAA,SACD,EAAA,eAAA,QACK,EAAA,oBAAA,KAVZ,IAAA,KAAA,CAAA,CAAA;AAaL,MAAM,IAA8C;AAAA,EACvD,AAAC,UAA8B;AAAA,EAC/B,AAAC,UAA8B;AAAA,EAC/B,AAAC,UAA8B;AAAA,EAC/B,AAAC,UAA8B;AAAA,EAC/B,AAAC,SAA6B;AAAA,EAC9B,AAAC,SAA6B;AAAA,EAC9B,AAAC,SAA6B;AAAA,EAC9B,AAAC,OAA2B;AAAA,EAC5B,AAAC,MAA0B;AAAA,EAC3B,AAAC,GAA+B;AACpC;"}
|
|
@@ -4,8 +4,8 @@ import { useMemoizedId as H } from "../../hooks/useMemoizedId.es.js";
|
|
|
4
4
|
import { useFocusRing as a } from "@react-aria/focus";
|
|
5
5
|
import { FOCUS_STYLE as n } from "../../utilities/focusStyle.es.js";
|
|
6
6
|
import { merge as i } from "../../utilities/merge.es.js";
|
|
7
|
-
import { validationClassMap as J, Validation as
|
|
8
|
-
import t, { useRef as Q, useState as W, useEffect as
|
|
7
|
+
import { validationClassMap as J, Validation as C } from "../../utilities/validation.es.js";
|
|
8
|
+
import t, { useRef as Q, useState as W, useEffect as v } from "react";
|
|
9
9
|
import "../../foundation/Icon/Generated/IconAdobeCreativeCloud.es.js";
|
|
10
10
|
import "../../foundation/Icon/Generated/IconAdobeCreativeCloud12.es.js";
|
|
11
11
|
import "../../foundation/Icon/Generated/IconAdobeCreativeCloud16.es.js";
|
|
@@ -1644,48 +1644,50 @@ import "../../foundation/Icon/Generated/IconWorkflowShapes24.es.js";
|
|
|
1644
1644
|
import "../../foundation/Icon/Generated/IconWorkflowShapes32.es.js";
|
|
1645
1645
|
import "../../foundation/Icon/IconsMap.es.js";
|
|
1646
1646
|
var mt = /* @__PURE__ */ ((m) => (m.Text = "text", m.Password = "password", m.Number = "number", m))(mt || {});
|
|
1647
|
-
const
|
|
1647
|
+
const LV = ({
|
|
1648
1648
|
id: m,
|
|
1649
1649
|
type: s = "text",
|
|
1650
1650
|
decorator: f,
|
|
1651
|
-
validation: d =
|
|
1652
|
-
clearable:
|
|
1653
|
-
placeholder:
|
|
1654
|
-
required:
|
|
1651
|
+
validation: d = C.Default,
|
|
1652
|
+
clearable: F = !1,
|
|
1653
|
+
placeholder: I,
|
|
1654
|
+
required: N,
|
|
1655
1655
|
obfuscated: p,
|
|
1656
1656
|
disabled: o = !1,
|
|
1657
|
-
autocomplete:
|
|
1658
|
-
dotted:
|
|
1657
|
+
autocomplete: P = !1,
|
|
1658
|
+
dotted: V = !1,
|
|
1659
1659
|
value: w = "",
|
|
1660
|
-
copyable:
|
|
1660
|
+
copyable: B = !1,
|
|
1661
1661
|
onChange: c,
|
|
1662
1662
|
onEnterPressed: x,
|
|
1663
|
-
onBlur:
|
|
1663
|
+
onBlur: S,
|
|
1664
1664
|
onClear: k,
|
|
1665
|
-
size:
|
|
1665
|
+
size: j,
|
|
1666
1666
|
spellcheck: E,
|
|
1667
1667
|
readonly: u,
|
|
1668
|
-
focusOnMount:
|
|
1668
|
+
focusOnMount: g
|
|
1669
1669
|
}) => {
|
|
1670
|
-
const { isFocusVisible:
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1670
|
+
const { isFocusVisible: L, focusProps: O } = a({ within: !0, isTextInput: !0 }), { isFocusVisible: T, focusProps: z } = a(), { isFocusVisible: R, focusProps: D } = a(), { isFocusVisible: M, focusProps: $ } = a(), { copy: A, status: b } = G(), e = Q(null), [l, y] = W(typeof p == "boolean" ? p : s === "password");
|
|
1671
|
+
v(() => {
|
|
1672
|
+
setTimeout(() => {
|
|
1673
|
+
var r;
|
|
1674
|
+
g && ((r = e.current) == null || r.focus());
|
|
1675
|
+
}, 0);
|
|
1676
|
+
}, [g]), v(() => {
|
|
1677
|
+
typeof p == "boolean" && y(p);
|
|
1676
1678
|
}, [p]);
|
|
1677
1679
|
const K = (r) => {
|
|
1678
1680
|
r.key === "Enter" && x && x(r);
|
|
1679
1681
|
}, U = () => s === "password" ? l ? "password" : "text" : s, Y = typeof E == "boolean" ? { spellCheck: E } : null;
|
|
1680
1682
|
return /* @__PURE__ */ t.createElement("div", {
|
|
1681
|
-
...
|
|
1683
|
+
...O,
|
|
1682
1684
|
className: i([
|
|
1683
1685
|
"tw-flex tw-items-center tw-h-9 tw-gap-2 tw-px-3 tw-border hover:tw-border-black-90 tw-transition tw-rounded tw-text-s tw-font-sans tw-relative tw-bg-white dark:tw-bg-transparent",
|
|
1684
|
-
|
|
1686
|
+
V ? "tw-border-dashed" : "tw-border-solid",
|
|
1685
1687
|
o || u ? "tw-border-black-5 tw-bg-black-5 dark:tw-bg-black-90 dark:tw-border-black-90" : i([
|
|
1686
1688
|
"focus-within:tw-border-black-90",
|
|
1687
1689
|
J[d],
|
|
1688
|
-
|
|
1690
|
+
L && n
|
|
1689
1691
|
])
|
|
1690
1692
|
])
|
|
1691
1693
|
}, f && /* @__PURE__ */ t.createElement("div", {
|
|
@@ -1706,56 +1708,56 @@ const jV = ({
|
|
|
1706
1708
|
return (r = e.current) == null ? void 0 : r.focus();
|
|
1707
1709
|
},
|
|
1708
1710
|
onChange: (r) => c && c(r.currentTarget.value),
|
|
1709
|
-
onBlur:
|
|
1711
|
+
onBlur: S,
|
|
1710
1712
|
onKeyDown: K,
|
|
1711
|
-
placeholder:
|
|
1713
|
+
placeholder: I,
|
|
1712
1714
|
value: w,
|
|
1713
1715
|
type: U(),
|
|
1714
|
-
required:
|
|
1716
|
+
required: N,
|
|
1715
1717
|
readOnly: u,
|
|
1716
1718
|
disabled: o,
|
|
1717
|
-
autoComplete:
|
|
1718
|
-
size:
|
|
1719
|
+
autoComplete: P ? "on" : "off",
|
|
1720
|
+
size: j,
|
|
1719
1721
|
"data-test-id": "text-input",
|
|
1720
1722
|
...Y
|
|
1721
|
-
}), `${w}`.length > 0 &&
|
|
1723
|
+
}), `${w}`.length > 0 && F && /* @__PURE__ */ t.createElement("button", {
|
|
1722
1724
|
className: i([
|
|
1723
1725
|
"tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded",
|
|
1724
1726
|
o ? "tw-cursor-default tw-text-black-40" : "tw-text-black-60 hover:tw-text-black-100",
|
|
1725
|
-
|
|
1727
|
+
T && n
|
|
1726
1728
|
]),
|
|
1727
1729
|
onClick: () => {
|
|
1728
|
-
var r,
|
|
1729
|
-
(r = e.current) == null || r.focus(), (
|
|
1730
|
+
var r, h;
|
|
1731
|
+
(r = e.current) == null || r.focus(), (h = e.current) == null || h.setAttribute("value", ""), c && c(""), k && k();
|
|
1730
1732
|
},
|
|
1731
1733
|
"data-test-id": "clear-icon",
|
|
1732
1734
|
title: "Clear text input",
|
|
1733
1735
|
"aria-label": "clear text input",
|
|
1734
1736
|
disabled: o,
|
|
1735
1737
|
type: "button",
|
|
1736
|
-
...
|
|
1738
|
+
...z
|
|
1737
1739
|
}, /* @__PURE__ */ t.createElement(tt, null)), s === "password" && /* @__PURE__ */ t.createElement("button", {
|
|
1738
1740
|
className: i([
|
|
1739
1741
|
"tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded",
|
|
1740
1742
|
o ? "tw-cursor-default tw-text-black-40" : "tw-text-black-60 hover:tw-text-black-100",
|
|
1741
1743
|
R && n
|
|
1742
1744
|
]),
|
|
1743
|
-
onClick: () =>
|
|
1745
|
+
onClick: () => y(!l),
|
|
1744
1746
|
"data-test-id": "visibility-icon",
|
|
1745
1747
|
title: "Toggle text visibility",
|
|
1746
1748
|
type: "button",
|
|
1747
1749
|
"aria-label": `${l ? "unveil" : "obfuscate"} text input`,
|
|
1748
1750
|
disabled: o,
|
|
1749
|
-
...
|
|
1750
|
-
}, l ? /* @__PURE__ */ t.createElement(ot, null) : /* @__PURE__ */ t.createElement(it, null)), d ===
|
|
1751
|
+
...D
|
|
1752
|
+
}, l ? /* @__PURE__ */ t.createElement(ot, null) : /* @__PURE__ */ t.createElement(it, null)), d === C.Loading && /* @__PURE__ */ t.createElement("span", {
|
|
1751
1753
|
className: "tw-absolute tw-top-[-0.55rem] tw-right-[-0.55rem] tw-bg-white tw-rounded-full tw-p-[2px] tw-border tw-border-black-10"
|
|
1752
1754
|
}, /* @__PURE__ */ t.createElement(_, {
|
|
1753
1755
|
size: q.ExtraSmall
|
|
1754
|
-
})),
|
|
1756
|
+
})), B && /* @__PURE__ */ t.createElement("button", {
|
|
1755
1757
|
className: i([
|
|
1756
1758
|
"tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded",
|
|
1757
1759
|
o ? "tw-cursor-default tw-text-black-40" : "tw-text-black-60 hover:tw-text-black-100",
|
|
1758
|
-
|
|
1760
|
+
M && n
|
|
1759
1761
|
]),
|
|
1760
1762
|
onClick: () => A(w),
|
|
1761
1763
|
"data-test-id": "copy-icon",
|
|
@@ -1770,7 +1772,7 @@ const jV = ({
|
|
|
1770
1772
|
}, /* @__PURE__ */ t.createElement(X, null))));
|
|
1771
1773
|
};
|
|
1772
1774
|
export {
|
|
1773
|
-
|
|
1775
|
+
LV as TextInput,
|
|
1774
1776
|
mt as TextInputType
|
|
1775
1777
|
};
|
|
1776
1778
|
//# sourceMappingURL=TextInput.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.es.js","sources":["../../../src/components/TextInput/TextInput.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { LoadingCircle, LoadingCircleSize } from '@components/LoadingCircle';\nimport { useCopy } from '@hooks/useCopy';\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { useFocusRing } from '@react-aria/focus';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { Validation, validationClassMap } from '@utilities/validation';\nimport React, { FC, FocusEvent, KeyboardEvent, ReactNode, useEffect, useRef, useState } from 'react';\nimport { IconCheckMark, IconClipboard, IconCross, IconCrossCircle, IconEye, IconEyeOff } from '@foundation/Icon';\n\nexport enum TextInputType {\n Text = 'text',\n Password = 'password',\n Number = 'number',\n}\n\nexport type TextInputBaseProps = {\n id?: string;\n type?: TextInputType;\n decorator?: ReactNode;\n dotted?: boolean;\n clearable?: boolean;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n autocomplete?: boolean;\n readonly?: boolean;\n validation?: Validation;\n copyable?: boolean;\n value?: string;\n onChange?: (value: string) => void;\n onEnterPressed?: (event: KeyboardEvent<HTMLInputElement>) => void;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n onClear?: () => void;\n size?: number;\n spellcheck?: boolean;\n focusOnMount?: boolean;\n};\n\nexport type TextInputProps =\n | ({\n type?: TextInputType.Text;\n obfuscated?: false;\n } & TextInputBaseProps)\n | ({\n type?: TextInputType.Number;\n obfuscated?: false;\n min?: number;\n max?: number;\n } & TextInputBaseProps)\n | ({\n type: TextInputType.Password;\n obfuscated?: boolean;\n } & TextInputBaseProps);\n\nexport const TextInput: FC<TextInputProps> = ({\n id: propId,\n type = TextInputType.Text,\n decorator,\n validation = Validation.Default,\n clearable = false,\n placeholder,\n required,\n obfuscated,\n disabled = false,\n autocomplete = false,\n dotted = false,\n value = '',\n copyable = false,\n onChange,\n onEnterPressed,\n onBlur,\n onClear,\n size,\n spellcheck,\n readonly,\n focusOnMount,\n}) => {\n const { isFocusVisible, focusProps } = useFocusRing({ within: true, isTextInput: true });\n const { isFocusVisible: clearButtonIsFocusVisible, focusProps: clearButtonFocusProps } = useFocusRing();\n const { isFocusVisible: passwordButtonIsFocusVisible, focusProps: passwordButtonFocusProps } = useFocusRing();\n const { isFocusVisible: copyButtonIsFocusVisible, focusProps: copyButtonFocusProps } = useFocusRing();\n\n const { copy, status } = useCopy();\n\n const inputElement = useRef<HTMLInputElement | null>(null);\n const [isObfuscated, setIsObfuscated] = useState(\n typeof obfuscated === 'boolean' ? obfuscated : type === TextInputType.Password,\n );\n\n useEffect(() => {\n focusOnMount && inputElement.current?.focus();\n }, []);\n\n useEffect(() => {\n if (typeof obfuscated === 'boolean') {\n setIsObfuscated(obfuscated);\n }\n }, [obfuscated]);\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n onEnterPressed && onEnterPressed(event);\n }\n };\n\n const getInputType = () => {\n if (type === TextInputType.Password) {\n return isObfuscated ? TextInputType.Password : TextInputType.Text;\n }\n return type;\n };\n\n const spellcheckProp = typeof spellcheck === 'boolean' ? { spellCheck: spellcheck } : null;\n\n return (\n <div\n {...focusProps}\n className={merge([\n 'tw-flex tw-items-center tw-h-9 tw-gap-2 tw-px-3 tw-border hover:tw-border-black-90 tw-transition tw-rounded tw-text-s tw-font-sans tw-relative tw-bg-white dark:tw-bg-transparent',\n dotted ? 'tw-border-dashed' : 'tw-border-solid',\n disabled || readonly\n ? 'tw-border-black-5 tw-bg-black-5 dark:tw-bg-black-90 dark:tw-border-black-90'\n : merge([\n 'focus-within:tw-border-black-90',\n validationClassMap[validation],\n isFocusVisible && FOCUS_STYLE,\n ]),\n ])}\n >\n {decorator && (\n <div\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-pl-1',\n disabled ? 'tw-text-black-60' : 'tw-text-black-80',\n ])}\n data-test-id=\"decorator\"\n >\n {decorator}\n </div>\n )}\n <input\n id={useMemoizedId(propId)}\n ref={inputElement}\n className={merge([\n 'tw-w-full tw-grow tw-border-none tw-outline-none tw-bg-transparent tw-hide-input-arrows',\n disabled || readonly\n ? 'tw-text-black-40 tw-placeholder-black-30 dark:tw-text-black-30 dark:tw-placeholder-black-40'\n : 'tw-text-black tw-placeholder-black-60 dark:tw-text-white',\n ])}\n onClick={() => inputElement.current?.focus()}\n onChange={(event) => onChange && onChange(event.currentTarget.value)}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n value={value}\n type={getInputType()}\n required={required}\n readOnly={readonly}\n disabled={disabled}\n autoComplete={autocomplete ? 'on' : 'off'}\n size={size}\n data-test-id=\"text-input\"\n {...spellcheckProp}\n />\n {`${value}`.length > 0 && clearable && (\n <button\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded',\n disabled ? 'tw-cursor-default tw-text-black-40' : 'tw-text-black-60 hover:tw-text-black-100',\n clearButtonIsFocusVisible && FOCUS_STYLE,\n ])}\n onClick={() => {\n inputElement.current?.focus();\n inputElement.current?.setAttribute('value', '');\n\n onChange && onChange('');\n onClear && onClear();\n }}\n data-test-id=\"clear-icon\"\n title=\"Clear text input\"\n aria-label=\"clear text input\"\n disabled={disabled}\n type=\"button\"\n {...clearButtonFocusProps}\n >\n <IconCross />\n </button>\n )}\n {type === TextInputType.Password && (\n <button\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded',\n disabled ? 'tw-cursor-default tw-text-black-40' : 'tw-text-black-60 hover:tw-text-black-100',\n passwordButtonIsFocusVisible && FOCUS_STYLE,\n ])}\n onClick={() => setIsObfuscated(!isObfuscated)}\n data-test-id=\"visibility-icon\"\n title=\"Toggle text visibility\"\n type=\"button\"\n aria-label={`${isObfuscated ? 'unveil' : 'obfuscate'} text input`}\n disabled={disabled}\n {...passwordButtonFocusProps}\n >\n {isObfuscated ? <IconEye /> : <IconEyeOff />}\n </button>\n )}\n {validation === Validation.Loading && (\n <span className=\"tw-absolute tw-top-[-0.55rem] tw-right-[-0.55rem] tw-bg-white tw-rounded-full tw-p-[2px] tw-border tw-border-black-10\">\n <LoadingCircle size={LoadingCircleSize.ExtraSmall} />\n </span>\n )}\n {copyable && (\n <button\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded',\n disabled ? 'tw-cursor-default tw-text-black-40' : 'tw-text-black-60 hover:tw-text-black-100',\n copyButtonIsFocusVisible && FOCUS_STYLE,\n ])}\n onClick={() => copy(value)}\n data-test-id=\"copy-icon\"\n title=\"Copy input text\"\n disabled={disabled}\n type=\"button\"\n {...copyButtonFocusProps}\n >\n {status === 'error' && (\n <span className=\"tw-text-box-negative-strong\">\n <IconCrossCircle />\n </span>\n )}\n {status === 'idle' && <IconClipboard />}\n {status === 'success' && (\n <span className=\"tw-text-box-positive-strong\">\n <IconCheckMark />\n </span>\n )}\n </button>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"TextInput.es.js","sources":["../../../src/components/TextInput/TextInput.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { LoadingCircle, LoadingCircleSize } from '@components/LoadingCircle';\nimport { useCopy } from '@hooks/useCopy';\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { useFocusRing } from '@react-aria/focus';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { Validation, validationClassMap } from '@utilities/validation';\nimport React, { FC, FocusEvent, KeyboardEvent, ReactNode, useEffect, useRef, useState } from 'react';\nimport { IconCheckMark, IconClipboard, IconCross, IconCrossCircle, IconEye, IconEyeOff } from '@foundation/Icon';\n\nexport enum TextInputType {\n Text = 'text',\n Password = 'password',\n Number = 'number',\n}\n\nexport type TextInputBaseProps = {\n id?: string;\n type?: TextInputType;\n decorator?: ReactNode;\n dotted?: boolean;\n clearable?: boolean;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n autocomplete?: boolean;\n readonly?: boolean;\n validation?: Validation;\n copyable?: boolean;\n value?: string;\n onChange?: (value: string) => void;\n onEnterPressed?: (event: KeyboardEvent<HTMLInputElement>) => void;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n onClear?: () => void;\n size?: number;\n spellcheck?: boolean;\n focusOnMount?: boolean;\n};\n\nexport type TextInputProps =\n | ({\n type?: TextInputType.Text;\n obfuscated?: false;\n } & TextInputBaseProps)\n | ({\n type?: TextInputType.Number;\n obfuscated?: false;\n min?: number;\n max?: number;\n } & TextInputBaseProps)\n | ({\n type: TextInputType.Password;\n obfuscated?: boolean;\n } & TextInputBaseProps);\n\nexport const TextInput: FC<TextInputProps> = ({\n id: propId,\n type = TextInputType.Text,\n decorator,\n validation = Validation.Default,\n clearable = false,\n placeholder,\n required,\n obfuscated,\n disabled = false,\n autocomplete = false,\n dotted = false,\n value = '',\n copyable = false,\n onChange,\n onEnterPressed,\n onBlur,\n onClear,\n size,\n spellcheck,\n readonly,\n focusOnMount,\n}) => {\n const { isFocusVisible, focusProps } = useFocusRing({ within: true, isTextInput: true });\n const { isFocusVisible: clearButtonIsFocusVisible, focusProps: clearButtonFocusProps } = useFocusRing();\n const { isFocusVisible: passwordButtonIsFocusVisible, focusProps: passwordButtonFocusProps } = useFocusRing();\n const { isFocusVisible: copyButtonIsFocusVisible, focusProps: copyButtonFocusProps } = useFocusRing();\n\n const { copy, status } = useCopy();\n\n const inputElement = useRef<HTMLInputElement | null>(null);\n const [isObfuscated, setIsObfuscated] = useState(\n typeof obfuscated === 'boolean' ? obfuscated : type === TextInputType.Password,\n );\n\n useEffect(() => {\n setTimeout(() => {\n focusOnMount && inputElement.current?.focus();\n }, 0);\n }, [focusOnMount]);\n\n useEffect(() => {\n if (typeof obfuscated === 'boolean') {\n setIsObfuscated(obfuscated);\n }\n }, [obfuscated]);\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n onEnterPressed && onEnterPressed(event);\n }\n };\n\n const getInputType = () => {\n if (type === TextInputType.Password) {\n return isObfuscated ? TextInputType.Password : TextInputType.Text;\n }\n return type;\n };\n\n const spellcheckProp = typeof spellcheck === 'boolean' ? { spellCheck: spellcheck } : null;\n\n return (\n <div\n {...focusProps}\n className={merge([\n 'tw-flex tw-items-center tw-h-9 tw-gap-2 tw-px-3 tw-border hover:tw-border-black-90 tw-transition tw-rounded tw-text-s tw-font-sans tw-relative tw-bg-white dark:tw-bg-transparent',\n dotted ? 'tw-border-dashed' : 'tw-border-solid',\n disabled || readonly\n ? 'tw-border-black-5 tw-bg-black-5 dark:tw-bg-black-90 dark:tw-border-black-90'\n : merge([\n 'focus-within:tw-border-black-90',\n validationClassMap[validation],\n isFocusVisible && FOCUS_STYLE,\n ]),\n ])}\n >\n {decorator && (\n <div\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-pl-1',\n disabled ? 'tw-text-black-60' : 'tw-text-black-80',\n ])}\n data-test-id=\"decorator\"\n >\n {decorator}\n </div>\n )}\n <input\n id={useMemoizedId(propId)}\n ref={inputElement}\n className={merge([\n 'tw-w-full tw-grow tw-border-none tw-outline-none tw-bg-transparent tw-hide-input-arrows',\n disabled || readonly\n ? 'tw-text-black-40 tw-placeholder-black-30 dark:tw-text-black-30 dark:tw-placeholder-black-40'\n : 'tw-text-black tw-placeholder-black-60 dark:tw-text-white',\n ])}\n onClick={() => inputElement.current?.focus()}\n onChange={(event) => onChange && onChange(event.currentTarget.value)}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n value={value}\n type={getInputType()}\n required={required}\n readOnly={readonly}\n disabled={disabled}\n autoComplete={autocomplete ? 'on' : 'off'}\n size={size}\n data-test-id=\"text-input\"\n {...spellcheckProp}\n />\n {`${value}`.length > 0 && clearable && (\n <button\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded',\n disabled ? 'tw-cursor-default tw-text-black-40' : 'tw-text-black-60 hover:tw-text-black-100',\n clearButtonIsFocusVisible && FOCUS_STYLE,\n ])}\n onClick={() => {\n inputElement.current?.focus();\n inputElement.current?.setAttribute('value', '');\n\n onChange && onChange('');\n onClear && onClear();\n }}\n data-test-id=\"clear-icon\"\n title=\"Clear text input\"\n aria-label=\"clear text input\"\n disabled={disabled}\n type=\"button\"\n {...clearButtonFocusProps}\n >\n <IconCross />\n </button>\n )}\n {type === TextInputType.Password && (\n <button\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded',\n disabled ? 'tw-cursor-default tw-text-black-40' : 'tw-text-black-60 hover:tw-text-black-100',\n passwordButtonIsFocusVisible && FOCUS_STYLE,\n ])}\n onClick={() => setIsObfuscated(!isObfuscated)}\n data-test-id=\"visibility-icon\"\n title=\"Toggle text visibility\"\n type=\"button\"\n aria-label={`${isObfuscated ? 'unveil' : 'obfuscate'} text input`}\n disabled={disabled}\n {...passwordButtonFocusProps}\n >\n {isObfuscated ? <IconEye /> : <IconEyeOff />}\n </button>\n )}\n {validation === Validation.Loading && (\n <span className=\"tw-absolute tw-top-[-0.55rem] tw-right-[-0.55rem] tw-bg-white tw-rounded-full tw-p-[2px] tw-border tw-border-black-10\">\n <LoadingCircle size={LoadingCircleSize.ExtraSmall} />\n </span>\n )}\n {copyable && (\n <button\n className={merge([\n 'tw-flex tw-items-center tw-justify-center tw-transition-colors tw-rounded',\n disabled ? 'tw-cursor-default tw-text-black-40' : 'tw-text-black-60 hover:tw-text-black-100',\n copyButtonIsFocusVisible && FOCUS_STYLE,\n ])}\n onClick={() => copy(value)}\n data-test-id=\"copy-icon\"\n title=\"Copy input text\"\n disabled={disabled}\n type=\"button\"\n {...copyButtonFocusProps}\n >\n {status === 'error' && (\n <span className=\"tw-text-box-negative-strong\">\n <IconCrossCircle />\n </span>\n )}\n {status === 'idle' && <IconClipboard />}\n {status === 'success' && (\n <span className=\"tw-text-box-positive-strong\">\n <IconCheckMark />\n </span>\n )}\n </button>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|