@lobehub/ui 5.34.3 → 5.36.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/es/ActionIconGroup/ActionIconGroup.mjs +1 -1
- package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
- package/es/ActionIconGroup/type.d.mts +2 -2
- package/es/Alert/Alert.mjs +1 -1
- package/es/Alert/Alert.mjs.map +1 -1
- package/es/Burger/Burger.mjs +1 -1
- package/es/Burger/Burger.mjs.map +1 -1
- package/es/Burger/type.d.mts +2 -2
- package/es/CodeDiff/DiffPanel.mjs +1 -1
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/CopyButton/CopyButton.mjs +1 -1
- package/es/CopyButton/CopyButton.mjs.map +1 -1
- package/es/CopyButton/type.d.mts +2 -2
- package/es/DownloadButton/DownloadButton.mjs +1 -1
- package/es/DownloadButton/DownloadButton.mjs.map +1 -1
- package/es/DownloadButton/type.d.mts +2 -2
- package/es/DraggablePanel/components/DraggablePanelHeader.mjs +1 -1
- package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
- package/es/Drawer/Drawer.mjs +1 -1
- package/es/Drawer/Drawer.mjs.map +1 -1
- package/es/Drawer/type.d.mts +2 -2
- package/es/EditableText/ControlInput.d.mts +2 -2
- package/es/EditableText/ControlInput.mjs +1 -1
- package/es/EditableText/ControlInput.mjs.map +1 -1
- package/es/EditableText/EditableText.mjs +1 -1
- package/es/EditableText/EditableText.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
- package/es/GuideCard/GuideCard.mjs +1 -1
- package/es/GuideCard/GuideCard.mjs.map +1 -1
- package/es/GuideCard/type.d.mts +2 -2
- package/es/Highlighter/FullFeatured.mjs +1 -1
- package/es/Highlighter/FullFeatured.mjs.map +1 -1
- package/es/Highlighter/type.d.mts +2 -2
- package/es/HotkeyInput/HotkeyInput.mjs +1 -1
- package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
- package/es/HtmlPreview/HtmlPreview.mjs +1 -1
- package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
- package/es/HtmlPreview/type.d.mts +2 -2
- package/es/Image/type.d.mts +1 -0
- package/es/Image/viewer/GalleryNav.mjs +1 -1
- package/es/Image/viewer/GalleryNav.mjs.map +1 -1
- package/es/Image/viewer/ImageViewer.mjs +75 -70
- package/es/Image/viewer/ImageViewer.mjs.map +1 -1
- package/es/Image/viewer/Toolbar.mjs +19 -7
- package/es/Image/viewer/Toolbar.mjs.map +1 -1
- package/es/Image/viewer/ViewerChrome.mjs +1 -1
- package/es/Image/viewer/ViewerChrome.mjs.map +1 -1
- package/es/Mermaid/FullFeatured.mjs +1 -1
- package/es/Mermaid/FullFeatured.mjs.map +1 -1
- package/es/Mermaid/type.d.mts +2 -2
- package/es/Modal/Modal.mjs +1 -1
- package/es/Modal/Modal.mjs.map +1 -1
- package/es/SortableList/components/DragHandle.d.mts +2 -2
- package/es/SortableList/components/DragHandle.mjs +1 -1
- package/es/SortableList/components/DragHandle.mjs.map +1 -1
- package/es/Tabs/Tabs.mjs +1 -1
- package/es/Tabs/Tabs.mjs.map +1 -1
- package/es/ThemeSwitch/ThemeSwitch.mjs +1 -1
- package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
- package/es/ThemeSwitch/type.d.mts +2 -2
- package/es/Toc/TocMobile.mjs +1 -1
- package/es/Toc/TocMobile.mjs.map +1 -1
- package/es/Video/index.mjs +1 -1
- package/es/Video/index.mjs.map +1 -1
- package/es/base-ui/Button/SplitButton.mjs +1 -1
- package/es/base-ui/Form/components/FormSubmitFooter.mjs +1 -1
- package/es/base-ui/Input/style.d.mts +2 -2
- package/es/base-ui/Modal/imperative.mjs +1 -1
- package/es/base-ui/Tag/Tag.mjs +1 -1
- package/es/base-ui/Tag/Tag.mjs.map +1 -1
- package/es/base-ui/Tag/style.mjs +8 -3
- package/es/base-ui/Tag/style.mjs.map +1 -1
- package/es/base-ui/Text/Text.d.mts +6 -2
- package/es/base-ui/Text/Text.mjs +5 -2
- package/es/base-ui/Text/Text.mjs.map +1 -1
- package/es/base-ui/Text/style.d.mts +2 -0
- package/es/base-ui/Text/style.mjs +76 -1
- package/es/base-ui/Text/style.mjs.map +1 -1
- package/es/base-ui/Text/type.d.mts +9 -2
- package/es/base-ui/index.d.mts +4 -4
- package/es/base-ui/index.mjs +6 -6
- package/es/chat/ChatHeader/ChatHeader.mjs +1 -1
- package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
- package/es/chat/TokenTag/TokenTag.mjs +1 -1
- package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
- package/es/chat/TokenTag/type.d.mts +2 -2
- package/es/mobile/ChatHeader/ChatHeader.mjs +1 -1
- package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,24 @@
|
|
|
1
|
-
import { createStaticStyles } from "antd-style";
|
|
1
|
+
import { createStaticStyles, keyframes } from "antd-style";
|
|
2
2
|
import { cva } from "class-variance-authority";
|
|
3
3
|
//#region src/base-ui/Text/style.ts
|
|
4
|
+
const shine = keyframes`
|
|
5
|
+
0% {
|
|
6
|
+
background-position: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
100% {
|
|
10
|
+
background-position: -100%;
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
const sweep = keyframes`
|
|
14
|
+
0% {
|
|
15
|
+
translate: -100% 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
100% {
|
|
19
|
+
translate: 100% 0;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
4
22
|
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
5
23
|
code: css`
|
|
6
24
|
font-family: ${cssVar.fontFamilyCode};
|
|
@@ -66,6 +84,62 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
66
84
|
`,
|
|
67
85
|
secondary: css`
|
|
68
86
|
color: ${cssVar.colorTextDescription};
|
|
87
|
+
`,
|
|
88
|
+
shiny: css`
|
|
89
|
+
--shiny-duration: 1.5s;
|
|
90
|
+
|
|
91
|
+
color: color-mix(in srgb, ${cssVar.colorText} 45%, transparent);
|
|
92
|
+
|
|
93
|
+
background: linear-gradient(
|
|
94
|
+
120deg,
|
|
95
|
+
transparent 40%,
|
|
96
|
+
${cssVar.colorTextSecondary} 50%,
|
|
97
|
+
transparent 60%
|
|
98
|
+
);
|
|
99
|
+
background-clip: text;
|
|
100
|
+
background-size: 200% 100%;
|
|
101
|
+
|
|
102
|
+
animation: ${shine} var(--shiny-duration) linear infinite;
|
|
103
|
+
|
|
104
|
+
/* Animating background-position repaints every glyph each frame. Where
|
|
105
|
+
* mask-clip: text is supported, clip a transform-animated overlay to the
|
|
106
|
+
* glyphs instead so the sweep stays on the compositor. */
|
|
107
|
+
@supports (-webkit-mask-clip: text) {
|
|
108
|
+
position: relative;
|
|
109
|
+
|
|
110
|
+
background: none;
|
|
111
|
+
|
|
112
|
+
animation: none;
|
|
113
|
+
|
|
114
|
+
mask-clip: text;
|
|
115
|
+
mask-image: linear-gradient(#fff, #fff);
|
|
116
|
+
|
|
117
|
+
&::after {
|
|
118
|
+
pointer-events: none;
|
|
119
|
+
will-change: transform;
|
|
120
|
+
content: '';
|
|
121
|
+
|
|
122
|
+
position: absolute;
|
|
123
|
+
inset: 0;
|
|
124
|
+
|
|
125
|
+
background: linear-gradient(
|
|
126
|
+
90deg,
|
|
127
|
+
transparent 40%,
|
|
128
|
+
${cssVar.colorTextSecondary} 50%,
|
|
129
|
+
transparent 60%
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
animation: ${sweep} var(--shiny-duration) linear infinite;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@media (prefers-reduced-motion: reduce) {
|
|
137
|
+
animation: none;
|
|
138
|
+
|
|
139
|
+
&::after {
|
|
140
|
+
display: none;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
69
143
|
`,
|
|
70
144
|
strong: css`
|
|
71
145
|
font-weight: bold;
|
|
@@ -103,6 +177,7 @@ const variants = cva(styles.text, {
|
|
|
103
177
|
},
|
|
104
178
|
italic: { true: styles.italic },
|
|
105
179
|
mark: { true: styles.mark },
|
|
180
|
+
shiny: { true: styles.shiny },
|
|
106
181
|
strong: { true: styles.strong },
|
|
107
182
|
type: {
|
|
108
183
|
danger: styles.danger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Text/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n code: css`\n font-family: ${cssVar.fontFamilyCode};\n `,\n danger: css`\n color: ${cssVar.colorError};\n `,\n delete: css`\n text-decoration: line-through;\n `,\n disabled: css`\n cursor: not-allowed;\n color: ${cssVar.colorTextDisabled};\n `,\n ellipsis: css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n ellipsisMulti: css`\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n `,\n h1: css`\n font-size: calc(${cssVar.fontSize} * 2.5);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h2: css`\n font-size: calc(${cssVar.fontSize} * 2);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h3: css`\n font-size: calc(${cssVar.fontSize} * 1.5);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h4: css`\n font-size: calc(${cssVar.fontSize} * 1.25);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h5: css`\n font-size: ${cssVar.fontSize};\n font-weight: bold;\n line-height: 1.25;\n `,\n info: css`\n color: ${cssVar.colorInfo};\n `,\n\n italic: css`\n font-style: italic;\n `,\n\n mark: css`\n color: #000;\n background-color: ${cssVar.yellow};\n `,\n\n p: css`\n margin-block: 0;\n `,\n\n secondary: css`\n color: ${cssVar.colorTextDescription};\n `,\n\n strong: css`\n font-weight: bold;\n `,\n success: css`\n color: ${cssVar.colorSuccess};\n `,\n text: css`\n color: ${cssVar.colorText};\n `,\n underline: css`\n text-decoration: underline;\n `,\n warning: css`\n color: ${cssVar.colorWarning};\n `,\n}));\n\nexport const variants = cva(styles.text, {\n defaultVariants: {},\n variants: {\n as: {\n h1: styles.h1,\n h2: styles.h2,\n h3: styles.h3,\n h4: styles.h4,\n h5: styles.h5,\n p: styles.p,\n },\n code: {\n true: styles.code,\n },\n delete: {\n true: styles.delete,\n },\n disabled: {\n true: styles.disabled,\n },\n ellipsis: {\n multi: styles.ellipsisMulti,\n true: styles.ellipsis,\n },\n italic: {\n true: styles.italic,\n },\n mark: {\n true: styles.mark,\n },\n strong: {\n true: styles.strong,\n },\n type: {\n danger: styles.danger,\n info: styles.info,\n secondary: styles.secondary,\n success: styles.success,\n warning: styles.warning,\n },\n underline: {\n true: styles.underline,\n },\n },\n});\n"],"mappings":";;;AAGA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;mBACQ,OAAO,eAAe;;CAEvC,QAAQ,GAAG;aACA,OAAO,WAAW;;CAE7B,QAAQ,GAAG;;;CAGX,UAAU,GAAG;;aAEF,OAAO,kBAAkB;;CAEpC,UAAU,GAAG;;;;;CAKb,eAAe,GAAG;;;;;;CAMlB,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;iBACQ,OAAO,SAAS;;;;CAI/B,MAAM,GAAG;aACE,OAAO,UAAU;;CAG5B,QAAQ,GAAG;;;CAIX,MAAM,GAAG;;wBAEa,OAAO,OAAO;;CAGpC,GAAG,GAAG;;;CAIN,WAAW,GAAG;aACH,OAAO,qBAAqB;;CAGvC,QAAQ,GAAG;;;CAGX,SAAS,GAAG;aACD,OAAO,aAAa;;CAE/B,MAAM,GAAG;aACE,OAAO,UAAU;;CAE5B,WAAW,GAAG;;;CAGd,SAAS,GAAG;aACD,OAAO,aAAa;;AAEjC,EAAE;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB,CAAC;CAClB,UAAU;EACR,IAAI;GACF,IAAI,OAAO;GACX,IAAI,OAAO;GACX,IAAI,OAAO;GACX,IAAI,OAAO;GACX,IAAI,OAAO;GACX,GAAG,OAAO;EACZ;EACA,MAAM,EACJ,MAAM,OAAO,KACf;EACA,QAAQ,EACN,MAAM,OAAO,OACf;EACA,UAAU,EACR,MAAM,OAAO,SACf;EACA,UAAU;GACR,OAAO,OAAO;GACd,MAAM,OAAO;EACf;EACA,QAAQ,EACN,MAAM,OAAO,OACf;EACA,MAAM,EACJ,MAAM,OAAO,KACf;EACA,QAAQ,EACN,MAAM,OAAO,OACf;EACA,MAAM;GACJ,QAAQ,OAAO;GACf,MAAM,OAAO;GACb,WAAW,OAAO;GAClB,SAAS,OAAO;GAChB,SAAS,OAAO;EAClB;EACA,WAAW,EACT,MAAM,OAAO,UACf;CACF;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Text/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst shine = keyframes`\n 0% {\n background-position: 100%;\n }\n\n 100% {\n background-position: -100%;\n }\n`;\n\nconst sweep = keyframes`\n 0% {\n translate: -100% 0;\n }\n\n 100% {\n translate: 100% 0;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n code: css`\n font-family: ${cssVar.fontFamilyCode};\n `,\n danger: css`\n color: ${cssVar.colorError};\n `,\n delete: css`\n text-decoration: line-through;\n `,\n disabled: css`\n cursor: not-allowed;\n color: ${cssVar.colorTextDisabled};\n `,\n ellipsis: css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n ellipsisMulti: css`\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n `,\n h1: css`\n font-size: calc(${cssVar.fontSize} * 2.5);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h2: css`\n font-size: calc(${cssVar.fontSize} * 2);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h3: css`\n font-size: calc(${cssVar.fontSize} * 1.5);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h4: css`\n font-size: calc(${cssVar.fontSize} * 1.25);\n font-weight: bold;\n line-height: 1.25;\n `,\n\n h5: css`\n font-size: ${cssVar.fontSize};\n font-weight: bold;\n line-height: 1.25;\n `,\n info: css`\n color: ${cssVar.colorInfo};\n `,\n\n italic: css`\n font-style: italic;\n `,\n\n mark: css`\n color: #000;\n background-color: ${cssVar.yellow};\n `,\n\n p: css`\n margin-block: 0;\n `,\n\n secondary: css`\n color: ${cssVar.colorTextDescription};\n `,\n\n shiny: css`\n --shiny-duration: 1.5s;\n\n color: color-mix(in srgb, ${cssVar.colorText} 45%, transparent);\n\n background: linear-gradient(\n 120deg,\n transparent 40%,\n ${cssVar.colorTextSecondary} 50%,\n transparent 60%\n );\n background-clip: text;\n background-size: 200% 100%;\n\n animation: ${shine} var(--shiny-duration) linear infinite;\n\n /* Animating background-position repaints every glyph each frame. Where\n * mask-clip: text is supported, clip a transform-animated overlay to the\n * glyphs instead so the sweep stays on the compositor. */\n @supports (-webkit-mask-clip: text) {\n position: relative;\n\n background: none;\n\n animation: none;\n\n mask-clip: text;\n mask-image: linear-gradient(#fff, #fff);\n\n &::after {\n pointer-events: none;\n will-change: transform;\n content: '';\n\n position: absolute;\n inset: 0;\n\n background: linear-gradient(\n 90deg,\n transparent 40%,\n ${cssVar.colorTextSecondary} 50%,\n transparent 60%\n );\n\n animation: ${sweep} var(--shiny-duration) linear infinite;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n\n &::after {\n display: none;\n }\n }\n `,\n\n strong: css`\n font-weight: bold;\n `,\n success: css`\n color: ${cssVar.colorSuccess};\n `,\n text: css`\n color: ${cssVar.colorText};\n `,\n underline: css`\n text-decoration: underline;\n `,\n warning: css`\n color: ${cssVar.colorWarning};\n `,\n}));\n\nexport const variants = cva(styles.text, {\n defaultVariants: {},\n variants: {\n as: {\n h1: styles.h1,\n h2: styles.h2,\n h3: styles.h3,\n h4: styles.h4,\n h5: styles.h5,\n p: styles.p,\n },\n code: {\n true: styles.code,\n },\n delete: {\n true: styles.delete,\n },\n disabled: {\n true: styles.disabled,\n },\n ellipsis: {\n multi: styles.ellipsisMulti,\n true: styles.ellipsis,\n },\n italic: {\n true: styles.italic,\n },\n mark: {\n true: styles.mark,\n },\n shiny: {\n true: styles.shiny,\n },\n strong: {\n true: styles.strong,\n },\n type: {\n danger: styles.danger,\n info: styles.info,\n secondary: styles.secondary,\n success: styles.success,\n warning: styles.warning,\n },\n underline: {\n true: styles.underline,\n },\n },\n});\n"],"mappings":";;;AAGA,MAAM,QAAQ,SAAS;;;;;;;;;AAUvB,MAAM,QAAQ,SAAS;;;;;;;;;AAUvB,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;mBACQ,OAAO,eAAe;;CAEvC,QAAQ,GAAG;aACA,OAAO,WAAW;;CAE7B,QAAQ,GAAG;;;CAGX,UAAU,GAAG;;aAEF,OAAO,kBAAkB;;CAEpC,UAAU,GAAG;;;;;CAKb,eAAe,GAAG;;;;;;CAMlB,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;sBACa,OAAO,SAAS;;;;CAKpC,IAAI,GAAG;iBACQ,OAAO,SAAS;;;;CAI/B,MAAM,GAAG;aACE,OAAO,UAAU;;CAG5B,QAAQ,GAAG;;;CAIX,MAAM,GAAG;;wBAEa,OAAO,OAAO;;CAGpC,GAAG,GAAG;;;CAIN,WAAW,GAAG;aACH,OAAO,qBAAqB;;CAGvC,OAAO,GAAG;;;gCAGoB,OAAO,UAAU;;;;;QAKzC,OAAO,mBAAmB;;;;;;iBAMjB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;YA0BX,OAAO,mBAAmB;;;;qBAIjB,MAAM;;;;;;;;;;;;CAazB,QAAQ,GAAG;;;CAGX,SAAS,GAAG;aACD,OAAO,aAAa;;CAE/B,MAAM,GAAG;aACE,OAAO,UAAU;;CAE5B,WAAW,GAAG;;;CAGd,SAAS,GAAG;aACD,OAAO,aAAa;;AAEjC,EAAE;AAEF,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB,CAAC;CAClB,UAAU;EACR,IAAI;GACF,IAAI,OAAO;GACX,IAAI,OAAO;GACX,IAAI,OAAO;GACX,IAAI,OAAO;GACX,IAAI,OAAO;GACX,GAAG,OAAO;EACZ;EACA,MAAM,EACJ,MAAM,OAAO,KACf;EACA,QAAQ,EACN,MAAM,OAAO,OACf;EACA,UAAU,EACR,MAAM,OAAO,SACf;EACA,UAAU;GACR,OAAO,OAAO;GACd,MAAM,OAAO;EACf;EACA,QAAQ,EACN,MAAM,OAAO,OACf;EACA,MAAM,EACJ,MAAM,OAAO,KACf;EACA,OAAO,EACL,MAAM,OAAO,MACf;EACA,QAAQ,EACN,MAAM,OAAO,OACf;EACA,MAAM;GACJ,QAAQ,OAAO;GACf,MAAM,OAAO;GACb,WAAW,OAAO;GAClB,SAAS,OAAO;GAChB,SAAS,OAAO;EAClB;EACA,WAAW,EACT,MAAM,OAAO,UACf;CACF;AACF,CAAC"}
|
|
@@ -8,7 +8,7 @@ interface TextClassNames {
|
|
|
8
8
|
interface TextStyles {
|
|
9
9
|
root?: CSSProperties;
|
|
10
10
|
}
|
|
11
|
-
interface
|
|
11
|
+
interface TextBaseProps extends HTMLAttributes<HTMLDivElement> {
|
|
12
12
|
align?: 'left' | 'center' | 'right';
|
|
13
13
|
as?: ElementType;
|
|
14
14
|
classNames?: TextClassNames;
|
|
@@ -38,6 +38,13 @@ interface TextProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
38
38
|
whiteSpace?: CSSProperties['whiteSpace'];
|
|
39
39
|
wordBreak?: CSSProperties['wordBreak'];
|
|
40
40
|
}
|
|
41
|
+
type TextProps<Shiny extends boolean = boolean> = TextBaseProps & (Shiny extends true ? {
|
|
42
|
+
shiny: true;
|
|
43
|
+
shinyDuration?: CSSProperties['animationDuration'];
|
|
44
|
+
} : {
|
|
45
|
+
shiny?: false;
|
|
46
|
+
shinyDuration?: never;
|
|
47
|
+
});
|
|
41
48
|
//#endregion
|
|
42
|
-
export { TextClassNames, TextProps, TextStyles };
|
|
49
|
+
export { TextBaseProps, TextClassNames, TextProps, TextStyles };
|
|
43
50
|
//# sourceMappingURL=type.d.mts.map
|
package/es/base-ui/index.d.mts
CHANGED
|
@@ -2,6 +2,10 @@ import { TooltipGroupProps, TooltipPlacement, TooltipPopupComponentProps, Toolti
|
|
|
2
2
|
import { Tooltip } from "./Tooltip/Tooltip.mjs";
|
|
3
3
|
import TooltipGroup from "./Tooltip/TooltipGroup.mjs";
|
|
4
4
|
import "./Tooltip/index.mjs";
|
|
5
|
+
import { ActionIconClassNames, ActionIconProps, ActionIconSize, ActionIconStyles } from "./ActionIcon/type.mjs";
|
|
6
|
+
import ActionIcon from "./ActionIcon/ActionIcon.mjs";
|
|
7
|
+
import { styles as styles$1 } from "./ActionIcon/style.mjs";
|
|
8
|
+
import "./ActionIcon/index.mjs";
|
|
5
9
|
import { IconSpaceMode } from "../Menu/renderUtils.mjs";
|
|
6
10
|
import { renderDropdownMenuItems } from "./DropdownMenu/renderItems.mjs";
|
|
7
11
|
import { DropdownItem, DropdownMenuCheckboxItem, DropdownMenuPlacement, DropdownMenuProps, DropdownMenuSwitchItem as DropdownMenuSwitchItem$1 } from "./DropdownMenu/type.mjs";
|
|
@@ -35,10 +39,6 @@ import Accordion from "./Accordion/Accordion.mjs";
|
|
|
35
39
|
import { styles } from "./Accordion/style.mjs";
|
|
36
40
|
import { AccordionHeader, AccordionItem, AccordionPanel, AccordionRoot, AccordionTrigger, useAccordionContext } from "./Accordion/atoms.mjs";
|
|
37
41
|
import "./Accordion/index.mjs";
|
|
38
|
-
import { ActionIconClassNames, ActionIconProps, ActionIconSize, ActionIconStyles } from "./ActionIcon/type.mjs";
|
|
39
|
-
import ActionIcon from "./ActionIcon/ActionIcon.mjs";
|
|
40
|
-
import { styles as styles$1 } from "./ActionIcon/style.mjs";
|
|
41
|
-
import "./ActionIcon/index.mjs";
|
|
42
42
|
import { AlertClassNames, AlertCloseConfig, AlertProps, AlertRef, AlertStyles, AlertType, AlertVariant } from "./Alert/type.mjs";
|
|
43
43
|
import Alert from "./Alert/Alert.mjs";
|
|
44
44
|
import { styles as styles$2 } from "./Alert/style.mjs";
|
package/es/base-ui/index.mjs
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Tooltip } from "./Tooltip/Tooltip.mjs";
|
|
2
2
|
import TooltipGroup from "./Tooltip/TooltipGroup.mjs";
|
|
3
|
+
import { controlHeight } from "./controlSize.mjs";
|
|
4
|
+
import { styles as styles$4 } from "./Button/style.mjs";
|
|
5
|
+
import Button from "./Button/Button.mjs";
|
|
3
6
|
import { styles as styles$9 } from "./Switch/style.mjs";
|
|
4
7
|
import { SwitchIcon, SwitchRoot, SwitchThumb, useSwitchContext } from "./Switch/atoms.mjs";
|
|
5
8
|
import Switch from "./Switch/Switch.mjs";
|
|
@@ -7,6 +10,9 @@ import { DropdownMenuCheckboxItemIndicator, DropdownMenuCheckboxItemPrimitive, D
|
|
|
7
10
|
import { parseTrigger } from "../utils/parseTrigger.mjs";
|
|
8
11
|
import { renderDropdownMenuItems } from "./DropdownMenu/renderItems.mjs";
|
|
9
12
|
import DropdownMenu from "./DropdownMenu/DropdownMenu.mjs";
|
|
13
|
+
import SplitButton from "./Button/SplitButton.mjs";
|
|
14
|
+
import { styles as styles$1 } from "./ActionIcon/style.mjs";
|
|
15
|
+
import ActionIcon from "./ActionIcon/ActionIcon.mjs";
|
|
10
16
|
import { closeContextMenu, setContextMenuInterceptor, showContextMenu, updateContextMenuItems } from "./ContextMenu/store.mjs";
|
|
11
17
|
import { ContextMenuHost } from "./ContextMenu/ContextMenuHost.mjs";
|
|
12
18
|
import { ContextMenuTrigger } from "./ContextMenu/ContextMenuTrigger.mjs";
|
|
@@ -23,12 +29,6 @@ import { ScrollArea } from "./ScrollArea/ScrollArea.mjs";
|
|
|
23
29
|
import { styles } from "./Accordion/style.mjs";
|
|
24
30
|
import { AccordionHeader, AccordionItem, AccordionPanel, AccordionRoot, AccordionTrigger, useAccordionContext } from "./Accordion/atoms.mjs";
|
|
25
31
|
import Accordion from "./Accordion/Accordion.mjs";
|
|
26
|
-
import { controlHeight } from "./controlSize.mjs";
|
|
27
|
-
import { styles as styles$4 } from "./Button/style.mjs";
|
|
28
|
-
import Button from "./Button/Button.mjs";
|
|
29
|
-
import SplitButton from "./Button/SplitButton.mjs";
|
|
30
|
-
import { styles as styles$1 } from "./ActionIcon/style.mjs";
|
|
31
|
-
import ActionIcon from "./ActionIcon/ActionIcon.mjs";
|
|
32
32
|
import { styles as styles$2 } from "./Alert/style.mjs";
|
|
33
33
|
import Alert from "./Alert/Alert.mjs";
|
|
34
34
|
import { rootVariants, styles as styles$6 } from "./Input/style.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import FlexBasic_default from "../../Flex/FlexBasic.mjs";
|
|
3
|
-
import ActionIcon from "../../ActionIcon/ActionIcon.mjs";
|
|
3
|
+
import ActionIcon from "../../base-ui/ActionIcon/ActionIcon.mjs";
|
|
4
4
|
import { styles } from "./style.mjs";
|
|
5
5
|
import { memo } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHeader.mjs","names":["Flexbox"],"sources":["../../../src/chat/ChatHeader/ChatHeader.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronLeft } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { ChatHeaderProps } from './type';\n\nconst ChatHeader = memo<ChatHeaderProps>(\n ({\n left,\n right,\n className,\n styles: contentStyles,\n gaps,\n classNames,\n showBackButton,\n onBackClick,\n children,\n gap = 16,\n ...rest\n }) => {\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.container, className)}\n distribution={'space-between'}\n gap={gap}\n paddingInline={16}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.left, classNames?.left)}\n gap={gaps?.left || 12}\n justify={'flex-start'}\n style={contentStyles?.left}\n >\n {showBackButton && (\n <ActionIcon\n icon={ChevronLeft}\n style={{ marginRight: gaps?.left ? -gaps.left / 2 : -6 }}\n onClick={() => onBackClick?.()}\n />\n )}\n {left}\n </Flexbox>\n {children && (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.center, classNames?.center)}\n gap={gaps?.center || 8}\n justify={'center'}\n style={contentStyles?.center}\n >\n {children}\n </Flexbox>\n )}\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.right, classNames?.right)}\n gap={gaps?.right || 8}\n justify={'flex-end'}\n style={contentStyles?.right}\n >\n {right}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nChatHeader.displayName = 'ChatHeader';\n\nexport default ChatHeader;\n"],"mappings":";;;;;;;;;AAYA,MAAM,aAAa,MAChB,EACC,MACA,OACA,WACA,QAAQ,eACR,MACA,YACA,gBACA,aACA,UACA,MAAM,IACN,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,cAAc;EACT;EACL,eAAe;EACf,GAAI;EAPN,UAAA;GASE,qBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;IAC3C,KAAK,MAAM,QAAQ;IACnB,SAAS;IACT,OAAO,eAAe;IANxB,UAAA,CAQG,kBACC,oBAAC,YAAD;KACE,MAAM;KACN,OAAO,EAAE,aAAa,MAAM,OAAO,CAAC,KAAK,OAAO,IAAI,GAAG;KACvD,eAAe,cAAc;IAC9B,CAAA,GAEF,IACM;;GACR,YACC,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,QAAQ,YAAY,MAAM;IAC/C,KAAK,MAAM,UAAU;IACrB,SAAS;IACT,OAAO,eAAe;IAErB;GACM,CAAA;GAEX,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;IAC7C,KAAK,MAAM,SAAS;IACpB,SAAS;IACT,OAAO,eAAe;IAErB,UAAA;GACM,CAAA;EACF;;AAEb,CACF;AAEA,WAAW,cAAc"}
|
|
1
|
+
{"version":3,"file":"ChatHeader.mjs","names":["Flexbox"],"sources":["../../../src/chat/ChatHeader/ChatHeader.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronLeft } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/base-ui/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { ChatHeaderProps } from './type';\n\nconst ChatHeader = memo<ChatHeaderProps>(\n ({\n left,\n right,\n className,\n styles: contentStyles,\n gaps,\n classNames,\n showBackButton,\n onBackClick,\n children,\n gap = 16,\n ...rest\n }) => {\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.container, className)}\n distribution={'space-between'}\n gap={gap}\n paddingInline={16}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.left, classNames?.left)}\n gap={gaps?.left || 12}\n justify={'flex-start'}\n style={contentStyles?.left}\n >\n {showBackButton && (\n <ActionIcon\n icon={ChevronLeft}\n style={{ marginRight: gaps?.left ? -gaps.left / 2 : -6 }}\n onClick={() => onBackClick?.()}\n />\n )}\n {left}\n </Flexbox>\n {children && (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.center, classNames?.center)}\n gap={gaps?.center || 8}\n justify={'center'}\n style={contentStyles?.center}\n >\n {children}\n </Flexbox>\n )}\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.right, classNames?.right)}\n gap={gaps?.right || 8}\n justify={'flex-end'}\n style={contentStyles?.right}\n >\n {right}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nChatHeader.displayName = 'ChatHeader';\n\nexport default ChatHeader;\n"],"mappings":";;;;;;;;;AAYA,MAAM,aAAa,MAChB,EACC,MACA,OACA,WACA,QAAQ,eACR,MACA,YACA,gBACA,aACA,UACA,MAAM,IACN,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,cAAc;EACT;EACL,eAAe;EACf,GAAI;EAPN,UAAA;GASE,qBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;IAC3C,KAAK,MAAM,QAAQ;IACnB,SAAS;IACT,OAAO,eAAe;IANxB,UAAA,CAQG,kBACC,oBAAC,YAAD;KACE,MAAM;KACN,OAAO,EAAE,aAAa,MAAM,OAAO,CAAC,KAAK,OAAO,IAAI,GAAG;KACvD,eAAe,cAAc;IAC9B,CAAA,GAEF,IACM;;GACR,YACC,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,QAAQ,YAAY,MAAM;IAC/C,KAAK,MAAM,UAAU;IACrB,SAAS;IACT,OAAO,eAAe;IAErB;GACM,CAAA;GAEX,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;IAC7C,KAAK,MAAM,SAAS;IACpB,SAAS;IACT,OAAO,eAAe;IAErB,UAAA;GACM,CAAA;EACF;;AAEb,CACF;AAEA,WAAW,cAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import FlexBasic_default from "../../Flex/FlexBasic.mjs";
|
|
3
|
-
import ActionIcon from "../../ActionIcon/ActionIcon.mjs";
|
|
3
|
+
import ActionIcon from "../../base-ui/ActionIcon/ActionIcon.mjs";
|
|
4
4
|
import Button from "../../Button/Button.mjs";
|
|
5
5
|
import { useTranslation } from "../../i18n/useTranslation.mjs";
|
|
6
6
|
import ControlInput from "../../EditableText/ControlInput.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox"],"sources":["../../../src/chat/EditableMessageList/EditableMessageList.tsx"],"sourcesContent":["'use client';\n\nimport isEqual from 'fast-deep-equal';\nimport { Plus, Trash } from 'lucide-react';\nimport { memo, useEffect, useReducer } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport Button from '@/Button';\nimport ControlInput from '@/EditableText/ControlInput';\nimport { Flexbox } from '@/Flex';\nimport editableMessageMessages from '@/i18n/resources/en/editableMessage';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Select from '@/Select';\n\nimport { messagesReducer } from './messageReducer';\nimport { type EditableMessageListProps } from './type';\n\nconst EditableMessageList = memo<EditableMessageListProps>(\n ({ disabled, dataSources, onChange, texts }) => {\n const [chatMessages, dispatch] = useReducer(messagesReducer, dataSources);\n const { t } = useTranslation(editableMessageMessages);\n\n const addPropsText = texts?.addProps ?? t('editableMessage.addProps');\n const deleteText = texts?.delete ?? t('editableMessage.delete');\n const inputPlaceholderText = texts?.inputPlaceholder ?? t('editableMessage.inputPlaceholder');\n const outputPlaceholderText =\n texts?.outputPlaceholder ?? t('editableMessage.outputPlaceholder');\n const systemText = texts?.system ?? t('editableMessage.system');\n const inputText = texts?.input ?? t('editableMessage.input');\n const outputText = texts?.output ?? t('editableMessage.output');\n\n useEffect(() => {\n if (!isEqual(dataSources, chatMessages)) {\n onChange?.(chatMessages);\n }\n }, [chatMessages]);\n\n return dataSources ? (\n <Flexbox gap={12}>\n {chatMessages.map((item, index) => (\n <Flexbox\n horizontal\n align={'center'}\n gap={8}\n key={`${index}-${item.content}`}\n width={'100%'}\n >\n <Select\n disabled={disabled}\n style={{ width: 120 }}\n styles={{ popup: { root: { zIndex: 100 } } }}\n value={item.role}\n options={[\n { label: systemText, value: 'system' },\n { label: inputText, value: 'user' },\n { label: outputText, value: 'assistant' },\n ]}\n onChange={(value) => {\n dispatch({ index, role: value, type: 'updateMessageRole' });\n }}\n />\n <ControlInput\n disabled={disabled}\n placeholder={item.role === 'user' ? inputPlaceholderText : outputPlaceholderText}\n value={item.content}\n onChange={(e) => {\n dispatch({ index, message: e, type: 'updateMessage' });\n }}\n />\n <ActionIcon\n icon={Trash}\n title={deleteText}\n variant={'filled'}\n onClick={() => {\n dispatch({ index, type: 'deleteMessage' });\n }}\n />\n </Flexbox>\n ))}\n\n <Button\n block\n disabled={disabled}\n icon={Plus}\n onClick={() => {\n const lastMeg = chatMessages.at(-1);\n\n dispatch({\n message: { content: '', role: lastMeg?.role === 'user' ? 'assistant' : 'user' },\n type: 'addMessage',\n });\n }}\n >\n {addPropsText}\n </Button>\n </Flexbox>\n ) : undefined;\n },\n isEqual,\n);\n\nEditableMessageList.displayName = 'EditableMessageList';\n\nexport default EditableMessageList;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,sBAAsB,MACzB,EAAE,UAAU,aAAa,UAAU,YAAY;CAC9C,MAAM,CAAC,cAAc,YAAY,WAAW,iBAAiB,WAAW;CACxE,MAAM,EAAE,MAAM,eAAeA,uBAAuB;CAEpD,MAAM,eAAe,OAAO,YAAY,EAAE,0BAA0B;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,kCAAkC;CAC5F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,mCAAmC;CACnE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,YAAY,OAAO,SAAS,EAAE,uBAAuB;CAC3D,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAE9D,gBAAgB;EACd,IAAI,CAAC,QAAQ,aAAa,YAAY,GACpC,WAAW,YAAY;CAE3B,GAAG,CAAC,YAAY,CAAC;CAEjB,OAAO,cACL,qBAACC,mBAAD;EAAS,KAAK;EAAd,UAAA,CACG,aAAa,KAAK,MAAM,UACvB,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,KAAK;GAEL,OAAO;GALT,UAAA;IAOE,oBAAC,QAAD;KACY;KACV,OAAO,EAAE,OAAO,IAAI;KACpB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,EAAE;KAC3C,OAAO,KAAK;KACZ,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;MAAS;MACrC;OAAE,OAAO;OAAW,OAAO;MAAO;MAClC;OAAE,OAAO;OAAY,OAAO;MAAY;KAC1C;KACA,WAAW,UAAU;MACnB,SAAS;OAAE;OAAO,MAAM;OAAO,MAAM;MAAoB,CAAC;KAC5D;IACD,CAAA;IACD,oBAAC,cAAD;KACY;KACV,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;KACZ,WAAW,MAAM;MACf,SAAS;OAAE;OAAO,SAAS;OAAG,MAAM;MAAgB,CAAC;KACvD;IACD,CAAA;IACD,oBAAC,YAAD;KACE,MAAM;KACN,OAAO;KACP,SAAS;KACT,eAAe;MACb,SAAS;OAAE;OAAO,MAAM;MAAgB,CAAC;KAC3C;IACD,CAAA;GACM;EAjCF,GAAA,GAAG,MAAM,GAAG,KAAK,SAiCf,CACV,GAED,oBAAC,QAAD;GACE,OAAA;GACU;GACV,MAAM;GACN,eAAe;IACb,MAAM,UAAU,aAAa,GAAG,EAAE;IAElC,SAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAAM,SAAS,SAAS,SAAS,cAAc;KAAO;KAC9E,MAAM;IACR,CAAC;GACH;GAEC,UAAA;EACK,CAAA,CACD;CACP,CAAA,IAAA,KAAA;AACN,GACA,OACF;AAEA,oBAAoB,cAAc"}
|
|
1
|
+
{"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox"],"sources":["../../../src/chat/EditableMessageList/EditableMessageList.tsx"],"sourcesContent":["'use client';\n\nimport isEqual from 'fast-deep-equal';\nimport { Plus, Trash } from 'lucide-react';\nimport { memo, useEffect, useReducer } from 'react';\n\nimport ActionIcon from '@/base-ui/ActionIcon';\nimport Button from '@/Button';\nimport ControlInput from '@/EditableText/ControlInput';\nimport { Flexbox } from '@/Flex';\nimport editableMessageMessages from '@/i18n/resources/en/editableMessage';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Select from '@/Select';\n\nimport { messagesReducer } from './messageReducer';\nimport { type EditableMessageListProps } from './type';\n\nconst EditableMessageList = memo<EditableMessageListProps>(\n ({ disabled, dataSources, onChange, texts }) => {\n const [chatMessages, dispatch] = useReducer(messagesReducer, dataSources);\n const { t } = useTranslation(editableMessageMessages);\n\n const addPropsText = texts?.addProps ?? t('editableMessage.addProps');\n const deleteText = texts?.delete ?? t('editableMessage.delete');\n const inputPlaceholderText = texts?.inputPlaceholder ?? t('editableMessage.inputPlaceholder');\n const outputPlaceholderText =\n texts?.outputPlaceholder ?? t('editableMessage.outputPlaceholder');\n const systemText = texts?.system ?? t('editableMessage.system');\n const inputText = texts?.input ?? t('editableMessage.input');\n const outputText = texts?.output ?? t('editableMessage.output');\n\n useEffect(() => {\n if (!isEqual(dataSources, chatMessages)) {\n onChange?.(chatMessages);\n }\n }, [chatMessages]);\n\n return dataSources ? (\n <Flexbox gap={12}>\n {chatMessages.map((item, index) => (\n <Flexbox\n horizontal\n align={'center'}\n gap={8}\n key={`${index}-${item.content}`}\n width={'100%'}\n >\n <Select\n disabled={disabled}\n style={{ width: 120 }}\n styles={{ popup: { root: { zIndex: 100 } } }}\n value={item.role}\n options={[\n { label: systemText, value: 'system' },\n { label: inputText, value: 'user' },\n { label: outputText, value: 'assistant' },\n ]}\n onChange={(value) => {\n dispatch({ index, role: value, type: 'updateMessageRole' });\n }}\n />\n <ControlInput\n disabled={disabled}\n placeholder={item.role === 'user' ? inputPlaceholderText : outputPlaceholderText}\n value={item.content}\n onChange={(e) => {\n dispatch({ index, message: e, type: 'updateMessage' });\n }}\n />\n <ActionIcon\n icon={Trash}\n title={deleteText}\n variant={'filled'}\n onClick={() => {\n dispatch({ index, type: 'deleteMessage' });\n }}\n />\n </Flexbox>\n ))}\n\n <Button\n block\n disabled={disabled}\n icon={Plus}\n onClick={() => {\n const lastMeg = chatMessages.at(-1);\n\n dispatch({\n message: { content: '', role: lastMeg?.role === 'user' ? 'assistant' : 'user' },\n type: 'addMessage',\n });\n }}\n >\n {addPropsText}\n </Button>\n </Flexbox>\n ) : undefined;\n },\n isEqual,\n);\n\nEditableMessageList.displayName = 'EditableMessageList';\n\nexport default EditableMessageList;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,sBAAsB,MACzB,EAAE,UAAU,aAAa,UAAU,YAAY;CAC9C,MAAM,CAAC,cAAc,YAAY,WAAW,iBAAiB,WAAW;CACxE,MAAM,EAAE,MAAM,eAAeA,uBAAuB;CAEpD,MAAM,eAAe,OAAO,YAAY,EAAE,0BAA0B;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,kCAAkC;CAC5F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,mCAAmC;CACnE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,YAAY,OAAO,SAAS,EAAE,uBAAuB;CAC3D,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAE9D,gBAAgB;EACd,IAAI,CAAC,QAAQ,aAAa,YAAY,GACpC,WAAW,YAAY;CAE3B,GAAG,CAAC,YAAY,CAAC;CAEjB,OAAO,cACL,qBAACC,mBAAD;EAAS,KAAK;EAAd,UAAA,CACG,aAAa,KAAK,MAAM,UACvB,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,KAAK;GAEL,OAAO;GALT,UAAA;IAOE,oBAAC,QAAD;KACY;KACV,OAAO,EAAE,OAAO,IAAI;KACpB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,EAAE;KAC3C,OAAO,KAAK;KACZ,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;MAAS;MACrC;OAAE,OAAO;OAAW,OAAO;MAAO;MAClC;OAAE,OAAO;OAAY,OAAO;MAAY;KAC1C;KACA,WAAW,UAAU;MACnB,SAAS;OAAE;OAAO,MAAM;OAAO,MAAM;MAAoB,CAAC;KAC5D;IACD,CAAA;IACD,oBAAC,cAAD;KACY;KACV,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;KACZ,WAAW,MAAM;MACf,SAAS;OAAE;OAAO,SAAS;OAAG,MAAM;MAAgB,CAAC;KACvD;IACD,CAAA;IACD,oBAAC,YAAD;KACE,MAAM;KACN,OAAO;KACP,SAAS;KACT,eAAe;MACb,SAAS;OAAE;OAAO,MAAM;MAAgB,CAAC;KAC3C;IACD,CAAA;GACM;EAjCF,GAAA,GAAG,MAAM,GAAG,KAAK,SAiCf,CACV,GAED,oBAAC,QAAD;GACE,OAAA;GACU;GACV,MAAM;GACN,eAAe;IACb,MAAM,UAAU,aAAa,GAAG,EAAE;IAElC,SAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAAM,SAAS,SAAS,SAAS,cAAc;KAAO;KAC9E,MAAM;IACR,CAAC;GACH;GAEC,UAAA;EACK,CAAA,CACD;CACP,CAAA,IAAA,KAAA;AACN,GACA,OACF;AAEA,oBAAoB,cAAc"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import ActionIcon from "../../ActionIcon/ActionIcon.mjs";
|
|
2
|
+
import ActionIcon from "../../base-ui/ActionIcon/ActionIcon.mjs";
|
|
3
3
|
import { useTranslation } from "../../i18n/useTranslation.mjs";
|
|
4
4
|
import chat_default from "../../i18n/resources/en/chat.mjs";
|
|
5
5
|
import { useMemo } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTag.mjs","names":["chatMessages"],"sources":["../../../src/chat/TokenTag/TokenTag.tsx"],"sourcesContent":["'use client';\n\nimport { Progress } from 'antd';\nimport { cssVar } from 'antd-style';\nimport numeral from 'numeral';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport chatMessages from '@/i18n/resources/en/chat';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport type { TokenTagProps } from './type';\n\nconst format = (number: number) => numeral(number).format('0,0');\n\nconst TokenTag: FC<TokenTagProps> = ({\n mode = 'remained',\n maxValue,\n value,\n text,\n showInfo,\n size = 20,\n ...rest\n}) => {\n const { t } = useTranslation(chatMessages);\n const valueLeft = maxValue - value;\n const percent = value / maxValue;\n const remainedText = text?.remained ?? t('tokenTag.remained');\n const usedText = text?.used ?? t('tokenTag.used');\n const overloadText = text?.overload ?? t('tokenTag.overload');\n\n const data = useMemo(() => {\n let type: 'normal' | 'low' | 'overload';\n let color;\n\n if (percent < 0.7) {\n type = 'normal';\n color = cssVar.colorText;\n } else if (percent < 0.9) {\n type = 'low';\n color = cssVar.colorWarning;\n } else {\n type = 'overload';\n color = cssVar.colorError;\n }\n return {\n color,\n type,\n };\n }, [percent]);\n\n const title =\n valueLeft > 0\n ? [\n mode === 'remained' ? remainedText : usedText,\n mode === 'remained' ? format(valueLeft) : format(value),\n ].join(' ')\n : overloadText;\n\n return (\n <ActionIcon\n size={size}\n title={showInfo ? title : undefined}\n icon={\n <Progress\n percent={percent * 100}\n showInfo={false}\n size={Number(typeof size === 'object' ? size?.size || 20 : size) || 20}\n strokeColor={data.color}\n type=\"circle\"\n />\n }\n {...rest}\n />\n );\n};\n\nTokenTag.displayName = 'TokenTag';\n\nexport default TokenTag;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,UAAU,WAAmB,QAAQ,MAAM,CAAC,CAAC,OAAO,KAAK;AAE/D,MAAM,YAA+B,EACnC,OAAO,YACP,UACA,OACA,MACA,UACA,OAAO,IACP,GAAG,WACC;CACJ,MAAM,EAAE,MAAM,eAAeA,YAAY;CACzC,MAAM,YAAY,WAAW;CAC7B,MAAM,UAAU,QAAQ;CACxB,MAAM,eAAe,MAAM,YAAY,EAAE,mBAAmB;CAC5D,MAAM,WAAW,MAAM,QAAQ,EAAE,eAAe;CAChD,MAAM,eAAe,MAAM,YAAY,EAAE,mBAAmB;CAE5D,MAAM,OAAO,cAAc;EACzB,IAAI;EACJ,IAAI;EAEJ,IAAI,UAAU,IAAK;GACjB,OAAO;GACP,QAAQ,OAAO;EACjB,OAAO,IAAI,UAAU,IAAK;GACxB,OAAO;GACP,QAAQ,OAAO;EACjB,OAAO;GACL,OAAO;GACP,QAAQ,OAAO;EACjB;EACA,OAAO;GACL;GACA;EACF;CACF,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,QACJ,YAAY,IACR,CACE,SAAS,aAAa,eAAe,UACrC,SAAS,aAAa,OAAO,SAAS,IAAI,OAAO,KAAK,CACxD,CAAC,CAAC,KAAK,GAAG,IACV;CAEN,OACE,oBAAC,YAAD;EACQ;EACN,OAAO,WAAW,QAAQ,KAAA;EAC1B,MACE,oBAAC,UAAD;GACE,SAAS,UAAU;GACnB,UAAU;GACV,MAAM,OAAO,OAAO,SAAS,WAAW,MAAM,QAAQ,KAAK,IAAI,KAAK;GACpE,aAAa,KAAK;GAClB,MAAK;EACN,CAAA;EAEH,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc"}
|
|
1
|
+
{"version":3,"file":"TokenTag.mjs","names":["chatMessages"],"sources":["../../../src/chat/TokenTag/TokenTag.tsx"],"sourcesContent":["'use client';\n\nimport { Progress } from 'antd';\nimport { cssVar } from 'antd-style';\nimport numeral from 'numeral';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/base-ui/ActionIcon';\nimport chatMessages from '@/i18n/resources/en/chat';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport type { TokenTagProps } from './type';\n\nconst format = (number: number) => numeral(number).format('0,0');\n\nconst TokenTag: FC<TokenTagProps> = ({\n mode = 'remained',\n maxValue,\n value,\n text,\n showInfo,\n size = 20,\n ...rest\n}) => {\n const { t } = useTranslation(chatMessages);\n const valueLeft = maxValue - value;\n const percent = value / maxValue;\n const remainedText = text?.remained ?? t('tokenTag.remained');\n const usedText = text?.used ?? t('tokenTag.used');\n const overloadText = text?.overload ?? t('tokenTag.overload');\n\n const data = useMemo(() => {\n let type: 'normal' | 'low' | 'overload';\n let color;\n\n if (percent < 0.7) {\n type = 'normal';\n color = cssVar.colorText;\n } else if (percent < 0.9) {\n type = 'low';\n color = cssVar.colorWarning;\n } else {\n type = 'overload';\n color = cssVar.colorError;\n }\n return {\n color,\n type,\n };\n }, [percent]);\n\n const title =\n valueLeft > 0\n ? [\n mode === 'remained' ? remainedText : usedText,\n mode === 'remained' ? format(valueLeft) : format(value),\n ].join(' ')\n : overloadText;\n\n return (\n <ActionIcon\n size={size}\n title={showInfo ? title : undefined}\n icon={\n <Progress\n percent={percent * 100}\n showInfo={false}\n size={Number(typeof size === 'object' ? size?.size || 20 : size) || 20}\n strokeColor={data.color}\n type=\"circle\"\n />\n }\n {...rest}\n />\n );\n};\n\nTokenTag.displayName = 'TokenTag';\n\nexport default TokenTag;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,UAAU,WAAmB,QAAQ,MAAM,CAAC,CAAC,OAAO,KAAK;AAE/D,MAAM,YAA+B,EACnC,OAAO,YACP,UACA,OACA,MACA,UACA,OAAO,IACP,GAAG,WACC;CACJ,MAAM,EAAE,MAAM,eAAeA,YAAY;CACzC,MAAM,YAAY,WAAW;CAC7B,MAAM,UAAU,QAAQ;CACxB,MAAM,eAAe,MAAM,YAAY,EAAE,mBAAmB;CAC5D,MAAM,WAAW,MAAM,QAAQ,EAAE,eAAe;CAChD,MAAM,eAAe,MAAM,YAAY,EAAE,mBAAmB;CAE5D,MAAM,OAAO,cAAc;EACzB,IAAI;EACJ,IAAI;EAEJ,IAAI,UAAU,IAAK;GACjB,OAAO;GACP,QAAQ,OAAO;EACjB,OAAO,IAAI,UAAU,IAAK;GACxB,OAAO;GACP,QAAQ,OAAO;EACjB,OAAO;GACL,OAAO;GACP,QAAQ,OAAO;EACjB;EACA,OAAO;GACL;GACA;EACF;CACF,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,QACJ,YAAY,IACR,CACE,SAAS,aAAa,eAAe,UACrC,SAAS,aAAa,OAAO,SAAS,IAAI,OAAO,KAAK,CACxD,CAAC,CAAC,KAAK,GAAG,IACV;CAEN,OACE,oBAAC,YAAD;EACQ;EACN,OAAO,WAAW,QAAQ,KAAA;EAC1B,MACE,oBAAC,UAAD;GACE,SAAS,UAAU;GACnB,UAAU;GACV,MAAM,OAAO,OAAO,SAAS,WAAW,MAAM,QAAQ,KAAK,IAAI,KAAK;GACpE,aAAa,KAAK;GAClB,MAAK;EACN,CAAA;EAEH,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ActionIconProps } from "../../ActionIcon/type.mjs";
|
|
2
|
-
import "../../ActionIcon/index.mjs";
|
|
1
|
+
import { ActionIconProps } from "../../base-ui/ActionIcon/type.mjs";
|
|
2
|
+
import "../../base-ui/ActionIcon/index.mjs";
|
|
3
3
|
//#region src/chat/TokenTag/type.d.ts
|
|
4
4
|
interface TokenTagProps extends ActionIconProps {
|
|
5
5
|
maxValue: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import FlexBasic_default from "../../Flex/FlexBasic.mjs";
|
|
3
|
-
import ActionIcon from "../../ActionIcon/ActionIcon.mjs";
|
|
3
|
+
import ActionIcon from "../../base-ui/ActionIcon/ActionIcon.mjs";
|
|
4
4
|
import SafeArea from "../SafeArea/SafeArea.mjs";
|
|
5
5
|
import { styles } from "./style.mjs";
|
|
6
6
|
import { memo } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHeader.mjs","names":["Flexbox","MobileSafeArea"],"sources":["../../../src/mobile/ChatHeader/ChatHeader.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronLeft } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport MobileSafeArea from '@/mobile/SafeArea';\n\nimport { styles } from './style';\nimport type { ChatHeaderProps } from './type';\n\nconst ChatHeader = memo<ChatHeaderProps>(\n ({\n ref,\n className,\n safeArea = true,\n style,\n center,\n left,\n right,\n gaps,\n classNames,\n onBackClick,\n showBackButton,\n styles: custmStyles,\n children,\n ...rest\n }) => {\n return (\n <Flexbox\n as={'header'}\n className={cx(styles.container, className)}\n ref={ref}\n style={style}\n {...rest}\n >\n {safeArea && <MobileSafeArea position={'top'} />}\n <Flexbox\n horizontal\n align={'center'}\n className={styles.inner}\n flex={1}\n justify={'space-between'}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.left, classNames?.left)}\n flex={1}\n gap={gaps?.left}\n style={custmStyles?.left}\n >\n {showBackButton && <ActionIcon icon={ChevronLeft} onClick={() => onBackClick?.()} />}\n {left}\n </Flexbox>\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.center, classNames?.center)}\n flex={1}\n gap={gaps?.center}\n justify={'center'}\n style={custmStyles?.center}\n >\n {children}\n {center}\n </Flexbox>\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.right, classNames?.right)}\n flex={1}\n gap={gaps?.right}\n style={custmStyles?.right}\n >\n {right}\n </Flexbox>\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nChatHeader.displayName = 'ChatHeader';\n\nexport default ChatHeader;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,aAAa,MAChB,EACC,KACA,WACA,WAAW,MACX,OACA,QACA,MACA,OACA,MACA,YACA,aACA,gBACA,QAAQ,aACR,UACA,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,IAAI;EACJ,WAAW,GAAG,OAAO,WAAW,SAAS;EACpC;EACE;EACP,GAAI;EALN,UAAA,CAOG,YAAY,oBAACC,UAAD,EAAgB,UAAU,MAAQ,CAAA,GAC/C,qBAACD,mBAAD;GACE,YAAA;GACA,OAAO;GACP,WAAW,OAAO;GAClB,MAAM;GACN,SAAS;GALX,UAAA;IAOE,qBAACA,mBAAD;KACE,YAAA;KACA,OAAO;KACP,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;KAC3C,MAAM;KACN,KAAK,MAAM;KACX,OAAO,aAAa;KANtB,UAAA,CAQG,kBAAkB,oBAAC,YAAD;MAAY,MAAM;MAAa,eAAe,cAAc;KAAI,CAAA,GAClF,IACM;;IACT,qBAACA,mBAAD;KACE,YAAA;KACA,OAAO;KACP,WAAW,GAAG,OAAO,QAAQ,YAAY,MAAM;KAC/C,MAAM;KACN,KAAK,MAAM;KACX,SAAS;KACT,OAAO,aAAa;KAPtB,UAAA,CASG,UACA,MACM;;IACT,oBAACA,mBAAD;KACE,YAAA;KACA,OAAO;KACP,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;KAC7C,MAAM;KACN,KAAK,MAAM;KACX,OAAO,aAAa;KAEnB,UAAA;IACM,CAAA;GACF;EACF,CAAA,CAAA;;AAEb,CACF;AAEA,WAAW,cAAc"}
|
|
1
|
+
{"version":3,"file":"ChatHeader.mjs","names":["Flexbox","MobileSafeArea"],"sources":["../../../src/mobile/ChatHeader/ChatHeader.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronLeft } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/base-ui/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport MobileSafeArea from '@/mobile/SafeArea';\n\nimport { styles } from './style';\nimport type { ChatHeaderProps } from './type';\n\nconst ChatHeader = memo<ChatHeaderProps>(\n ({\n ref,\n className,\n safeArea = true,\n style,\n center,\n left,\n right,\n gaps,\n classNames,\n onBackClick,\n showBackButton,\n styles: custmStyles,\n children,\n ...rest\n }) => {\n return (\n <Flexbox\n as={'header'}\n className={cx(styles.container, className)}\n ref={ref}\n style={style}\n {...rest}\n >\n {safeArea && <MobileSafeArea position={'top'} />}\n <Flexbox\n horizontal\n align={'center'}\n className={styles.inner}\n flex={1}\n justify={'space-between'}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.left, classNames?.left)}\n flex={1}\n gap={gaps?.left}\n style={custmStyles?.left}\n >\n {showBackButton && <ActionIcon icon={ChevronLeft} onClick={() => onBackClick?.()} />}\n {left}\n </Flexbox>\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.center, classNames?.center)}\n flex={1}\n gap={gaps?.center}\n justify={'center'}\n style={custmStyles?.center}\n >\n {children}\n {center}\n </Flexbox>\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.right, classNames?.right)}\n flex={1}\n gap={gaps?.right}\n style={custmStyles?.right}\n >\n {right}\n </Flexbox>\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nChatHeader.displayName = 'ChatHeader';\n\nexport default ChatHeader;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,aAAa,MAChB,EACC,KACA,WACA,WAAW,MACX,OACA,QACA,MACA,OACA,MACA,YACA,aACA,gBACA,QAAQ,aACR,UACA,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,IAAI;EACJ,WAAW,GAAG,OAAO,WAAW,SAAS;EACpC;EACE;EACP,GAAI;EALN,UAAA,CAOG,YAAY,oBAACC,UAAD,EAAgB,UAAU,MAAQ,CAAA,GAC/C,qBAACD,mBAAD;GACE,YAAA;GACA,OAAO;GACP,WAAW,OAAO;GAClB,MAAM;GACN,SAAS;GALX,UAAA;IAOE,qBAACA,mBAAD;KACE,YAAA;KACA,OAAO;KACP,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;KAC3C,MAAM;KACN,KAAK,MAAM;KACX,OAAO,aAAa;KANtB,UAAA,CAQG,kBAAkB,oBAAC,YAAD;MAAY,MAAM;MAAa,eAAe,cAAc;KAAI,CAAA,GAClF,IACM;;IACT,qBAACA,mBAAD;KACE,YAAA;KACA,OAAO;KACP,WAAW,GAAG,OAAO,QAAQ,YAAY,MAAM;KAC/C,MAAM;KACN,KAAK,MAAM;KACX,SAAS;KACT,OAAO,aAAa;KAPtB,UAAA,CASG,UACA,MACM;;IACT,oBAACA,mBAAD;KACE,YAAA;KACA,OAAO;KACP,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;KAC7C,MAAM;KACN,KAAK,MAAM;KACX,OAAO,aAAa;KAEnB,UAAA;IACM,CAAA;GACF;EACF,CAAA,CAAA;;AAEb,CACF;AAEA,WAAW,cAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import FlexBasic_default from "../../Flex/FlexBasic.mjs";
|
|
3
|
-
import ActionIcon from "../../ActionIcon/ActionIcon.mjs";
|
|
3
|
+
import ActionIcon from "../../base-ui/ActionIcon/ActionIcon.mjs";
|
|
4
4
|
import ChatInputAreaInner from "../../chat/ChatInputArea/components/ChatInputAreaInner.mjs";
|
|
5
5
|
import SafeArea from "../SafeArea/SafeArea.mjs";
|
|
6
6
|
import { styles } from "./style.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInputArea.mjs","names":["Flexbox"],"sources":["../../../src/mobile/ChatInputArea/ChatInputArea.tsx"],"sourcesContent":["'use client';\n\nimport { useSize } from 'ahooks';\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\nimport {\n type FC,\n memo,\n type PropsWithChildren,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport ChatInputAreaInner from '@/chat/ChatInputArea/components/ChatInputAreaInner';\nimport { Flexbox } from '@/Flex';\nimport SafeArea from '@/mobile/SafeArea';\n\nimport { styles } from './style';\nimport { type ChatInputAreaProps } from './type';\n\nconst ChatInputArea = memo<ChatInputAreaProps>(\n ({\n ref,\n className,\n style,\n topAddons,\n textAreaLeftAddons,\n textAreaRightAddons,\n bottomAddons,\n expand = false,\n setExpand,\n onSend,\n onInput,\n loading,\n value,\n safeArea,\n }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const size = useSize(containerRef);\n const [showFullscreen, setShowFullscreen] = useState<boolean>(false);\n const [isFocused, setIsFocused] = useState<boolean>(false);\n\n useEffect(() => {\n if (!size?.height) return;\n setShowFullscreen(size.height > 72);\n }, [size]);\n\n const InnerContainer: FC<\n PropsWithChildren & {\n bottomAddons?: ReactNode;\n textAreaLeftAddons?: ReactNode;\n textAreaRightAddons?: ReactNode;\n topAddons?: ReactNode;\n }\n > = useCallback(\n ({ children, ...r }) =>\n expand ? (\n <Flexbox className={styles.inner} gap={8}>\n <Flexbox horizontal gap={8} justify={'flex-end'}>\n {r.textAreaLeftAddons}\n {r.textAreaRightAddons}\n </Flexbox>\n {children}\n {r.topAddons}\n {r.bottomAddons}\n </Flexbox>\n ) : (\n <Flexbox horizontal align={'flex-end'} className={styles.inner} gap={8}>\n {r.textAreaLeftAddons}\n {children}\n {r.textAreaRightAddons}\n </Flexbox>\n ),\n [expand, loading],\n );\n\n const showAddons = !expand && !isFocused;\n\n return (\n <Flexbox\n className={cx(styles.container, expand && styles.expand, className)}\n gap={12}\n style={style}\n >\n {topAddons && <Flexbox style={showAddons ? {} : { display: 'none' }}>{topAddons}</Flexbox>}\n <Flexbox\n className={cx(expand && styles.expand)}\n ref={containerRef}\n style={{ position: 'relative' }}\n >\n {showFullscreen && (\n <ActionIcon\n active\n className={styles.expandButton}\n icon={expand ? ChevronDown : ChevronUp}\n id={'sssssss'}\n size={{ blockSize: 24, borderRadius: '50%', size: 14 }}\n style={expand ? { top: 6 } : {}}\n onClick={() => setExpand?.(!expand)}\n />\n )}\n <InnerContainer\n bottomAddons={bottomAddons}\n textAreaLeftAddons={textAreaLeftAddons}\n textAreaRightAddons={textAreaRightAddons}\n topAddons={topAddons}\n >\n <ChatInputAreaInner\n autoSize={expand ? false : { maxRows: 6, minRows: 1 }}\n className={styles.expandTextArea}\n loading={loading}\n ref={ref}\n style={{ height: 36, paddingBlock: 6 }}\n value={value}\n variant={expand ? 'borderless' : 'filled'}\n onBlur={() => setIsFocused(false)}\n onFocus={() => setIsFocused(true)}\n onInput={onInput}\n onSend={onSend}\n />\n </InnerContainer>\n </Flexbox>\n {bottomAddons && (\n <Flexbox style={showAddons ? {} : { display: 'none' }}>{bottomAddons}</Flexbox>\n )}\n {safeArea && !isFocused && <SafeArea position={'bottom'} />}\n </Flexbox>\n );\n },\n);\n\nChatInputArea.displayName = 'ChatInputArea';\n\nexport default ChatInputArea;\n"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,gBAAgB,MACnB,EACC,KACA,WACA,OACA,WACA,oBACA,qBACA,cACA,SAAS,OACT,WACA,QACA,SACA,SACA,OACA,eACI;CACJ,MAAM,eAAe,OAAuB,IAAI;CAChD,MAAM,OAAO,QAAQ,YAAY;CACjC,MAAM,CAAC,gBAAgB,qBAAqB,SAAkB,KAAK;CACnE,MAAM,CAAC,WAAW,gBAAgB,SAAkB,KAAK;CAEzD,gBAAgB;EACd,IAAI,CAAC,MAAM,QAAQ;EACnB,kBAAkB,KAAK,SAAS,EAAE;CACpC,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,iBAOF,aACD,EAAE,UAAU,GAAG,QACd,SACE,qBAACA,mBAAD;EAAS,WAAW,OAAO;EAAO,KAAK;EAAvC,UAAA;GACE,qBAACA,mBAAD;IAAS,YAAA;IAAW,KAAK;IAAG,SAAS;IAArC,UAAA,CACG,EAAE,oBACF,EAAE,mBACI;;GACR;GACA,EAAE;GACF,EAAE;EACI;CAET,CAAA,IAAA,qBAACA,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAY,WAAW,OAAO;EAAO,KAAK;EAArE,UAAA;GACG,EAAE;GACF;GACA,EAAE;EACI;CAEb,CAAA,GAAA,CAAC,QAAQ,OAAO,CAClB;CAEA,MAAM,aAAa,CAAC,UAAU,CAAC;CAE/B,OACE,qBAACA,mBAAD;EACE,WAAW,GAAG,OAAO,WAAW,UAAU,OAAO,QAAQ,SAAS;EAClE,KAAK;EACE;EAHT,UAAA;GAKG,aAAa,oBAACA,mBAAD;IAAS,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,OAAO;IAAI,UAAA;GAAmB,CAAA;GACzF,qBAACA,mBAAD;IACE,WAAW,GAAG,UAAU,OAAO,MAAM;IACrC,KAAK;IACL,OAAO,EAAE,UAAU,WAAW;IAHhC,UAAA,CAKG,kBACC,oBAAC,YAAD;KACE,QAAA;KACA,WAAW,OAAO;KAClB,MAAM,SAAS,cAAc;KAC7B,IAAI;KACJ,MAAM;MAAE,WAAW;MAAI,cAAc;MAAO,MAAM;KAAG;KACrD,OAAO,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;KAC9B,eAAe,YAAY,CAAC,MAAM;IACnC,CAAA,GAEH,oBAAC,gBAAD;KACgB;KACM;KACC;KACV;KAEX,UAAA,oBAAC,oBAAD;MACE,UAAU,SAAS,QAAQ;OAAE,SAAS;OAAG,SAAS;MAAE;MACpD,WAAW,OAAO;MACT;MACJ;MACL,OAAO;OAAE,QAAQ;OAAI,cAAc;MAAE;MAC9B;MACP,SAAS,SAAS,eAAe;MACjC,cAAc,aAAa,KAAK;MAChC,eAAe,aAAa,IAAI;MACvB;MACD;KACT,CAAA;IACa,CAAA,CACT;;GACR,gBACC,oBAACA,mBAAD;IAAS,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,OAAO;IAAI,UAAA;GAAsB,CAAA;GAE/E,YAAY,CAAC,aAAa,oBAAC,UAAD,EAAU,UAAU,SAAW,CAAA;EACnD;;AAEb,CACF;AAEA,cAAc,cAAc"}
|
|
1
|
+
{"version":3,"file":"ChatInputArea.mjs","names":["Flexbox"],"sources":["../../../src/mobile/ChatInputArea/ChatInputArea.tsx"],"sourcesContent":["'use client';\n\nimport { useSize } from 'ahooks';\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\nimport {\n type FC,\n memo,\n type PropsWithChildren,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport ActionIcon from '@/base-ui/ActionIcon';\nimport ChatInputAreaInner from '@/chat/ChatInputArea/components/ChatInputAreaInner';\nimport { Flexbox } from '@/Flex';\nimport SafeArea from '@/mobile/SafeArea';\n\nimport { styles } from './style';\nimport { type ChatInputAreaProps } from './type';\n\nconst ChatInputArea = memo<ChatInputAreaProps>(\n ({\n ref,\n className,\n style,\n topAddons,\n textAreaLeftAddons,\n textAreaRightAddons,\n bottomAddons,\n expand = false,\n setExpand,\n onSend,\n onInput,\n loading,\n value,\n safeArea,\n }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const size = useSize(containerRef);\n const [showFullscreen, setShowFullscreen] = useState<boolean>(false);\n const [isFocused, setIsFocused] = useState<boolean>(false);\n\n useEffect(() => {\n if (!size?.height) return;\n setShowFullscreen(size.height > 72);\n }, [size]);\n\n const InnerContainer: FC<\n PropsWithChildren & {\n bottomAddons?: ReactNode;\n textAreaLeftAddons?: ReactNode;\n textAreaRightAddons?: ReactNode;\n topAddons?: ReactNode;\n }\n > = useCallback(\n ({ children, ...r }) =>\n expand ? (\n <Flexbox className={styles.inner} gap={8}>\n <Flexbox horizontal gap={8} justify={'flex-end'}>\n {r.textAreaLeftAddons}\n {r.textAreaRightAddons}\n </Flexbox>\n {children}\n {r.topAddons}\n {r.bottomAddons}\n </Flexbox>\n ) : (\n <Flexbox horizontal align={'flex-end'} className={styles.inner} gap={8}>\n {r.textAreaLeftAddons}\n {children}\n {r.textAreaRightAddons}\n </Flexbox>\n ),\n [expand, loading],\n );\n\n const showAddons = !expand && !isFocused;\n\n return (\n <Flexbox\n className={cx(styles.container, expand && styles.expand, className)}\n gap={12}\n style={style}\n >\n {topAddons && <Flexbox style={showAddons ? {} : { display: 'none' }}>{topAddons}</Flexbox>}\n <Flexbox\n className={cx(expand && styles.expand)}\n ref={containerRef}\n style={{ position: 'relative' }}\n >\n {showFullscreen && (\n <ActionIcon\n active\n className={styles.expandButton}\n icon={expand ? ChevronDown : ChevronUp}\n id={'sssssss'}\n size={{ blockSize: 24, borderRadius: '50%', size: 14 }}\n style={expand ? { top: 6 } : {}}\n onClick={() => setExpand?.(!expand)}\n />\n )}\n <InnerContainer\n bottomAddons={bottomAddons}\n textAreaLeftAddons={textAreaLeftAddons}\n textAreaRightAddons={textAreaRightAddons}\n topAddons={topAddons}\n >\n <ChatInputAreaInner\n autoSize={expand ? false : { maxRows: 6, minRows: 1 }}\n className={styles.expandTextArea}\n loading={loading}\n ref={ref}\n style={{ height: 36, paddingBlock: 6 }}\n value={value}\n variant={expand ? 'borderless' : 'filled'}\n onBlur={() => setIsFocused(false)}\n onFocus={() => setIsFocused(true)}\n onInput={onInput}\n onSend={onSend}\n />\n </InnerContainer>\n </Flexbox>\n {bottomAddons && (\n <Flexbox style={showAddons ? {} : { display: 'none' }}>{bottomAddons}</Flexbox>\n )}\n {safeArea && !isFocused && <SafeArea position={'bottom'} />}\n </Flexbox>\n );\n },\n);\n\nChatInputArea.displayName = 'ChatInputArea';\n\nexport default ChatInputArea;\n"],"mappings":";;;;;;;;;;;;AAwBA,MAAM,gBAAgB,MACnB,EACC,KACA,WACA,OACA,WACA,oBACA,qBACA,cACA,SAAS,OACT,WACA,QACA,SACA,SACA,OACA,eACI;CACJ,MAAM,eAAe,OAAuB,IAAI;CAChD,MAAM,OAAO,QAAQ,YAAY;CACjC,MAAM,CAAC,gBAAgB,qBAAqB,SAAkB,KAAK;CACnE,MAAM,CAAC,WAAW,gBAAgB,SAAkB,KAAK;CAEzD,gBAAgB;EACd,IAAI,CAAC,MAAM,QAAQ;EACnB,kBAAkB,KAAK,SAAS,EAAE;CACpC,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,iBAOF,aACD,EAAE,UAAU,GAAG,QACd,SACE,qBAACA,mBAAD;EAAS,WAAW,OAAO;EAAO,KAAK;EAAvC,UAAA;GACE,qBAACA,mBAAD;IAAS,YAAA;IAAW,KAAK;IAAG,SAAS;IAArC,UAAA,CACG,EAAE,oBACF,EAAE,mBACI;;GACR;GACA,EAAE;GACF,EAAE;EACI;CAET,CAAA,IAAA,qBAACA,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAY,WAAW,OAAO;EAAO,KAAK;EAArE,UAAA;GACG,EAAE;GACF;GACA,EAAE;EACI;CAEb,CAAA,GAAA,CAAC,QAAQ,OAAO,CAClB;CAEA,MAAM,aAAa,CAAC,UAAU,CAAC;CAE/B,OACE,qBAACA,mBAAD;EACE,WAAW,GAAG,OAAO,WAAW,UAAU,OAAO,QAAQ,SAAS;EAClE,KAAK;EACE;EAHT,UAAA;GAKG,aAAa,oBAACA,mBAAD;IAAS,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,OAAO;IAAI,UAAA;GAAmB,CAAA;GACzF,qBAACA,mBAAD;IACE,WAAW,GAAG,UAAU,OAAO,MAAM;IACrC,KAAK;IACL,OAAO,EAAE,UAAU,WAAW;IAHhC,UAAA,CAKG,kBACC,oBAAC,YAAD;KACE,QAAA;KACA,WAAW,OAAO;KAClB,MAAM,SAAS,cAAc;KAC7B,IAAI;KACJ,MAAM;MAAE,WAAW;MAAI,cAAc;MAAO,MAAM;KAAG;KACrD,OAAO,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;KAC9B,eAAe,YAAY,CAAC,MAAM;IACnC,CAAA,GAEH,oBAAC,gBAAD;KACgB;KACM;KACC;KACV;KAEX,UAAA,oBAAC,oBAAD;MACE,UAAU,SAAS,QAAQ;OAAE,SAAS;OAAG,SAAS;MAAE;MACpD,WAAW,OAAO;MACT;MACJ;MACL,OAAO;OAAE,QAAQ;OAAI,cAAc;MAAE;MAC9B;MACP,SAAS,SAAS,eAAe;MACjC,cAAc,aAAa,KAAK;MAChC,eAAe,aAAa,IAAI;MACvB;MACD;KACT,CAAA;IACa,CAAA,CACT;;GACR,gBACC,oBAACA,mBAAD;IAAS,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,OAAO;IAAI,UAAA;GAAsB,CAAA;GAE/E,YAAY,CAAC,aAAa,oBAAC,UAAD,EAAU,UAAU,SAAW,CAAA;EACnD;;AAEb,CACF;AAEA,cAAc,cAAc"}
|