@scbt-ecom/ui 0.66.0 → 0.67.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.
Files changed (90) hide show
  1. package/dist/hooks.js +40 -44
  2. package/dist/hooks.js.map +1 -1
  3. package/dist/{index-CywQGF6V.js → index-CVI7dOhZ.js} +11419 -10867
  4. package/dist/index-CVI7dOhZ.js.map +1 -0
  5. package/dist/index-cm9kMt4X.js +435 -0
  6. package/dist/index-cm9kMt4X.js.map +1 -0
  7. package/dist/shared/ui/button/model/helpers.d.ts +1 -1
  8. package/dist/shared/ui/carousel/CarouselNative.d.ts +6 -0
  9. package/dist/shared/ui/formElements/controlled/index.d.ts +2 -0
  10. package/dist/shared/ui/formElements/controlled/radio/RadioGroupCardControl.d.ts +3 -0
  11. package/dist/shared/ui/formElements/controlled/radio/RadioGroupControl.d.ts +1 -1
  12. package/dist/shared/ui/formElements/controlled/radio/RadioGroupTabControl.d.ts +3 -0
  13. package/dist/shared/ui/formElements/controlled/radio/index.d.ts +2 -0
  14. package/dist/shared/ui/formElements/uncontrolled/dayPicker/DayPicker.d.ts +1 -1
  15. package/dist/shared/ui/formElements/uncontrolled/index.d.ts +7 -6
  16. package/dist/shared/ui/formElements/uncontrolled/input/Input.d.ts +1 -1
  17. package/dist/shared/ui/formElements/uncontrolled/maskInput/MaskInput.d.ts +1 -1
  18. package/dist/shared/ui/formElements/uncontrolled/radio/RadioGroup.d.ts +12 -0
  19. package/dist/shared/ui/formElements/uncontrolled/radio/index.d.ts +1 -1
  20. package/dist/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent.d.ts +12 -0
  21. package/dist/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.d.ts +3 -0
  22. package/dist/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.d.ts +4 -0
  23. package/dist/shared/ui/formElements/uncontrolled/radio/ui/RadioItemTab.d.ts +4 -0
  24. package/dist/shared/ui/formElements/uncontrolled/radio/ui/index.d.ts +3 -1
  25. package/dist/shared/ui/formElements/uncontrolled/select/Select.d.ts +1 -1
  26. package/dist/shared/ui/formElements/uncontrolled/select/ui/SelectItem.d.ts +1 -1
  27. package/dist/shared/ui/formElements/uncontrolled/textarea/Textarea.d.ts +1 -1
  28. package/dist/shared/ui/heading/Heading.d.ts +1 -1
  29. package/dist/shared/ui/hint/Hint.d.ts +1 -0
  30. package/dist/shared/ui/icon/sprite.gen.d.ts +1 -1
  31. package/dist/shared/ui/popover/Popover.d.ts +2 -1
  32. package/dist/shared/validation/base/base.validators.d.ts +2 -0
  33. package/dist/shared/validation/base/boolean.validators.d.ts +13 -0
  34. package/dist/shared/validation/base/number.validators.d.ts +1 -0
  35. package/dist/shared/validation/base/select.validators.d.ts +1 -0
  36. package/dist/shared/validation/base/string.validators.d.ts +1 -0
  37. package/dist/shared/validation/index.d.ts +1 -0
  38. package/dist/sprites/general.svg +1 -1
  39. package/dist/ui.js +1364 -1435
  40. package/dist/ui.js.map +1 -1
  41. package/dist/useDebounce-B-41PFpS.js +1211 -0
  42. package/dist/useDebounce-B-41PFpS.js.map +1 -0
  43. package/dist/useFieldsProgress-BQ99Vijl.js +26 -0
  44. package/dist/useFieldsProgress-BQ99Vijl.js.map +1 -0
  45. package/dist/validation.js +1 -1
  46. package/dist/widget.js +1126 -954
  47. package/dist/widget.js.map +1 -1
  48. package/dist/widgets/calculator/Calculator.d.ts +7 -0
  49. package/dist/widgets/calculator/CalculatorRoot.d.ts +8 -0
  50. package/dist/widgets/calculator/index.d.ts +2 -0
  51. package/dist/widgets/calculator/model/helpers.d.ts +4 -0
  52. package/dist/widgets/calculator/model/index.d.ts +3 -0
  53. package/dist/widgets/calculator/model/types.d.ts +9 -0
  54. package/dist/widgets/calculator/model/utils.d.ts +11 -0
  55. package/dist/widgets/calculator/ui/CalculatorTabs.d.ts +12 -0
  56. package/dist/widgets/calculator/ui/calculatorInfo/CalculatorInfo.d.ts +4 -0
  57. package/dist/widgets/calculator/ui/calculatorInfo/index.d.ts +2 -0
  58. package/dist/widgets/calculator/ui/calculatorInfo/ui/AssistHint.d.ts +7 -0
  59. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.d.ts +7 -0
  60. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.d.ts +5 -0
  61. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoFooter.d.ts +8 -0
  62. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoHead.d.ts +5 -0
  63. package/dist/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.d.ts +15 -0
  64. package/dist/widgets/calculator/ui/calculatorInfo/ui/index.d.ts +6 -0
  65. package/dist/widgets/calculator/ui/index.d.ts +3 -0
  66. package/dist/widgets/calculator/ui/rootCalculator/RootCalculator.d.ts +14 -0
  67. package/dist/widgets/calculator/ui/rootCalculator/index.d.ts +1 -0
  68. package/dist/widgets/calculator/ui/rootCalculator/ui/CalculatorModal.d.ts +8 -0
  69. package/dist/widgets/calculator/ui/rootCalculator/ui/CheckboxGroup.d.ts +9 -0
  70. package/dist/widgets/calculator/ui/rootCalculator/ui/RadioGroup.d.ts +11 -0
  71. package/dist/widgets/calculator/ui/rootCalculator/ui/SlidersGroup.d.ts +9 -0
  72. package/dist/widgets/calculator/ui/rootCalculator/ui/SwitchGroup.d.ts +9 -0
  73. package/dist/widgets/calculator/ui/rootCalculator/ui/index.d.ts +5 -0
  74. package/dist/widgets/dynamicForm/DynamicForm.d.ts +2 -1
  75. package/dist/widgets/dynamicForm/model/getDynamicSchema.d.ts +0 -10
  76. package/dist/widgets/dynamicForm/model/index.d.ts +0 -1
  77. package/dist/widgets/fieldMapper/index.d.ts +1 -1
  78. package/dist/widgets/fieldMapper/model/types.d.ts +6 -0
  79. package/dist/widgets/index.d.ts +1 -0
  80. package/dist/widgets/model/helpers.d.ts +2 -2
  81. package/dist/widgets/model/index.d.ts +1 -0
  82. package/dist/widgets/model/utils.d.ts +10 -0
  83. package/package.json +3 -2
  84. package/dist/index-BKXpPQ1s.js +0 -426
  85. package/dist/index-BKXpPQ1s.js.map +0 -1
  86. package/dist/index-CywQGF6V.js.map +0 -1
  87. package/dist/useDebounce-i1sdXecI.js +0 -1196
  88. package/dist/useDebounce-i1sdXecI.js.map +0 -1
  89. package/dist/useFieldsProgress-C3nmU8Vi.js +0 -21
  90. package/dist/useFieldsProgress-C3nmU8Vi.js.map +0 -1
