@sap/ux-specification 1.142.2 → 1.142.4

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 (235) hide show
  1. package/CHANGELOG.md +117 -43
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
  3. package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
  4. package/dist/documentation/v2/v2-ListReport.html +2 -2
  5. package/dist/documentation/v2/v2-ListReportNew.html +2 -2
  6. package/dist/documentation/v2/v2-ObjectPage.html +2 -2
  7. package/dist/documentation/v2/v2-OverviewPage.html +2 -2
  8. package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
  9. package/dist/documentation/v4/v4-BuildingBlocks.html +2 -2
  10. package/dist/documentation/v4/v4-FreestylePage.html +2 -2
  11. package/dist/documentation/v4/v4-ListReport.html +2 -2
  12. package/dist/documentation/v4/v4-ObjectPage.html +2 -2
  13. package/dist/index-min.js +288 -282
  14. package/dist/index-min.js.map +4 -4
  15. package/dist/schemas/v2/AnalyticalListPageConfig.json +3 -3
  16. package/dist/schemas/v2/ListReportConfig.json +5 -5
  17. package/dist/schemas/v2/ListReportNewConfig.json +1 -1
  18. package/dist/schemas/v2/ObjectPageConfig.json +5 -5
  19. package/dist/schemas/v4/ApplicationV4.json +1 -1
  20. package/dist/schemas/v4/BuildingBlocksConfig.json +128 -42
  21. package/dist/schemas/v4/ListReportConfig.json +24 -6
  22. package/dist/schemas/v4/ObjectPageConfig.json +32 -8
  23. package/dist/specification/package.json +14 -12
  24. package/dist/specification/scripts/extractDocu.js +18 -1
  25. package/dist/specification/scripts/extractDocu.js.map +1 -1
  26. package/dist/specification/scripts/generate-validity-report.d.ts +15 -0
  27. package/dist/specification/scripts/generate-validity-report.d.ts.map +1 -0
  28. package/dist/specification/scripts/generate-validity-report.js +367 -0
  29. package/dist/specification/scripts/generate-validity-report.js.map +1 -0
  30. package/dist/specification/scripts/macros/corrections.d.ts.map +1 -1
  31. package/dist/specification/scripts/macros/corrections.js +36 -1
  32. package/dist/specification/scripts/macros/corrections.js.map +1 -1
  33. package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
  34. package/dist/specification/scripts/macros/schema.js +13 -0
  35. package/dist/specification/scripts/macros/schema.js.map +1 -1
  36. package/dist/specification/src/api.js +1 -1
  37. package/dist/specification/src/i18n/i18n.d.ts.map +1 -1
  38. package/dist/specification/src/i18n/i18n.js +2 -1
  39. package/dist/specification/src/i18n/i18n.js.map +1 -1
  40. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts +8 -1
  41. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts.map +1 -1
  42. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js +10 -7
  43. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js.map +1 -1
  44. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +503 -0
  45. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
  46. package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
  47. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
  48. package/dist/specification/src/sync/common/decoration/decorators.d.ts +116 -24
  49. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  50. package/dist/specification/src/sync/common/decoration/decorators.js +308 -78
  51. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  52. package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
  53. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  54. package/dist/specification/src/sync/common/decoration/index.js +1 -0
  55. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  56. package/dist/specification/src/sync/common/dist_tag.json +8 -3
  57. package/dist/specification/src/sync/common/generate/objectPage.d.ts.map +1 -1
  58. package/dist/specification/src/sync/common/generate/objectPage.js +3 -1
  59. package/dist/specification/src/sync/common/generate/objectPage.js.map +1 -1
  60. package/dist/specification/src/sync/common/i18n.json +2 -1
  61. package/dist/specification/src/sync/common/rules.d.ts +25 -0
  62. package/dist/specification/src/sync/common/rules.d.ts.map +1 -1
  63. package/dist/specification/src/sync/common/rules.js +27 -2
  64. package/dist/specification/src/sync/common/rules.js.map +1 -1
  65. package/dist/specification/src/sync/common/utils.d.ts +22 -6
  66. package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
  67. package/dist/specification/src/sync/common/utils.js +122 -18
  68. package/dist/specification/src/sync/common/utils.js.map +1 -1
  69. package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
  70. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +9 -7
  71. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  72. package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
  73. package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
  74. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  75. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  76. package/dist/specification/src/sync/v2/generate/objectPage.js +58 -2
  77. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  78. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -9
  79. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
  80. package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
  81. package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
  82. package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
  83. package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
  84. package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
  85. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
  86. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
  87. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
  88. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  89. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
  90. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
  91. package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
  92. package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
  93. package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
  94. package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
  95. package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
  96. package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
  97. package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
  98. package/dist/specification/src/sync/v2/import/utils.js +37 -0
  99. package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
  100. package/dist/specification/src/sync/v2/utils.d.ts +12 -2
  101. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  102. package/dist/specification/src/sync/v2/utils.js +19 -2
  103. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  104. package/dist/specification/src/sync/v4/application.d.ts +31 -2
  105. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  106. package/dist/specification/src/sync/v4/application.js +44 -4
  107. package/dist/specification/src/sync/v4/application.js.map +1 -1
  108. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
  109. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  110. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
  111. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  112. package/dist/specification/src/sync/v4/export/controls/Header.d.ts +4 -3
  113. package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
  114. package/dist/specification/src/sync/v4/export/controls/Header.js +7 -3
  115. package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
  116. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +2 -1
  117. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
  118. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +7 -0
  119. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
  120. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  121. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  122. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
  123. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  124. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
  125. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  126. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +0 -13
  127. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  128. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +32 -17
  129. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  130. package/dist/specification/src/sync/v4/export/controls/Table.js +90 -60
  131. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  132. package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
  133. package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
  134. package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  135. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +2 -1
  136. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  137. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +4 -3
  138. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  139. package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
  140. package/dist/specification/src/sync/v4/export/export.js +25 -3
  141. package/dist/specification/src/sync/v4/export/export.js.map +1 -1
  142. package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
  143. package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
  144. package/dist/specification/src/sync/v4/generate/actions.d.ts +1 -1
  145. package/dist/specification/src/sync/v4/generate/actions.d.ts.map +1 -1
  146. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts.map +1 -1
  147. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +20 -12
  148. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
  149. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
  150. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +10 -1
  151. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
  152. package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
  153. package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
  154. package/dist/specification/src/sync/v4/generate/index.js +1 -1
  155. package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
  156. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +73 -0
  157. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
  158. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +354 -0
  159. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
  160. package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +27 -16
  161. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
  162. package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +194 -164
  163. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
  164. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  165. package/dist/specification/src/sync/v4/generate/objectPage.js +145 -44
  166. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  167. package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
  168. package/dist/specification/src/sync/v4/import/pages/listReport.js +2 -1
  169. package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
  170. package/dist/specification/src/sync/v4/import/utils.js +5 -3
  171. package/dist/specification/src/sync/v4/import/utils.js.map +1 -1
  172. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
  173. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  174. package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
  175. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  176. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
  177. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  178. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
  179. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  180. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +219 -96
  181. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  182. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +557 -211
  183. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  184. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
  185. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  186. package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
  187. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  188. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts +1 -0
  189. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts.map +1 -1
  190. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js +17 -9
  191. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js.map +1 -1
  192. package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
  193. package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
  194. package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
  195. package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
  196. package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
  197. package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
  198. package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
  199. package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
  200. package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
  201. package/dist/specification/src/sync/v4/utils/index.js +18 -0
  202. package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
  203. package/dist/specification/src/sync/v4/utils/utils.d.ts +9 -1
  204. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  205. package/dist/specification/src/sync/v4/utils/utils.js +17 -2
  206. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  207. package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +550 -0
  208. package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
  209. package/dist/specification/test/test-utils/utils.d.ts +71 -0
  210. package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
  211. package/dist/specification/test/test-utils/utils.js +400 -0
  212. package/dist/specification/test/test-utils/utils.js.map +1 -0
  213. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +131 -0
  214. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
  215. package/dist/specification/test/unit/decorators/validity-test-utils.js +661 -0
  216. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
  217. package/dist/types/src/apiTypes.d.ts +2 -3
  218. package/dist/types/src/apiTypes.d.ts.map +1 -1
  219. package/dist/types/src/apiTypes.js.map +1 -1
  220. package/dist/types/src/common/types.d.ts +119 -13
  221. package/dist/types/src/common/types.d.ts.map +1 -1
  222. package/dist/types/src/common/types.js.map +1 -1
  223. package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
  224. package/dist/types/src/v2/controls/Table.d.ts +1 -1
  225. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +1 -1
  226. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  227. package/dist/types/src/v4/controls/Table.d.ts +3 -3
  228. package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
  229. package/package.json +14 -12
  230. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -107
  231. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
  232. package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -394
  233. package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
  234. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
  235. package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
