@orion-ds/react 4.0.5 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index10.cjs +1 -1
- package/dist/index10.mjs +1 -1
- package/dist/index100.cjs +1 -1
- package/dist/index100.mjs +20 -40
- package/dist/index100.mjs.map +1 -1
- package/dist/index101.cjs +1 -1
- package/dist/index101.mjs +28 -40
- package/dist/index101.mjs.map +1 -1
- package/dist/index102.cjs +1 -1
- package/dist/index102.mjs +46 -33
- package/dist/index102.mjs.map +1 -1
- package/dist/index103.cjs +1 -1
- package/dist/index103.mjs +42 -27
- package/dist/index103.mjs.map +1 -1
- package/dist/index104.cjs +1 -1
- package/dist/index104.mjs +56 -30
- package/dist/index104.mjs.map +1 -1
- package/dist/index105.cjs +1 -1
- package/dist/index105.mjs +25 -15
- package/dist/index105.mjs.map +1 -1
- package/dist/index106.cjs +1 -1
- package/dist/index106.mjs +64 -52
- package/dist/index106.mjs.map +1 -1
- package/dist/index107.cjs +1 -1
- package/dist/index107.mjs +20 -20
- package/dist/index108.cjs +1 -1
- package/dist/index108.mjs +45 -36
- package/dist/index108.mjs.map +1 -1
- package/dist/index109.cjs +1 -1
- package/dist/index109.mjs +24 -42
- package/dist/index109.mjs.map +1 -1
- package/dist/index11.cjs +1 -1
- package/dist/index11.mjs +1 -1
- package/dist/index110.cjs +1 -1
- package/dist/index110.mjs +40 -18
- package/dist/index110.mjs.map +1 -1
- package/dist/index111.cjs +1 -1
- package/dist/index111.mjs +18 -28
- package/dist/index111.mjs.map +1 -1
- package/dist/index112.cjs +1 -1
- package/dist/index112.mjs +55 -12
- package/dist/index112.mjs.map +1 -1
- package/dist/index114.cjs +1 -1
- package/dist/index114.mjs +62 -28
- package/dist/index114.mjs.map +1 -1
- package/dist/index115.cjs +1 -1
- package/dist/index115.mjs +65 -45
- package/dist/index115.mjs.map +1 -1
- package/dist/index116.cjs +1 -1
- package/dist/index116.mjs +234 -18
- package/dist/index116.mjs.map +1 -1
- package/dist/index117.cjs +1 -1
- package/dist/index117.cjs.map +1 -1
- package/dist/index117.mjs +34 -29
- package/dist/index117.mjs.map +1 -1
- package/dist/index118.cjs +1 -1
- package/dist/index118.cjs.map +1 -1
- package/dist/index118.mjs +44 -31
- package/dist/index118.mjs.map +1 -1
- package/dist/index119.cjs +1 -1
- package/dist/index119.cjs.map +1 -1
- package/dist/index119.mjs +170 -22
- package/dist/index119.mjs.map +1 -1
- package/dist/index12.cjs +1 -1
- package/dist/index12.mjs +1 -1
- package/dist/index120.cjs +1 -1
- package/dist/index120.cjs.map +1 -1
- package/dist/index120.mjs +186 -39
- package/dist/index120.mjs.map +1 -1
- package/dist/index121.cjs +1 -1
- package/dist/index121.cjs.map +1 -1
- package/dist/index121.mjs +29 -66
- package/dist/index121.mjs.map +1 -1
- package/dist/index122.cjs +1 -1
- package/dist/index122.cjs.map +1 -1
- package/dist/index122.mjs +90 -18
- package/dist/index122.mjs.map +1 -1
- package/dist/index123.cjs +1 -1
- package/dist/index123.cjs.map +1 -1
- package/dist/index123.mjs +53 -54
- package/dist/index123.mjs.map +1 -1
- package/dist/index124.cjs +1 -1
- package/dist/index124.cjs.map +1 -1
- package/dist/index124.mjs +66 -30
- package/dist/index124.mjs.map +1 -1
- package/dist/index125.cjs +1 -1
- package/dist/index125.cjs.map +1 -1
- package/dist/index125.mjs +124 -62
- package/dist/index125.mjs.map +1 -1
- package/dist/index126.cjs +1 -1
- package/dist/index126.cjs.map +1 -1
- package/dist/index126.mjs +108 -55
- package/dist/index126.mjs.map +1 -1
- package/dist/index127.cjs +1 -1
- package/dist/index127.cjs.map +1 -1
- package/dist/index127.mjs +111 -44
- package/dist/index127.mjs.map +1 -1
- package/dist/index128.cjs +1 -1
- package/dist/index128.cjs.map +1 -1
- package/dist/index128.mjs +122 -14
- package/dist/index128.mjs.map +1 -1
- package/dist/index129.cjs +1 -1
- package/dist/index129.cjs.map +1 -1
- package/dist/index129.mjs +214 -33
- package/dist/index129.mjs.map +1 -1
- package/dist/index13.cjs +1 -1
- package/dist/index13.mjs +1 -1
- package/dist/index130.cjs +1 -1
- package/dist/index130.mjs +42 -28
- package/dist/index130.mjs.map +1 -1
- package/dist/index131.cjs +1 -1
- package/dist/index131.mjs +40 -22
- package/dist/index131.mjs.map +1 -1
- package/dist/index132.cjs +1 -1
- package/dist/index132.mjs +106 -64
- package/dist/index132.mjs.map +1 -1
- package/dist/index133.cjs +1 -1
- package/dist/index133.mjs +20 -44
- package/dist/index133.mjs.map +1 -1
- package/dist/index134.cjs +1 -1
- package/dist/index134.mjs +30 -57
- package/dist/index134.mjs.map +1 -1
- package/dist/index135.cjs +1 -1
- package/dist/index135.mjs +46 -44
- package/dist/index135.mjs.map +1 -1
- package/dist/index136.cjs +1 -1
- package/dist/index136.mjs +12 -38
- package/dist/index136.mjs.map +1 -1
- package/dist/index137.cjs +1 -1
- package/dist/index137.mjs +32 -28
- package/dist/index137.mjs.map +1 -1
- package/dist/index138.cjs +1 -1
- package/dist/index138.mjs +27 -24
- package/dist/index138.mjs.map +1 -1
- package/dist/index139.cjs +1 -1
- package/dist/index139.mjs +33 -67
- package/dist/index139.mjs.map +1 -1
- package/dist/index14.cjs +1 -1
- package/dist/index14.mjs +1 -1
- package/dist/index140.cjs +1 -1
- package/dist/index140.mjs +57 -76
- package/dist/index140.mjs.map +1 -1
- package/dist/index141.cjs +1 -1
- package/dist/index141.mjs +30 -46
- package/dist/index141.mjs.map +1 -1
- package/dist/index142.cjs +1 -1
- package/dist/index142.mjs +32 -234
- package/dist/index142.mjs.map +1 -1
- package/dist/index143.cjs +1 -1
- package/dist/index143.cjs.map +1 -1
- package/dist/index143.mjs +51 -34
- package/dist/index143.mjs.map +1 -1
- package/dist/index144.cjs +1 -1
- package/dist/index144.cjs.map +1 -1
- package/dist/index144.mjs +17 -44
- package/dist/index144.mjs.map +1 -1
- package/dist/index145.cjs +1 -1
- package/dist/index145.cjs.map +1 -1
- package/dist/index145.mjs +30 -170
- package/dist/index145.mjs.map +1 -1
- package/dist/index146.cjs +1 -1
- package/dist/index146.cjs.map +1 -1
- package/dist/index146.mjs +47 -186
- package/dist/index146.mjs.map +1 -1
- package/dist/index147.cjs +1 -1
- package/dist/index147.cjs.map +1 -1
- package/dist/index147.mjs +43 -29
- package/dist/index147.mjs.map +1 -1
- package/dist/index148.cjs +1 -1
- package/dist/index148.cjs.map +1 -1
- package/dist/index148.mjs +28 -90
- package/dist/index148.mjs.map +1 -1
- package/dist/index149.cjs +1 -1
- package/dist/index149.cjs.map +1 -1
- package/dist/index149.mjs +29 -53
- package/dist/index149.mjs.map +1 -1
- package/dist/index15.cjs +1 -1
- package/dist/index15.mjs +1 -1
- package/dist/index150.cjs +1 -1
- package/dist/index150.cjs.map +1 -1
- package/dist/index150.mjs +30 -66
- package/dist/index150.mjs.map +1 -1
- package/dist/index151.cjs +1 -1
- package/dist/index151.cjs.map +1 -1
- package/dist/index151.mjs +24 -124
- package/dist/index151.mjs.map +1 -1
- package/dist/index152.cjs +1 -1
- package/dist/index152.cjs.map +1 -1
- package/dist/index152.mjs +22 -108
- package/dist/index152.mjs.map +1 -1
- package/dist/index153.cjs +1 -1
- package/dist/index153.cjs.map +1 -1
- package/dist/index153.mjs +36 -111
- package/dist/index153.mjs.map +1 -1
- package/dist/index154.cjs +1 -1
- package/dist/index154.cjs.map +1 -1
- package/dist/index154.mjs +38 -122
- package/dist/index154.mjs.map +1 -1
- package/dist/index155.cjs +1 -1
- package/dist/index155.cjs.map +1 -1
- package/dist/index155.mjs +12 -214
- package/dist/index155.mjs.map +1 -1
- package/dist/index156.cjs +1 -1
- package/dist/index156.mjs +27 -49
- package/dist/index156.mjs.map +1 -1
- package/dist/index157.cjs +1 -1
- package/dist/index157.mjs +38 -24
- package/dist/index157.mjs.map +1 -1
- package/dist/index158.cjs +1 -1
- package/dist/index158.mjs +33 -32
- package/dist/index158.mjs.map +1 -1
- package/dist/index159.cjs +1 -1
- package/dist/index159.mjs +30 -18
- package/dist/index159.mjs.map +1 -1
- package/dist/index16.cjs +1 -1
- package/dist/index16.mjs +1 -1
- package/dist/index160.cjs +1 -1
- package/dist/index160.mjs +14 -26
- package/dist/index160.mjs.map +1 -1
- package/dist/index161.cjs +1 -1
- package/dist/index161.mjs +18 -46
- package/dist/index161.mjs.map +1 -1
- package/dist/index162.cjs +1 -1
- package/dist/index162.mjs +28 -24
- package/dist/index162.mjs.map +1 -1
- package/dist/index163.cjs +1 -1
- package/dist/index163.mjs +18 -56
- package/dist/index163.mjs.map +1 -1
- package/dist/index164.cjs +1 -1
- package/dist/index164.mjs +65 -40
- package/dist/index164.mjs.map +1 -1
- package/dist/index165.cjs +1 -1
- package/dist/index165.mjs +30 -62
- package/dist/index165.mjs.map +1 -1
- package/dist/index166.cjs +1 -1
- package/dist/index166.mjs +44 -20
- package/dist/index166.mjs.map +1 -1
- package/dist/index167.cjs +1 -1
- package/dist/index167.mjs +52 -106
- package/dist/index167.mjs.map +1 -1
- package/dist/index168.cjs +1 -1
- package/dist/index168.cjs.map +1 -1
- package/dist/index168.mjs +37 -21
- package/dist/index168.mjs.map +1 -1
- package/dist/index169.cjs +1 -1
- package/dist/index169.mjs +28 -30
- package/dist/index169.mjs.map +1 -1
- package/dist/index17.cjs +1 -1
- package/dist/index17.mjs +1 -1
- package/dist/index170.cjs +1 -1
- package/dist/index170.mjs +18 -12
- package/dist/index170.mjs.map +1 -1
- package/dist/index171.cjs +1 -1
- package/dist/index171.mjs +33 -32
- package/dist/index171.mjs.map +1 -1
- package/dist/index172.cjs +1 -1
- package/dist/index172.mjs +20 -40
- package/dist/index172.mjs.map +1 -1
- package/dist/index173.cjs +1 -1
- package/dist/index173.cjs.map +1 -1
- package/dist/index173.mjs +25 -37
- package/dist/index173.mjs.map +1 -1
- package/dist/index174.cjs +1 -1
- package/dist/index174.mjs +64 -28
- package/dist/index174.mjs.map +1 -1
- package/dist/index175.cjs +1 -1
- package/dist/index175.mjs +76 -33
- package/dist/index175.mjs.map +1 -1
- package/dist/index176.cjs +1 -1
- package/dist/index176.mjs +40 -52
- package/dist/index176.mjs.map +1 -1
- package/dist/index177.cjs +1 -1
- package/dist/index177.mjs +52 -18
- package/dist/index177.mjs.map +1 -1
- package/dist/index178.cjs +1 -1
- package/dist/index178.mjs +53 -42
- package/dist/index178.mjs.map +1 -1
- package/dist/index179.cjs +1 -1
- package/dist/index179.mjs +18 -28
- package/dist/index179.mjs.map +1 -1
- package/dist/index18.cjs +1 -1
- package/dist/index18.mjs +1 -1
- package/dist/index180.cjs +1 -1
- package/dist/index180.mjs +42 -28
- package/dist/index180.mjs.map +1 -1
- package/dist/index181.cjs +1 -1
- package/dist/index181.mjs +28 -64
- package/dist/index181.mjs.map +1 -1
- package/dist/index182.cjs +1 -1
- package/dist/index182.mjs +17 -17
- package/dist/index182.mjs.map +1 -1
- package/dist/index183.cjs +1 -1
- package/dist/index183.mjs +17 -17
- package/dist/index183.mjs.map +1 -1
- package/dist/index185.cjs +1 -1
- package/dist/index185.mjs +1 -1
- package/dist/index19.cjs +1 -1
- package/dist/index19.mjs +2 -2
- package/dist/index20.cjs +1 -1
- package/dist/index20.mjs +14 -14
- package/dist/index21.cjs +1 -1
- package/dist/index21.cjs.map +1 -1
- package/dist/index21.mjs +1 -1
- package/dist/index22.cjs +1 -1
- package/dist/index22.mjs +1 -1
- package/dist/index23.cjs +1 -1
- package/dist/index23.mjs +1 -1
- package/dist/index24.cjs +1 -1
- package/dist/index24.mjs +1 -1
- package/dist/index25.cjs +1 -1
- package/dist/index25.mjs +1 -1
- package/dist/index26.cjs +1 -1
- package/dist/index26.cjs.map +1 -1
- package/dist/index26.mjs +1 -1
- package/dist/index27.cjs +1 -1
- package/dist/index27.mjs +1 -1
- package/dist/index28.cjs +1 -1
- package/dist/index28.mjs +1 -1
- package/dist/index29.cjs +1 -1
- package/dist/index29.mjs +1 -1
- package/dist/index30.cjs +1 -1
- package/dist/index30.mjs +1 -1
- package/dist/index31.cjs +1 -1
- package/dist/index31.mjs +1 -1
- package/dist/index32.cjs +1 -1
- package/dist/index32.mjs +1 -1
- package/dist/index33.cjs +1 -1
- package/dist/index33.mjs +1 -1
- package/dist/index34.cjs +1 -1
- package/dist/index34.mjs +1 -1
- package/dist/index35.cjs +1 -1
- package/dist/index35.mjs +1 -1
- package/dist/index36.cjs +1 -1
- package/dist/index36.mjs +1 -1
- package/dist/index37.cjs +1 -1
- package/dist/index37.mjs +1 -1
- package/dist/index38.cjs +1 -1
- package/dist/index38.mjs +1 -1
- package/dist/index39.cjs +1 -1
- package/dist/index39.mjs +1 -1
- package/dist/index40.cjs +1 -1
- package/dist/index40.mjs +1 -1
- package/dist/index42.cjs +1 -1
- package/dist/index42.mjs +1 -1
- package/dist/index43.cjs +1 -1
- package/dist/index43.mjs +1 -1
- package/dist/index46.cjs +1 -1
- package/dist/index46.mjs +1 -1
- package/dist/index47.cjs +1 -1
- package/dist/index47.mjs +1 -1
- package/dist/index49.cjs +1 -1
- package/dist/index49.mjs +1 -1
- package/dist/index5.cjs +1 -1
- package/dist/index5.mjs +1 -1
- package/dist/index50.cjs +1 -1
- package/dist/index50.mjs +1 -1
- package/dist/index51.cjs +1 -1
- package/dist/index51.mjs +1 -1
- package/dist/index52.cjs +1 -1
- package/dist/index52.mjs +1 -1
- package/dist/index53.cjs +1 -1
- package/dist/index53.mjs +1 -1
- package/dist/index54.cjs +1 -1
- package/dist/index54.mjs +1 -1
- package/dist/index55.cjs +1 -1
- package/dist/index55.mjs +1 -1
- package/dist/index56.cjs +1 -1
- package/dist/index56.mjs +1 -1
- package/dist/index57.cjs +1 -1
- package/dist/index57.mjs +1 -1
- package/dist/index58.cjs +1 -1
- package/dist/index58.mjs +1 -1
- package/dist/index59.cjs +1 -1
- package/dist/index59.mjs +1 -1
- package/dist/index6.cjs +1 -1
- package/dist/index6.mjs +1 -1
- package/dist/index60.cjs +1 -1
- package/dist/index60.mjs +1 -1
- package/dist/index61.cjs +1 -1
- package/dist/index61.mjs +1 -1
- package/dist/index62.cjs +1 -1
- package/dist/index62.mjs +1 -1
- package/dist/index63.cjs +1 -1
- package/dist/index63.mjs +1 -1
- package/dist/index64.cjs +1 -1
- package/dist/index64.mjs +1 -1
- package/dist/index65.cjs +1 -1
- package/dist/index65.mjs +1 -1
- package/dist/index66.cjs +1 -1
- package/dist/index66.mjs +1 -1
- package/dist/index67.cjs +1 -1
- package/dist/index67.mjs +1 -1
- package/dist/index68.cjs +1 -1
- package/dist/index68.mjs +1 -1
- package/dist/index69.cjs +1 -1
- package/dist/index69.mjs +1 -1
- package/dist/index7.cjs +1 -1
- package/dist/index7.mjs +1 -1
- package/dist/index70.cjs +1 -1
- package/dist/index70.mjs +1 -1
- package/dist/index71.cjs +1 -1
- package/dist/index71.mjs +1 -1
- package/dist/index72.cjs +1 -1
- package/dist/index72.mjs +1 -1
- package/dist/index73.cjs +1 -1
- package/dist/index73.mjs +1 -1
- package/dist/index75.cjs +7 -10
- package/dist/index75.cjs.map +1 -1
- package/dist/index75.mjs +18 -21
- package/dist/index75.mjs.map +1 -1
- package/dist/index76.cjs +1 -1
- package/dist/index76.mjs +1 -1
- package/dist/index77.cjs +1 -1
- package/dist/index77.mjs +1 -1
- package/dist/index78.cjs +1 -1
- package/dist/index78.mjs +1 -1
- package/dist/index79.cjs +1 -1
- package/dist/index79.mjs +1 -1
- package/dist/index8.cjs +1 -1
- package/dist/index8.mjs +1 -1
- package/dist/index80.cjs +1 -1
- package/dist/index80.mjs +1 -1
- package/dist/index81.cjs +1 -1
- package/dist/index81.mjs +1 -1
- package/dist/index82.cjs +1 -1
- package/dist/index82.mjs +2 -2
- package/dist/index9.cjs +1 -1
- package/dist/index9.mjs +1 -1
- package/dist/index97.cjs +1 -1
- package/dist/index97.cjs.map +1 -1
- package/dist/index97.mjs +62 -154
- package/dist/index97.mjs.map +1 -1
- package/dist/index98.cjs +1 -1
- package/dist/index98.cjs.map +1 -1
- package/dist/index98.mjs +138 -202
- package/dist/index98.mjs.map +1 -1
- package/dist/index99.cjs +1 -1
- package/dist/index99.cjs.map +1 -1
- package/dist/index99.mjs +218 -30
- package/dist/index99.mjs.map +1 -1
- package/package.json +1 -5
package/dist/index123.mjs
CHANGED
|
@@ -1,57 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
import { jsx as e, Fragment as c } from "react/jsx-runtime";
|
|
2
|
+
import l from "react-markdown";
|
|
3
|
+
import d from "remark-gfm";
|
|
4
|
+
import { ChatCodeBlock as p } from "./index122.mjs";
|
|
5
|
+
import g from "./index116.mjs";
|
|
6
|
+
const f = ({
|
|
7
|
+
content: a,
|
|
8
|
+
className: i,
|
|
9
|
+
...m
|
|
10
|
+
}) => /* @__PURE__ */ e(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
className: [g.markdown, i].filter(Boolean).join(" "),
|
|
14
|
+
...m,
|
|
15
|
+
children: /* @__PURE__ */ e(
|
|
16
|
+
l,
|
|
17
|
+
{
|
|
18
|
+
remarkPlugins: [d],
|
|
19
|
+
components: {
|
|
20
|
+
// Custom code block rendering
|
|
21
|
+
code({ className: r, children: o, ...t }) {
|
|
22
|
+
const n = /language-(\w+)/.exec(r || "");
|
|
23
|
+
if (!n)
|
|
24
|
+
return /* @__PURE__ */ e("code", { className: r, ...t, children: o });
|
|
25
|
+
const s = String(o).replace(/\n$/, "");
|
|
26
|
+
return /* @__PURE__ */ e(p, { code: s, language: n[1] });
|
|
27
|
+
},
|
|
28
|
+
// Custom pre rendering (remove wrapper for code blocks)
|
|
29
|
+
pre({ children: r }) {
|
|
30
|
+
return /* @__PURE__ */ e(c, { children: r });
|
|
31
|
+
},
|
|
32
|
+
// Custom link rendering (open in new tab)
|
|
33
|
+
a({ href: r, children: o, ...t }) {
|
|
34
|
+
const n = r?.startsWith("http");
|
|
35
|
+
return /* @__PURE__ */ e(
|
|
36
|
+
"a",
|
|
37
|
+
{
|
|
38
|
+
href: r,
|
|
39
|
+
target: n ? "_blank" : void 0,
|
|
40
|
+
rel: n ? "noopener noreferrer" : void 0,
|
|
41
|
+
...t,
|
|
42
|
+
children: o
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
children: a
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
f.displayName = "ChatMarkdown";
|
|
33
53
|
export {
|
|
34
|
-
|
|
35
|
-
u as actionsWrapper,
|
|
36
|
-
i as collapseIcon,
|
|
37
|
-
d as collapsed,
|
|
38
|
-
r as collapsible,
|
|
39
|
-
p as content,
|
|
40
|
-
x as default,
|
|
41
|
-
a as description,
|
|
42
|
-
n as disabled,
|
|
43
|
-
_ as divider,
|
|
44
|
-
g as fields,
|
|
45
|
-
e as formSection,
|
|
46
|
-
b as group,
|
|
47
|
-
m as groupFields,
|
|
48
|
-
v as groupHelp,
|
|
49
|
-
h as groupLabel,
|
|
50
|
-
o as header,
|
|
51
|
-
t as headerContent,
|
|
52
|
-
c as headerText,
|
|
53
|
-
l as icon,
|
|
54
|
-
f as iconCollapsed,
|
|
55
|
-
s as title
|
|
54
|
+
f as ChatMarkdown
|
|
56
55
|
};
|
|
57
56
|
//# sourceMappingURL=index123.mjs.map
|
package/dist/index123.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index123.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index123.mjs","sources":["../src/components/Chat/components/ChatMarkdown.tsx"],"sourcesContent":["/**\n * ChatMarkdown Component\n *\n * Markdown renderer with support for GFM (tables, strikethrough, etc.)\n * and custom code block rendering.\n */\n\nimport React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport type { ChatMarkdownProps } from \"../Chat.types\";\nimport { ChatCodeBlock } from \"./ChatCodeBlock\";\nimport styles from \"../Chat.module.css\";\n\nexport const ChatMarkdown: React.FC<ChatMarkdownProps> = ({\n content,\n className,\n ...rest\n}) => {\n return (\n <div\n className={[styles.markdown, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n // Custom code block rendering\n code({ className: codeClassName, children, ...props }) {\n const match = /language-(\\w+)/.exec(codeClassName || \"\");\n const isInline = !match;\n\n if (isInline) {\n // Inline code\n return (\n <code className={codeClassName} {...props}>\n {children}\n </code>\n );\n }\n\n // Code block with syntax highlighting\n const codeString = String(children).replace(/\\n$/, \"\");\n return <ChatCodeBlock code={codeString} language={match[1]} />;\n },\n\n // Custom pre rendering (remove wrapper for code blocks)\n pre({ children }) {\n return <>{children}</>;\n },\n\n // Custom link rendering (open in new tab)\n a({ href, children, ...props }) {\n const isExternal = href?.startsWith(\"http\");\n return (\n <a\n href={href}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n {...props}\n >\n {children}\n </a>\n );\n },\n }}\n >\n {content}\n </ReactMarkdown>\n </div>\n );\n};\n\nChatMarkdown.displayName = \"ChatMarkdown\";\n"],"names":["ChatMarkdown","content","className","rest","jsx","styles","ReactMarkdown","remarkGfm","codeClassName","children","props","match","codeString","ChatCodeBlock","href","isExternal"],"mappings":";;;;;AAcO,MAAMA,IAA4C,CAAC;AAAA,EACxD,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,CAACC,EAAO,UAAUH,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAC/D,GAAGC;AAAA,IAEJ,UAAA,gBAAAC;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,eAAe,CAACC,CAAS;AAAA,QACzB,YAAY;AAAA;AAAA,UAEV,KAAK,EAAE,WAAWC,GAAe,UAAAC,GAAU,GAAGC,KAAS;AACrD,kBAAMC,IAAQ,iBAAiB,KAAKH,KAAiB,EAAE;AAGvD,gBAFiB,CAACG;AAIhB,uCACG,QAAA,EAAK,WAAWH,GAAgB,GAAGE,GACjC,UAAAD,GACH;AAKJ,kBAAMG,IAAa,OAAOH,CAAQ,EAAE,QAAQ,OAAO,EAAE;AACrD,qCAAQI,GAAA,EAAc,MAAMD,GAAY,UAAUD,EAAM,CAAC,GAAG;AAAA,UAC9D;AAAA;AAAA,UAGA,IAAI,EAAE,UAAAF,KAAY;AAChB,0CAAU,UAAAA,GAAS;AAAA,UACrB;AAAA;AAAA,UAGA,EAAE,EAAE,MAAAK,GAAM,UAAAL,GAAU,GAAGC,KAAS;AAC9B,kBAAMK,IAAaD,GAAM,WAAW,MAAM;AAC1C,mBACE,gBAAAV;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAAU;AAAA,gBACA,QAAQC,IAAa,WAAW;AAAA,gBAChC,KAAKA,IAAa,wBAAwB;AAAA,gBACzC,GAAGL;AAAA,gBAEH,UAAAD;AAAA,cAAA;AAAA,YAAA;AAAA,UAGP;AAAA,QAAA;AAAA,QAGD,UAAAR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH;AAAA;AAKND,EAAa,cAAc;"}
|
package/dist/index124.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),I=require("lucide-react"),a=require("./index116.cjs"),w=require("./index185.cjs"),u=({src:i,alt:t="Image attachment",thumbnail:g,onClick:n,enableLightbox:s=!0,className:o,...l})=>{const[h,c]=d.useState(!1),[f,v]=d.useState(!1),m=()=>{n?n():s&&c(!0)},x=r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),m())},j=()=>{v(!0)};return f?e.jsxs("div",{className:[a.default.imagePreview,a.default.attachmentPreview,o].filter(Boolean).join(" "),...l,children:[e.jsx("div",{className:a.default.attachmentPreviewIcon,children:e.jsx(I.ImageOff,{size:20})}),e.jsx("span",{className:a.default.attachmentPreviewName,children:"Image failed to load"})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:[a.default.imagePreview,o].filter(Boolean).join(" "),onClick:m,onKeyDown:x,role:"button",tabIndex:0,"aria-label":t,...l,children:e.jsx("img",{src:g||i,alt:t,className:a.default.imagePreviewImg,onError:j,loading:"lazy"})}),s&&e.jsx(w.ChatLightbox,{src:i,alt:t,isOpen:h,onClose:()=>c(!1)})]})};u.displayName="ChatImagePreview";exports.ChatImagePreview=u;
|
|
2
2
|
//# sourceMappingURL=index124.cjs.map
|
package/dist/index124.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index124.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index124.cjs","sources":["../src/components/Chat/components/ChatImagePreview.tsx"],"sourcesContent":["/**\n * ChatImagePreview Component\n *\n * Displays image attachments with thumbnail and lightbox support.\n */\n\nimport React, { useState } from \"react\";\nimport { ImageOff } from \"lucide-react\";\nimport type { ChatImagePreviewProps } from \"../Chat.types\";\nimport styles from \"../Chat.module.css\";\nimport { ChatLightbox } from \"./ChatLightbox\";\n\nexport const ChatImagePreview: React.FC<ChatImagePreviewProps> = ({\n src,\n alt = \"Image attachment\",\n thumbnail,\n onClick,\n enableLightbox = true,\n className,\n ...rest\n}) => {\n const [isLightboxOpen, setIsLightboxOpen] = useState(false);\n const [imageError, setImageError] = useState(false);\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else if (enableLightbox) {\n setIsLightboxOpen(true);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClick();\n }\n };\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n if (imageError) {\n return (\n <div\n className={[styles.imagePreview, styles.attachmentPreview, className]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n <div className={styles.attachmentPreviewIcon}>\n <ImageOff size={20} />\n </div>\n <span className={styles.attachmentPreviewName}>\n Image failed to load\n </span>\n </div>\n );\n }\n\n return (\n <>\n <div\n className={[styles.imagePreview, className].filter(Boolean).join(\" \")}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-label={alt}\n {...rest}\n >\n <img\n src={thumbnail || src}\n alt={alt}\n className={styles.imagePreviewImg}\n onError={handleImageError}\n loading=\"lazy\"\n />\n </div>\n\n {enableLightbox && (\n <ChatLightbox\n src={src}\n alt={alt}\n isOpen={isLightboxOpen}\n onClose={() => setIsLightboxOpen(false)}\n />\n )}\n </>\n );\n};\n\nChatImagePreview.displayName = \"ChatImagePreview\";\n"],"names":["ChatImagePreview","src","alt","thumbnail","onClick","enableLightbox","className","rest","isLightboxOpen","setIsLightboxOpen","useState","imageError","setImageError","handleClick","handleKeyDown","e","handleImageError","jsxs","styles","jsx","ImageOff","Fragment","ChatLightbox"],"mappings":"0NAYaA,EAAoD,CAAC,CAChE,IAAAC,EACA,IAAAC,EAAM,mBACN,UAAAC,EACA,QAAAC,EACA,eAAAC,EAAiB,GACjB,UAAAC,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAACC,EAAgBC,CAAiB,EAAIC,EAAAA,SAAS,EAAK,EACpD,CAACC,EAAYC,CAAa,EAAIF,EAAAA,SAAS,EAAK,EAE5CG,EAAc,IAAM,CACpBT,EACFA,EAAA,EACSC,GACTI,EAAkB,EAAI,CAE1B,EAEMK,EAAiBC,GAA2B,EAC5CA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFF,EAAA,EAEJ,EAEMG,EAAmB,IAAM,CAC7BJ,EAAc,EAAI,CACpB,EAEA,OAAID,EAEAM,EAAAA,KAAC,MAAA,CACC,UAAW,CAACC,EAAAA,QAAO,aAAcA,EAAAA,QAAO,kBAAmBZ,CAAS,EACjE,OAAO,OAAO,EACd,KAAK,GAAG,EACV,GAAGC,EAEJ,SAAA,CAAAY,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,sBACrB,eAACE,EAAAA,SAAA,CAAS,KAAM,GAAI,CAAA,CACtB,EACAD,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,sBAAuB,SAAA,sBAAA,CAE/C,CAAA,CAAA,CAAA,EAMJD,EAAAA,KAAAI,WAAA,CACE,SAAA,CAAAF,EAAAA,IAAC,MAAA,CACC,UAAW,CAACD,UAAO,aAAcZ,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACpE,QAASO,EACT,UAAWC,EACX,KAAK,SACL,SAAU,EACV,aAAYZ,EACX,GAAGK,EAEJ,SAAAY,EAAAA,IAAC,MAAA,CACC,IAAKhB,GAAaF,EAClB,IAAAC,EACA,UAAWgB,EAAAA,QAAO,gBAClB,QAASF,EACT,QAAQ,MAAA,CAAA,CACV,CAAA,EAGDX,GACCc,EAAAA,IAACG,EAAAA,aAAA,CACC,IAAArB,EACA,IAAAC,EACA,OAAQM,EACR,QAAS,IAAMC,EAAkB,EAAK,CAAA,CAAA,CACxC,EAEJ,CAEJ,EAEAT,EAAiB,YAAc"}
|
package/dist/index124.mjs
CHANGED
|
@@ -1,34 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { jsxs as f, jsx as e, Fragment as u } from "react/jsx-runtime";
|
|
2
|
+
import { useState as g } from "react";
|
|
3
|
+
import { ImageOff as P } from "lucide-react";
|
|
4
|
+
import a from "./index116.mjs";
|
|
5
|
+
import { ChatLightbox as y } from "./index185.mjs";
|
|
6
|
+
const x = ({
|
|
7
|
+
src: i,
|
|
8
|
+
alt: r = "Image attachment",
|
|
9
|
+
thumbnail: h,
|
|
10
|
+
onClick: o,
|
|
11
|
+
enableLightbox: n = !0,
|
|
12
|
+
className: m,
|
|
13
|
+
...s
|
|
14
|
+
}) => {
|
|
15
|
+
const [d, l] = g(!1), [p, v] = g(!1), c = () => {
|
|
16
|
+
o ? o() : n && l(!0);
|
|
17
|
+
}, I = (t) => {
|
|
18
|
+
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), c());
|
|
19
|
+
}, w = () => {
|
|
20
|
+
v(!0);
|
|
21
|
+
};
|
|
22
|
+
return p ? /* @__PURE__ */ f(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
className: [a.imagePreview, a.attachmentPreview, m].filter(Boolean).join(" "),
|
|
26
|
+
...s,
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ e("div", { className: a.attachmentPreviewIcon, children: /* @__PURE__ */ e(P, { size: 20 }) }),
|
|
29
|
+
/* @__PURE__ */ e("span", { className: a.attachmentPreviewName, children: "Image failed to load" })
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
) : /* @__PURE__ */ f(u, { children: [
|
|
33
|
+
/* @__PURE__ */ e(
|
|
34
|
+
"div",
|
|
35
|
+
{
|
|
36
|
+
className: [a.imagePreview, m].filter(Boolean).join(" "),
|
|
37
|
+
onClick: c,
|
|
38
|
+
onKeyDown: I,
|
|
39
|
+
role: "button",
|
|
40
|
+
tabIndex: 0,
|
|
41
|
+
"aria-label": r,
|
|
42
|
+
...s,
|
|
43
|
+
children: /* @__PURE__ */ e(
|
|
44
|
+
"img",
|
|
45
|
+
{
|
|
46
|
+
src: h || i,
|
|
47
|
+
alt: r,
|
|
48
|
+
className: a.imagePreviewImg,
|
|
49
|
+
onError: w,
|
|
50
|
+
loading: "lazy"
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
),
|
|
55
|
+
n && /* @__PURE__ */ e(
|
|
56
|
+
y,
|
|
57
|
+
{
|
|
58
|
+
src: i,
|
|
59
|
+
alt: r,
|
|
60
|
+
isOpen: d,
|
|
61
|
+
onClose: () => l(!1)
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
] });
|
|
16
65
|
};
|
|
66
|
+
x.displayName = "ChatImagePreview";
|
|
17
67
|
export {
|
|
18
|
-
|
|
19
|
-
p as default,
|
|
20
|
-
_ as disabled,
|
|
21
|
-
s as dot,
|
|
22
|
-
l as error,
|
|
23
|
-
z as errorMessage,
|
|
24
|
-
k as helperText,
|
|
25
|
-
d as input,
|
|
26
|
-
c as label,
|
|
27
|
-
r as labelWrapper,
|
|
28
|
-
a as lg,
|
|
29
|
-
n as md,
|
|
30
|
-
o as radio,
|
|
31
|
-
i as required,
|
|
32
|
-
t as sm
|
|
68
|
+
x as ChatImagePreview
|
|
33
69
|
};
|
|
34
70
|
//# sourceMappingURL=index124.mjs.map
|
package/dist/index124.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index124.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index124.mjs","sources":["../src/components/Chat/components/ChatImagePreview.tsx"],"sourcesContent":["/**\n * ChatImagePreview Component\n *\n * Displays image attachments with thumbnail and lightbox support.\n */\n\nimport React, { useState } from \"react\";\nimport { ImageOff } from \"lucide-react\";\nimport type { ChatImagePreviewProps } from \"../Chat.types\";\nimport styles from \"../Chat.module.css\";\nimport { ChatLightbox } from \"./ChatLightbox\";\n\nexport const ChatImagePreview: React.FC<ChatImagePreviewProps> = ({\n src,\n alt = \"Image attachment\",\n thumbnail,\n onClick,\n enableLightbox = true,\n className,\n ...rest\n}) => {\n const [isLightboxOpen, setIsLightboxOpen] = useState(false);\n const [imageError, setImageError] = useState(false);\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n } else if (enableLightbox) {\n setIsLightboxOpen(true);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClick();\n }\n };\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n if (imageError) {\n return (\n <div\n className={[styles.imagePreview, styles.attachmentPreview, className]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n <div className={styles.attachmentPreviewIcon}>\n <ImageOff size={20} />\n </div>\n <span className={styles.attachmentPreviewName}>\n Image failed to load\n </span>\n </div>\n );\n }\n\n return (\n <>\n <div\n className={[styles.imagePreview, className].filter(Boolean).join(\" \")}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-label={alt}\n {...rest}\n >\n <img\n src={thumbnail || src}\n alt={alt}\n className={styles.imagePreviewImg}\n onError={handleImageError}\n loading=\"lazy\"\n />\n </div>\n\n {enableLightbox && (\n <ChatLightbox\n src={src}\n alt={alt}\n isOpen={isLightboxOpen}\n onClose={() => setIsLightboxOpen(false)}\n />\n )}\n </>\n );\n};\n\nChatImagePreview.displayName = \"ChatImagePreview\";\n"],"names":["ChatImagePreview","src","alt","thumbnail","onClick","enableLightbox","className","rest","isLightboxOpen","setIsLightboxOpen","useState","imageError","setImageError","handleClick","handleKeyDown","e","handleImageError","jsxs","styles","jsx","ImageOff","Fragment","ChatLightbox"],"mappings":";;;;;AAYO,MAAMA,IAAoD,CAAC;AAAA,EAChE,KAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,WAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAAS,EAAK,GACpD,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAE5CG,IAAc,MAAM;AACxB,IAAIT,IACFA,EAAA,IACSC,KACTI,EAAkB,EAAI;AAAA,EAE1B,GAEMK,IAAgB,CAACC,MAA2B;AAChD,KAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFF,EAAA;AAAA,EAEJ,GAEMG,IAAmB,MAAM;AAC7B,IAAAJ,EAAc,EAAI;AAAA,EACpB;AAEA,SAAID,IAEA,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,CAACC,EAAO,cAAcA,EAAO,mBAAmBZ,CAAS,EACjE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAY,EAAC,OAAA,EAAI,WAAWD,EAAO,uBACrB,4BAACE,GAAA,EAAS,MAAM,IAAI,EAAA,CACtB;AAAA,QACA,gBAAAD,EAAC,QAAA,EAAK,WAAWD,EAAO,uBAAuB,UAAA,uBAAA,CAE/C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAMJ,gBAAAD,EAAAI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,CAACD,EAAO,cAAcZ,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,QACpE,SAASO;AAAA,QACT,WAAWC;AAAA,QACX,MAAK;AAAA,QACL,UAAU;AAAA,QACV,cAAYZ;AAAA,QACX,GAAGK;AAAA,QAEJ,UAAA,gBAAAY;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKhB,KAAaF;AAAA,YAClB,KAAAC;AAAA,YACA,WAAWgB,EAAO;AAAA,YAClB,SAASF;AAAA,YACT,SAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACV;AAAA,IAAA;AAAA,IAGDX,KACC,gBAAAc;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,KAAArB;AAAA,QACA,KAAAC;AAAA,QACA,QAAQM;AAAA,QACR,SAAS,MAAMC,EAAkB,EAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACxC,GAEJ;AAEJ;AAEAT,EAAiB,cAAc;"}
|
package/dist/index125.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("react"),P=require("lucide-react"),m=require("./index184.cjs"),l=require("./index116.cjs"),p=({src:k,duration:T,title:h,className:b,...x})=>{const[o,f]=r.useState(!1),[s,d]=r.useState(0),[a,g]=r.useState(T||0),n=r.useRef(null),j=r.useCallback(()=>{const e=n.current;e&&!isNaN(e.duration)&&isFinite(e.duration)&&g(e.duration)},[]),v=r.useCallback(()=>{const e=n.current;e&&d(e.currentTime)},[]),C=r.useCallback(()=>{f(!1),d(0)},[]),w=r.useCallback(()=>{const e=n.current;e&&(o?e.pause():e.play().catch(()=>{f(!1)}),f(!o))},[o]),N=r.useCallback(e=>{const c=n.current;if(!c||!a)return;const u=e.currentTarget.getBoundingClientRect(),y=(e.clientX-u.left)/u.width*a;c.currentTime=y,d(y)},[a]),A=r.useCallback(e=>{const c=n.current;if(!c||!a)return;const u=5;let i=s;switch(e.key){case"ArrowRight":case"ArrowUp":e.preventDefault(),i=Math.min(s+u,a);break;case"ArrowLeft":case"ArrowDown":e.preventDefault(),i=Math.max(s-u,0);break;case"Home":e.preventDefault(),i=0;break;case"End":e.preventDefault(),i=a;break;default:return}c.currentTime=i,d(i)},[s,a]),D=a>0?s/a*100:0;return r.useEffect(()=>()=>{const e=n.current;e&&e.pause()},[]),t.jsxs("div",{className:[l.default.audioPlayer,b].filter(Boolean).join(" "),...x,children:[t.jsx("audio",{ref:n,src:k,onLoadedMetadata:j,onTimeUpdate:v,onEnded:C,preload:"metadata"}),t.jsx("button",{className:l.default.audioPlayerButton,onClick:w,"aria-label":o?"Pause":"Play",children:o?t.jsx(P.Pause,{size:16}):t.jsx(P.Play,{size:16})}),t.jsxs("div",{className:l.default.audioPlayerProgress,children:[h&&t.jsx("span",{className:l.default.attachmentPreviewName,children:h}),t.jsx("div",{className:l.default.audioPlayerTrack,onClick:N,onKeyDown:A,role:"slider","aria-label":"Audio progress","aria-valuemin":0,"aria-valuemax":a,"aria-valuenow":s,"aria-valuetext":`${m.formatTime(s)} of ${m.formatTime(a)}`,tabIndex:0,children:t.jsx("div",{className:l.default.audioPlayerFill,style:{width:`${D}%`}})}),t.jsxs("div",{className:l.default.audioPlayerTime,children:[t.jsx("span",{children:m.formatTime(s)}),t.jsx("span",{children:m.formatTime(a)})]})]})]})};p.displayName="ChatAudioPlayer";exports.ChatAudioPlayer=p;
|
|
2
2
|
//# sourceMappingURL=index125.cjs.map
|
package/dist/index125.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index125.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index125.cjs","sources":["../src/components/Chat/components/ChatAudioPlayer.tsx"],"sourcesContent":["/**\n * ChatAudioPlayer Component\n *\n * Audio playback controls with progress tracking and keyboard navigation.\n */\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { Play, Pause } from \"lucide-react\";\nimport type { ChatAudioPlayerProps } from \"../Chat.types\";\nimport { formatTime } from \"../utils\";\nimport styles from \"../Chat.module.css\";\n\nexport const ChatAudioPlayer: React.FC<ChatAudioPlayerProps> = ({\n src,\n duration: initialDuration,\n title,\n className,\n ...rest\n}) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(initialDuration || 0);\n const audioRef = useRef<HTMLAudioElement>(null);\n\n // Update duration when audio metadata loads\n const handleLoadedMetadata = useCallback(() => {\n const audio = audioRef.current;\n if (audio && !isNaN(audio.duration) && isFinite(audio.duration)) {\n setDuration(audio.duration);\n }\n }, []);\n\n // Update current time during playback\n const handleTimeUpdate = useCallback(() => {\n const audio = audioRef.current;\n if (audio) {\n setCurrentTime(audio.currentTime);\n }\n }, []);\n\n // Handle playback end\n const handleEnded = useCallback(() => {\n setIsPlaying(false);\n setCurrentTime(0);\n }, []);\n\n // Toggle play/pause\n const togglePlayback = useCallback(() => {\n const audio = audioRef.current;\n if (!audio) return;\n\n if (isPlaying) {\n audio.pause();\n } else {\n audio.play().catch(() => {\n // Handle autoplay restrictions\n setIsPlaying(false);\n });\n }\n setIsPlaying(!isPlaying);\n }, [isPlaying]);\n\n // Handle progress bar click\n const handleProgressClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n const audio = audioRef.current;\n if (!audio || !duration) return;\n\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const percentage = clickX / rect.width;\n const newTime = percentage * duration;\n\n audio.currentTime = newTime;\n setCurrentTime(newTime);\n },\n [duration],\n );\n\n // Handle keyboard navigation on slider\n const handleSliderKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const audio = audioRef.current;\n if (!audio || !duration) return;\n\n const STEP = 5; // 5 seconds\n let newTime = currentTime;\n\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n e.preventDefault();\n newTime = Math.min(currentTime + STEP, duration);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n e.preventDefault();\n newTime = Math.max(currentTime - STEP, 0);\n break;\n case \"Home\":\n e.preventDefault();\n newTime = 0;\n break;\n case \"End\":\n e.preventDefault();\n newTime = duration;\n break;\n default:\n return;\n }\n\n audio.currentTime = newTime;\n setCurrentTime(newTime);\n },\n [currentTime, duration],\n );\n\n // Calculate progress percentage\n const progress = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n const audio = audioRef.current;\n if (audio) {\n audio.pause();\n }\n };\n }, []);\n\n return (\n <div\n className={[styles.audioPlayer, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <audio\n ref={audioRef}\n src={src}\n onLoadedMetadata={handleLoadedMetadata}\n onTimeUpdate={handleTimeUpdate}\n onEnded={handleEnded}\n preload=\"metadata\"\n />\n\n <button\n className={styles.audioPlayerButton}\n onClick={togglePlayback}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={16} /> : <Play size={16} />}\n </button>\n\n <div className={styles.audioPlayerProgress}>\n {title && <span className={styles.attachmentPreviewName}>{title}</span>}\n <div\n className={styles.audioPlayerTrack}\n onClick={handleProgressClick}\n onKeyDown={handleSliderKeyDown}\n role=\"slider\"\n aria-label=\"Audio progress\"\n aria-valuemin={0}\n aria-valuemax={duration}\n aria-valuenow={currentTime}\n aria-valuetext={`${formatTime(currentTime)} of ${formatTime(duration)}`}\n tabIndex={0}\n >\n <div\n className={styles.audioPlayerFill}\n style={{ width: `${progress}%` }}\n />\n </div>\n <div className={styles.audioPlayerTime}>\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n </div>\n </div>\n );\n};\n\nChatAudioPlayer.displayName = \"ChatAudioPlayer\";\n"],"names":["ChatAudioPlayer","src","initialDuration","title","className","rest","isPlaying","setIsPlaying","useState","currentTime","setCurrentTime","duration","setDuration","audioRef","useRef","handleLoadedMetadata","useCallback","audio","handleTimeUpdate","handleEnded","togglePlayback","handleProgressClick","rect","newTime","handleSliderKeyDown","STEP","progress","useEffect","jsxs","styles","jsx","Pause","Play","formatTime"],"mappings":"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"}
|
package/dist/index125.mjs
CHANGED
|
@@ -1,66 +1,128 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
import { jsxs as p, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useState as h, useRef as M, useCallback as s, useEffect as R } from "react";
|
|
3
|
+
import { Pause as j, Play as B } from "lucide-react";
|
|
4
|
+
import { formatTime as m } from "./index184.mjs";
|
|
5
|
+
import o from "./index116.mjs";
|
|
6
|
+
const L = ({
|
|
7
|
+
src: g,
|
|
8
|
+
duration: v,
|
|
9
|
+
title: y,
|
|
10
|
+
className: w,
|
|
11
|
+
...T
|
|
12
|
+
}) => {
|
|
13
|
+
const [c, f] = h(!1), [t, u] = h(0), [a, k] = h(v || 0), n = M(null), N = s(() => {
|
|
14
|
+
const e = n.current;
|
|
15
|
+
e && !isNaN(e.duration) && isFinite(e.duration) && k(e.duration);
|
|
16
|
+
}, []), b = s(() => {
|
|
17
|
+
const e = n.current;
|
|
18
|
+
e && u(e.currentTime);
|
|
19
|
+
}, []), C = s(() => {
|
|
20
|
+
f(!1), u(0);
|
|
21
|
+
}, []), D = s(() => {
|
|
22
|
+
const e = n.current;
|
|
23
|
+
e && (c ? e.pause() : e.play().catch(() => {
|
|
24
|
+
f(!1);
|
|
25
|
+
}), f(!c));
|
|
26
|
+
}, [c]), x = s(
|
|
27
|
+
(e) => {
|
|
28
|
+
const l = n.current;
|
|
29
|
+
if (!l || !a) return;
|
|
30
|
+
const d = e.currentTarget.getBoundingClientRect(), P = (e.clientX - d.left) / d.width * a;
|
|
31
|
+
l.currentTime = P, u(P);
|
|
32
|
+
},
|
|
33
|
+
[a]
|
|
34
|
+
), A = s(
|
|
35
|
+
(e) => {
|
|
36
|
+
const l = n.current;
|
|
37
|
+
if (!l || !a) return;
|
|
38
|
+
const d = 5;
|
|
39
|
+
let i = t;
|
|
40
|
+
switch (e.key) {
|
|
41
|
+
case "ArrowRight":
|
|
42
|
+
case "ArrowUp":
|
|
43
|
+
e.preventDefault(), i = Math.min(t + d, a);
|
|
44
|
+
break;
|
|
45
|
+
case "ArrowLeft":
|
|
46
|
+
case "ArrowDown":
|
|
47
|
+
e.preventDefault(), i = Math.max(t - d, 0);
|
|
48
|
+
break;
|
|
49
|
+
case "Home":
|
|
50
|
+
e.preventDefault(), i = 0;
|
|
51
|
+
break;
|
|
52
|
+
case "End":
|
|
53
|
+
e.preventDefault(), i = a;
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
l.currentTime = i, u(i);
|
|
59
|
+
},
|
|
60
|
+
[t, a]
|
|
61
|
+
), E = a > 0 ? t / a * 100 : 0;
|
|
62
|
+
return R(() => () => {
|
|
63
|
+
const e = n.current;
|
|
64
|
+
e && e.pause();
|
|
65
|
+
}, []), /* @__PURE__ */ p(
|
|
66
|
+
"div",
|
|
67
|
+
{
|
|
68
|
+
className: [o.audioPlayer, w].filter(Boolean).join(" "),
|
|
69
|
+
...T,
|
|
70
|
+
children: [
|
|
71
|
+
/* @__PURE__ */ r(
|
|
72
|
+
"audio",
|
|
73
|
+
{
|
|
74
|
+
ref: n,
|
|
75
|
+
src: g,
|
|
76
|
+
onLoadedMetadata: N,
|
|
77
|
+
onTimeUpdate: b,
|
|
78
|
+
onEnded: C,
|
|
79
|
+
preload: "metadata"
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ r(
|
|
83
|
+
"button",
|
|
84
|
+
{
|
|
85
|
+
className: o.audioPlayerButton,
|
|
86
|
+
onClick: D,
|
|
87
|
+
"aria-label": c ? "Pause" : "Play",
|
|
88
|
+
children: c ? /* @__PURE__ */ r(j, { size: 16 }) : /* @__PURE__ */ r(B, { size: 16 })
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
/* @__PURE__ */ p("div", { className: o.audioPlayerProgress, children: [
|
|
92
|
+
y && /* @__PURE__ */ r("span", { className: o.attachmentPreviewName, children: y }),
|
|
93
|
+
/* @__PURE__ */ r(
|
|
94
|
+
"div",
|
|
95
|
+
{
|
|
96
|
+
className: o.audioPlayerTrack,
|
|
97
|
+
onClick: x,
|
|
98
|
+
onKeyDown: A,
|
|
99
|
+
role: "slider",
|
|
100
|
+
"aria-label": "Audio progress",
|
|
101
|
+
"aria-valuemin": 0,
|
|
102
|
+
"aria-valuemax": a,
|
|
103
|
+
"aria-valuenow": t,
|
|
104
|
+
"aria-valuetext": `${m(t)} of ${m(a)}`,
|
|
105
|
+
tabIndex: 0,
|
|
106
|
+
children: /* @__PURE__ */ r(
|
|
107
|
+
"div",
|
|
108
|
+
{
|
|
109
|
+
className: o.audioPlayerFill,
|
|
110
|
+
style: { width: `${E}%` }
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
/* @__PURE__ */ p("div", { className: o.audioPlayerTime, children: [
|
|
116
|
+
/* @__PURE__ */ r("span", { children: m(t) }),
|
|
117
|
+
/* @__PURE__ */ r("span", { children: m(a) })
|
|
118
|
+
] })
|
|
119
|
+
] })
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
);
|
|
32
123
|
};
|
|
124
|
+
L.displayName = "ChatAudioPlayer";
|
|
33
125
|
export {
|
|
34
|
-
L as
|
|
35
|
-
I as empty,
|
|
36
|
-
n as footer,
|
|
37
|
-
o as header,
|
|
38
|
-
g as iconSlot,
|
|
39
|
-
e as navTree,
|
|
40
|
-
v as node,
|
|
41
|
-
N as nodeActions,
|
|
42
|
-
m as nodeBadge,
|
|
43
|
-
A as nodeChevron,
|
|
44
|
-
H as nodeChevronHidden,
|
|
45
|
-
B as nodeChevronOpen,
|
|
46
|
-
O as nodeChildren,
|
|
47
|
-
p as nodeLabel,
|
|
48
|
-
T as nodeNested,
|
|
49
|
-
C as nodeRow,
|
|
50
|
-
l as nodeRowActive,
|
|
51
|
-
_ as section,
|
|
52
|
-
h as sectionActions,
|
|
53
|
-
b as sectionBadge,
|
|
54
|
-
y as sectionBody,
|
|
55
|
-
c as sectionChevron,
|
|
56
|
-
d as sectionChevronOpen,
|
|
57
|
-
i as sectionHeader,
|
|
58
|
-
s as sectionHeaderNode,
|
|
59
|
-
a as sectionTitle,
|
|
60
|
-
r as sectionTitleNode,
|
|
61
|
-
R as slotChevron,
|
|
62
|
-
f as slotChevronOpen,
|
|
63
|
-
w as slotIcon,
|
|
64
|
-
t as treeContent
|
|
126
|
+
L as ChatAudioPlayer
|
|
65
127
|
};
|
|
66
128
|
//# sourceMappingURL=index125.mjs.map
|
package/dist/index125.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index125.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index125.mjs","sources":["../src/components/Chat/components/ChatAudioPlayer.tsx"],"sourcesContent":["/**\n * ChatAudioPlayer Component\n *\n * Audio playback controls with progress tracking and keyboard navigation.\n */\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { Play, Pause } from \"lucide-react\";\nimport type { ChatAudioPlayerProps } from \"../Chat.types\";\nimport { formatTime } from \"../utils\";\nimport styles from \"../Chat.module.css\";\n\nexport const ChatAudioPlayer: React.FC<ChatAudioPlayerProps> = ({\n src,\n duration: initialDuration,\n title,\n className,\n ...rest\n}) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(initialDuration || 0);\n const audioRef = useRef<HTMLAudioElement>(null);\n\n // Update duration when audio metadata loads\n const handleLoadedMetadata = useCallback(() => {\n const audio = audioRef.current;\n if (audio && !isNaN(audio.duration) && isFinite(audio.duration)) {\n setDuration(audio.duration);\n }\n }, []);\n\n // Update current time during playback\n const handleTimeUpdate = useCallback(() => {\n const audio = audioRef.current;\n if (audio) {\n setCurrentTime(audio.currentTime);\n }\n }, []);\n\n // Handle playback end\n const handleEnded = useCallback(() => {\n setIsPlaying(false);\n setCurrentTime(0);\n }, []);\n\n // Toggle play/pause\n const togglePlayback = useCallback(() => {\n const audio = audioRef.current;\n if (!audio) return;\n\n if (isPlaying) {\n audio.pause();\n } else {\n audio.play().catch(() => {\n // Handle autoplay restrictions\n setIsPlaying(false);\n });\n }\n setIsPlaying(!isPlaying);\n }, [isPlaying]);\n\n // Handle progress bar click\n const handleProgressClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n const audio = audioRef.current;\n if (!audio || !duration) return;\n\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const percentage = clickX / rect.width;\n const newTime = percentage * duration;\n\n audio.currentTime = newTime;\n setCurrentTime(newTime);\n },\n [duration],\n );\n\n // Handle keyboard navigation on slider\n const handleSliderKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const audio = audioRef.current;\n if (!audio || !duration) return;\n\n const STEP = 5; // 5 seconds\n let newTime = currentTime;\n\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n e.preventDefault();\n newTime = Math.min(currentTime + STEP, duration);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n e.preventDefault();\n newTime = Math.max(currentTime - STEP, 0);\n break;\n case \"Home\":\n e.preventDefault();\n newTime = 0;\n break;\n case \"End\":\n e.preventDefault();\n newTime = duration;\n break;\n default:\n return;\n }\n\n audio.currentTime = newTime;\n setCurrentTime(newTime);\n },\n [currentTime, duration],\n );\n\n // Calculate progress percentage\n const progress = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n const audio = audioRef.current;\n if (audio) {\n audio.pause();\n }\n };\n }, []);\n\n return (\n <div\n className={[styles.audioPlayer, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <audio\n ref={audioRef}\n src={src}\n onLoadedMetadata={handleLoadedMetadata}\n onTimeUpdate={handleTimeUpdate}\n onEnded={handleEnded}\n preload=\"metadata\"\n />\n\n <button\n className={styles.audioPlayerButton}\n onClick={togglePlayback}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={16} /> : <Play size={16} />}\n </button>\n\n <div className={styles.audioPlayerProgress}>\n {title && <span className={styles.attachmentPreviewName}>{title}</span>}\n <div\n className={styles.audioPlayerTrack}\n onClick={handleProgressClick}\n onKeyDown={handleSliderKeyDown}\n role=\"slider\"\n aria-label=\"Audio progress\"\n aria-valuemin={0}\n aria-valuemax={duration}\n aria-valuenow={currentTime}\n aria-valuetext={`${formatTime(currentTime)} of ${formatTime(duration)}`}\n tabIndex={0}\n >\n <div\n className={styles.audioPlayerFill}\n style={{ width: `${progress}%` }}\n />\n </div>\n <div className={styles.audioPlayerTime}>\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n </div>\n </div>\n );\n};\n\nChatAudioPlayer.displayName = \"ChatAudioPlayer\";\n"],"names":["ChatAudioPlayer","src","initialDuration","title","className","rest","isPlaying","setIsPlaying","useState","currentTime","setCurrentTime","duration","setDuration","audioRef","useRef","handleLoadedMetadata","useCallback","audio","handleTimeUpdate","handleEnded","togglePlayback","handleProgressClick","rect","newTime","handleSliderKeyDown","STEP","progress","useEffect","jsxs","styles","jsx","Pause","Play","formatTime"],"mappings":"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"}
|
package/dist/index126.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("lucide-react"),g=require("./index95.cjs"),b=require("./index184.cjs"),r=require("./index116.cjs"),t=({onRecordingComplete:s,onCancel:u,maxDuration:f=300,className:a,...d})=>{const{isRecording:o,duration:v,audioBlob:c,error:l,startRecording:R,stopRecording:j,cancelRecording:x,reset:n,isSupported:m}=g.useVoiceRecorder({maxDuration:f,onRecordingComplete:s,onError:B=>console.error("Recording error:",B)}),h=()=>{o?j():c?(s?.(c),n()):R()},N=()=>{x(),u?.()};return m?l?e.jsxs("div",{className:[r.default.voiceRecorder,a].filter(Boolean).join(" "),...d,children:[e.jsx("div",{className:r.default.voiceRecorderInfo,children:e.jsx("span",{className:[r.default.voiceRecorderLabel,r.default.voiceRecorderError].join(" "),children:l})}),e.jsx("button",{className:r.default.inputButton,onClick:n,"aria-label":"Try again",children:e.jsx(i.X,{size:20})})]}):e.jsxs("div",{className:[r.default.voiceRecorder,a].filter(Boolean).join(" "),...d,children:[e.jsx("button",{className:[r.default.voiceRecorderButton,!o&&!c&&r.default.voiceRecorderButtonIdle].filter(Boolean).join(" "),onClick:h,"aria-label":o?"Stop recording":c?"Send recording":"Start recording",children:o?e.jsx(i.Square,{size:20}):c?e.jsx(i.Send,{size:20}):e.jsx(i.Mic,{size:20})}),e.jsxs("div",{className:r.default.voiceRecorderInfo,children:[e.jsx("span",{className:r.default.voiceRecorderDuration,children:b.formatTime(v)}),e.jsx("span",{className:r.default.voiceRecorderLabel,children:o?"Recording...":c?"Recording ready":"Click to record"})]}),o&&e.jsxs("div",{className:r.default.voiceRecorderWaveform,children:[e.jsx("div",{className:r.default.voiceRecorderBar}),e.jsx("div",{className:r.default.voiceRecorderBar}),e.jsx("div",{className:r.default.voiceRecorderBar}),e.jsx("div",{className:r.default.voiceRecorderBar}),e.jsx("div",{className:r.default.voiceRecorderBar})]}),(o||c)&&e.jsx("div",{className:r.default.voiceRecorderActions,children:e.jsx("button",{className:r.default.inputButton,onClick:N,"aria-label":"Cancel recording",children:e.jsx(i.X,{size:20})})})]}):e.jsx("div",{className:[r.default.voiceRecorder,a].filter(Boolean).join(" "),...d,children:e.jsx("div",{className:r.default.voiceRecorderInfo,children:e.jsx("span",{className:r.default.voiceRecorderLabel,children:"Voice recording is not supported in this browser"})})})};t.displayName="ChatVoiceRecorder";exports.ChatVoiceRecorder=t;
|
|
2
2
|
//# sourceMappingURL=index126.cjs.map
|
package/dist/index126.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index126.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index126.cjs","sources":["../src/components/Chat/components/ChatVoiceRecorder.tsx"],"sourcesContent":["/**\n * ChatVoiceRecorder Component\n *\n * Voice recording UI with waveform visualization.\n */\n\nimport React from \"react\";\nimport { Mic, Square, X, Send } from \"lucide-react\";\nimport type { ChatVoiceRecorderProps } from \"../Chat.types\";\nimport { useVoiceRecorder } from \"../hooks/useVoiceRecorder\";\nimport { formatTime } from \"../utils\";\nimport styles from \"../Chat.module.css\";\n\nexport const ChatVoiceRecorder: React.FC<ChatVoiceRecorderProps> = ({\n onRecordingComplete,\n onCancel,\n maxDuration = 300,\n className,\n ...rest\n}) => {\n const {\n isRecording,\n duration,\n audioBlob,\n error,\n startRecording,\n stopRecording,\n cancelRecording,\n reset,\n isSupported,\n } = useVoiceRecorder({\n maxDuration,\n onRecordingComplete,\n onError: (err) => console.error(\"Recording error:\", err),\n });\n\n const handleMainButtonClick = () => {\n if (isRecording) {\n stopRecording();\n } else if (audioBlob) {\n // Send the recorded audio\n onRecordingComplete?.(audioBlob);\n reset();\n } else {\n startRecording();\n }\n };\n\n const handleCancel = () => {\n cancelRecording();\n onCancel?.();\n };\n\n if (!isSupported) {\n return (\n <div\n className={[styles.voiceRecorder, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <div className={styles.voiceRecorderInfo}>\n <span className={styles.voiceRecorderLabel}>\n Voice recording is not supported in this browser\n </span>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div\n className={[styles.voiceRecorder, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <div className={styles.voiceRecorderInfo}>\n <span\n className={[\n styles.voiceRecorderLabel,\n styles.voiceRecorderError,\n ].join(\" \")}\n >\n {error}\n </span>\n </div>\n <button\n className={styles.inputButton}\n onClick={reset}\n aria-label=\"Try again\"\n >\n <X size={20} />\n </button>\n </div>\n );\n }\n\n return (\n <div\n className={[styles.voiceRecorder, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {/* Main record/stop/send button */}\n <button\n className={[\n styles.voiceRecorderButton,\n !isRecording && !audioBlob && styles.voiceRecorderButtonIdle,\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={handleMainButtonClick}\n aria-label={\n isRecording\n ? \"Stop recording\"\n : audioBlob\n ? \"Send recording\"\n : \"Start recording\"\n }\n >\n {isRecording ? (\n <Square size={20} />\n ) : audioBlob ? (\n <Send size={20} />\n ) : (\n <Mic size={20} />\n )}\n </button>\n\n {/* Info section */}\n <div className={styles.voiceRecorderInfo}>\n <span className={styles.voiceRecorderDuration}>\n {formatTime(duration)}\n </span>\n <span className={styles.voiceRecorderLabel}>\n {isRecording\n ? \"Recording...\"\n : audioBlob\n ? \"Recording ready\"\n : \"Click to record\"}\n </span>\n </div>\n\n {/* Waveform visualization (only when recording) */}\n {isRecording && (\n <div className={styles.voiceRecorderWaveform}>\n <div className={styles.voiceRecorderBar} />\n <div className={styles.voiceRecorderBar} />\n <div className={styles.voiceRecorderBar} />\n <div className={styles.voiceRecorderBar} />\n <div className={styles.voiceRecorderBar} />\n </div>\n )}\n\n {/* Cancel button */}\n {(isRecording || audioBlob) && (\n <div className={styles.voiceRecorderActions}>\n <button\n className={styles.inputButton}\n onClick={handleCancel}\n aria-label=\"Cancel recording\"\n >\n <X size={20} />\n </button>\n </div>\n )}\n </div>\n );\n};\n\nChatVoiceRecorder.displayName = \"ChatVoiceRecorder\";\n"],"names":["ChatVoiceRecorder","onRecordingComplete","onCancel","maxDuration","className","rest","isRecording","duration","audioBlob","error","startRecording","stopRecording","cancelRecording","reset","isSupported","useVoiceRecorder","err","handleMainButtonClick","handleCancel","jsxs","styles","jsx","X","Square","Send","Mic","formatTime"],"mappings":"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"}
|