package/dist/hooks.js CHANGED
@@ -1,55 +1,51 @@
1
- import { d as I, b as R, c as A, e as L, f as O, a as V } from "./useDebounce-i1sdXecI.js";
2
- import * as p from "react";
3
- import { useState as m, useEffect as b } from "react";
4
- import { u as F } from "./useFieldsProgress-C3nmU8Vi.js";
5
- const f = (o = !1) => {
6
- const [s, e] = p.useState(o);
7
- return [s, (a) => e((t) => a ?? !t)];
8
- }, E = (o, s, e = !1) => {
9
- const [u, a] = m(e);
10
- return b(() => {
11
- const t = new IntersectionObserver((r) => {
12
- const c = r.filter((n) => n.isIntersecting).map((n) => n.target.id);
13
- a(c.some((n) => o.includes(n)));
14
- }, s), i = /* @__PURE__ */ new Map();
15
- return o.forEach((r) => {
16
- const c = document.getElementById(r);
17
- i.set(r, c), c && t.observe(c);
1
+ import { d as x, a as C, b as I, c as A, e as L, u as O } from "./useDebounce-B-41PFpS.js";
2
+ import { u as D, a as F } from "./useFieldsProgress-BQ99Vijl.js";
3
+ import { useState as b, useEffect as m } from "react";
4
+ const h = (i, r, t = !1) => {
5
+ const [a, l] = b(t);
6
+ return m(() => {
7
+ const o = new IntersectionObserver((s) => {
8
+ const c = s.filter((e) => e.isIntersecting).map((e) => e.target.id);
9
+ l(c.some((e) => i.includes(e)));
10
+ }, r), n = /* @__PURE__ */ new Map();
11
+ return i.forEach((s) => {
12
+ const c = document.getElementById(s);
13
+ n.set(s, c), c && o.observe(c);
18
14
  }), () => {
19
- t.disconnect();
15
+ o.disconnect();
20
16
  };
21
- }, [o, s]), u;
22
- }, B = (o, s, e) => {
23
- const [u, a] = m(null);
24
- return b(() => {
25
- const t = () => {
26
- if (o.current && s.current) {
27
- const i = o.current.getBoundingClientRect(), r = s.current.getBoundingClientRect(), c = window.innerHeight;
28
- let n, l;
29
- const d = c - i.bottom;
30
- d >= r.height + e ? (n = i.bottom + e, l = "top") : i.top >= r.height + e ? (n = i.top - r.height - e * 2, l = "bottom") : (n = i.bottom + e, l = "top", s.current.style.maxHeight = `${d - e}px`), a({
31
- top: n,
32
- width: i.width,
33
- left: i.left,
34
- transformOrigin: l
17
+ }, [i, r]), a;
18
+ }, E = (i, r, t) => {
19
+ const [a, l] = b(null);
20
+ return m(() => {
21
+ const o = () => {
22
+ if (i.current && r.current) {
23
+ const n = i.current.getBoundingClientRect(), s = r.current.getBoundingClientRect(), c = window.innerHeight;
24
+ let e, u;
25
+ const d = c - n.bottom;
26
+ d >= s.height + t ? (e = n.bottom + t, u = "top") : n.top >= s.height + t ? (e = n.top - s.height - t * 2, u = "bottom") : (e = n.bottom + t, u = "top", r.current.style.maxHeight = `${d - t}px`), l({
27
+ top: e,
28
+ width: n.width,
29
+ left: n.left,
30
+ transformOrigin: u
35
31
  });
36
32
  }
37
33
  };
38
- return t(), window.addEventListener("resize", t), window.addEventListener("orientationchange", t), () => {
39
- window.removeEventListener("resize", t), window.removeEventListener("orientationchange", t);
34
+ return o(), window.addEventListener("resize", o), window.addEventListener("orientationchange", o), () => {
35
+ window.removeEventListener("resize", o), window.removeEventListener("orientationchange", o);
40
36
  };
41
- }, [o.current, s.current, e]), u;
37
+ }, [i.current, r.current, t]), a;
42
38
  };
43
39
  export {
44
- I as debounce,
45
- f as useBoolean,
46
- R as useClickOutside,
47
- A as useControlledForm,
48
- L as useDebounceCallback,
49
- O as useDebounceValue,
50
- V as useDevice,
40
+ x as debounce,
41
+ D as useBoolean,
42
+ C as useClickOutside,
43
+ I as useControlledForm,
44
+ A as useDebounceCallback,
45
+ L as useDebounceValue,
46
+ O as useDevice,
51
47
  F as useFieldsProgress,
52
- B as useFloating,
53
- E as useObserveElements
48
+ E as useFloating,
49
+ h as useObserveElements
54
50
  };
55
51
  //# sourceMappingURL=hooks.js.map
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../lib/shared/hooks/useBoolean.ts","../lib/shared/hooks/useObserveElements.ts","../lib/shared/hooks/useFloating.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\ntype UseBooleanReturn = [value: boolean, action: (val?: boolean) => void]\n\nexport const useBoolean = (initialValue = false): UseBooleanReturn => {\n const [value, setValue] = React.useState(initialValue)\n const action = (val?: boolean) => setValue((prevValue) => val ?? !prevValue)\n\n return [value, action]\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\n\nexport const useObserveElements = (ids: string[], options?: IntersectionObserverInit, initialState = false): boolean => {\n const [isVisible, setIsVisible] = useState(initialState)\n\n useEffect(() => {\n const observer = new IntersectionObserver((entries) => {\n const visibleIds = entries.filter((entry) => entry.isIntersecting).map((entry) => entry.target.id)\n setIsVisible(visibleIds.some((id) => ids.includes(id)))\n }, options)\n\n const elementsMap = new Map<string, HTMLElement | null>()\n\n ids.forEach((id) => {\n const element = document.getElementById(id)\n elementsMap.set(id, element)\n if (element) {\n observer.observe(element)\n }\n })\n\n return () => {\n observer.disconnect()\n }\n }, [ids, options])\n\n return isVisible\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\n\ntype FloatingPosition = {\n top?: number\n left?: number\n width?: number\n transformOrigin?: string\n}\n\nexport const useFloating = (\n trigger: React.RefObject<HTMLElement>,\n list: React.RefObject<HTMLElement>,\n offset: number\n): FloatingPosition | null => {\n const [position, setPosition] = useState<FloatingPosition | null>(null)\n\n useEffect(() => {\n const updatePosition = () => {\n if (trigger.current && list.current) {\n const triggerRect = trigger.current.getBoundingClientRect()\n const listRect = list.current.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n\n let top: number\n let transformOrigin: string\n\n const spaceBelow = viewportHeight - triggerRect.bottom\n const fitsBelow = spaceBelow >= listRect.height + offset\n\n if (fitsBelow) {\n top = triggerRect.bottom + offset\n transformOrigin = 'top'\n } else {\n const spaceAbove = triggerRect.top\n const fitsAbove = spaceAbove >= listRect.height + offset\n\n if (fitsAbove) {\n top = triggerRect.top - listRect.height - offset * 2\n transformOrigin = 'bottom'\n } else {\n top = triggerRect.bottom + offset\n transformOrigin = 'top'\n list.current.style.maxHeight = `${spaceBelow - offset}px`\n }\n }\n\n setPosition({\n top,\n width: triggerRect.width,\n left: triggerRect.left,\n transformOrigin\n })\n }\n }\n\n updatePosition()\n window.addEventListener('resize', updatePosition)\n window.addEventListener('orientationchange', updatePosition)\n\n return () => {\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('orientationchange', updatePosition)\n }\n }, [trigger.current, list.current, offset])\n\n return position\n}\n"],"names":["useBoolean","initialValue","value","setValue","React","val","prevValue","useObserveElements","ids","options","initialState","isVisible","setIsVisible","useState","useEffect","observer","entries","visibleIds","entry","id","elementsMap","element","useFloating","trigger","list","offset","position","setPosition","updatePosition","triggerRect","listRect","viewportHeight","top","transformOrigin","spaceBelow"],"mappings":";;;;AAMa,MAAAA,IAAa,CAACC,IAAe,OAA4B;AACpE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAM,SAASH,CAAY;AAG9C,SAAA,CAACC,GAFO,CAACG,MAAkBF,EAAS,CAACG,MAAcD,KAAO,CAACC,CAAS,CAEtD;AACvB,GCPaC,IAAqB,CAACC,GAAeC,GAAoCC,IAAe,OAAmB;AACtH,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAASH,CAAY;AAEvD,SAAAI,EAAU,MAAM;AACd,UAAMC,IAAW,IAAI,qBAAqB,CAACC,MAAY;AACrD,YAAMC,IAAaD,EAAQ,OAAO,CAACE,MAAUA,EAAM,cAAc,EAAE,IAAI,CAACA,MAAUA,EAAM,OAAO,EAAE;AACpF,MAAAN,EAAAK,EAAW,KAAK,CAACE,MAAOX,EAAI,SAASW,CAAE,CAAC,CAAC;AAAA,OACrDV,CAAO,GAEJW,wBAAkB,IAAgC;AAEpD,WAAAZ,EAAA,QAAQ,CAACW,MAAO;AACZ,YAAAE,IAAU,SAAS,eAAeF,CAAE;AAC9B,MAAAC,EAAA,IAAID,GAAIE,CAAO,GACvBA,KACFN,EAAS,QAAQM,CAAO;AAAA,IAC1B,CACD,GAEM,MAAM;AACX,MAAAN,EAAS,WAAW;AAAA,IACtB;AAAA,EAAA,GACC,CAACP,GAAKC,CAAO,CAAC,GAEVE;AACT,GClBaW,IAAc,CACzBC,GACAC,GACAC,MAC4B;AAC5B,QAAM,CAACC,GAAUC,CAAW,IAAId,EAAkC,IAAI;AAEtE,SAAAC,EAAU,MAAM;AACd,UAAMc,IAAiB,MAAM;AACvB,UAAAL,EAAQ,WAAWC,EAAK,SAAS;AAC7B,cAAAK,IAAcN,EAAQ,QAAQ,sBAAsB,GACpDO,IAAWN,EAAK,QAAQ,sBAAsB,GAC9CO,IAAiB,OAAO;AAE1B,YAAAC,GACAC;AAEE,cAAAC,IAAaH,IAAiBF,EAAY;AAGhD,QAFkBK,KAAcJ,EAAS,SAASL,KAGhDO,IAAMH,EAAY,SAASJ,GACTQ,IAAA,SAECJ,EAAY,OACCC,EAAS,SAASL,KAGhDO,IAAMH,EAAY,MAAMC,EAAS,SAASL,IAAS,GACjCQ,IAAA,aAElBD,IAAMH,EAAY,SAASJ,GACTQ,IAAA,OAClBT,EAAK,QAAQ,MAAM,YAAY,GAAGU,IAAaT,CAAM,OAI7CE,EAAA;AAAA,UACV,KAAAK;AAAA,UACA,OAAOH,EAAY;AAAA,UACnB,MAAMA,EAAY;AAAA,UAClB,iBAAAI;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,IAEL;AAEe,WAAAL,EAAA,GACR,OAAA,iBAAiB,UAAUA,CAAc,GACzC,OAAA,iBAAiB,qBAAqBA,CAAc,GAEpD,MAAM;AACJ,aAAA,oBAAoB,UAAUA,CAAc,GAC5C,OAAA,oBAAoB,qBAAqBA,CAAc;AAAA,IAChE;AAAA,EAAA,GACC,CAACL,EAAQ,SAASC,EAAK,SAASC,CAAM,CAAC,GAEnCC;AACT;"}
1
+ {"version":3,"file":"hooks.js","sources":["../lib/shared/hooks/useObserveElements.ts","../lib/shared/hooks/useFloating.ts"],"sourcesContent":["'use client'\n\nimport { useEffect, useState } from 'react'\n\nexport const useObserveElements = (ids: string[], options?: IntersectionObserverInit, initialState = false): boolean => {\n const [isVisible, setIsVisible] = useState(initialState)\n\n useEffect(() => {\n const observer = new IntersectionObserver((entries) => {\n const visibleIds = entries.filter((entry) => entry.isIntersecting).map((entry) => entry.target.id)\n setIsVisible(visibleIds.some((id) => ids.includes(id)))\n }, options)\n\n const elementsMap = new Map<string, HTMLElement | null>()\n\n ids.forEach((id) => {\n const element = document.getElementById(id)\n elementsMap.set(id, element)\n if (element) {\n observer.observe(element)\n }\n })\n\n return () => {\n observer.disconnect()\n }\n }, [ids, options])\n\n return isVisible\n}\n","'use client'\n\nimport { useEffect, useState } from 'react'\n\ntype FloatingPosition = {\n top?: number\n left?: number\n width?: number\n transformOrigin?: string\n}\n\nexport const useFloating = (\n trigger: React.RefObject<HTMLElement>,\n list: React.RefObject<HTMLElement>,\n offset: number\n): FloatingPosition | null => {\n const [position, setPosition] = useState<FloatingPosition | null>(null)\n\n useEffect(() => {\n const updatePosition = () => {\n if (trigger.current && list.current) {\n const triggerRect = trigger.current.getBoundingClientRect()\n const listRect = list.current.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n\n let top: number\n let transformOrigin: string\n\n const spaceBelow = viewportHeight - triggerRect.bottom\n const fitsBelow = spaceBelow >= listRect.height + offset\n\n if (fitsBelow) {\n top = triggerRect.bottom + offset\n transformOrigin = 'top'\n } else {\n const spaceAbove = triggerRect.top\n const fitsAbove = spaceAbove >= listRect.height + offset\n\n if (fitsAbove) {\n top = triggerRect.top - listRect.height - offset * 2\n transformOrigin = 'bottom'\n } else {\n top = triggerRect.bottom + offset\n transformOrigin = 'top'\n list.current.style.maxHeight = `${spaceBelow - offset}px`\n }\n }\n\n setPosition({\n top,\n width: triggerRect.width,\n left: triggerRect.left,\n transformOrigin\n })\n }\n }\n\n updatePosition()\n window.addEventListener('resize', updatePosition)\n window.addEventListener('orientationchange', updatePosition)\n\n return () => {\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('orientationchange', updatePosition)\n }\n }, [trigger.current, list.current, offset])\n\n return position\n}\n"],"names":["useObserveElements","ids","options","initialState","isVisible","setIsVisible","useState","useEffect","observer","entries","visibleIds","entry","id","elementsMap","element","useFloating","trigger","list","offset","position","setPosition","updatePosition","triggerRect","listRect","viewportHeight","top","transformOrigin","spaceBelow"],"mappings":";;;AAIO,MAAMA,IAAqB,CAACC,GAAeC,GAAoCC,IAAe,OAAmB;AACtH,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAASH,CAAY;AAEvD,SAAAI,EAAU,MAAM;AACd,UAAMC,IAAW,IAAI,qBAAqB,CAACC,MAAY;AACrD,YAAMC,IAAaD,EAAQ,OAAO,CAACE,MAAUA,EAAM,cAAc,EAAE,IAAI,CAACA,MAAUA,EAAM,OAAO,EAAE;AACpF,MAAAN,EAAAK,EAAW,KAAK,CAACE,MAAOX,EAAI,SAASW,CAAE,CAAC,CAAC;AAAA,OACrDV,CAAO,GAEJW,wBAAkB,IAAgC;AAEpD,WAAAZ,EAAA,QAAQ,CAACW,MAAO;AACZ,YAAAE,IAAU,SAAS,eAAeF,CAAE;AAC9B,MAAAC,EAAA,IAAID,GAAIE,CAAO,GACvBA,KACFN,EAAS,QAAQM,CAAO;AAAA,IAC1B,CACD,GAEM,MAAM;AACX,MAAAN,EAAS,WAAW;AAAA,IACtB;AAAA,EAAA,GACC,CAACP,GAAKC,CAAO,CAAC,GAEVE;AACT,GClBaW,IAAc,CACzBC,GACAC,GACAC,MAC4B;AAC5B,QAAM,CAACC,GAAUC,CAAW,IAAId,EAAkC,IAAI;AAEtE,SAAAC,EAAU,MAAM;AACd,UAAMc,IAAiB,MAAM;AACvB,UAAAL,EAAQ,WAAWC,EAAK,SAAS;AAC7B,cAAAK,IAAcN,EAAQ,QAAQ,sBAAsB,GACpDO,IAAWN,EAAK,QAAQ,sBAAsB,GAC9CO,IAAiB,OAAO;AAE1B,YAAAC,GACAC;AAEE,cAAAC,IAAaH,IAAiBF,EAAY;AAGhD,QAFkBK,KAAcJ,EAAS,SAASL,KAGhDO,IAAMH,EAAY,SAASJ,GACTQ,IAAA,SAECJ,EAAY,OACCC,EAAS,SAASL,KAGhDO,IAAMH,EAAY,MAAMC,EAAS,SAASL,IAAS,GACjCQ,IAAA,aAElBD,IAAMH,EAAY,SAASJ,GACTQ,IAAA,OAClBT,EAAK,QAAQ,MAAM,YAAY,GAAGU,IAAaT,CAAM,OAI7CE,EAAA;AAAA,UACV,KAAAK;AAAA,UACA,OAAOH,EAAY;AAAA,UACnB,MAAMA,EAAY;AAAA,UAClB,iBAAAI;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,IAEL;AAEe,WAAAL,EAAA,GACR,OAAA,iBAAiB,UAAUA,CAAc,GACzC,OAAA,iBAAiB,qBAAqBA,CAAc,GAEpD,MAAM;AACJ,aAAA,oBAAoB,UAAUA,CAAc,GAC5C,OAAA,oBAAoB,qBAAqBA,CAAc;AAAA,IAChE;AAAA,EAAA,GACC,CAACL,EAAQ,SAASC,EAAK,SAASC,CAAM,CAAC,GAEnCC;AACT;"}