@@ -0,0 +1,503 @@
1
+ /**
2
+ * Type-safe path builders and condition helpers for decorator conditions.
3
+ *
4
+ * This module provides:
5
+ *
6
+ * ## Context Sources
7
+ * - **`app`**: App-level configuration (auto-injected from `app.config`)
8
+ * - **`page`**: Page-level configuration (auto-injected from `page.config`)
9
+ * - **`custom`**: Custom context (provided via `init()`)
10
+ *
11
+ * ## Utilities
12
+ * - **Path builders**: Type-safe property access for `app`, `page`, and `custom` contexts
13
+ * - **Condition helpers**: `when()`, `not()`, `and()`, `or()` for building conditions
14
+ * - **Message helper**: `msg()` for i18n-based messages
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { page, custom, when, not, and, or, msg } from './decorator-paths';
19
+ *
20
+ * class MyTable extends Decorator {
21
+ * // Truthy check - hide when value is falsy
22
+ * @hide(page.isALP)
23
+ * alpOnlyField: string;
24
+ *
25
+ * // Equality check with when() - hide when type IS GridTable
26
+ * @hide(when(page.type, 'GridTable'))
27
+ * gridField: string;
28
+ *
29
+ * // Negation with not() - hide when type is NOT TreeTable
30
+ * @hide(not(page.type, 'TreeTable'))
31
+ * treeOnlyField: string;
32
+ *
33
+ * // AND conditions
34
+ * @hide(and(page.isALP, when(page.type, 'GridTable')))
35
+ * alpGridField: string;
36
+ *
37
+ * // OR conditions
38
+ * @hide(or(when(page.actionType, 'Bound'), when(page.actionType, 'Custom')))
39
+ * actionField: string;
40
+ *
41
+ * // Message with i18n
42
+ * @message(page.betaFeature, msg('BETA_WARNING', { feature: 'table' }))
43
+ * betaField: string;
44
+ *
45
+ * // Always hide
46
+ * @hide(true)
47
+ * internalField: string;
48
+ * }
49
+ * ```
50
+ */
51
+ import type { Manifest, v4, AndConditionItem, OrConditionItem, AndConditionGroup, OrConditionGroup } from '@sap/ux-specification-types';
52
+ /**
53
+ * App context (sourced from app.config).
54
+ * This context is auto-injected and available via `app.*` paths.
55
+ */
56
+ export type AppContext = {
57
+ /** The application manifest */
58
+ manifest: Manifest;
59
+ };
60
+ /**
61
+ * Page context (sourced from page.config).
62
+ * This context is auto-injected and available via `page.*` paths.
63
+ *
64
+ * These properties are determined by the Page class and its configuration.
65
+ * Extend this type when new config properties are added to Page.
66
+ */
67
+ export type PageContext = {};
68
+ /**
69
+ * Settings for the Table Class context, taken from manifest.
70
+ *
71
+ * This context is provided via `init()` when applying table decorators.
72
+ */
73
+ export type LRTableContext = {
74
+ type: v4.TableTypeV4;
75
+ creationMode?: v4.TableCreationModeLR;
76
+ analyticalConfiguration?: v4.AnalyticalConfiguration;
77
+ popinLayout?: string;
78
+ };
79
+ /**
80
+ * Symbol used to store the path string within PathNode objects.
81
+ * This allows the decorator to extract the path at runtime.
82
+ *
83
+ * Using Symbol.for() creates a global symbol that persists across module loads,
84
+ * ensuring isPathNode() works correctly even when the module is loaded multiple times.
85
+ */
86
+ export declare const PATH_SYMBOL: unique symbol;
87
+ /**
88
+ * Represents a node in the path builder tree.
89
+ * Contains the accumulated path string accessible via PATH_SYMBOL.
90
+ *
91
+ * @template P - The string literal type of the path
92
+ */
93
+ export type PathNode<P extends string = string> = {
94
+ readonly [PATH_SYMBOL]: P;
95
+ };
96
+ /**
97
+ * Recursive type that builds typed property accessors for a given object shape.
98
+ * Each property returns either:
99
+ * - Another PathBuilder (for nested objects) combined with a PathNode
100
+ * - A PathNode (for leaf/primitive values)
101
+ *
102
+ * @template T - The shape of the object to create paths for
103
+ * @template Prefix - The accumulated path prefix (e.g., 'page.')
104
+ */
105
+ type PathBuilder<T, Prefix extends string> = {
106
+ readonly [K in keyof T & string]: NonNullable<T[K]> extends object ? NonNullable<T[K]> extends readonly unknown[] ? PathNode<`${Prefix}${K}`> : PathBuilder<NonNullable<T[K]>, `${Prefix}${K}.`> & PathNode<`${Prefix}${K}`> : PathNode<`${Prefix}${K}`>;
107
+ };
108
+ /**
109
+ * Extracts the path string from a PathNode.
110
+ *
111
+ * @template P - The string literal type of the path
112
+ * @param node - The PathNode to extract the path from
113
+ * @returns The path string
114
+ * @example
115
+ * ```typescript
116
+ * getPath(page.isALP) // Returns: 'page.isALP'
117
+ * getPath(app.manifest) // Returns: 'app.manifest'
118
+ * ```
119
+ */
120
+ export declare function getPath<P extends string>(node: PathNode<P>): P;
121
+ /**
122
+ * Type guard to check if a value is a PathNode.
123
+ *
124
+ * @param value - The value to check
125
+ * @returns True if the value is a PathNode
126
+ */
127
+ export declare function isPathNode(value: unknown): value is PathNode;
128
+ /**
129
+ * Path builder for app.config properties.
130
+ *
131
+ * This context is **auto-injected** from `app.config` - you do not need to
132
+ * provide it in the customContext parameter of `init()`.
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Access manifest properties
137
+ * @hide(when(app.manifest['sap.app'].id, 'some-app-id'))
138
+ * ```
139
+ */
140
+ export declare const app: PathBuilder<AppContext, `${string}.`> & PathNode<string>;
141
+ /**
142
+ * Path builder for page.config properties.
143
+ *
144
+ * This context is **auto-injected** from `page.config` - you do not need to
145
+ * provide it in the customContext parameter of `init()`.
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // Simple truthy check
150
+ * @hide(page.isALP)
151
+ *
152
+ * // Equality check with when()
153
+ * @hide(when(page.isALP, true))
154
+ * @hide(when(page.visualization, 'Chart'))
155
+ *
156
+ * // Nested property
157
+ * @hide(when(page.settings.enabled, false))
158
+ * ```
159
+ */
160
+ export declare const page: PathBuilder<PageContext, `${string}.`> & PathNode<string>;
161
+ /**
162
+ * Path builder for custom context properties.
163
+ *
164
+ * This context **must be provided** in the customContext parameter of `init()`.
165
+ * Use this for runtime-specific conditions like table state, section state, etc.
166
+ *
167
+ * **Note**: For table-specific decorators, prefer using `tableContext` which provides
168
+ * full type safety for table properties.
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * // In decorator
173
+ * @hide(when(custom.table.type, 'ResponsiveTable'))
174
+ * @hide(when(custom.table.views, (views) => views.length > 0))
175
+ *
176
+ * // In init
177
+ * decorator.init({
178
+ * table: { type: 'GridTable', views: [] }
179
+ * });
180
+ * ```
181
+ */
182
+ export declare const custom: PathBuilder<Record<string, unknown>, `${string}.`> & PathNode<string>;
183
+ /**
184
+ * Type-safe path builder for table decorator context.
185
+ *
186
+ * This context **must be provided** in the customContext parameter of `init()`.
187
+ * Use this for table-specific conditions in List Report table decorators.
188
+ *
189
+ * Properties are accessed directly without nesting (e.g., `tableContext.type` not `tableContext.table.type`).
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * // In decorator - with full type safety
194
+ * @hide(when(tableContext.type, 'AnalyticalTable'))
195
+ * @hide(not(tableContext.type, 'TreeTable'))
196
+ * @hide(when(tableContext.creationMode, (cm) => cm?.name === 'CreationDialog'))
197
+ *
198
+ * // In init - provide flat context object
199
+ * decorator.init({
200
+ * type: 'GridTable',
201
+ * creationMode: { name: 'NewPage' },
202
+ * analyticalConfiguration: undefined,
203
+ * popinLayout: undefined
204
+ * });
205
+ * ```
206
+ */
207
+ export declare const tableContext: PathBuilder<LRTableContext, `${string}.`> & PathNode<string>;
208
+ /**
209
+ * Symbol used to identify WhenCondition objects.
210
+ */
211
+ export declare const WHEN_SYMBOL: unique symbol;
212
+ /**
213
+ * A condition function that receives the resolved value and returns a boolean.
214
+ */
215
+ export type ConditionFunction = (value: unknown) => boolean;
216
+ /**
217
+ * Represents a condition with a path and expected value or function.
218
+ * Created by the `when()` helper function.
219
+ */
220
+ export interface WhenCondition {
221
+ readonly [WHEN_SYMBOL]: true;
222
+ readonly path: PathNode;
223
+ readonly expected: unknown | ConditionFunction;
224
+ }
225
+ /**
226
+ * Type guard to check if a value is a WhenCondition.
227
+ *
228
+ * @param value - The value to check
229
+ * @returns True if value is a WhenCondition
230
+ */
231
+ export declare function isWhenCondition(value: unknown): value is WhenCondition;
232
+ /**
233
+ * Creates a condition that checks if a path's value matches an expected value or function.
234
+ *
235
+ * @param path - The PathNode to check
236
+ * @param expected - The expected value or a function that receives the value and returns boolean
237
+ * @returns A WhenCondition object
238
+ * @example
239
+ * ```typescript
240
+ * // Equality check
241
+ * @hide(when(page.type, 'GridTable'))
242
+ *
243
+ * // Custom function (e.g., negation)
244
+ * @hide(when(page.type, (type) => type !== 'GridTable'))
245
+ *
246
+ * // Check array length
247
+ * @hide(when(custom.table.views, (views) => views?.length === 0))
248
+ *
249
+ * // Numeric comparison
250
+ * @hide(when(page.count, (count) => count > 10))
251
+ * ```
252
+ */
253
+ export declare function when(path: PathNode, expected: unknown | ConditionFunction): WhenCondition;
254
+ /**
255
+ * Symbol used to identify NotCondition objects.
256
+ */
257
+ export declare const NOT_SYMBOL: unique symbol;
258
+ /**
259
+ * Represents a negated condition with a path and optional expected value or function.
260
+ * Created by the `not()` helper function.
261
+ *
262
+ * The condition is evaluated and then inverted:
263
+ * - `not(path)` - true when value is falsy
264
+ * - `not(path, value)` - true when value !== expected
265
+ * - `not(path, fn)` - true when fn(value) returns false
266
+ */
267
+ export interface NotCondition {
268
+ readonly [NOT_SYMBOL]: true;
269
+ readonly path: PathNode;
270
+ readonly expected?: unknown | ConditionFunction;
271
+ }
272
+ /**
273
+ * Type guard to check if a value is a NotCondition.
274
+ *
275
+ * @param value - The value to check
276
+ * @returns True if value is a NotCondition
277
+ */
278
+ export declare function isNotCondition(value: unknown): value is NotCondition;
279
+ /**
280
+ * Creates a negated condition that checks if a path's value does not match an expected value or function.
281
+ * This is the opposite of `when()`. While `when(path, value)` passes when value === expected,
282
+ * `not(path, value)` passes when value !== expected.
283
+ *
284
+ * Can also invert a WhenCondition created by `when()` or `exists()`.
285
+ *
286
+ * @param pathOrCondition - The PathNode to check or a WhenCondition to invert
287
+ * @param expected - Optional: The expected value or a function that receives the value and returns boolean
288
+ * @returns A NotCondition object
289
+ * @example
290
+ * ```typescript
291
+ * // Falsy check - hide when value is falsy
292
+ * @hide(not(page.enabled))
293
+ *
294
+ * // Inequality check - hide when type is NOT TreeTable
295
+ * @hide(not(page.type, 'TreeTable'))
296
+ *
297
+ * // Custom function negation - hide when function returns false
298
+ * @hide(not(custom.settings, (s) => s?.enabled === true))
299
+ *
300
+ * // Invert exists() - hide when value does NOT exist
301
+ * @hide(not(exists(tableContext.creationMode)))
302
+ *
303
+ * // Combined with and() - hide when BOTH conditions are met
304
+ * @hide(and(not(page.type, 'TreeTable'), page.isEnabled))
305
+ * ```
306
+ */
307
+ export declare function not(pathOrCondition: PathNode | WhenCondition, expected?: unknown | ConditionFunction): NotCondition;
308
+ /**
309
+ * Creates a condition that checks if a path's value exists (is not undefined).
310
+ * This is a semantic shorthand for `when(path, (value) => value !== undefined)`.
311
+ *
312
+ * @param path - The PathNode to check for existence
313
+ * @returns A WhenCondition that checks for defined value
314
+ * @example
315
+ * ```typescript
316
+ * // Check if property exists - show message only when value is set
317
+ * @message(
318
+ * and(
319
+ * not(tableContext.type, 'AnalyticalTable'),
320
+ * exists(tableContext.analyticalConfiguration.aggregationOnLeafLevel)
321
+ * ),
322
+ * msg('PROPERTY_NOT_ALLOWED')
323
+ * )
324
+ *
325
+ * // Can be negated with not() - though typically just use truthy check
326
+ * @hide(not(exists(tableContext.creationMode)))
327
+ * ```
328
+ */
329
+ export declare function exists(path: PathNode): WhenCondition;
330
+ /**
331
+ * Symbol used to identify MessageConfig objects.
332
+ */
333
+ export declare const MSG_SYMBOL: unique symbol;
334
+ /**
335
+ * Parameter value that can be either a static value or a PathNode for dynamic resolution.
336
+ */
337
+ export type MessageParamValue = unknown | PathNode;
338
+ /**
339
+ * Configuration for an i18n-based message.
340
+ * Created by the `msg()` helper function.
341
+ */
342
+ export interface MessageConfig {
343
+ readonly [MSG_SYMBOL]: true;
344
+ /** The i18n translation key */
345
+ readonly i18nKey: string;
346
+ /** Parameters to pass to the i18n translation function. Values can be static or PathNode for dynamic resolution. */
347
+ readonly params?: Record<string, MessageParamValue>;
348
+ /** Whether the message can be dismissed/deleted in the UI (default: false) */
349
+ readonly deletable: boolean;
350
+ }
351
+ /**
352
+ * Type guard to check if a value is a MessageConfig.
353
+ *
354
+ * @param value - The value to check
355
+ * @returns True if value is a MessageConfig
356
+ */
357
+ export declare function isMessageConfig(value: unknown): value is MessageConfig;
358
+ /**
359
+ * Creates an i18n message configuration for use with the `@message` decorator.
360
+ *
361
+ * @param i18nKey - The i18n translation key
362
+ * @param params - Optional parameters to pass to the translation function.
363
+ * Values can be static or PathNode references for dynamic resolution.
364
+ * @param options - Optional configuration
365
+ * @param options.deletable - Whether the message can be dismissed/deleted in the UI (default: false)
366
+ * @returns A MessageConfig object
367
+ * @example
368
+ * ```typescript
369
+ * // Simple message
370
+ * @message(page.betaFeature, msg('BETA_WARNING'))
371
+ *
372
+ * // Message with static parameters
373
+ * @message(when(page.type, 'GridTable'), msg('TABLE_WARNING', { type: 'GridTable' }))
374
+ *
375
+ * // Message with dynamic parameters (resolved from context at runtime)
376
+ * @message(condition, msg('TABLE_WARNING', { tableType: tableContext.table.type }))
377
+ *
378
+ * // Deletable message
379
+ * @message(page.deprecated, msg('DEPRECATED', { since: '1.96' }, { deletable: true }))
380
+ * ```
381
+ */
382
+ export declare function msg(i18nKey: string, params?: Record<string, MessageParamValue>, options?: {
383
+ deletable?: boolean;
384
+ }): MessageConfig;
385
+ /**
386
+ * A single condition: PathNode (truthy check), WhenCondition (value check), NotCondition (negated check), or true (always)
387
+ */
388
+ export type Condition = PathNode | WhenCondition | NotCondition | true;
389
+ /**
390
+ * Marker interface for AND condition groups.
391
+ * All conditions must be met for the overall condition to pass.
392
+ */
393
+ export interface AndCondition {
394
+ readonly __type: 'and';
395
+ readonly conditions: ConditionInput[];
396
+ }
397
+ /**
398
+ * Marker interface for OR condition groups.
399
+ * At least one condition must be met for the overall condition to pass.
400
+ */
401
+ export interface OrCondition {
402
+ readonly __type: 'or';
403
+ readonly conditions: ConditionInput[];
404
+ }
405
+ /**
406
+ * Union type for condition groups.
407
+ */
408
+ export type ConditionGroup = AndCondition | OrCondition;
409
+ /**
410
+ * All valid inputs for conditional decorators.
411
+ */
412
+ export type ConditionInput = Condition | ConditionGroup;
413
+ /**
414
+ * Creates an AND condition group where ALL conditions must be met.
415
+ *
416
+ * @param conditions - Conditions to combine (PathNode for truthy, WhenCondition for value check)
417
+ * @returns An AndCondition object for use with decorators
418
+ * @example
419
+ * ```typescript
420
+ * // Both must be truthy
421
+ * @hide(and(page.isALP, page.isMultiView))
422
+ *
423
+ * // Mixed truthy and value checks
424
+ * @hide(and(page.isALP, when(page.type, 'GridTable')))
425
+ *
426
+ * // Multiple value checks
427
+ * @hide(and(when(page.isALP, true), when(page.isMultiView, true)))
428
+ * ```
429
+ */
430
+ export declare function and(...conditions: ConditionInput[]): AndCondition;
431
+ /**
432
+ * Creates an OR condition group where AT LEAST ONE condition must be met.
433
+ *
434
+ * @param conditions - Conditions to combine (PathNode for truthy, WhenCondition for value check)
435
+ * @returns An OrCondition object for use with decorators
436
+ * @example
437
+ * ```typescript
438
+ * // Either must be truthy
439
+ * @hide(or(page.isALP, page.isOVP))
440
+ *
441
+ * // Either value must match
442
+ * @hide(or(when(page.actionType, 'Bound'), when(page.actionType, 'Custom')))
443
+ * ```
444
+ */
445
+ export declare function or(...conditions: ConditionInput[]): OrCondition;
446
+ /**
447
+ * Type guard to check if a value is an AndCondition.
448
+ *
449
+ * @param value - The value to check
450
+ * @returns True if value is an AndCondition
451
+ */
452
+ export declare function isAndCondition(value: unknown): value is AndCondition;
453
+ /**
454
+ * Type guard to check if a value is an OrCondition.
455
+ *
456
+ * @param value - The value to check
457
+ * @returns True if value is an OrCondition
458
+ */
459
+ export declare function isOrCondition(value: unknown): value is OrCondition;
460
+ /**
461
+ * Type guard to check if a value is a ConditionGroup (and or or).
462
+ *
463
+ * @param value - The value to check
464
+ * @returns True if value is a ConditionGroup
465
+ */
466
+ export declare function isConditionGroup(value: unknown): value is ConditionGroup;
467
+ /**
468
+ * Type guard to check if an AND condition item is a nested OR group.
469
+ *
470
+ * @param item - The condition item to check
471
+ * @returns True if item is an OrConditionGroup
472
+ */
473
+ export declare function isOrConditionGroup(item: AndConditionItem): item is OrConditionGroup;
474
+ /**
475
+ * Type guard to check if an OR condition item is a nested AND group.
476
+ *
477
+ * @param item - The condition item to check
478
+ * @returns True if item is an AndConditionGroup
479
+ */
480
+ export declare function isAndConditionGroup(item: OrConditionItem): item is AndConditionGroup;
481
+ /**
482
+ * The complete decorator context type used internally.
483
+ * Contains app, page and custom context.
484
+ */
485
+ export type DecoratorContextType = {
486
+ /**
487
+ * App context - auto-injected from app.config.
488
+ * Provides access to manifest and other app-level properties.
489
+ */
490
+ app?: Partial<AppContext>;
491
+ /**
492
+ * Page context - auto-injected from page.config.
493
+ * Provides access to page-level properties like isALP, visualization, etc.
494
+ */
495
+ page?: Partial<PageContext>;
496
+ /**
497
+ * Custom context - provided via init().
498
+ * Use for runtime-specific conditions like table state, section state, etc.
499
+ */
500
+ custom?: Record<string, unknown>;
501
+ };
502
+ export {};
503
+ //# sourceMappingURL=decorator-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator-paths.d.ts","sourceRoot":"","sources":["../../../../../../src/sync/common/decoration/decorator-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EACR,QAAQ,EACR,EAAE,EACF,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,6BAA6B,CAAC;AAMrC;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC;IACtC,uBAAuB,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,eAAmC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC9C,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;;;GAQG;AACH,KAAK,WAAW,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI;IACzC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC5D,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GACxC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GACzB,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAChF,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;CAClC,CAAC;AAuCF;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAMD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,GAAG,0DAAuC,CAAC;AAExD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,IAAI,2DAAyC,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,MAAM,uEAAuD,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,YAAY,8DAA8C,CAAC;AAMxE;;GAEG;AACH,eAAO,MAAM,WAAW,eAA+B,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,iBAAiB,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAG,iBAAiB,GAAG,aAAa,CAMzF;AAMD;;GAEG;AACH,eAAO,MAAM,UAAU,eAA8B,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,aAAa,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,iBAAiB,GAAG,YAAY,CAkBnH;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CAEpD;AAMD;;GAEG;AACH,eAAO,MAAM,UAAU,eAA8B,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oHAAoH;IACpH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpD,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,GAAG,CACf,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC1C,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAClC,aAAa,CAOf;AAMD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,IAAI,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,WAAW,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC;AAMxD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,GAAG,CAAC,GAAG,UAAU,EAAE,cAAc,EAAE,GAAG,YAAY,CAKjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,EAAE,CAAC,GAAG,UAAU,EAAE,cAAc,EAAE,GAAG,WAAW,CAK/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,IAAI,gBAAgB,CAEnF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,IAAI,iBAAiB,CAEpF;AAMD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC"}