@acronis-platform/ui-react 0.58.0 → 0.60.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 (73) hide show
  1. package/dist/components/ui/area-chart/area-chart.js +91 -63
  2. package/dist/components/ui/area-chart/area-chart.js.map +1 -1
  3. package/dist/components/ui/bar-chart/bar-chart.js +104 -73
  4. package/dist/components/ui/bar-chart/bar-chart.js.map +1 -1
  5. package/dist/components/ui/calendar/calendar.js +17 -15
  6. package/dist/components/ui/calendar/calendar.js.map +1 -1
  7. package/dist/components/ui/carousel-dialog/carousel-dialog.js +87 -0
  8. package/dist/components/ui/carousel-dialog/carousel-dialog.js.map +1 -0
  9. package/dist/components/ui/category-bar/category-bar.js +126 -0
  10. package/dist/components/ui/category-bar/category-bar.js.map +1 -0
  11. package/dist/components/ui/chart/chart-format.js +40 -0
  12. package/dist/components/ui/chart/chart-format.js.map +1 -0
  13. package/dist/components/ui/chart/chart.js.map +1 -1
  14. package/dist/components/ui/composed-chart/composed-chart.js +91 -63
  15. package/dist/components/ui/composed-chart/composed-chart.js.map +1 -1
  16. package/dist/components/ui/confidence-cone/confidence-cone.js +113 -85
  17. package/dist/components/ui/confidence-cone/confidence-cone.js.map +1 -1
  18. package/dist/components/ui/dialog/dialog.js +29 -29
  19. package/dist/components/ui/dialog/dialog.js.map +1 -1
  20. package/dist/components/ui/dialog-footer-carousel/dialog-footer-carousel.js +57 -0
  21. package/dist/components/ui/dialog-footer-carousel/dialog-footer-carousel.js.map +1 -0
  22. package/dist/components/ui/dialog-footer-default/dialog-footer-default.js +1 -1
  23. package/dist/components/ui/dialog-footer-default/dialog-footer-default.js.map +1 -1
  24. package/dist/components/ui/dialog-welcome/dialog-welcome.js +272 -0
  25. package/dist/components/ui/dialog-welcome/dialog-welcome.js.map +1 -0
  26. package/dist/components/ui/histogram/histogram.js +89 -61
  27. package/dist/components/ui/histogram/histogram.js.map +1 -1
  28. package/dist/components/ui/input/input.js.map +1 -1
  29. package/dist/components/ui/line-chart/line-chart.js +120 -92
  30. package/dist/components/ui/line-chart/line-chart.js.map +1 -1
  31. package/dist/components/ui/sankey-chart/sankey-chart.js +192 -0
  32. package/dist/components/ui/sankey-chart/sankey-chart.js.map +1 -0
  33. package/dist/components/ui/scatter-chart/scatter-chart.js +79 -51
  34. package/dist/components/ui/scatter-chart/scatter-chart.js.map +1 -1
  35. package/dist/components/ui/toolbar/toolbar.js +82 -92
  36. package/dist/components/ui/toolbar/toolbar.js.map +1 -1
  37. package/dist/index.js +461 -439
  38. package/dist/index.js.map +1 -1
  39. package/dist/lib/breakpoints.js +9 -6
  40. package/dist/lib/breakpoints.js.map +1 -1
  41. package/dist/node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.6/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js +25 -0
  42. package/dist/node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.6/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js.map +1 -0
  43. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js +36 -0
  44. package/dist/node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js.map +1 -0
  45. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js +1205 -0
  46. package/dist/node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js.map +1 -0
  47. package/dist/react.js +461 -439
  48. package/dist/react.js.map +1 -1
  49. package/dist/src/components/ui/area-chart/area-chart.d.ts +2 -17
  50. package/dist/src/components/ui/bar-chart/bar-chart.d.ts +2 -17
  51. package/dist/src/components/ui/carousel-dialog/carousel-dialog.d.ts +28 -0
  52. package/dist/src/components/ui/carousel-dialog/index.d.ts +1 -0
  53. package/dist/src/components/ui/category-bar/category-bar.d.ts +51 -0
  54. package/dist/src/components/ui/category-bar/index.d.ts +1 -0
  55. package/dist/src/components/ui/chart/__tests__/chart-format.test.d.ts +1 -0
  56. package/dist/src/components/ui/chart/chart-format.d.ts +111 -0
  57. package/dist/src/components/ui/chart/chart.d.ts +2 -0
  58. package/dist/src/components/ui/chart/index.d.ts +3 -1
  59. package/dist/src/components/ui/composed-chart/composed-chart.d.ts +2 -17
  60. package/dist/src/components/ui/confidence-cone/confidence-cone.d.ts +2 -19
  61. package/dist/src/components/ui/dialog-footer-carousel/dialog-footer-carousel.d.ts +9 -0
  62. package/dist/src/components/ui/dialog-footer-carousel/index.d.ts +1 -0
  63. package/dist/src/components/ui/dialog-welcome/dialog-welcome.d.ts +54 -0
  64. package/dist/src/components/ui/dialog-welcome/dialog-welcome.docs.d.ts +55 -0
  65. package/dist/src/components/ui/dialog-welcome/index.d.ts +1 -0
  66. package/dist/src/components/ui/histogram/histogram.d.ts +2 -17
  67. package/dist/src/components/ui/line-chart/line-chart.d.ts +2 -17
  68. package/dist/src/components/ui/sankey-chart/index.d.ts +2 -0
  69. package/dist/src/components/ui/sankey-chart/sankey-chart.d.ts +69 -0
  70. package/dist/src/components/ui/scatter-chart/scatter-chart.d.ts +2 -17
  71. package/dist/src/index.d.ts +5 -0
  72. package/dist/ui-react.css +1 -1
  73. package/package.json +5 -4
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,11 +1,14 @@
1
- const n = 16, t = 1280, O = 1680;
2
- function _() {
1
+ const O = 16, _ = 1024, T = 1280, n = 1440, t = 1680, o = 1920;
2
+ function E() {
3
3
  return typeof window > "u" ? void 0 : window.innerWidth;
4
4
  }
5
5
  export {
6
- O as BREAKPOINT_3XL,
7
- t as BREAKPOINT_XL,
8
- n as ROOT_FONT_SIZE_PX,
9
- _ as getViewportWidth
6
+ n as BREAKPOINT_2XL,
7
+ t as BREAKPOINT_3XL,
8
+ o as BREAKPOINT_4XL,
9
+ _ as BREAKPOINT_LG,
10
+ T as BREAKPOINT_XL,
11
+ O as ROOT_FONT_SIZE_PX,
12
+ E as getViewportWidth
10
13
  };
11
14
  //# sourceMappingURL=breakpoints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breakpoints.js","sources":["../../src/lib/breakpoints.ts"],"sourcesContent":["// Mirrors the design team's viewport breakpoint scale pinned in\n// `src/styles/index.css`'s `@theme` block (`--breakpoint-lg/xl/2xl/3xl/4xl`).\n// Expressed in the SAME rem values as that file (not pre-converted to px)\n// so the two stay a direct, diffable match.\n//\n// KEEP THESE TWO FILES IN SYNC — if a breakpoint changes in one, update the\n// other in the same change. They can't be unified into a single source at\n// runtime: Tailwind v4's `@theme` breakpoints are compile-time-only\n// (verified against this package's built CSS — the rem values appear only\n// inside the generated `@media` rules, never as a `:root` custom property),\n// so there is no live CSS variable for `getComputedStyle` to read here\n// instead. `ROOT_FONT_SIZE_PX` assumes the default, unoverridden\n// `html { font-size }` (16px) — this package sets none.\nexport const ROOT_FONT_SIZE_PX = 16;\n\nexport const BREAKPOINT_LG = 64 * ROOT_FONT_SIZE_PX; // --breakpoint-lg: 64rem (1024px)\nexport const BREAKPOINT_XL = 80 * ROOT_FONT_SIZE_PX; // --breakpoint-xl: 80rem (1280px)\nexport const BREAKPOINT_2XL = 90 * ROOT_FONT_SIZE_PX; // --breakpoint-2xl: 90rem (1440px)\nexport const BREAKPOINT_3XL = 105 * ROOT_FONT_SIZE_PX; // --breakpoint-3xl: 105rem (1680px)\nexport const BREAKPOINT_4XL = 120 * ROOT_FONT_SIZE_PX; // --breakpoint-4xl: 120rem (1920px)\n\n/** SSR-safe `window.innerWidth` read — `undefined` when there is no `window` (e.g. SSR). */\nexport function getViewportWidth(): number | undefined {\n return typeof window === 'undefined' ? undefined : window.innerWidth;\n}\n"],"names":["ROOT_FONT_SIZE_PX","BREAKPOINT_XL","BREAKPOINT_3XL","getViewportWidth"],"mappings":"AAaO,MAAMA,IAAoB,IAGpBC,IAAgB,MAEhBC,IAAiB;AAIvB,SAASC,IAAuC;AACrD,SAAO,OAAO,SAAW,MAAc,SAAY,OAAO;AAC5D;"}
1
+ {"version":3,"file":"breakpoints.js","sources":["../../src/lib/breakpoints.ts"],"sourcesContent":["// Mirrors the design team's viewport breakpoint scale pinned in\n// `src/styles/index.css`'s `@theme` block (`--breakpoint-lg/xl/2xl/3xl/4xl`)\n// and its hand-authored `:root`/`:host` `--ui-breakpoint-*` block.\n// Expressed in the SAME rem values as that file (not pre-converted to px)\n// so the two stay a direct, diffable match. Only the design team's actual\n// overrides are exposed here — `sm`/`md` are intentionally omitted because\n// they're Tailwind's stock, unoverridden defaults (640px/768px), not a real\n// design-team value.\n//\n// KEEP THESE TWO FILES IN SYNC — if any of the overridden breakpoints\n// (lg/xl/2xl/3xl/4xl) ever gets an explicit value changed in one file (the\n// `@theme` override, the `--ui-breakpoint-*` `:root` block, or these JS\n// constants), update the other two in the same change. They can't be\n// unified into a single source at runtime: Tailwind v4's `@theme`\n// breakpoints are compile-time-only (verified against this package's built\n// CSS — the rem values appear only inside the generated `@media` rules,\n// never as a `:root` custom property), so there is no live CSS variable for\n// `getComputedStyle` to read here instead.\n// `ROOT_FONT_SIZE_PX` assumes the default, unoverridden `html { font-size }`\n// (16px) — this package sets none.\nexport const ROOT_FONT_SIZE_PX = 16;\n\nexport const BREAKPOINT_LG = 64 * ROOT_FONT_SIZE_PX; // --breakpoint-lg: 64rem (1024px)\nexport const BREAKPOINT_XL = 80 * ROOT_FONT_SIZE_PX; // --breakpoint-xl: 80rem (1280px)\nexport const BREAKPOINT_2XL = 90 * ROOT_FONT_SIZE_PX; // --breakpoint-2xl: 90rem (1440px)\nexport const BREAKPOINT_3XL = 105 * ROOT_FONT_SIZE_PX; // --breakpoint-3xl: 105rem (1680px)\nexport const BREAKPOINT_4XL = 120 * ROOT_FONT_SIZE_PX; // --breakpoint-4xl: 120rem (1920px)\n\n/** SSR-safe `window.innerWidth` read — `undefined` when there is no `window` (e.g. SSR). */\nexport function getViewportWidth(): number | undefined {\n return typeof window === 'undefined' ? undefined : window.innerWidth;\n}\n"],"names":["ROOT_FONT_SIZE_PX","BREAKPOINT_LG","BREAKPOINT_XL","BREAKPOINT_2XL","BREAKPOINT_3XL","BREAKPOINT_4XL","getViewportWidth"],"mappings":"AAoBO,MAAMA,IAAoB,IAEpBC,IAAgB,MAChBC,IAAgB,MAChBC,IAAiB,MACjBC,IAAiB,MACjBC,IAAiB;AAGvB,SAASC,IAAuC;AACrD,SAAO,OAAO,SAAW,MAAc,SAAY,OAAO;AAC5D;"}
@@ -0,0 +1,25 @@
1
+ import { useRef as l, useState as f, useCallback as p, useEffect as c } from "react";
2
+ import { areOptionsEqual as E, arePluginsEqual as O, canUseDOM as w } from "../../../../embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js";
3
+ import m from "../../../../embla-carousel@8.6.0/node_modules/embla-carousel/esm/embla-carousel.esm.js";
4
+ function b(e = {}, r = []) {
5
+ const t = l(e), n = l(r), [u, s] = f(), [a, d] = f(), o = p(() => {
6
+ u && u.reInit(t.current, n.current);
7
+ }, [u]);
8
+ return c(() => {
9
+ E(t.current, e) || (t.current = e, o());
10
+ }, [e, o]), c(() => {
11
+ O(n.current, r) || (n.current = r, o());
12
+ }, [r, o]), c(() => {
13
+ if (w() && a) {
14
+ m.globalOptions = b.globalOptions;
15
+ const i = m(a, t.current, n.current);
16
+ return s(i), () => i.destroy();
17
+ } else
18
+ s(void 0);
19
+ }, [a, s]), [d, u];
20
+ }
21
+ b.globalOptions = void 0;
22
+ export {
23
+ b as default
24
+ };
25
+ //# sourceMappingURL=embla-carousel-react.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embla-carousel-react.esm.js","sources":["../../../../../../../../../node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.6/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js"],"sourcesContent":["import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n"],"names":["useEmblaCarousel","options","plugins","storedOptions","useRef","storedPlugins","emblaApi","setEmblaApi","useState","viewport","setViewport","reInit","useCallback","useEffect","areOptionsEqual","arePluginsEqual","canUseDOM","EmblaCarousel","newEmblaApi"],"mappings":";;;AAIA,SAASA,EAAiBC,IAAU,IAAIC,IAAU,CAAA,GAAI;AACpD,QAAMC,IAAgBC,EAAOH,CAAO,GAC9BI,IAAgBD,EAAOF,CAAO,GAC9B,CAACI,GAAUC,CAAW,IAAIC,EAAQ,GAClC,CAACC,GAAUC,CAAW,IAAIF,EAAQ,GAClCG,IAASC,EAAY,MAAM;AAC/B,IAAIN,KAAUA,EAAS,OAAOH,EAAc,SAASE,EAAc,OAAO;AAAA,EAC5E,GAAG,CAACC,CAAQ,CAAC;AACb,SAAAO,EAAU,MAAM;AACd,IAAIC,EAAgBX,EAAc,SAASF,CAAO,MAClDE,EAAc,UAAUF,GACxBU,EAAM;AAAA,EACR,GAAG,CAACV,GAASU,CAAM,CAAC,GACpBE,EAAU,MAAM;AACd,IAAIE,EAAgBV,EAAc,SAASH,CAAO,MAClDG,EAAc,UAAUH,GACxBS,EAAM;AAAA,EACR,GAAG,CAACT,GAASS,CAAM,CAAC,GACpBE,EAAU,MAAM;AACd,QAAIG,EAAS,KAAMP,GAAU;AAC3B,MAAAQ,EAAc,gBAAgBjB,EAAiB;AAC/C,YAAMkB,IAAcD,EAAcR,GAAUN,EAAc,SAASE,EAAc,OAAO;AACxF,aAAAE,EAAYW,CAAW,GAChB,MAAMA,EAAY,QAAO;AAAA,IAClC;AACE,MAAAX,EAAY,MAAS;AAAA,EAEzB,GAAG,CAACE,GAAUF,CAAW,CAAC,GACnB,CAACG,GAAaJ,CAAQ;AAC/B;AACAN,EAAiB,gBAAgB;","x_google_ignoreList":[0]}
@@ -0,0 +1,36 @@
1
+ function y(n) {
2
+ return Object.prototype.toString.call(n) === "[object Object]";
3
+ }
4
+ function a(n) {
5
+ return y(n) || Array.isArray(n);
6
+ }
7
+ function p() {
8
+ return !!(typeof window < "u" && window.document && window.document.createElement);
9
+ }
10
+ function l(n, t) {
11
+ const e = Object.keys(n), c = Object.keys(t);
12
+ if (e.length !== c.length) return !1;
13
+ const s = JSON.stringify(Object.keys(n.breakpoints || {})), u = JSON.stringify(Object.keys(t.breakpoints || {}));
14
+ return s !== u ? !1 : e.every((o) => {
15
+ const r = n[o], i = t[o];
16
+ return typeof r == "function" ? `${r}` == `${i}` : !a(r) || !a(i) ? r === i : l(r, i);
17
+ });
18
+ }
19
+ function f(n) {
20
+ return n.concat().sort((t, e) => t.name > e.name ? 1 : -1).map((t) => t.options);
21
+ }
22
+ function O(n, t) {
23
+ if (n.length !== t.length) return !1;
24
+ const e = f(n), c = f(t);
25
+ return e.every((s, u) => {
26
+ const o = c[u];
27
+ return l(s, o);
28
+ });
29
+ }
30
+ export {
31
+ l as areOptionsEqual,
32
+ O as arePluginsEqual,
33
+ p as canUseDOM,
34
+ f as sortAndMapPluginToOptions
35
+ };
36
+ //# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embla-carousel-reactive-utils.esm.js","sources":["../../../../../../../../../node_modules/.pnpm/embla-carousel-reactive-utils@8.6.0_embla-carousel@8.6.0/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js"],"sourcesContent":["function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n"],"names":["isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","key","valueA","valueB","sortAndMapPluginToOptions","plugins","a","b","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","index","optionB"],"mappings":"AAAA,SAASA,EAASC,GAAS;AACzB,SAAO,OAAO,UAAU,SAAS,KAAKA,CAAO,MAAM;AACrD;AACA,SAASC,EAASD,GAAS;AACzB,SAAOD,EAASC,CAAO,KAAK,MAAM,QAAQA,CAAO;AACnD;AACA,SAASE,IAAY;AACnB,SAAO,CAAC,EAAE,OAAO,SAAW,OAAe,OAAO,YAAY,OAAO,SAAS;AAChF;AACA,SAASC,EAAgBC,GAAUC,GAAU;AAC3C,QAAMC,IAAe,OAAO,KAAKF,CAAQ,GACnCG,IAAe,OAAO,KAAKF,CAAQ;AACzC,MAAIC,EAAa,WAAWC,EAAa,OAAQ,QAAO;AACxD,QAAMC,IAAe,KAAK,UAAU,OAAO,KAAKJ,EAAS,eAAe,CAAA,CAAE,CAAC,GACrEK,IAAe,KAAK,UAAU,OAAO,KAAKJ,EAAS,eAAe,CAAA,CAAE,CAAC;AAC3E,SAAIG,MAAiBC,IAAqB,KACnCH,EAAa,MAAM,CAAAI,MAAO;AAC/B,UAAMC,IAASP,EAASM,CAAG,GACrBE,IAASP,EAASK,CAAG;AAC3B,WAAI,OAAOC,KAAW,aAAmB,GAAGA,CAAM,MAAO,GAAGC,CAAM,KAC9D,CAACX,EAASU,CAAM,KAAK,CAACV,EAASW,CAAM,IAAUD,MAAWC,IACvDT,EAAgBQ,GAAQC,CAAM;AAAA,EACvC,CAAC;AACH;AACA,SAASC,EAA0BC,GAAS;AAC1C,SAAOA,EAAQ,SAAS,KAAK,CAACC,GAAGC,MAAMD,EAAE,OAAOC,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,CAAAC,MAAUA,EAAO,OAAO;AAC/F;AACA,SAASC,EAAgBC,GAAUC,GAAU;AAC3C,MAAID,EAAS,WAAWC,EAAS,OAAQ,QAAO;AAChD,QAAMhB,IAAWS,EAA0BM,CAAQ,GAC7Cd,IAAWQ,EAA0BO,CAAQ;AACnD,SAAOhB,EAAS,MAAM,CAACiB,GAASC,MAAU;AACxC,UAAMC,IAAUlB,EAASiB,CAAK;AAC9B,WAAOnB,EAAgBkB,GAASE,CAAO;AAAA,EACzC,CAAC;AACH;","x_google_ignoreList":[0]}