@supersoniks/concorde 4.9.93 → 4.9.94

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 (89) hide show
  1. package/build-infos.json +1 -1
  2. package/concorde-core.bundle.js +299 -292
  3. package/concorde-core.es.js +10104 -6071
  4. package/dist/concorde-core.bundle.js +299 -292
  5. package/dist/concorde-core.es.js +10104 -6071
  6. package/dist/docs-mock-api-sw.js +110 -0
  7. package/dist/docs-mock-api-sw.js.map +3 -3
  8. package/dist/js/core/components/functional/functional.js +1 -0
  9. package/dist/js/core/components/functional/functional.js.map +1 -1
  10. package/dist/js/core/components/functional/jsonata/jsonata.js +119 -0
  11. package/dist/js/core/components/functional/jsonata/jsonata.js.map +1 -0
  12. package/dist/js/core/components/ui/button/button.js +1 -1
  13. package/dist/js/core/components/ui/button/button.js.map +1 -1
  14. package/dist/js/core/decorators/Subscriber.js +1 -0
  15. package/dist/js/core/decorators/Subscriber.js.map +1 -1
  16. package/dist/js/core/decorators/subscriber/derive.js +60 -0
  17. package/dist/js/core/decorators/subscriber/derive.js.map +1 -0
  18. package/dist/js/core/utils/derive.js +246 -0
  19. package/dist/js/core/utils/derive.js.map +1 -0
  20. package/dist/js/core/utils/jsonataHelpers.js +69 -0
  21. package/dist/js/core/utils/jsonataHelpers.js.map +1 -0
  22. package/dist/js/core/utils/jsonataRuntime.js +75 -0
  23. package/dist/js/core/utils/jsonataRuntime.js.map +1 -0
  24. package/dist/js/utils.js +2 -0
  25. package/dist/js/utils.js.map +1 -1
  26. package/dist/types/core/components/functional/functional.d.ts +1 -0
  27. package/dist/types/core/components/functional/functional.d.ts.map +1 -1
  28. package/dist/types/core/components/functional/jsonata/jsonata.d.ts +29 -0
  29. package/dist/types/core/components/functional/jsonata/jsonata.d.ts.map +1 -0
  30. package/dist/types/core/components/ui/button/button.d.ts +1 -1
  31. package/dist/types/core/components/ui/button/button.d.ts.map +1 -1
  32. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +3 -3
  33. package/dist/types/core/components/ui/form/input/input.d.ts +3 -3
  34. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +3 -3
  35. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +3 -3
  36. package/dist/types/core/decorators/Subscriber.d.ts +2 -0
  37. package/dist/types/core/decorators/Subscriber.d.ts.map +1 -1
  38. package/dist/types/core/decorators/subscriber/derive.d.ts +30 -0
  39. package/dist/types/core/decorators/subscriber/derive.d.ts.map +1 -0
  40. package/dist/types/core/utils/derive.d.ts +40 -0
  41. package/dist/types/core/utils/derive.d.ts.map +1 -0
  42. package/dist/types/core/utils/jsonataHelpers.d.ts +15 -0
  43. package/dist/types/core/utils/jsonataHelpers.d.ts.map +1 -0
  44. package/dist/types/core/utils/jsonataRuntime.d.ts +13 -0
  45. package/dist/types/core/utils/jsonataRuntime.d.ts.map +1 -0
  46. package/dist/types/mixins.d.ts +3 -3
  47. package/dist/types/utils.d.ts +2 -0
  48. package/dist/types/utils.d.ts.map +1 -1
  49. package/docs/assets/{index-DURr6O71.js → index-DpIkksht.js} +652 -479
  50. package/docs/crawl/docs/_decorators/get.html +27 -6
  51. package/docs/crawl/docs/_decorators/patch.html +6 -0
  52. package/docs/crawl/docs/_decorators/post.html +8 -0
  53. package/docs/crawl/docs/_decorators/put.html +6 -0
  54. package/docs/crawl/hubs/decorators.html +36 -31
  55. package/docs/crawl/hubs/remote-data.html +36 -31
  56. package/docs/index.html +1 -1
  57. package/docs/llms-full.txt +47 -3
  58. package/docs/src/docs/_decorators/get.md +31 -0
  59. package/docs/src/docs/_decorators/patch.md +9 -0
  60. package/docs/src/docs/_decorators/post.md +11 -0
  61. package/docs/src/docs/_decorators/put.md +9 -0
  62. package/docs/src/docs/search/docs-search.json +120 -5
  63. package/docs/src/tsconfig.json +268 -268
  64. package/package.json +28 -3
  65. package/public/docs-mock-api-sw.js +110 -0
  66. package/public/docs-mock-api-sw.js.map +3 -3
  67. package/src/core/components/functional/functional.ts +1 -0
  68. package/src/core/components/functional/jsonata/jsonata.md +56 -0
  69. package/src/core/components/functional/jsonata/jsonata.spec.ts +202 -0
  70. package/src/core/components/functional/jsonata/jsonata.ts +116 -0
  71. package/src/core/components/ui/button/button.ts +2 -2
  72. package/src/core/decorators/Subscriber.ts +2 -0
  73. package/src/core/decorators/subscriber/derive.ts +95 -0
  74. package/src/core/utils/derive.spec.ts +190 -0
  75. package/src/core/utils/derive.ts +357 -0
  76. package/src/core/utils/jsonataHelpers.ts +100 -0
  77. package/src/core/utils/jsonataRuntime.ts +88 -0
  78. package/src/docs/_core-concept/dataFlow.md +9 -0
  79. package/src/docs/_misc/docs-mock-api.md +3 -0
  80. package/src/docs/components/docs-demo-sources.ts +26 -0
  81. package/src/docs/docs.ts +1 -0
  82. package/src/docs/example/docs-jsonata-demos.ts +128 -0
  83. package/src/docs/mock-api/fixtures-jsonata.ts +131 -0
  84. package/src/docs/mock-api/router.ts +26 -0
  85. package/src/docs/navigation/navigation.ts +4 -0
  86. package/src/docs/search/docs-search.json +180 -0
  87. package/src/tsconfig.json +18 -0
  88. package/src/tsconfig.tsbuildinfo +1 -1
  89. package/src/utils.ts +13 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../../src/core/decorators/subscriber/derive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AAMrC,MAAM,MAAM,sBAAsB,CAChC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,EACD,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzB;IACF,IAAI,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAChD,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACvB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AAIF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,EACD,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,OAAO,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IACvB,CAAC,SAAS,mBAAmB,CAAC,MAAM,CAAC,EACpD,MAAM,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,KAC9B,IAAI,CA6CR;AAED,0EAA0E;AAC1E,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { DataProviderKey, type PublisherPathInput } from "@supersoniks/concorde/core/utils/dataProviderKey";
