se-design 1.0.59 → 1.0.61-dev
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/assets/colors.css +2 -2
- package/dist/assets/icons/checkbox-disabled-minus.svg +1 -1
- package/dist/assets/icons/checkbox-disabled-tick.svg +1 -1
- package/dist/assets/icons/checkbox-fill.svg +1 -1
- package/dist/assets/icons/checkbox-hover-fill.svg +2 -2
- package/dist/assets/icons/sort-asc.svg +3 -4
- package/dist/assets/icons/sort-desc.svg +2 -3
- package/dist/assets/style.css +1 -1
- package/dist/components/AutoCompleteInput/index.d.ts +37 -7
- package/dist/components/DropdownWithInputTags/index.d.ts +7 -1
- package/dist/components/Header/index.d.ts +1 -0
- package/dist/components/OTPInput/index.d.ts +1 -0
- package/dist/components/PhoneInput/index.d.ts +19 -0
- package/dist/components/RadioGroup/index.d.ts +17 -0
- package/dist/components/SidebarOverlay/index.d.ts +4 -0
- package/dist/components/SkipLinksBar/index.d.ts +11 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/index.js +124 -120
- package/dist/index.js.map +1 -1
- package/dist/index10.js +56 -46
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +2 -2
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +2 -2
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +2 -2
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +2 -2
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +1 -1
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +1 -1
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +2 -2
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +2 -2
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +2 -2
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +2 -2
- package/dist/index109.js.map +1 -1
- package/dist/index11.js +48 -18
- package/dist/index11.js.map +1 -1
- package/dist/index110.js +1 -1
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +1 -1
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +2 -2
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +1 -1
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +1 -1
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +2 -2
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +2 -2
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +2 -2
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +2 -2
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +1 -1
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +20 -11
- package/dist/index12.js.map +1 -1
- package/dist/index120.js +1 -1
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +1 -1
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +1 -1
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +1 -1
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +1 -1
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +1 -1
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +2 -2
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +1 -1
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +2 -2
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +1 -1
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +15 -9
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +1 -1
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +1 -1
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +1 -1
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +1 -1
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +2 -2
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +2 -2
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +2 -2
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +2 -2
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +2 -2
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +2 -2
- package/dist/index139.js.map +1 -1
- package/dist/index14.js +10 -202
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +2 -2
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +1 -1
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +1 -1
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +1 -1
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +1 -1
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +1 -1
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +1 -1
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +1 -1
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +1 -1
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +1 -1
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +216 -59
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +1 -1
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +1 -1
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +1 -1
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +1 -1
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +1 -1
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +1 -1
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +1 -1
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +1 -1
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +1 -1
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +1 -1
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +60 -84
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +1 -1
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +1 -1
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +1 -1
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +2 -2
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +1 -1
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +2 -2
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +1 -1
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +2 -2
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +1 -1
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +2 -2
- package/dist/index169.js.map +1 -1
- package/dist/index17.js +80 -274
- package/dist/index17.js.map +1 -1
- package/dist/index170.js +1 -1
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +1 -1
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +1 -1
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +1 -1
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +1 -1
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +1 -1
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +1 -1
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +2 -2
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +1 -1
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +2 -2
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +281 -11
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +2 -149
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +2 -6
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +149 -5
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +12 -0
- package/dist/index183.js.map +1 -0
- package/dist/index184.js +9 -0
- package/dist/index184.js.map +1 -0
- package/dist/index185.js +4 -23
- package/dist/index185.js.map +1 -1
- package/dist/index188.js +27 -0
- package/dist/index188.js.map +1 -0
- package/dist/index189.js +60 -21
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +12 -31
- package/dist/index19.js.map +1 -1
- package/dist/index191.js +87 -0
- package/dist/index191.js.map +1 -0
- package/dist/index193.js +26 -0
- package/dist/index193.js.map +1 -0
- package/dist/index20.js +32 -56
- package/dist/index20.js.map +1 -1
- package/dist/{index197.js → index201.js} +1 -1
- package/dist/{index197.js.map → index201.js.map} +1 -1
- package/dist/{index205.js → index209.js} +1 -1
- package/dist/{index205.js.map → index209.js.map} +1 -1
- package/dist/index21.js +53 -75
- package/dist/index21.js.map +1 -1
- package/dist/{index207.js → index211.js} +1 -1
- package/dist/{index207.js.map → index211.js.map} +1 -1
- package/dist/{index208.js → index212.js} +2 -2
- package/dist/{index208.js.map → index212.js.map} +1 -1
- package/dist/index22.js +77 -21
- package/dist/index22.js.map +1 -1
- package/dist/index222.js +3 -9
- package/dist/index222.js.map +1 -1
- package/dist/index224.js +56 -167
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +54 -11
- package/dist/index225.js.map +1 -1
- package/dist/index227.js +18 -5
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +9 -5
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +8 -36
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +19 -190
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +5 -2
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +170 -8
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +11 -327
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +5 -49
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +6 -2
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +35 -73
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +2 -93
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +5 -49
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +326 -7
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +49 -4
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +217 -44
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +2 -52
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +76 -2
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +93 -2
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +55 -0
- package/dist/index243.js.map +1 -0
- package/dist/index244.js +11 -0
- package/dist/index244.js.map +1 -0
- package/dist/index245.js +8 -0
- package/dist/index245.js.map +1 -0
- package/dist/index246.js +55 -0
- package/dist/index246.js.map +1 -0
- package/dist/index247.js +5 -0
- package/dist/index247.js.map +1 -0
- package/dist/index248.js +5 -0
- package/dist/index248.js.map +1 -0
- package/dist/index25.js +48 -18
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +16 -80
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +82 -79
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +80 -130
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +131 -55
- package/dist/index29.js.map +1 -1
- package/dist/index3.js +2 -2
- package/dist/index30.js +53 -97
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +99 -61
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +59 -32
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +40 -71
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +68 -41
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +45 -57
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +54 -230
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +281 -70
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +68 -80
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +82 -32
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +26 -44
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +45 -67
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +65 -49
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +49 -89
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +141 -93
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +189 -35
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +34 -29
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +31 -147
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +138 -45
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +52 -373
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +116 -115
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +375 -63
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +65 -38
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +35 -35
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +35 -82
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +81 -159
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +157 -135
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +149 -29
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +29 -86
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +80 -113
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +114 -56
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +32 -51
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +56 -147
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +146 -312
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +317 -44
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +43 -139
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +140 -12
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +10 -42
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +44 -5
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +18 -8
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +8 -0
- package/dist/index68.js.map +1 -0
- package/dist/index69.js +9 -2
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +47 -81
- package/dist/index7.js.map +1 -1
- package/dist/index71.js +1 -1
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +1 -1
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +2 -2
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +1 -1
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +1 -1
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +1 -1
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +1 -1
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +1 -1
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +1 -1
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +86 -26
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +1 -1
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +1 -1
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +1 -1
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +1 -1
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +1 -1
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +1 -1
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +1 -1
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +1 -1
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +1 -1
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +1 -1
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +23 -59
- package/dist/index9.js.map +1 -1
- package/dist/index90.js +1 -1
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +1 -1
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +1 -1
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +1 -1
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +1 -1
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +2 -2
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +2 -2
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +2 -2
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +2 -2
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +1 -1
- package/dist/index99.js.map +1 -1
- package/package.json +3 -2
- package/dist/index186.js +0 -65
- package/dist/index186.js.map +0 -1
- package/dist/index218.js +0 -7
- package/dist/index218.js.map +0 -1
- package/dist/index220.js +0 -62
- package/dist/index220.js.map +0 -1
- package/dist/index221.js +0 -13
- package/dist/index221.js.map +0 -1
- package/dist/index223.js +0 -8
- package/dist/index223.js.map +0 -1
- package/dist/index70.js +0 -5
- package/dist/index70.js.map +0 -1
package/dist/index58.js
CHANGED
|
@@ -1,122 +1,89 @@
|
|
|
1
|
-
import e, {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import e, { useRef as S, useState as f } from "react";
|
|
2
|
+
import { CustomModal as T } from "./index12.js";
|
|
3
|
+
import { Icon as v } from "./index5.js";
|
|
4
|
+
/* empty css */
|
|
5
|
+
const C = ({
|
|
6
|
+
children: c = null,
|
|
7
|
+
title: n = "",
|
|
8
|
+
onClose: s = () => {
|
|
9
|
+
},
|
|
10
|
+
showCloseIcon: l = !1,
|
|
11
|
+
showBackButton: a = !1,
|
|
12
|
+
onBack: m = () => {
|
|
13
|
+
},
|
|
14
|
+
className: i = "",
|
|
15
|
+
automationId: r = "",
|
|
16
|
+
minHeight: u = "auto"
|
|
12
17
|
}) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const t = l.current;
|
|
23
|
-
if (!t) return;
|
|
24
|
-
const c = Math.round(t.scrollTop / n), m = Math.max(0, Math.min(r.length - 1, c));
|
|
25
|
-
t.scrollTo({
|
|
26
|
-
top: m * n,
|
|
27
|
-
behavior: "smooth"
|
|
28
|
-
}), m !== o && d(m);
|
|
29
|
-
}, 100));
|
|
30
|
-
}, i = (t) => {
|
|
31
|
-
d(t), l.current?.scrollTo({
|
|
32
|
-
top: t * n,
|
|
33
|
-
behavior: "smooth"
|
|
34
|
-
});
|
|
18
|
+
const t = S(null), [g, p] = f(0), [E, h] = f(0), [b, Y] = f(!1), k = (o) => {
|
|
19
|
+
p(o.touches[0].clientY), h(o.touches[0].clientY), Y(!0);
|
|
20
|
+
}, N = (o) => {
|
|
21
|
+
if (!b) return;
|
|
22
|
+
const d = o.touches[0].clientY, x = d - g;
|
|
23
|
+
x > 0 && (h(d), t.current && (t.current.style.transform = `translateY(${x}px)`));
|
|
24
|
+
}, y = () => {
|
|
25
|
+
if (!b) return;
|
|
26
|
+
E - g > 60 ? s() : t.current && (t.current.style.transform = "translateY(0)"), Y(!1), p(0), h(0);
|
|
35
27
|
};
|
|
36
28
|
return /* @__PURE__ */ e.createElement("div", {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
ref: t,
|
|
30
|
+
className: `se-design-bottom-sheet relative h-max max-h-[98vh] rounded-t-2xl flex flex-col pt-5 ${i}`,
|
|
31
|
+
onClick: (o) => o.stopPropagation(),
|
|
32
|
+
onTouchStart: k,
|
|
33
|
+
onTouchMove: N,
|
|
34
|
+
onTouchEnd: y,
|
|
35
|
+
"data-automation-id": r,
|
|
42
36
|
style: {
|
|
43
|
-
|
|
44
|
-
paddingTop: y * n,
|
|
45
|
-
paddingBottom: y * n,
|
|
46
|
-
scrollSnapType: "y mandatory",
|
|
47
|
-
scrollbarWidth: "none"
|
|
37
|
+
minHeight: u
|
|
48
38
|
}
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
className: s = "",
|
|
65
|
-
automationId: a = "timepicker"
|
|
66
|
-
}) => {
|
|
67
|
-
const [i, t] = p(() => r === 0 ? 11 : r > 12 ? r - 12 - 1 : r - 1), [c, m] = p(Math.max(0, Math.min(59, o ?? 0))), [v, E] = p(
|
|
68
|
-
() => r >= 12 ? 1 : 0
|
|
69
|
-
// 0-11 = AM, 12-23 = PM
|
|
70
|
-
), b = () => {
|
|
71
|
-
const S = v === 1 ? i + 12 : i;
|
|
72
|
-
d?.({
|
|
73
|
-
hour: S + 1,
|
|
74
|
-
minute: c
|
|
75
|
-
}), l?.();
|
|
76
|
-
};
|
|
77
|
-
return /* @__PURE__ */ e.createElement("div", {
|
|
78
|
-
className: `se-design-timepicker-container w-full min-w-[216px] bg-[var(--color-white)] rounded-xl shadow-md border border-[var(--color-gray-400)] overflow-hidden ${s}`
|
|
79
|
-
}, /* @__PURE__ */ e.createElement("div", {
|
|
80
|
-
className: "se-design-timepicker-content w-full relative p-4"
|
|
81
|
-
}, /* @__PURE__ */ e.createElement("div", {
|
|
82
|
-
className: "absolute left-4 right-4 top-1/2 -translate-y-1/2 h-10 bg-[var(--color-blue-50)] rounded-lg pointer-events-none z-0"
|
|
83
|
-
}), /* @__PURE__ */ e.createElement("div", {
|
|
84
|
-
className: "flex justify-between gap-2 relative z-10"
|
|
85
|
-
}, /* @__PURE__ */ e.createElement(h, {
|
|
86
|
-
items: T,
|
|
87
|
-
selectedIndex: i,
|
|
88
|
-
onSelect: t,
|
|
89
|
-
automationId: `${a}-hours`
|
|
39
|
+
}, (n || a) && /* @__PURE__ */ e.createElement("div", {
|
|
40
|
+
className: "se-design-bottom-sheet-header flex items-center justify-left gap-3 mr-6 px-4"
|
|
41
|
+
}, a && /* @__PURE__ */ e.createElement(v, {
|
|
42
|
+
name: "back",
|
|
43
|
+
stroke: "var(--color-gray-700)",
|
|
44
|
+
onClick: m,
|
|
45
|
+
className: "se-design-bottom-sheet-back-icon cursor-pointer",
|
|
46
|
+
automationId: `${r}-back-icon`
|
|
47
|
+
}), n && /* @__PURE__ */ e.createElement("div", {
|
|
48
|
+
className: "se-design-bottom-sheet-title text-lg font-semibold"
|
|
49
|
+
}, n)), l && /* @__PURE__ */ e.createElement(v, {
|
|
50
|
+
name: "close",
|
|
51
|
+
onClick: s,
|
|
52
|
+
className: "se-design-bottom-sheet-close-icon absolute top-6 right-4 cursor-pointer z-10",
|
|
53
|
+
automationId: `${r}-close-icon`
|
|
90
54
|
}), /* @__PURE__ */ e.createElement("div", {
|
|
91
|
-
className: "
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
55
|
+
className: "se-design-bottom-sheet-content px-4 pb-5 flex-1 min-h-0 overflow-y-auto"
|
|
56
|
+
}, c));
|
|
57
|
+
}, I = ({
|
|
58
|
+
isOpen: c = !1,
|
|
59
|
+
title: n = "",
|
|
60
|
+
onClose: s = () => {
|
|
61
|
+
},
|
|
62
|
+
children: l = null,
|
|
63
|
+
showCloseIcon: a = !0,
|
|
64
|
+
showBackButton: m = !1,
|
|
65
|
+
onBack: i = () => {
|
|
66
|
+
},
|
|
67
|
+
className: r = "",
|
|
68
|
+
automationId: u = "bottomsheet",
|
|
69
|
+
minHeight: t = ""
|
|
70
|
+
}) => /* @__PURE__ */ e.createElement(T, {
|
|
71
|
+
isOpen: c,
|
|
72
|
+
onClose: s,
|
|
73
|
+
onModalClick: s,
|
|
74
|
+
className: "custom-bottom-sheet",
|
|
75
|
+
renderModalContent: () => /* @__PURE__ */ e.createElement(C, {
|
|
76
|
+
title: n,
|
|
77
|
+
onClose: s,
|
|
78
|
+
showCloseIcon: a,
|
|
79
|
+
showBackButton: m,
|
|
80
|
+
onBack: i,
|
|
81
|
+
className: r,
|
|
82
|
+
automationId: u,
|
|
83
|
+
minHeight: t
|
|
84
|
+
}, l)
|
|
85
|
+
});
|
|
119
86
|
export {
|
|
120
|
-
|
|
87
|
+
I as BottomSheet
|
|
121
88
|
};
|
|
122
89
|
//# sourceMappingURL=index58.js.map
|
package/dist/index58.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index58.js","sources":["../src/components/TimePicker/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '../Button';\n\nexport interface TimePickerProps {\n initialHour?: number;\n initialMinute?: number;\n onApply?: (time: { hour: number; minute: number }) => void;\n ctaLabel?: string;\n onClose?: () => void;\n className?: string;\n automationId?: string;\n}\n\nconst ITEM_HEIGHT = 40;\nconst VISIBLE_ITEMS = 7;\nconst BUFFER_ITEMS = 3;\n\nconst HOURS = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, '0'));\nconst MINUTES = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, '0'));\nconst PERIODS: ('AM' | 'PM')[] = ['AM', 'PM'];\n\ninterface ScrollColumnProps {\n items: readonly string[];\n selectedIndex: number;\n onSelect: (index: number) => void;\n automationId?: string;\n}\n\nconst ScrollColumn: React.FC<ScrollColumnProps> = ({ items, selectedIndex, onSelect, automationId = '' }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollTo({ top: selectedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n }\n }, [selectedIndex]);\n\n const handleScroll = () => {\n if (!containerRef.current) return;\n\n if (scrollTimeout.current) clearTimeout(scrollTimeout.current);\n\n scrollTimeout.current = setTimeout(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const newIndex = Math.round(container.scrollTop / ITEM_HEIGHT);\n const clampedIndex = Math.max(0, Math.min(items.length - 1, newIndex));\n\n container.scrollTo({ top: clampedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n\n if (clampedIndex !== selectedIndex) onSelect(clampedIndex);\n }, 100);\n };\n\n const handleItemClick = (index: number) => {\n onSelect(index);\n containerRef.current?.scrollTo({ top: index * ITEM_HEIGHT, behavior: 'smooth' });\n };\n\n return (\n <div className=\"w-14\">\n <div\n ref={containerRef}\n className=\"overflow-y-auto [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n style={{\n height: VISIBLE_ITEMS * ITEM_HEIGHT,\n paddingTop: BUFFER_ITEMS * ITEM_HEIGHT,\n paddingBottom: BUFFER_ITEMS * ITEM_HEIGHT,\n scrollSnapType: 'y mandatory',\n scrollbarWidth: 'none'\n }}\n >\n {items.map((item, index) => (\n <div\n key={item}\n className={`flex items-center justify-center cursor-pointer select-none transition-colors h-10 ${\n index === selectedIndex\n ? 'text-[var(--color-blue-500)] font-semibold'\n : 'text-[var(--color-gray-700)] hover:text-[var(--color-blue-500)]'\n }`}\n onClick={() => handleItemClick(index)}\n style={{ scrollSnapAlign: 'center' }}\n data-automation-id={`${automationId}-item-${index}`}\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n initialHour = 12,\n initialMinute = 0,\n onApply,\n ctaLabel = 'Apply',\n onClose,\n className = '',\n automationId = 'timepicker'\n}) => {\n const [selectedHourIndex, setSelectedHourIndex] = useState(() => {\n if (initialHour === 0) return 11; // 0 = 12 AM\n if (initialHour > 12) return initialHour - 12 - 1; // 13-23 → 1-11 (PM hours)\n return initialHour - 1; // 1-12 → 0-11\n });\n const [selectedMinuteIndex, setSelectedMinuteIndex] = useState(Math.max(0, Math.min(59, initialMinute ?? 0)));\n const [selectedPeriodIndex, setSelectedPeriodIndex] = useState(\n () => (initialHour >= 12 ? 1 : 0) // 0-11 = AM, 12-23 = PM\n );\n\n const handleApply = () => {\n const hourIn24Format = selectedPeriodIndex === 1 ? selectedHourIndex + 12 : selectedHourIndex;\n onApply?.({\n hour: hourIn24Format + 1,\n minute: selectedMinuteIndex\n });\n onClose?.();\n };\n\n return (\n <div\n className={`se-design-timepicker-container w-full min-w-[216px] bg-[var(--color-white)] rounded-xl shadow-md border border-[var(--color-gray-400)] overflow-hidden ${className}`}\n >\n <div className=\"se-design-timepicker-content w-full relative p-4\">\n <div className=\"absolute left-4 right-4 top-1/2 -translate-y-1/2 h-10 bg-[var(--color-blue-50)] rounded-lg pointer-events-none z-0\" />\n <div className=\"flex justify-between gap-2 relative z-10\">\n <ScrollColumn\n items={HOURS}\n selectedIndex={selectedHourIndex}\n onSelect={setSelectedHourIndex}\n automationId={`${automationId}-hours`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={MINUTES}\n selectedIndex={selectedMinuteIndex}\n onSelect={setSelectedMinuteIndex}\n automationId={`${automationId}-minutes`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={PERIODS}\n selectedIndex={selectedPeriodIndex}\n onSelect={setSelectedPeriodIndex}\n automationId={`${automationId}-periods`}\n />\n </div>\n </div>\n <div className=\"se-design-timepicker-footer flex justify-end p-3 border-t border-[var(--color-gray-200)]\">\n <Button label={ctaLabel} type=\"primary\" onClick={handleApply} automationId={`${automationId}-apply-button`} />\n </div>\n </div>\n );\n};\n"],"names":["ITEM_HEIGHT","VISIBLE_ITEMS","BUFFER_ITEMS","HOURS","Array","from","length","_","i","String","padStart","MINUTES","PERIODS","ScrollColumn","items","selectedIndex","onSelect","automationId","containerRef","useRef","scrollTimeout","useEffect","current","scrollTo","top","behavior","handleScroll","clearTimeout","setTimeout","container","newIndex","Math","round","scrollTop","clampedIndex","max","min","handleItemClick","index","React","createElement","className","ref","onScroll","style","height","paddingTop","paddingBottom","scrollSnapType","scrollbarWidth","map","item","key","onClick","scrollSnapAlign","TimePicker","initialHour","initialMinute","onApply","ctaLabel","onClose","selectedHourIndex","setSelectedHourIndex","useState","selectedMinuteIndex","setSelectedMinuteIndex","selectedPeriodIndex","setSelectedPeriodIndex","handleApply","hourIn24Format","hour","minute","Button","label","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index58.js","sources":["../src/components/BottomSheet/index.tsx"],"sourcesContent":["import React, { FC, useState, useRef } from 'react';\nimport { CustomModal } from '../CustomModal';\nimport { Icon } from '../Icon';\n\nimport './style.scss';\n\nexport interface BottomSheetProps {\n isOpen: boolean;\n title?: string;\n onClose: () => void;\n showCloseIcon?: boolean;\n showBackButton?: boolean;\n onBack?: () => void;\n children: React.ReactNode;\n className?: string;\n automationId?: string;\n minHeight?: string;\n}\n\ninterface BottomSheetContentProps {\n title?: string;\n onClose: () => void;\n showCloseIcon?: boolean;\n showBackButton?: boolean;\n onBack?: () => void;\n children: React.ReactNode;\n className?: string;\n automationId?: string;\n minHeight?: string;\n}\n\nconst BottomSheetContent: FC<BottomSheetContentProps> = ({\n children = null,\n title = '',\n onClose = () => {},\n showCloseIcon = false,\n showBackButton = false,\n onBack = () => {},\n className = '',\n automationId = '',\n minHeight = 'auto'\n}) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [startY, setStartY] = useState<number>(0);\n const [currentY, setCurrentY] = useState<number>(0);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n setStartY(e.touches[0].clientY);\n setCurrentY(e.touches[0].clientY);\n setIsDragging(true);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isDragging) return;\n\n const touchY = e.touches[0].clientY;\n const deltaY = touchY - startY;\n\n // Only allow dragging down\n if (deltaY > 0) {\n setCurrentY(touchY);\n if (contentRef.current) {\n contentRef.current.style.transform = `translateY(${deltaY}px)`;\n }\n }\n };\n\n const handleTouchEnd = () => {\n if (!isDragging) return;\n\n const deltaY = currentY - startY;\n const threshold = 60; // pixels to swipe down to trigger close\n\n if (deltaY > threshold) {\n // Trigger close\n onClose();\n } else {\n // Reset position\n if (contentRef.current) {\n contentRef.current.style.transform = 'translateY(0)';\n }\n }\n\n setIsDragging(false);\n setStartY(0);\n setCurrentY(0);\n };\n\n return (\n <div\n ref={contentRef}\n className={`se-design-bottom-sheet relative h-max max-h-[98vh] rounded-t-2xl flex flex-col pt-5 ${className}`}\n onClick={(e) => e.stopPropagation()}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n data-automation-id={automationId}\n style={{ minHeight }}\n >\n {(title || showBackButton) && (\n <div className=\"se-design-bottom-sheet-header flex items-center justify-left gap-3 mr-6 px-4\">\n {showBackButton && (\n <Icon\n name=\"back\"\n stroke=\"var(--color-gray-700)\"\n onClick={onBack}\n className=\"se-design-bottom-sheet-back-icon cursor-pointer\"\n automationId={`${automationId}-back-icon`}\n />\n )}\n {title && <div className=\"se-design-bottom-sheet-title text-lg font-semibold\">{title}</div>}\n </div>\n )}\n {showCloseIcon && (\n <Icon\n name=\"close\"\n onClick={onClose}\n className=\"se-design-bottom-sheet-close-icon absolute top-6 right-4 cursor-pointer z-10\"\n automationId={`${automationId}-close-icon`}\n />\n )}\n <div className=\"se-design-bottom-sheet-content px-4 pb-5 flex-1 min-h-0 overflow-y-auto\">{children}</div>\n </div>\n );\n};\n\nexport const BottomSheet: FC<BottomSheetProps> = ({\n isOpen = false,\n title = '',\n onClose = () => {},\n children = null,\n showCloseIcon = true,\n showBackButton = false,\n onBack = () => {},\n className = '',\n automationId = 'bottomsheet',\n minHeight = ''\n}) => {\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n onModalClick={onClose}\n className=\"custom-bottom-sheet\"\n renderModalContent={() => (\n <BottomSheetContent\n title={title}\n onClose={onClose}\n showCloseIcon={showCloseIcon}\n showBackButton={showBackButton}\n onBack={onBack}\n className={className}\n automationId={automationId}\n minHeight={minHeight}\n >\n {children}\n </BottomSheetContent>\n )}\n />\n );\n};\n"],"names":["BottomSheetContent","children","title","onClose","showCloseIcon","showBackButton","onBack","className","automationId","minHeight","contentRef","useRef","startY","setStartY","useState","currentY","setCurrentY","isDragging","setIsDragging","handleTouchStart","e","touches","clientY","handleTouchMove","touchY","deltaY","current","style","transform","handleTouchEnd","React","createElement","ref","onClick","stopPropagation","onTouchStart","onTouchMove","onTouchEnd","Icon","name","stroke","BottomSheet","isOpen","CustomModal","onModalClick","renderModalContent"],"mappings":"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"}
|
package/dist/index59.js
CHANGED
|
@@ -1,64 +1,122 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
const w = ({
|
|
14
|
-
label: n,
|
|
15
|
-
children: o,
|
|
16
|
-
iconColor: t = "var(--color-blue-500)",
|
|
17
|
-
isDisabled: e = !1,
|
|
18
|
-
noPadding: u = !1
|
|
1
|
+
import e, { useState as p, useRef as g, useEffect as I } from "react";
|
|
2
|
+
import { Button as x } from "./index3.js";
|
|
3
|
+
const n = 40, f = 7, y = 3, T = Array.from({
|
|
4
|
+
length: 12
|
|
5
|
+
}, (r, o) => String(o + 1).padStart(2, "0")), w = Array.from({
|
|
6
|
+
length: 60
|
|
7
|
+
}, (r, o) => String(o).padStart(2, "0")), M = ["AM", "PM"], h = ({
|
|
8
|
+
items: r,
|
|
9
|
+
selectedIndex: o,
|
|
10
|
+
onSelect: d,
|
|
11
|
+
automationId: u = ""
|
|
19
12
|
}) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}, [
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
13
|
+
const l = g(null), s = g(null);
|
|
14
|
+
I(() => {
|
|
15
|
+
l.current && l.current.scrollTo({
|
|
16
|
+
top: o * n,
|
|
17
|
+
behavior: "smooth"
|
|
18
|
+
});
|
|
19
|
+
}, [o]);
|
|
20
|
+
const a = () => {
|
|
21
|
+
l.current && (s.current && clearTimeout(s.current), s.current = setTimeout(() => {
|
|
22
|
+
const t = l.current;
|
|
23
|
+
if (!t) return;
|
|
24
|
+
const c = Math.round(t.scrollTop / n), m = Math.max(0, Math.min(r.length - 1, c));
|
|
25
|
+
t.scrollTo({
|
|
26
|
+
top: m * n,
|
|
27
|
+
behavior: "smooth"
|
|
28
|
+
}), m !== o && d(m);
|
|
29
|
+
}, 100));
|
|
30
|
+
}, i = (t) => {
|
|
31
|
+
d(t), l.current?.scrollTo({
|
|
32
|
+
top: t * n,
|
|
33
|
+
behavior: "smooth"
|
|
34
|
+
});
|
|
32
35
|
};
|
|
33
|
-
return /* @__PURE__ */
|
|
34
|
-
className:
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
return /* @__PURE__ */ e.createElement("div", {
|
|
37
|
+
className: "w-14"
|
|
38
|
+
}, /* @__PURE__ */ e.createElement("div", {
|
|
39
|
+
ref: l,
|
|
40
|
+
className: "overflow-y-auto [&::-webkit-scrollbar]:hidden",
|
|
41
|
+
onScroll: a,
|
|
42
|
+
style: {
|
|
43
|
+
height: f * n,
|
|
44
|
+
paddingTop: y * n,
|
|
45
|
+
paddingBottom: y * n,
|
|
46
|
+
scrollSnapType: "y mandatory",
|
|
47
|
+
scrollbarWidth: "none"
|
|
48
|
+
}
|
|
49
|
+
}, r.map((t, c) => /* @__PURE__ */ e.createElement("div", {
|
|
50
|
+
key: t,
|
|
51
|
+
className: `flex items-center justify-center cursor-pointer select-none transition-colors h-10 ${c === o ? "text-[var(--color-blue-500)] font-semibold" : "text-[var(--color-gray-700)] hover:text-[var(--color-blue-500)]"}`,
|
|
52
|
+
onClick: () => i(c),
|
|
53
|
+
style: {
|
|
54
|
+
scrollSnapAlign: "center"
|
|
40
55
|
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
"data-automation-id": `${u}-item-${c}`
|
|
57
|
+
}, t))));
|
|
58
|
+
}, $ = ({
|
|
59
|
+
initialHour: r = 12,
|
|
60
|
+
initialMinute: o = 0,
|
|
61
|
+
onApply: d,
|
|
62
|
+
ctaLabel: u = "Apply",
|
|
63
|
+
onClose: l,
|
|
64
|
+
className: s = "",
|
|
65
|
+
automationId: a = "timepicker"
|
|
66
|
+
}) => {
|
|
67
|
+
const [i, t] = p(() => r === 0 ? 11 : r > 12 ? r - 12 - 1 : r - 1), [c, m] = p(Math.max(0, Math.min(59, o ?? 0))), [v, E] = p(
|
|
68
|
+
() => r >= 12 ? 1 : 0
|
|
69
|
+
// 0-11 = AM, 12-23 = PM
|
|
70
|
+
), b = () => {
|
|
71
|
+
const S = v === 1 ? i + 12 : i;
|
|
72
|
+
d?.({
|
|
73
|
+
hour: S + 1,
|
|
74
|
+
minute: c
|
|
75
|
+
}), l?.();
|
|
76
|
+
};
|
|
77
|
+
return /* @__PURE__ */ e.createElement("div", {
|
|
78
|
+
className: `se-design-timepicker-container w-full min-w-[216px] bg-[var(--color-white)] rounded-xl shadow-md border border-[var(--color-gray-400)] overflow-hidden ${s}`
|
|
79
|
+
}, /* @__PURE__ */ e.createElement("div", {
|
|
80
|
+
className: "se-design-timepicker-content w-full relative p-4"
|
|
81
|
+
}, /* @__PURE__ */ e.createElement("div", {
|
|
82
|
+
className: "absolute left-4 right-4 top-1/2 -translate-y-1/2 h-10 bg-[var(--color-blue-50)] rounded-lg pointer-events-none z-0"
|
|
83
|
+
}), /* @__PURE__ */ e.createElement("div", {
|
|
84
|
+
className: "flex justify-between gap-2 relative z-10"
|
|
85
|
+
}, /* @__PURE__ */ e.createElement(h, {
|
|
86
|
+
items: T,
|
|
87
|
+
selectedIndex: i,
|
|
88
|
+
onSelect: t,
|
|
89
|
+
automationId: `${a}-hours`
|
|
90
|
+
}), /* @__PURE__ */ e.createElement("div", {
|
|
91
|
+
className: "w-px bg-[var(--color-gray-200)]",
|
|
92
|
+
style: {
|
|
93
|
+
height: f * n
|
|
94
|
+
}
|
|
95
|
+
}), /* @__PURE__ */ e.createElement(h, {
|
|
96
|
+
items: w,
|
|
97
|
+
selectedIndex: c,
|
|
98
|
+
onSelect: m,
|
|
99
|
+
automationId: `${a}-minutes`
|
|
100
|
+
}), /* @__PURE__ */ e.createElement("div", {
|
|
101
|
+
className: "w-px bg-[var(--color-gray-200)]",
|
|
102
|
+
style: {
|
|
103
|
+
height: f * n
|
|
58
104
|
}
|
|
59
|
-
})
|
|
105
|
+
}), /* @__PURE__ */ e.createElement(h, {
|
|
106
|
+
items: M,
|
|
107
|
+
selectedIndex: v,
|
|
108
|
+
onSelect: E,
|
|
109
|
+
automationId: `${a}-periods`
|
|
110
|
+
}))), /* @__PURE__ */ e.createElement("div", {
|
|
111
|
+
className: "se-design-timepicker-footer flex justify-end p-3 border-t border-[var(--color-gray-200)]"
|
|
112
|
+
}, /* @__PURE__ */ e.createElement(x, {
|
|
113
|
+
label: u,
|
|
114
|
+
type: "primary",
|
|
115
|
+
onClick: b,
|
|
116
|
+
automationId: `${a}-apply-button`
|
|
117
|
+
})));
|
|
60
118
|
};
|
|
61
119
|
export {
|
|
62
|
-
|
|
120
|
+
$ as TimePicker
|
|
63
121
|
};
|
|
64
122
|
//# sourceMappingURL=index59.js.map
|
package/dist/index59.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index59.js","sources":["../src/components/InfoTooltip/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { Popover } from '../Popover';\nimport './styles.scss';\n\nexport interface InfoTooltipProps {\n label: string;\n children: React.ReactNode;\n iconColor?: string;\n isDisabled?: boolean;\n /**\n * Remove padding from tooltip wrapper (useful for precise alignment)\n */\n noPadding?: boolean;\n}\n\nexport const InfoTooltip = ({\n label,\n children,\n iconColor = 'var(--color-blue-500)',\n isDisabled = false,\n noPadding = false\n}: InfoTooltipProps) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n // Show tooltip on hover OR focus (for keyboard accessibility)\n const isOpen = isHovered || isFocused;\n\n // Global Escape key handler (W3C WAI-ARIA tooltip pattern requirement)\n const handleEscapeKey = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsHovered(false);\n setIsFocused(false);\n // Prevent other handlers (e.g., modal) from also closing - \"innermost first\" pattern\n event.stopImmediatePropagation();\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('keydown', handleEscapeKey);\n return () => document.removeEventListener('keydown', handleEscapeKey);\n }\n }, [isOpen, handleEscapeKey]);\n\n const interactionHandlers = {\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n onFocus: () => setIsFocused(true),\n onBlur: () => setIsFocused(false)\n };\n\n return (\n <div\n className={isDisabled ? 'se-design-info-tooltip-wrapper-disabled' : ''}\n {...(isDisabled ? {} : interactionHandlers)}\n >\n <Popover\n position={'bottom-center'}\n isPopoverOpen={isOpen}\n onPopoverToggle={(open) => {\n // Sync popover state changes (e.g., Escape key) back to component state\n if (!open) {\n setIsHovered(false);\n setIsFocused(false);\n }\n }}\n renderPopoverSrcElement={() => (\n <div\n className={`se-design-info-tooltip-src ${noPadding ? 'no-padding' : ''} ${isDisabled ? 'se-design-info-tooltip-disabled' : ''}`}\n style={\n {\n '--info-tooltip-icon-color': iconColor,\n cursor: isDisabled ? 'not-allowed' : 'pointer'\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n )}\n renderPopoverContents={() => (\n <div className=\"se-design-info-tooltip-content\" data-automation-id=\"se-design-info-tooltip-content\">\n {label}\n </div>\n )}\n isWithPortal\n noBorder\n disableClickToggle\n popoverContentStyleProperty={{\n zIndex: 2000,\n backgroundColor: ''\n }}\n />\n </div>\n );\n};\n"],"names":["InfoTooltip","label","children","iconColor","isDisabled","noPadding","isHovered","setIsHovered","useState","isFocused","setIsFocused","isOpen","handleEscapeKey","useCallback","event","key","stopImmediatePropagation","useEffect","document","addEventListener","removeEventListener","interactionHandlers","onMouseEnter","onMouseLeave","onFocus","onBlur","React","createElement","_extends","className","Popover","position","isPopoverOpen","onPopoverToggle","open","renderPopoverSrcElement","style","cursor","renderPopoverContents","isWithPortal","noBorder","disableClickToggle","popoverContentStyleProperty","zIndex","backgroundColor"],"mappings":";;;;;;;;;;;;AAeO,MAAMA,IAAcA,CAAC;AAAA,EAC1BC,OAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,YAAAA,IAAa;AAAA,EACbC,WAAAA,IAAY;AACI,MAAM;AACtB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK,GAG1CG,IAASL,KAAaG,GAGtBG,IAAkBC,EAAY,CAACC,MAAyB;AAC5D,IAAIA,EAAMC,QAAQ,aAChBR,EAAa,EAAK,GAClBG,EAAa,EAAK,GAElBI,EAAME,yBAAAA;AAAAA,EAEV,GAAG,CAAA,CAAE;AAELC,EAAAA,EAAU,MAAM;AACd,QAAIN;AACFO,sBAASC,iBAAiB,WAAWP,CAAe,GAC7C,MAAMM,SAASE,oBAAoB,WAAWR,CAAe;AAAA,EAExE,GAAG,CAACD,GAAQC,CAAe,CAAC;AAE5B,QAAMS,IAAsB;AAAA,IAC1BC,cAAcA,MAAMf,EAAa,EAAI;AAAA,IACrCgB,cAAcA,MAAMhB,EAAa,EAAK;AAAA,IACtCiB,SAASA,MAAMd,EAAa,EAAI;AAAA,IAChCe,QAAQA,MAAMf,EAAa,EAAK;AAAA,EAAA;AAGlC,SACEgB,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IACEC,WAAWzB,IAAa,4CAA4C;AAAA,EAAA,GAC/DA,IAAa,CAAA,IAAKiB,CAAmB,GAE1CK,gBAAAA,EAAAC,cAACG,GAAO;AAAA,IACNC,UAAU;AAAA,IACVC,eAAerB;AAAAA,IACfsB,iBAAkBC,CAAAA,MAAS;AAEzB,MAAKA,MACH3B,EAAa,EAAK,GAClBG,EAAa,EAAK;AAAA,IAEtB;AAAA,IACAyB,yBAAyBA,MACvBT,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEE,WAAW,8BAA8BxB,IAAY,eAAe,EAAE,IAAID,IAAa,oCAAoC,EAAE;AAAA,MAC7HgC,OACE;AAAA,QACE,6BAA6BjC;AAAAA,QAC7BkC,QAAQjC,IAAa,gBAAgB;AAAA,MAAA;AAAA,IACvC,GAGDF,CACE;AAAA,IAEPoC,uBAAuBA,MACrBZ,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKE,WAAU;AAAA,MAAiC,sBAAmB;AAAA,IAAA,GAChE5B,CACE;AAAA,IAEPsC,cAAY;AAAA,IACZC,UAAQ;AAAA,IACRC,oBAAkB;AAAA,IAClBC,6BAA6B;AAAA,MAC3BC,QAAQ;AAAA,MACRC,iBAAiB;AAAA,IAAA;AAAA,EACnB,CACD,CACE;AAET;"}
|
|
1
|
+
{"version":3,"file":"index59.js","sources":["../src/components/TimePicker/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '../Button';\n\nexport interface TimePickerProps {\n initialHour?: number;\n initialMinute?: number;\n onApply?: (time: { hour: number; minute: number }) => void;\n ctaLabel?: string;\n onClose?: () => void;\n className?: string;\n automationId?: string;\n}\n\nconst ITEM_HEIGHT = 40;\nconst VISIBLE_ITEMS = 7;\nconst BUFFER_ITEMS = 3;\n\nconst HOURS = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, '0'));\nconst MINUTES = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, '0'));\nconst PERIODS: ('AM' | 'PM')[] = ['AM', 'PM'];\n\ninterface ScrollColumnProps {\n items: readonly string[];\n selectedIndex: number;\n onSelect: (index: number) => void;\n automationId?: string;\n}\n\nconst ScrollColumn: React.FC<ScrollColumnProps> = ({ items, selectedIndex, onSelect, automationId = '' }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollTo({ top: selectedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n }\n }, [selectedIndex]);\n\n const handleScroll = () => {\n if (!containerRef.current) return;\n\n if (scrollTimeout.current) clearTimeout(scrollTimeout.current);\n\n scrollTimeout.current = setTimeout(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const newIndex = Math.round(container.scrollTop / ITEM_HEIGHT);\n const clampedIndex = Math.max(0, Math.min(items.length - 1, newIndex));\n\n container.scrollTo({ top: clampedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n\n if (clampedIndex !== selectedIndex) onSelect(clampedIndex);\n }, 100);\n };\n\n const handleItemClick = (index: number) => {\n onSelect(index);\n containerRef.current?.scrollTo({ top: index * ITEM_HEIGHT, behavior: 'smooth' });\n };\n\n return (\n <div className=\"w-14\">\n <div\n ref={containerRef}\n className=\"overflow-y-auto [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n style={{\n height: VISIBLE_ITEMS * ITEM_HEIGHT,\n paddingTop: BUFFER_ITEMS * ITEM_HEIGHT,\n paddingBottom: BUFFER_ITEMS * ITEM_HEIGHT,\n scrollSnapType: 'y mandatory',\n scrollbarWidth: 'none'\n }}\n >\n {items.map((item, index) => (\n <div\n key={item}\n className={`flex items-center justify-center cursor-pointer select-none transition-colors h-10 ${\n index === selectedIndex\n ? 'text-[var(--color-blue-500)] font-semibold'\n : 'text-[var(--color-gray-700)] hover:text-[var(--color-blue-500)]'\n }`}\n onClick={() => handleItemClick(index)}\n style={{ scrollSnapAlign: 'center' }}\n data-automation-id={`${automationId}-item-${index}`}\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n initialHour = 12,\n initialMinute = 0,\n onApply,\n ctaLabel = 'Apply',\n onClose,\n className = '',\n automationId = 'timepicker'\n}) => {\n const [selectedHourIndex, setSelectedHourIndex] = useState(() => {\n if (initialHour === 0) return 11; // 0 = 12 AM\n if (initialHour > 12) return initialHour - 12 - 1; // 13-23 → 1-11 (PM hours)\n return initialHour - 1; // 1-12 → 0-11\n });\n const [selectedMinuteIndex, setSelectedMinuteIndex] = useState(Math.max(0, Math.min(59, initialMinute ?? 0)));\n const [selectedPeriodIndex, setSelectedPeriodIndex] = useState(\n () => (initialHour >= 12 ? 1 : 0) // 0-11 = AM, 12-23 = PM\n );\n\n const handleApply = () => {\n const hourIn24Format = selectedPeriodIndex === 1 ? selectedHourIndex + 12 : selectedHourIndex;\n onApply?.({\n hour: hourIn24Format + 1,\n minute: selectedMinuteIndex\n });\n onClose?.();\n };\n\n return (\n <div\n className={`se-design-timepicker-container w-full min-w-[216px] bg-[var(--color-white)] rounded-xl shadow-md border border-[var(--color-gray-400)] overflow-hidden ${className}`}\n >\n <div className=\"se-design-timepicker-content w-full relative p-4\">\n <div className=\"absolute left-4 right-4 top-1/2 -translate-y-1/2 h-10 bg-[var(--color-blue-50)] rounded-lg pointer-events-none z-0\" />\n <div className=\"flex justify-between gap-2 relative z-10\">\n <ScrollColumn\n items={HOURS}\n selectedIndex={selectedHourIndex}\n onSelect={setSelectedHourIndex}\n automationId={`${automationId}-hours`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={MINUTES}\n selectedIndex={selectedMinuteIndex}\n onSelect={setSelectedMinuteIndex}\n automationId={`${automationId}-minutes`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={PERIODS}\n selectedIndex={selectedPeriodIndex}\n onSelect={setSelectedPeriodIndex}\n automationId={`${automationId}-periods`}\n />\n </div>\n </div>\n <div className=\"se-design-timepicker-footer flex justify-end p-3 border-t border-[var(--color-gray-200)]\">\n <Button label={ctaLabel} type=\"primary\" onClick={handleApply} automationId={`${automationId}-apply-button`} />\n </div>\n </div>\n );\n};\n"],"names":["ITEM_HEIGHT","VISIBLE_ITEMS","BUFFER_ITEMS","HOURS","Array","from","length","_","i","String","padStart","MINUTES","PERIODS","ScrollColumn","items","selectedIndex","onSelect","automationId","containerRef","useRef","scrollTimeout","useEffect","current","scrollTo","top","behavior","handleScroll","clearTimeout","setTimeout","container","newIndex","Math","round","scrollTop","clampedIndex","max","min","handleItemClick","index","React","createElement","className","ref","onScroll","style","height","paddingTop","paddingBottom","scrollSnapType","scrollbarWidth","map","item","key","onClick","scrollSnapAlign","TimePicker","initialHour","initialMinute","onApply","ctaLabel","onClose","selectedHourIndex","setSelectedHourIndex","useState","selectedMinuteIndex","setSelectedMinuteIndex","selectedPeriodIndex","setSelectedPeriodIndex","handleApply","hourIn24Format","hour","minute","Button","label","type"],"mappings":"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"}
|
package/dist/index6.js
CHANGED
|
@@ -1,56 +1,37 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import l, { useState as d, useCallback as o } from "react";
|
|
2
|
+
import { isElementVisible as m } from "./index183.js";
|
|
3
|
+
const g = ({
|
|
4
|
+
skipLinks: n,
|
|
5
|
+
className: s = ""
|
|
6
|
+
}) => {
|
|
7
|
+
const [r, c] = d(n), i = o(() => {
|
|
8
|
+
const e = n.filter((t) => {
|
|
9
|
+
const f = document.getElementById(t.id);
|
|
10
|
+
return m(f);
|
|
11
|
+
});
|
|
12
|
+
c(e);
|
|
13
|
+
}, [n]), a = o(() => {
|
|
14
|
+
i();
|
|
15
|
+
}, [i]), u = o((e) => {
|
|
16
|
+
const t = document.getElementById(e);
|
|
17
|
+
t && t.focus({
|
|
18
|
+
preventScroll: !1
|
|
19
|
+
});
|
|
20
|
+
}, []);
|
|
21
|
+
return n.length === 0 ? null : /* @__PURE__ */ l.createElement("div", {
|
|
22
|
+
className: `se-design-skip-links-bar fixed left-0 right-0 -top-24 z-[10000] flex items-center justify-center py-1 px-4 bg-[var(--color-gray-500)] transition-[top] duration-300 ease-out focus-within:top-0 ${s}`,
|
|
23
|
+
onFocus: a
|
|
24
|
+
}, r.map((e) => /* @__PURE__ */ l.createElement("a", {
|
|
25
|
+
key: e.id,
|
|
26
|
+
href: `#${e.id}`,
|
|
27
|
+
className: "absolute -left-[9999px] [clip:rect(0,0,0,0)] no-underline text-[var(--color-white)] text-sm py-1 px-2.5 rounded focus:static focus:[clip:auto] focus:outline-none focus-visible:!outline-none hover:bg-[var(--color-gray-600)]",
|
|
28
|
+
onClick: (t) => {
|
|
29
|
+
t.preventDefault(), u(e.id);
|
|
8
30
|
}
|
|
9
|
-
|
|
10
|
-
}, l.apply(null, arguments);
|
|
11
|
-
}
|
|
12
|
-
const g = (o) => {
|
|
13
|
-
const {
|
|
14
|
-
label: e,
|
|
15
|
-
onDropdownClick: n = () => {
|
|
16
|
-
},
|
|
17
|
-
menuItems: a = [],
|
|
18
|
-
automationId: s = "",
|
|
19
|
-
...i
|
|
20
|
-
} = o, [r, m] = u(!1), c = () => {
|
|
21
|
-
m(!r), n();
|
|
22
|
-
};
|
|
23
|
-
return /* @__PURE__ */ t.createElement("div", {
|
|
24
|
-
className: "se-design-split-button flex items-center relative",
|
|
25
|
-
"data-automation-id": s
|
|
26
|
-
}, /* @__PURE__ */ t.createElement("button", l({
|
|
27
|
-
type: "button",
|
|
28
|
-
className: "px-8 py-2.5 rounded-l text-sm bg-[var(--color-blue-500)] text-[var(--color-white)] border-r border-[var(--color-white)]"
|
|
29
|
-
}, i), e), /* @__PURE__ */ t.createElement("button", {
|
|
30
|
-
type: "button",
|
|
31
|
-
className: "bg-[var(--color-blue-500)] rounded-r",
|
|
32
|
-
onClick: c,
|
|
33
|
-
"data-automation-id": "split-button-dropdown-button"
|
|
34
|
-
}, /* @__PURE__ */ t.createElement("svg", {
|
|
35
|
-
className: `${r ? "rotate-180" : ""} transition-all`,
|
|
36
|
-
width: "35",
|
|
37
|
-
height: "40",
|
|
38
|
-
viewBox: "0 0 35 40",
|
|
39
|
-
fill: "none",
|
|
40
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
41
|
-
}, /* @__PURE__ */ t.createElement("path", {
|
|
42
|
-
d: "M0 0H32C33.6569 0 35 1.34315 35 3V37C35 38.6569 33.6569 40 32 40H0V0Z",
|
|
43
|
-
fill: "transparent"
|
|
44
|
-
}), /* @__PURE__ */ t.createElement("path", {
|
|
45
|
-
d: "M18 23.5L14 19.5L22 19.5L18 23.5Z",
|
|
46
|
-
fill: "white"
|
|
47
|
-
}))), r && /* @__PURE__ */ t.createElement("div", {
|
|
48
|
-
className: "absolute top-full mt-1 w-max"
|
|
49
|
-
}, /* @__PURE__ */ t.createElement(d, {
|
|
50
|
-
items: a
|
|
51
|
-
})));
|
|
31
|
+
}, e.label)));
|
|
52
32
|
};
|
|
53
33
|
export {
|
|
54
|
-
g as
|
|
34
|
+
g as SkipLinksBar,
|
|
35
|
+
g as default
|
|
55
36
|
};
|
|
56
37
|
//# sourceMappingURL=index6.js.map
|
package/dist/index6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index6.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index6.js","sources":["../src/components/SkipLinksBar/index.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { isElementVisible } from '../../utils/a11y';\n\nexport interface SkipLink {\n id: string; \n label: string;\n}\n\nexport interface SkipLinksBarProps {\n skipLinks: SkipLink[]; // Required: array of skip targets\n className?: string; \n}\n\nexport const SkipLinksBar: React.FC<SkipLinksBarProps> = ({\n skipLinks,\n className = '',\n}) => {\n const [visibleLinks, setVisibleLinks] = useState<SkipLink[]>(skipLinks);\n\n // Check which target elements exist in DOM AND are visible\n const checkVisibleLinks = useCallback(() => {\n const existing = skipLinks.filter(link => {\n const element = document.getElementById(link.id);\n return isElementVisible(element);\n });\n setVisibleLinks(existing);\n }, [skipLinks]);\n\n // Only check on focus — by the time user tabs in, all child routes have rendered\n const handleContainerFocus = useCallback(() => {\n checkVisibleLinks();\n }, [checkVisibleLinks]);\n\n const handleSkipLinkClick = useCallback((targetId: string) => {\n const targetElement = document.getElementById(targetId);\n if (targetElement) {\n targetElement.focus({ preventScroll: false });\n }\n }, []);\n\n if (skipLinks.length === 0) {\n return null;\n }\n\n return (\n <div\n className={`se-design-skip-links-bar fixed left-0 right-0 -top-24 z-[10000] flex items-center justify-center py-1 px-4 bg-[var(--color-gray-500)] transition-[top] duration-300 ease-out focus-within:top-0 ${className}`}\n onFocus={handleContainerFocus}\n >\n {visibleLinks.map((link) => (\n <a\n key={link.id}\n href={`#${link.id}`}\n className=\"absolute -left-[9999px] [clip:rect(0,0,0,0)] no-underline text-[var(--color-white)] text-sm py-1 px-2.5 rounded focus:static focus:[clip:auto] focus:outline-none focus-visible:!outline-none hover:bg-[var(--color-gray-600)]\"\n onClick={(e) => {\n e.preventDefault();\n handleSkipLinkClick(link.id);\n }}\n >\n {link.label}\n </a>\n ))}\n </div>\n );\n};\n\nexport default SkipLinksBar;\n"],"names":["SkipLinksBar","skipLinks","className","visibleLinks","setVisibleLinks","useState","checkVisibleLinks","useCallback","existing","filter","link","element","document","getElementById","id","isElementVisible","handleContainerFocus","handleSkipLinkClick","targetId","targetElement","focus","preventScroll","length","React","createElement","onFocus","map","key","href","onClick","e","preventDefault","label"],"mappings":";;AAaO,MAAMA,IAA4CA,CAAC;AAAA,EACxDC,WAAAA;AAAAA,EACAC,WAAAA,IAAY;AACd,MAAM;AACJ,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAqBJ,CAAS,GAGhEK,IAAoBC,EAAY,MAAM;AAC1C,UAAMC,IAAWP,EAAUQ,OAAOC,CAAAA,MAAQ;AACxC,YAAMC,IAAUC,SAASC,eAAeH,EAAKI,EAAE;AAC/C,aAAOC,EAAiBJ,CAAO;AAAA,IACjC,CAAC;AACDP,IAAAA,EAAgBI,CAAQ;AAAA,EAC1B,GAAG,CAACP,CAAS,CAAC,GAGRe,IAAuBT,EAAY,MAAM;AAC7CD,IAAAA,EAAAA;AAAAA,EACF,GAAG,CAACA,CAAiB,CAAC,GAEhBW,IAAsBV,EAAY,CAACW,MAAqB;AAC5D,UAAMC,IAAgBP,SAASC,eAAeK,CAAQ;AACtD,IAAIC,KACFA,EAAcC,MAAM;AAAA,MAAEC,eAAe;AAAA,IAAA,CAAO;AAAA,EAEhD,GAAG,CAAA,CAAE;AAEL,SAAIpB,EAAUqB,WAAW,IAChB,OAIPC,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEtB,WAAW,mMAAmMA,CAAS;AAAA,IACvNuB,SAAST;AAAAA,EAAAA,GAERb,EAAauB,IAAKhB,CAAAA,MACjBa,gBAAAA,EAAAC,cAAA,KAAA;AAAA,IACEG,KAAKjB,EAAKI;AAAAA,IACVc,MAAM,IAAIlB,EAAKI,EAAE;AAAA,IACjBZ,WAAU;AAAA,IACV2B,SAAUC,CAAAA,MAAM;AACdA,MAAAA,EAAEC,eAAAA,GACFd,EAAoBP,EAAKI,EAAE;AAAA,IAC7B;AAAA,EAAA,GAECJ,EAAKsB,KACL,CACJ,CACE;AAET;"}
|