2
+ export type DeriveStatus = "loading" | "ready" | "error" | "empty";
3
+ export type DeriveState = {
4
+ status: DeriveStatus;
5
+ error?: string | null;
6
+ };
7
+ export type DeriveCompute<I extends Record<string, unknown>, O, V> = (inputs: I, vars: V) => O | Promise<O>;
8
+ export type DeriveOptions<I extends Record<string, unknown>, O, V = Record<string, unknown>> = {
9
+ inputs: {
10
+ [K in keyof I]: DataProviderKey<I[K]> | string;
11
+ };
12
+ compute: DeriveCompute<I, O, V>;
13
+ output: DataProviderKey<O> | string;
14
+ /** formDataProvider (ou autre DP) servant de variables `$top`, `$season`, … */
15
+ variables?: DataProviderKey<V> | string;
16
+ debounceMs?: number;
17
+ isEmpty?: (value: O) => boolean;
18
+ /** Taille max d’un tableau d’entrée (warn au-delà). Défaut 10_000. */
19
+ maxInputItems?: number;
20
+ };
21
+ export type DeriveHandle = {
22
+ stop: () => void;
23
+ /** Force un recalcul immédiat (sans debounce). */
24
+ recompute: () => void;
25
+ };
26
+ /**
27
+ * État de dérivation publié sur `{outputRoot}/_state_` pour `sonic-states`.
28
+ */
29
+ export declare function deriveStateKey(output: PublisherPathInput): string;
30
+ /**
31
+ * Primitive de données dérivées en lecture seule.
32
+ *
33
+ * Observe les DataProviders d’entrée (+ variables optionnelles), recalcule avec
34
+ * debounce, annule les résultats périmés (génération), publie sur `output`.
35
+ */
36
+ export declare function derive<I extends Record<string, unknown>, O, V = Record<string, unknown>>(options: DeriveOptions<I, O, V>): DeriveHandle;
37
+ export declare function derive<I extends Record<string, unknown>, O, V = Record<string, unknown>>(inputs: {
38
+ [K in keyof I]: DataProviderKey<I[K]> | string;
39
+ }, compute: DeriveCompute<I, O, V>, output: DataProviderKey<O> | string, variables?: DataProviderKey<V> | string): DeriveHandle;
40
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,KAAK,kBAAkB,EACxB,MAAM,kDAAkD,CAAC;AAO1D,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CACnE,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,KACJ,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpB,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,EACD,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzB;IACF,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;KAAE,CAAC;IAC3D,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACpC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IAChC,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,kDAAkD;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AA6FF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAEjE;AAOD;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,EACD,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;AACjD,wBAAgB,MAAM,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,EACD,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE3B,MAAM,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;CAAE,EAC1D,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC/B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,EACnC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,GACtC,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Expression } from "jsonata";
2
+ export type ChartDataset = {
3
+ label?: string;
4
+ data: number[];
5
+ };
6
+ export type ChartShape = {
7
+ labels: string[];
8
+ datasets: ChartDataset[];
9
+ };
10
+ /**
11
+ * Enregistre les helpers whitelistés sur une expression JSONata compilée.
12
+ * Pas de DOM, pas de réseau, pas d’eval.
13
+ */
14
+ export declare function registerJsonataHelpers(expression: Expression): void;
15
+ //# sourceMappingURL=jsonataHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonataHelpers.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/jsonataHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAkFnE"}
@@ -0,0 +1,13 @@
1
+ import { type Expression } from "jsonata";
2
+ /**
3
+ * Compile (avec cache) une expression JSONata + helpers Concorde.
4
+ */
5
+ export declare function compileJsonata(source: string): Expression;
6
+ /**
7
+ * Validation runtime légère (sous-ensemble JSON Schema).
8
+ * Vérifie `type` et `required` ; ignore le reste.
9
+ */
10
+ export declare function validateOutputSchema(value: unknown, schema: Record<string, unknown> | null | undefined): void;
11
+ /** Vide le cache (tests). */
12
+ export declare function clearJsonataCache(): void;
13
+ //# sourceMappingURL=jsonataRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonataRuntime.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/jsonataRuntime.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAOnD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAyBzD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACjD,IAAI,CAgCN;AAQD,6BAA6B;AAC7B,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -132,9 +132,9 @@ export declare const FormInput: <T extends new (...args: import("./core/_types/t
132
132
  new (...args: import("./core/_types/types").MixinArgsType[]): {
133
133
  validateFormElement(): void;
134
134
  forceAutoFill: boolean;
135
- _type: "number" | "search" | "reset" | "submit" | "hidden" | "password" | "button" | "time" | "image" | "text" | "url" | "color" | "radio" | "date" | "month" | "checkbox" | "datetime-local" | "email" | "file" | "range" | "tel" | "week";
136
- get type(): "number" | "search" | "reset" | "submit" | "hidden" | "password" | "button" | "time" | "image" | "text" | "url" | "color" | "radio" | "date" | "month" | "checkbox" | "datetime-local" | "email" | "file" | "range" | "tel" | "week";
137
- set type(value: "number" | "search" | "reset" | "submit" | "hidden" | "password" | "button" | "time" | "image" | "text" | "url" | "color" | "radio" | "date" | "month" | "checkbox" | "datetime-local" | "email" | "file" | "range" | "tel" | "week");
135
+ _type: "number" | "search" | "reset" | "submit" | "hidden" | "password" | "button" | "time" | "image" | "text" | "url" | "date" | "color" | "radio" | "month" | "checkbox" | "datetime-local" | "email" | "file" | "range" | "tel" | "week";
136
+ get type(): "number" | "search" | "reset" | "submit" | "hidden" | "password" | "button" | "time" | "image" | "text" | "url" | "date" | "color" | "radio" | "month" | "checkbox" | "datetime-local" | "email" | "file" | "range" | "tel" | "week";
137
+ set type(value: "number" | "search" | "reset" | "submit" | "hidden" | "password" | "button" | "time" | "image" | "text" | "url" | "date" | "color" | "radio" | "month" | "checkbox" | "datetime-local" | "email" | "file" | "range" | "tel" | "week");
138
138
  _description?: string;
139
139
  get description(): string | undefined;
140
140
  set description(value: string | undefined);
@@ -14,5 +14,7 @@ export declare const URLPattern: typeof import("url-pattern");
14
14
  import { Endpoint } from "./core/utils/endpoint";
15
15
  import { DataProviderKey } from "./core/utils/dataProviderKey";
16
16
  export { Endpoint, DataProviderKey };
17
+ export { derive, deriveStateKey, type DeriveOptions, type DeriveHandle, type DeriveState, type DeriveStatus, } from "./core/utils/derive";
18
+ export { compileJsonata, validateOutputSchema, } from "./core/utils/jsonataRuntime";
17
19
  export { installSafariScrollGuard, watchScrollRoot, syncScrollRoot, restoreScrollRoot, captureScrollRoot, resetScrollRoot, isSafariScrollEngine, type ScrollRoot, } from "./core/utils/SafariScrollGuard";
18
20
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,wCAAwC,CAAC;AAClE,eAAO,MAAM,KAAK,wBAAkB,CAAC;AAErC,eAAO,MAAM,MAAM,kEAAmB,CAAC;AACvC,OAAO,KAAK,kBAAkB,MAAM,mDAAmD,CAAC;AACxF,eAAO,MAAM,gBAAgB,mCAA6B,CAAC;AAE3D,eAAO,MAAM,MAAM,kEAAmB,CAAC;AAEvC,eAAO,MAAM,IAAI,gEAAiB,CAAC;AACnC,OAAO,KAAK,iBAAiB,MAAM,kDAAkD,CAAC;AACtF,eAAO,MAAM,eAAe,kCAA4B,CAAC;AAEzD,eAAO,MAAM,OAAO,mEAAoB,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAGhE,eAAO,MAAM,GAAG,+DAAgB,CAAC;AAEjC,eAAO,MAAM,UAAU,8BAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACrC,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,KAAK,UAAU,GAChB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,wCAAwC,CAAC;AAClE,eAAO,MAAM,KAAK,wBAAkB,CAAC;AAErC,eAAO,MAAM,MAAM,kEAAmB,CAAC;AACvC,OAAO,KAAK,kBAAkB,MAAM,mDAAmD,CAAC;AACxF,eAAO,MAAM,gBAAgB,mCAA6B,CAAC;AAE3D,eAAO,MAAM,MAAM,kEAAmB,CAAC;AAEvC,eAAO,MAAM,IAAI,gEAAiB,CAAC;AACnC,OAAO,KAAK,iBAAiB,MAAM,kDAAkD,CAAC;AACtF,eAAO,MAAM,eAAe,kCAA4B,CAAC;AAEzD,eAAO,MAAM,OAAO,mEAAoB,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAGhE,eAAO,MAAM,GAAG,+DAAgB,CAAC;AAEjC,eAAO,MAAM,UAAU,8BAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACrC,OAAO,EACL,MAAM,EACN,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,KAAK,UAAU,GAChB,MAAM,gCAAgC,CAAC"}