@siliconst/metaui 1.0.0 → 1.0.2

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 (137) hide show
  1. package/package.json +21 -34
  2. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +164 -0
  3. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +1 -0
  4. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +82 -0
  5. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +1 -0
  6. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +2 -0
  7. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +1 -0
  8. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +44 -0
  9. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -0
  10. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +24 -0
  11. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -0
  12. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +2 -0
  13. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -0
  14. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +59 -0
  15. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -0
  16. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +24 -0
  17. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -0
  18. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +2 -0
  19. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -0
  20. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js +51 -0
  21. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +1 -0
  22. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +31 -0
  23. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +1 -0
  24. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +2 -0
  25. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +1 -0
  26. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +60 -0
  27. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -0
  28. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +37 -0
  29. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -0
  30. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +2 -0
  31. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -0
  32. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +37 -0
  33. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -0
  34. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +20 -0
  35. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -0
  36. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +2 -0
  37. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -0
  38. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +56 -0
  39. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -0
  40. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +37 -0
  41. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -0
  42. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +2 -0
  43. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -0
  44. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +2 -0
  45. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +1 -0
  46. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts +29 -0
  47. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +1 -0
  48. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js +2 -0
  49. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js.map +1 -0
  50. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js +2 -0
  51. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -0
  52. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +26 -0
  53. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -0
  54. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.js +2 -0
  55. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.js.map +1 -0
  56. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js +2 -0
  57. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -0
  58. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +32 -0
  59. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -0
  60. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.js +2 -0
  61. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.js.map +1 -0
  62. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js +2 -0
  63. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -0
  64. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +68 -0
  65. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -0
  66. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.js +2 -0
  67. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.js.map +1 -0
  68. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +39 -0
  69. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +1 -0
  70. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +28 -0
  71. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +1 -0
  72. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +2 -0
  73. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +1 -0
  74. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +57 -0
  75. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -0
  76. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +20 -0
  77. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -0
  78. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +2 -0
  79. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -0
  80. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +91 -0
  81. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -0
  82. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +20 -0
  83. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -0
  84. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +2 -0
  85. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -0
  86. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +33 -0
  87. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -0
  88. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +34 -0
  89. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -0
  90. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +10 -0
  91. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -0
  92. package/src/nz/co/siliconst/ui5/metaui/library.js +2 -0
  93. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -0
  94. package/src/nz/co/siliconst/ui5/metaui/manifest.json +34 -0
  95. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +60 -0
  96. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +1 -0
  97. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +43 -0
  98. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +1 -0
  99. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +2 -0
  100. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +1 -0
  101. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +43 -0
  102. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +1 -0
  103. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +18 -0
  104. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +1 -0
  105. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +2 -0
  106. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +1 -0
  107. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js +61 -0
  108. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +1 -0
  109. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts +18 -0
  110. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts.map +1 -0
  111. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js +2 -0
  112. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js.map +1 -0
  113. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +67 -0
  114. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +1 -0
  115. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +18 -0
  116. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +1 -0
  117. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +2 -0
  118. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +1 -0
  119. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js +54 -0
  120. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +1 -0
  121. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts +18 -0
  122. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +1 -0
  123. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +2 -0
  124. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +1 -0
  125. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +54 -0
  126. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +1 -0
  127. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +18 -0
  128. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +1 -0
  129. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +2 -0
  130. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +1 -0
  131. package/test-resources/App.js +11 -0
  132. package/test-resources/Main.controller.js +73 -0
  133. package/test-resources/Main.view.xml +42 -0
  134. package/test-resources/index.html +21 -0
  135. package/test-resources/mockData.json +27 -0
  136. package/test-resources/mockSchema.json +98 -0
  137. package/ui5.yaml +1 -9
@@ -0,0 +1,31 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/core/EventBus" {
2
+ /**
3
+ * @file EventBus.ts
4
+ * @description Internal pub/sub channel for managing cross-field dependencies.
5
+ */
6
+ import { IEventBus, IFieldChangeEvent } from "nz/co/siliconst/ui5/metaui/interfaces/IEventBus";
7
+ /**
8
+ * Singleton orchestrator for localized state changes across the generated UI layout.
9
+ */
10
+ export class EventBus implements IEventBus {
11
+ private static instance;
12
+ private listeners;
13
+ private constructor();
14
+ /**
15
+ * Retrieves the singular instance of the EventBus.
16
+ * @returns The EventBus singleton.
17
+ */
18
+ static getInstance(): EventBus;
19
+ /**
20
+ * Publishes a value change event to all internal subscribers.
21
+ * @param event The structured payload of the field change.
22
+ */
23
+ publishFieldChange(event: IFieldChangeEvent): void;
24
+ /**
25
+ * Registers a callback listener to react to field changes.
26
+ * @param listener The callback function.
27
+ */
28
+ subscribe(listener: (event: IFieldChangeEvent) => void): void;
29
+ }
30
+ }
31
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\core\\EventBus.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0CAA0C,CAAC;IAC1D;;;OAGG;IAEH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;IAE/F;;OAEG;IACH,MAAa,QAAS,YAAW,SAAS;QACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;QAClC,OAAO,CAAC,SAAS,CAAiD;QAElE,OAAO;QAIP;;;WAGG;eACW,WAAW,IAAI,QAAQ;QAOrC;;;WAGG;QACI,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;QAIzD;;;WAGG;QACI,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;KAGvE;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define([],function(){"use strict";class s{listeners=[];constructor(){}static getInstance(){if(!s.instance){s.instance=new s}return s.instance}publishFieldChange(s){this.listeners.forEach(e=>e(s))}subscribe(s){this.listeners.push(s)}}var e={__esModule:true};e.EventBus=s;return e});
2
+ //# sourceMappingURL=EventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.js","names":["EventBus","listeners","constructor","getInstance","instance","publishFieldChange","event","this","forEach","listener","subscribe","push","__exports","__esModule"],"sources":["EventBus.ts"],"sourcesContent":["/**\r\n * @file EventBus.ts\r\n * @description Internal pub/sub channel for managing cross-field dependencies.\r\n */\r\n\r\nimport { IEventBus, IFieldChangeEvent } from \"../interfaces/IEventBus\";\r\n\r\n/**\r\n * Singleton orchestrator for localized state changes across the generated UI layout.\r\n */\r\nexport class EventBus implements IEventBus {\r\n private static instance: EventBus;\r\n private listeners: Array<(event: IFieldChangeEvent) => void> = [];\r\n\r\n private constructor() {\r\n // Enforce singleton\r\n }\r\n\r\n /**\r\n * Retrieves the singular instance of the EventBus.\r\n * @returns The EventBus singleton.\r\n */\r\n public static getInstance(): EventBus {\r\n if (!EventBus.instance) {\r\n EventBus.instance = new EventBus();\r\n }\r\n return EventBus.instance;\r\n }\r\n\r\n /**\r\n * Publishes a value change event to all internal subscribers.\r\n * @param event The structured payload of the field change.\r\n */\r\n public publishFieldChange(event: IFieldChangeEvent): void {\r\n this.listeners.forEach(listener => listener(event));\r\n }\r\n\r\n /**\r\n * Registers a callback listener to react to field changes.\r\n * @param listener The callback function.\r\n */\r\n public subscribe(listener: (event: IFieldChangeEvent) => void): void {\r\n this.listeners.push(listener);\r\n }\r\n}\r\n"],"mappings":"yCAUO,MAAMA,EAEDC,UAAuD,GAEvDC,cACJ,CAOJ,kBAAcC,GACV,IAAKH,EAASI,SAAU,CACpBJ,EAASI,SAAW,IAAIJ,CAC5B,CACA,OAAOA,EAASI,QACpB,CAMOC,mBAAmBC,GACtBC,KAAKN,UAAUO,QAAQC,GAAYA,EAASH,GAChD,CAMOI,UAAUD,GACbF,KAAKN,UAAUU,KAAKF,EACxB,EACH,IAAAG,EAAA,CAAAC,WAAA,MAAAD,EAAAZ,WAAA,OAAAY,CAAA","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ sap.ui.define([], function () {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file PluginRegistry.ts
6
+ * @description Centralized hub for mapping UI5 controls to SAP schema data types.
7
+ * Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.
8
+ */
9
+
10
+ /**
11
+ * Singleton registry that manages the lifecycle and lookup of UI5 plugin constructors.
12
+ */
13
+ class PluginRegistry {
14
+ /** Internal map linking string types to their respective constructor functions. */
15
+ plugins = new Map();
16
+ constructor() {
17
+ // Enforce singleton
18
+ }
19
+
20
+ /**
21
+ * Retrieves the singular instance of the PluginRegistry.
22
+ * @returns The PluginRegistry singleton.
23
+ */
24
+ static getInstance() {
25
+ if (!PluginRegistry.instance) {
26
+ PluginRegistry.instance = new PluginRegistry();
27
+ }
28
+ return PluginRegistry.instance;
29
+ }
30
+
31
+ /**
32
+ * Registers a new UI control plugin against a specific schema primitive type.
33
+ * @param type The primitive FieldType (e.g., 'string', 'date').
34
+ * @param pluginConstructor The class constructor for the plugin.
35
+ */
36
+ register(type, pluginConstructor) {
37
+ this.plugins.set(type, pluginConstructor);
38
+ }
39
+
40
+ /**
41
+ * Instantiates and returns a new plugin based on the requested primitive type.
42
+ * @param type The primitive FieldType to look up.
43
+ * @throws Error if no plugin has been registered for the provided type.
44
+ * @returns A newly instantiated plugin ready for rendering.
45
+ */
46
+ getPlugin(type) {
47
+ const PluginClass = this.plugins.get(type);
48
+ if (!PluginClass) {
49
+ throw new Error(`[MetaUI] No plugin registered for FieldType: ${type}`);
50
+ }
51
+ return new PluginClass();
52
+ }
53
+ }
54
+ var __exports = {
55
+ __esModule: true
56
+ };
57
+ __exports.PluginRegistry = PluginRegistry;
58
+ return __exports;
59
+ });
60
+ //# sourceMappingURL=PluginRegistry-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginRegistry-dbg.js","names":["PluginRegistry","plugins","Map","constructor","getInstance","instance","register","type","pluginConstructor","set","getPlugin","PluginClass","get","Error","__exports","__esModule"],"sources":["PluginRegistry.ts"],"sourcesContent":["/**\r\n * @file PluginRegistry.ts\r\n * @description Centralized hub for mapping UI5 controls to SAP schema data types.\r\n * Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.\r\n */\r\n\r\nimport { IPlugin } from \"../interfaces/IPlugin\";\r\nimport { FieldType } from \"../interfaces/ISchema\";\r\n\r\n/**\r\n * Singleton registry that manages the lifecycle and lookup of UI5 plugin constructors.\r\n */\r\nexport class PluginRegistry {\r\n private static instance: PluginRegistry;\r\n \r\n /** Internal map linking string types to their respective constructor functions. */\r\n private plugins: Map<FieldType, new () => IPlugin> = new Map();\r\n\r\n private constructor() {\r\n // Enforce singleton\r\n }\r\n\r\n /**\r\n * Retrieves the singular instance of the PluginRegistry.\r\n * @returns The PluginRegistry singleton.\r\n */\r\n public static getInstance(): PluginRegistry {\r\n if (!PluginRegistry.instance) {\r\n PluginRegistry.instance = new PluginRegistry();\r\n }\r\n return PluginRegistry.instance;\r\n }\r\n\r\n /**\r\n * Registers a new UI control plugin against a specific schema primitive type.\r\n * @param type The primitive FieldType (e.g., 'string', 'date').\r\n * @param pluginConstructor The class constructor for the plugin.\r\n */\r\n public register(type: FieldType, pluginConstructor: new () => IPlugin): void {\r\n this.plugins.set(type, pluginConstructor);\r\n }\r\n\r\n /**\r\n * Instantiates and returns a new plugin based on the requested primitive type.\r\n * @param type The primitive FieldType to look up.\r\n * @throws Error if no plugin has been registered for the provided type.\r\n * @returns A newly instantiated plugin ready for rendering.\r\n */\r\n public getPlugin(type: FieldType): IPlugin {\r\n const PluginClass = this.plugins.get(type);\r\n if (!PluginClass) {\r\n throw new Error(`[MetaUI] No plugin registered for FieldType: ${type}`);\r\n }\r\n return new PluginClass();\r\n }\r\n}\r\n"],"mappings":";;;EAAA;AACA;AACA;AACA;AACA;;EAKA;AACA;AACA;EACO,MAAMA,cAAc,CAAC;IAGxB;IACQC,OAAO,GAAsC,IAAIC,GAAG,CAAC,CAAC;IAEtDC,WAAWA,CAAA,EAAG;MAClB;IAAA;;IAGJ;AACJ;AACA;AACA;IACI,OAAcC,WAAWA,CAAA,EAAmB;MACxC,IAAI,CAACJ,cAAc,CAACK,QAAQ,EAAE;QAC1BL,cAAc,CAACK,QAAQ,GAAG,IAAIL,cAAc,CAAC,CAAC;MAClD;MACA,OAAOA,cAAc,CAACK,QAAQ;IAClC;;IAEA;AACJ;AACA;AACA;AACA;IACWC,QAAQA,CAACC,IAAe,EAAEC,iBAAoC,EAAQ;MACzE,IAAI,CAACP,OAAO,CAACQ,GAAG,CAACF,IAAI,EAAEC,iBAAiB,CAAC;IAC7C;;IAEA;AACJ;AACA;AACA;AACA;AACA;IACWE,SAASA,CAACH,IAAe,EAAW;MACvC,MAAMI,WAAW,GAAG,IAAI,CAACV,OAAO,CAACW,GAAG,CAACL,IAAI,CAAC;MAC1C,IAAI,CAACI,WAAW,EAAE;QACd,MAAM,IAAIE,KAAK,CAAC,gDAAgDN,IAAI,EAAE,CAAC;MAC3E;MACA,OAAO,IAAII,WAAW,CAAC,CAAC;IAC5B;EACJ;EAAC,IAAAG,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAd,cAAA,GAAAA,cAAA;EAAA,OAAAc,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/core/PluginRegistry" {
2
+ /**
3
+ * @file PluginRegistry.ts
4
+ * @description Centralized hub for mapping UI5 controls to SAP schema data types.
5
+ * Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.
6
+ */
7
+ import { IPlugin } from "nz/co/siliconst/ui5/metaui/interfaces/IPlugin";
8
+ import { FieldType } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
9
+ /**
10
+ * Singleton registry that manages the lifecycle and lookup of UI5 plugin constructors.
11
+ */
12
+ export class PluginRegistry {
13
+ private static instance;
14
+ /** Internal map linking string types to their respective constructor functions. */
15
+ private plugins;
16
+ private constructor();
17
+ /**
18
+ * Retrieves the singular instance of the PluginRegistry.
19
+ * @returns The PluginRegistry singleton.
20
+ */
21
+ static getInstance(): PluginRegistry;
22
+ /**
23
+ * Registers a new UI control plugin against a specific schema primitive type.
24
+ * @param type The primitive FieldType (e.g., 'string', 'date').
25
+ * @param pluginConstructor The class constructor for the plugin.
26
+ */
27
+ register(type: FieldType, pluginConstructor: new () => IPlugin): void;
28
+ /**
29
+ * Instantiates and returns a new plugin based on the requested primitive type.
30
+ * @param type The primitive FieldType to look up.
31
+ * @throws Error if no plugin has been registered for the provided type.
32
+ * @returns A newly instantiated plugin ready for rendering.
33
+ */
34
+ getPlugin(type: FieldType): IPlugin;
35
+ }
36
+ }
37
+ //# sourceMappingURL=PluginRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\core\\PluginRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;IAChE;;;;OAIG;IAEH,OAAO,EAAE,OAAO,EAAE,MAAM,+CAA+C,CAAC;IACxE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;IAE1E;;OAEG;IACH,MAAa,cAAc;QACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;QAExC,mFAAmF;QACnF,OAAO,CAAC,OAAO,CAAgD;QAE/D,OAAO;QAIP;;;WAGG;eACW,WAAW,IAAI,cAAc;QAO3C;;;;WAIG;QACI,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,OAAO,GAAG,IAAI;QAI5E;;;;;WAKG;QACI,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;KAO7C;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define([],function(){"use strict";class e{plugins=new Map;constructor(){}static getInstance(){if(!e.instance){e.instance=new e}return e.instance}register(e,t){this.plugins.set(e,t)}getPlugin(e){const t=this.plugins.get(e);if(!t){throw new Error(`[MetaUI] No plugin registered for FieldType: ${e}`)}return new t}}var t={__esModule:true};t.PluginRegistry=e;return t});
2
+ //# sourceMappingURL=PluginRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginRegistry.js","names":["PluginRegistry","plugins","Map","constructor","getInstance","instance","register","type","pluginConstructor","this","set","getPlugin","PluginClass","get","Error","__exports","__esModule"],"sources":["PluginRegistry.ts"],"sourcesContent":["/**\r\n * @file PluginRegistry.ts\r\n * @description Centralized hub for mapping UI5 controls to SAP schema data types.\r\n * Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.\r\n */\r\n\r\nimport { IPlugin } from \"../interfaces/IPlugin\";\r\nimport { FieldType } from \"../interfaces/ISchema\";\r\n\r\n/**\r\n * Singleton registry that manages the lifecycle and lookup of UI5 plugin constructors.\r\n */\r\nexport class PluginRegistry {\r\n private static instance: PluginRegistry;\r\n \r\n /** Internal map linking string types to their respective constructor functions. */\r\n private plugins: Map<FieldType, new () => IPlugin> = new Map();\r\n\r\n private constructor() {\r\n // Enforce singleton\r\n }\r\n\r\n /**\r\n * Retrieves the singular instance of the PluginRegistry.\r\n * @returns The PluginRegistry singleton.\r\n */\r\n public static getInstance(): PluginRegistry {\r\n if (!PluginRegistry.instance) {\r\n PluginRegistry.instance = new PluginRegistry();\r\n }\r\n return PluginRegistry.instance;\r\n }\r\n\r\n /**\r\n * Registers a new UI control plugin against a specific schema primitive type.\r\n * @param type The primitive FieldType (e.g., 'string', 'date').\r\n * @param pluginConstructor The class constructor for the plugin.\r\n */\r\n public register(type: FieldType, pluginConstructor: new () => IPlugin): void {\r\n this.plugins.set(type, pluginConstructor);\r\n }\r\n\r\n /**\r\n * Instantiates and returns a new plugin based on the requested primitive type.\r\n * @param type The primitive FieldType to look up.\r\n * @throws Error if no plugin has been registered for the provided type.\r\n * @returns A newly instantiated plugin ready for rendering.\r\n */\r\n public getPlugin(type: FieldType): IPlugin {\r\n const PluginClass = this.plugins.get(type);\r\n if (!PluginClass) {\r\n throw new Error(`[MetaUI] No plugin registered for FieldType: ${type}`);\r\n }\r\n return new PluginClass();\r\n }\r\n}\r\n"],"mappings":"yCAYO,MAAMA,EAIDC,QAA6C,IAAIC,IAEjDC,cACJ,CAOJ,kBAAcC,GACV,IAAKJ,EAAeK,SAAU,CAC1BL,EAAeK,SAAW,IAAIL,CAClC,CACA,OAAOA,EAAeK,QAC1B,CAOOC,SAASC,EAAiBC,GAC7BC,KAAKR,QAAQS,IAAIH,EAAMC,EAC3B,CAQOG,UAAUJ,GACb,MAAMK,EAAcH,KAAKR,QAAQY,IAAIN,GACrC,IAAKK,EAAa,CACd,MAAM,IAAIE,MAAM,gDAAgDP,IACpE,CACA,OAAO,IAAIK,CACf,EACH,IAAAG,EAAA,CAAAC,WAAA,MAAAD,EAAAf,iBAAA,OAAAe,CAAA","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ sap.ui.define([], function () {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file SchemaNormalizer.ts
6
+ * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.
7
+ */
8
+
9
+ /**
10
+ * Utility class ensuring data fidelity before layout construction begins.
11
+ */
12
+ class SchemaNormalizer {
13
+ /**
14
+ * Validates that the provided raw payload conforms to the required ISchema structures.
15
+ * @param rawSchema The heterogeneous JSON object provided to the Engine.
16
+ * @returns The strictly cast ISchema matrix.
17
+ * @throws Error if the mandatory schema properties are missing.
18
+ */
19
+ static normalize(rawSchema) {
20
+ if (!rawSchema || typeof rawSchema !== 'object') {
21
+ throw new Error("[MetaUI] Invalid Schema Payload: Payload is not an object.");
22
+ }
23
+ if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {
24
+ throw new Error("[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).");
25
+ }
26
+
27
+ // Return the strongly typed and validated schema block.
28
+ return rawSchema;
29
+ }
30
+ }
31
+ var __exports = {
32
+ __esModule: true
33
+ };
34
+ __exports.SchemaNormalizer = SchemaNormalizer;
35
+ return __exports;
36
+ });
37
+ //# sourceMappingURL=SchemaNormalizer-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaNormalizer-dbg.js","names":["SchemaNormalizer","normalize","rawSchema","Error","mode","rootFields","tables","__exports","__esModule"],"sources":["SchemaNormalizer.ts"],"sourcesContent":["/**\r\n * @file SchemaNormalizer.ts\r\n * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.\r\n */\r\n\r\nimport { ISchema } from \"../interfaces/ISchema\";\r\n\r\n/**\r\n * Utility class ensuring data fidelity before layout construction begins.\r\n */\r\nexport class SchemaNormalizer {\r\n \r\n /**\r\n * Validates that the provided raw payload conforms to the required ISchema structures.\r\n * @param rawSchema The heterogeneous JSON object provided to the Engine.\r\n * @returns The strictly cast ISchema matrix.\r\n * @throws Error if the mandatory schema properties are missing.\r\n */\r\n public static normalize(rawSchema: any): ISchema {\r\n if (!rawSchema || typeof rawSchema !== 'object') {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Payload is not an object.\");\r\n }\r\n \r\n if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).\");\r\n }\r\n\r\n // Return the strongly typed and validated schema block.\r\n return rawSchema as ISchema;\r\n }\r\n}\r\n"],"mappings":";;;EAAA;AACA;AACA;AACA;;EAIA;AACA;AACA;EACO,MAAMA,gBAAgB,CAAC;IAE1B;AACJ;AACA;AACA;AACA;AACA;IACI,OAAcC,SAASA,CAACC,SAAc,EAAW;MAC7C,IAAI,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;QAC7C,MAAM,IAAIC,KAAK,CAAC,4DAA4D,CAAC;MACjF;MAEA,IAAI,CAACD,SAAS,CAACE,IAAI,IAAI,CAACF,SAAS,CAACG,UAAU,IAAI,CAACH,SAAS,CAACI,MAAM,EAAE;QAC/D,MAAM,IAAIH,KAAK,CAAC,0FAA0F,CAAC;MAC/G;;MAEA;MACA,OAAOD,SAAS;IACpB;EACJ;EAAC,IAAAK,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAP,gBAAA,GAAAA,gBAAA;EAAA,OAAAO,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/core/SchemaNormalizer" {
2
+ /**
3
+ * @file SchemaNormalizer.ts
4
+ * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.
5
+ */
6
+ import { ISchema } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
7
+ /**
8
+ * Utility class ensuring data fidelity before layout construction begins.
9
+ */
10
+ export class SchemaNormalizer {
11
+ /**
12
+ * Validates that the provided raw payload conforms to the required ISchema structures.
13
+ * @param rawSchema The heterogeneous JSON object provided to the Engine.
14
+ * @returns The strictly cast ISchema matrix.
15
+ * @throws Error if the mandatory schema properties are missing.
16
+ */
17
+ static normalize(rawSchema: any): ISchema;
18
+ }
19
+ }
20
+ //# sourceMappingURL=SchemaNormalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaNormalizer.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\core\\SchemaNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kDAAkD,CAAC;IAClE;;;OAGG;IAEH,OAAO,EAAE,OAAO,EAAE,MAAM,+CAA+C,CAAC;IAExE;;OAEG;IACH,MAAa,gBAAgB;QAEzB;;;;;WAKG;eACW,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;KAYnD;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define([],function(){"use strict";class e{static normalize(e){if(!e||typeof e!=="object"){throw new Error("[MetaUI] Invalid Schema Payload: Payload is not an object.")}if(!e.mode||!e.rootFields||!e.tables){throw new Error("[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).")}return e}}var r={__esModule:true};r.SchemaNormalizer=e;return r});
2
+ //# sourceMappingURL=SchemaNormalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaNormalizer.js","names":["SchemaNormalizer","normalize","rawSchema","Error","mode","rootFields","tables","__exports","__esModule"],"sources":["SchemaNormalizer.ts"],"sourcesContent":["/**\r\n * @file SchemaNormalizer.ts\r\n * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.\r\n */\r\n\r\nimport { ISchema } from \"../interfaces/ISchema\";\r\n\r\n/**\r\n * Utility class ensuring data fidelity before layout construction begins.\r\n */\r\nexport class SchemaNormalizer {\r\n \r\n /**\r\n * Validates that the provided raw payload conforms to the required ISchema structures.\r\n * @param rawSchema The heterogeneous JSON object provided to the Engine.\r\n * @returns The strictly cast ISchema matrix.\r\n * @throws Error if the mandatory schema properties are missing.\r\n */\r\n public static normalize(rawSchema: any): ISchema {\r\n if (!rawSchema || typeof rawSchema !== 'object') {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Payload is not an object.\");\r\n }\r\n \r\n if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).\");\r\n }\r\n\r\n // Return the strongly typed and validated schema block.\r\n return rawSchema as ISchema;\r\n }\r\n}\r\n"],"mappings":"yCAUO,MAAMA,EAQT,gBAAcC,CAAUC,GACpB,IAAKA,UAAoBA,IAAc,SAAU,CAC7C,MAAM,IAAIC,MAAM,6DACpB,CAEA,IAAKD,EAAUE,OAASF,EAAUG,aAAeH,EAAUI,OAAQ,CAC/D,MAAM,IAAIH,MAAM,2FACpB,CAGA,OAAOD,CACX,EACH,IAAAK,EAAA,CAAAC,WAAA,MAAAD,EAAAP,mBAAA,OAAAO,CAAA","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ sap.ui.define(["sap/ui/model/json/JSONModel"], function (JSONModel) {
2
+ "use strict";
3
+
4
+ /**
5
+ * Manages the isolated internal data payload for the MetaUI engine.
6
+ */
7
+ class StateManager {
8
+ /**
9
+ * Initializes the state manager with an optional initial payload.
10
+ * @param initialData The initial JSON payload to populate the fields.
11
+ */
12
+ constructor(initialData = {}) {
13
+ // Deep copy to ensure no reference leakage from the host application
14
+ const safeData = JSON.parse(JSON.stringify(initialData));
15
+ this.model = new JSONModel(safeData);
16
+ this.model.setDefaultBindingMode("TwoWay");
17
+ }
18
+
19
+ /**
20
+ * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.
21
+ * @returns The internal JSONModel.
22
+ */
23
+ getModel() {
24
+ return this.model;
25
+ }
26
+
27
+ /**
28
+ * Binds a generated UI control property to a path in the internal model.
29
+ * @param control The target UI5 Control.
30
+ * @param property The UI5 property name (e.g., 'value').
31
+ * @param bindingPath The exact path in the JSON payload.
32
+ */
33
+ bindControl(control, property, bindingPath) {
34
+ control.bindProperty(property, {
35
+ path: bindingPath,
36
+ model: "meta" // Assumes the model is bound to the root container with the name 'meta'
37
+ });
38
+ }
39
+
40
+ /**
41
+ * Extracts the flat JavaScript object representing the current state of the UI.
42
+ * @returns A serialized record of the data payload, free of UI5 wrappers.
43
+ */
44
+ extractPayload() {
45
+ // Create a deep copy to prevent accidental mutations by the host
46
+ const data = this.model.getData();
47
+ return JSON.parse(JSON.stringify(data));
48
+ }
49
+ }
50
+ var __exports = {
51
+ __esModule: true
52
+ };
53
+ __exports.StateManager = StateManager;
54
+ return __exports;
55
+ });
56
+ //# sourceMappingURL=StateManager-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateManager-dbg.js","names":["StateManager","constructor","initialData","safeData","JSON","parse","stringify","model","JSONModel","setDefaultBindingMode","getModel","bindControl","control","property","bindingPath","bindProperty","path","extractPayload","data","getData","__exports","__esModule"],"sources":["StateManager.ts"],"sourcesContent":["/**\r\n * @file StateManager.ts\r\n * @description Isolated internal state management. Decouples the MetaUI engine from external host models.\r\n */\r\n\r\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\r\nimport ManagedObject from \"sap/ui/base/ManagedObject\";\r\n\r\n/**\r\n * Manages the isolated internal data payload for the MetaUI engine.\r\n */\r\nexport class StateManager {\r\n private model: JSONModel;\r\n\r\n /**\r\n * Initializes the state manager with an optional initial payload.\r\n * @param initialData The initial JSON payload to populate the fields.\r\n */\r\n constructor(initialData: Record<string, any> = {}) {\r\n // Deep copy to ensure no reference leakage from the host application\r\n const safeData = JSON.parse(JSON.stringify(initialData));\r\n this.model = new JSONModel(safeData);\r\n this.model.setDefaultBindingMode(\"TwoWay\");\r\n }\r\n\r\n /**\r\n * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.\r\n * @returns The internal JSONModel.\r\n */\r\n public getModel(): JSONModel {\r\n return this.model;\r\n }\r\n\r\n /**\r\n * Binds a generated UI control property to a path in the internal model.\r\n * @param control The target UI5 Control.\r\n * @param property The UI5 property name (e.g., 'value').\r\n * @param bindingPath The exact path in the JSON payload.\r\n */\r\n public bindControl(control: ManagedObject, property: string, bindingPath: string): void {\r\n control.bindProperty(property, {\r\n path: bindingPath,\r\n model: \"meta\" // Assumes the model is bound to the root container with the name 'meta'\r\n });\r\n }\r\n\r\n /**\r\n * Extracts the flat JavaScript object representing the current state of the UI.\r\n * @returns A serialized record of the data payload, free of UI5 wrappers.\r\n */\r\n public extractPayload(): Record<string, any> {\r\n // Create a deep copy to prevent accidental mutations by the host\r\n const data = this.model.getData();\r\n return JSON.parse(JSON.stringify(data));\r\n }\r\n}\r\n"],"mappings":";;;EAQA;AACA;AACA;EACO,MAAMA,YAAY,CAAC;IAGtB;AACJ;AACA;AACA;IACIC,WAAWA,CAACC,WAAgC,GAAG,CAAC,CAAC,EAAE;MAC/C;MACA,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,WAAW,CAAC,CAAC;MACxD,IAAI,CAACK,KAAK,GAAG,IAAIC,SAAS,CAACL,QAAQ,CAAC;MACpC,IAAI,CAACI,KAAK,CAACE,qBAAqB,CAAC,QAAQ,CAAC;IAC9C;;IAEA;AACJ;AACA;AACA;IACWC,QAAQA,CAAA,EAAc;MACzB,OAAO,IAAI,CAACH,KAAK;IACrB;;IAEA;AACJ;AACA;AACA;AACA;AACA;IACWI,WAAWA,CAACC,OAAsB,EAAEC,QAAgB,EAAEC,WAAmB,EAAQ;MACpFF,OAAO,CAACG,YAAY,CAACF,QAAQ,EAAE;QAC3BG,IAAI,EAAEF,WAAW;QACjBP,KAAK,EAAE,MAAM,CAAC;MAClB,CAAC,CAAC;IACN;;IAEA;AACJ;AACA;AACA;IACWU,cAAcA,CAAA,EAAwB;MACzC;MACA,MAAMC,IAAI,GAAG,IAAI,CAACX,KAAK,CAACY,OAAO,CAAC,CAAC;MACjC,OAAOf,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACY,IAAI,CAAC,CAAC;IAC3C;EACJ;EAAC,IAAAE,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAApB,YAAA,GAAAA,YAAA;EAAA,OAAAoB,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/core/StateManager" {
2
+ /**
3
+ * @file StateManager.ts
4
+ * @description Isolated internal state management. Decouples the MetaUI engine from external host models.
5
+ */
6
+ import JSONModel from "sap/ui/model/json/JSONModel";
7
+ import ManagedObject from "sap/ui/base/ManagedObject";
8
+ /**
9
+ * Manages the isolated internal data payload for the MetaUI engine.
10
+ */
11
+ export class StateManager {
12
+ private model;
13
+ /**
14
+ * Initializes the state manager with an optional initial payload.
15
+ * @param initialData The initial JSON payload to populate the fields.
16
+ */
17
+ constructor(initialData?: Record<string, any>);
18
+ /**
19
+ * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.
20
+ * @returns The internal JSONModel.
21
+ */
22
+ getModel(): JSONModel;
23
+ /**
24
+ * Binds a generated UI control property to a path in the internal model.
25
+ * @param control The target UI5 Control.
26
+ * @param property The UI5 property name (e.g., 'value').
27
+ * @param bindingPath The exact path in the JSON payload.
28
+ */
29
+ bindControl(control: ManagedObject, property: string, bindingPath: string): void;
30
+ /**
31
+ * Extracts the flat JavaScript object representing the current state of the UI.
32
+ * @returns A serialized record of the data payload, free of UI5 wrappers.
33
+ */
34
+ extractPayload(): Record<string, any>;
35
+ }
36
+ }
37
+ //# sourceMappingURL=StateManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateManager.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\core\\StateManager.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8CAA8C,CAAC;IAC9D;;;OAGG;IAEH,OAAO,SAAS,MAAM,6BAA6B,CAAC;IACpD,OAAO,aAAa,MAAM,2BAA2B,CAAC;IAEtD;;OAEG;IACH,MAAa,YAAY;QACrB,OAAO,CAAC,KAAK,CAAY;QAEzB;;;WAGG;oBACS,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;QAOjD;;;WAGG;QACI,QAAQ,IAAI,SAAS;QAI5B;;;;;WAKG;QACI,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;QAOvF;;;WAGG;QACI,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;KAK/C;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["sap/ui/model/json/JSONModel"],function(e){"use strict";class t{constructor(t={}){const o=JSON.parse(JSON.stringify(t));this.model=new e(o);this.model.setDefaultBindingMode("TwoWay")}getModel(){return this.model}bindControl(e,t,o){e.bindProperty(t,{path:o,model:"meta"})}extractPayload(){const e=this.model.getData();return JSON.parse(JSON.stringify(e))}}var o={__esModule:true};o.StateManager=t;return o});
2
+ //# sourceMappingURL=StateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateManager.js","names":["StateManager","constructor","initialData","safeData","JSON","parse","stringify","this","model","JSONModel","setDefaultBindingMode","getModel","bindControl","control","property","bindingPath","bindProperty","path","extractPayload","data","getData","__exports","__esModule"],"sources":["StateManager.ts"],"sourcesContent":["/**\r\n * @file StateManager.ts\r\n * @description Isolated internal state management. Decouples the MetaUI engine from external host models.\r\n */\r\n\r\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\r\nimport ManagedObject from \"sap/ui/base/ManagedObject\";\r\n\r\n/**\r\n * Manages the isolated internal data payload for the MetaUI engine.\r\n */\r\nexport class StateManager {\r\n private model: JSONModel;\r\n\r\n /**\r\n * Initializes the state manager with an optional initial payload.\r\n * @param initialData The initial JSON payload to populate the fields.\r\n */\r\n constructor(initialData: Record<string, any> = {}) {\r\n // Deep copy to ensure no reference leakage from the host application\r\n const safeData = JSON.parse(JSON.stringify(initialData));\r\n this.model = new JSONModel(safeData);\r\n this.model.setDefaultBindingMode(\"TwoWay\");\r\n }\r\n\r\n /**\r\n * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.\r\n * @returns The internal JSONModel.\r\n */\r\n public getModel(): JSONModel {\r\n return this.model;\r\n }\r\n\r\n /**\r\n * Binds a generated UI control property to a path in the internal model.\r\n * @param control The target UI5 Control.\r\n * @param property The UI5 property name (e.g., 'value').\r\n * @param bindingPath The exact path in the JSON payload.\r\n */\r\n public bindControl(control: ManagedObject, property: string, bindingPath: string): void {\r\n control.bindProperty(property, {\r\n path: bindingPath,\r\n model: \"meta\" // Assumes the model is bound to the root container with the name 'meta'\r\n });\r\n }\r\n\r\n /**\r\n * Extracts the flat JavaScript object representing the current state of the UI.\r\n * @returns A serialized record of the data payload, free of UI5 wrappers.\r\n */\r\n public extractPayload(): Record<string, any> {\r\n // Create a deep copy to prevent accidental mutations by the host\r\n const data = this.model.getData();\r\n return JSON.parse(JSON.stringify(data));\r\n }\r\n}\r\n"],"mappings":"uEAWO,MAAMA,EAOTC,YAAYC,EAAmC,CAAC,GAE5C,MAAMC,EAAWC,KAAKC,MAAMD,KAAKE,UAAUJ,IAC3CK,KAAKC,MAAQ,IAAIC,EAAUN,GAC3BI,KAAKC,MAAME,sBAAsB,SACrC,CAMOC,WACH,OAAOJ,KAAKC,KAChB,CAQOI,YAAYC,EAAwBC,EAAkBC,GACzDF,EAAQG,aAAaF,EAAU,CAC3BG,KAAMF,EACNP,MAAO,QAEf,CAMOU,iBAEH,MAAMC,EAAOZ,KAAKC,MAAMY,UACxB,OAAOhB,KAAKC,MAAMD,KAAKE,UAAUa,GACrC,EACH,IAAAE,EAAA,CAAAC,WAAA,MAAAD,EAAArB,eAAA,OAAAqB,CAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=IEventBus-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEventBus-dbg.js","names":[],"sources":["IEventBus.ts"],"sourcesContent":["/**\r\n * @file IEventBus.ts\r\n * @description Pub/Sub interface for localized cross-field communication and state logic.\r\n */\r\n\r\n/**\r\n * Describes a state change payload fired by a plugin.\r\n */\r\nexport interface IFieldChangeEvent {\r\n fieldName: string;\r\n newValue: any;\r\n}\r\n\r\n/**\r\n * Contract for the internal event orchestrator to manage conditional UI logic.\r\n */\r\nexport interface IEventBus {\r\n /**\r\n * Publishes a value change event to the internal channel.\r\n * @param event The structured event detailing which field changed and its new value.\r\n */\r\n publishFieldChange(event: IFieldChangeEvent): void;\r\n\r\n /**\r\n * Subscribes a listener to react to field value changes.\r\n * @param listener The callback function to execute when a change occurs.\r\n */\r\n subscribe(listener: (event: IFieldChangeEvent) => void): void;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/interfaces/IEventBus" {
2
+ /**
3
+ * @file IEventBus.ts
4
+ * @description Pub/Sub interface for localized cross-field communication and state logic.
5
+ */
6
+ /**
7
+ * Describes a state change payload fired by a plugin.
8
+ */
9
+ export interface IFieldChangeEvent {
10
+ fieldName: string;
11
+ newValue: any;
12
+ }
13
+ /**
14
+ * Contract for the internal event orchestrator to manage conditional UI logic.
15
+ */
16
+ export interface IEventBus {
17
+ /**
18
+ * Publishes a value change event to the internal channel.
19
+ * @param event The structured event detailing which field changed and its new value.
20
+ */
21
+ publishFieldChange(event: IFieldChangeEvent): void;
22
+ /**
23
+ * Subscribes a listener to react to field value changes.
24
+ * @param listener The callback function to execute when a change occurs.
25
+ */
26
+ subscribe(listener: (event: IFieldChangeEvent) => void): void;
27
+ }
28
+ }
29
+ //# sourceMappingURL=IEventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEventBus.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\interfaces\\IEventBus.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IACjE;;;OAGG;IAEH;;OAEG;IACH,UAAiB,iBAAiB;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,GAAG,CAAC;KACjB;IAED;;OAEG;IACH,UAAiB,SAAS;QACtB;;;WAGG;QACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;QAEnD;;;WAGG;QACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;KACjE;CAEA"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=IEventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEventBus.js","names":[],"sources":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=ILayoutManager-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILayoutManager-dbg.js","names":[],"sources":["ILayoutManager.ts"],"sourcesContent":["/**\r\n * @file ILayoutManager.ts\r\n * @description Factory contract for generating UI5 layout containers (Forms/Tables).\r\n */\r\n\r\nimport Control from \"sap/ui/core/Control\";\r\nimport { ISchema, ITableMetadata } from \"./ISchema\";\r\n\r\n/**\r\n * The factory interface responsible for structuring the visual grid.\r\n */\r\nexport interface ILayoutManager {\r\n /**\r\n * Constructs a responsive form layout container utilizing native UI5 grids.\r\n * @param schema The master schema containing rootFields to be mounted.\r\n * @returns A populated UI5 container (e.g., sap.ui.layout.form.SimpleForm).\r\n */\r\n renderForm(schema: ISchema): Control;\r\n\r\n /**\r\n * Constructs an analytical or responsive table layout.\r\n * @param tableMeta The metadata defining the table columns.\r\n * @returns A UI5 Table control (e.g., sap.m.Table or sap.ui.table.Table).\r\n */\r\n renderTable(tableMeta: ITableMetadata): Control;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager" {
2
+ /**
3
+ * @file ILayoutManager.ts
4
+ * @description Factory contract for generating UI5 layout containers (Forms/Tables).
5
+ */
6
+ import Control from "sap/ui/core/Control";
7
+ import { ISchema, ITableMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
8
+ /**
9
+ * The factory interface responsible for structuring the visual grid.
10
+ */
11
+ export interface ILayoutManager {
12
+ /**
13
+ * Constructs a responsive form layout container utilizing native UI5 grids.
14
+ * @param schema The master schema containing rootFields to be mounted.
15
+ * @returns A populated UI5 container (e.g., sap.ui.layout.form.SimpleForm).
16
+ */
17
+ renderForm(schema: ISchema): Control;
18
+ /**
19
+ * Constructs an analytical or responsive table layout.
20
+ * @param tableMeta The metadata defining the table columns.
21
+ * @returns A UI5 Table control (e.g., sap.m.Table or sap.ui.table.Table).
22
+ */
23
+ renderTable(tableMeta: ITableMetadata): Control;
24
+ }
25
+ }
26
+ //# sourceMappingURL=ILayoutManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILayoutManager.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\interfaces\\ILayoutManager.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,sDAAsD,CAAC;IACtE;;;OAGG;IAEH,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;IAExF;;OAEG;IACH,UAAiB,cAAc;QAC3B;;;;WAIG;QACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;QAErC;;;;WAIG;QACH,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC;KACnD;CAEA"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=ILayoutManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILayoutManager.js","names":[],"sources":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=IPlugin-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPlugin-dbg.js","names":[],"sources":["IPlugin.ts"],"sourcesContent":["/**\r\n * @file IPlugin.ts\r\n * @description Contract for all discrete UI control generation plugins.\r\n * Enforces a strict lifecycle for rendering, validation, and dynamic state updates.\r\n */\r\n\r\nimport Control from \"sap/ui/core/Control\";\r\nimport { IFieldMetadata } from \"./ISchema\";\r\n\r\n/**\r\n * Defines the contract that every MetaUI plugin must fulfill.\r\n */\r\nexport interface IPlugin {\r\n /**\r\n * Instantiates and binds the appropriate UI5 control based on the field metadata.\r\n * @param fieldMetadata The immutable schema configuration for this specific field.\r\n * @param bindingPath The exact model path where this field's data is stored.\r\n * @returns The fully constructed and bound UI5 Control ready for layout insertion.\r\n */\r\n render(fieldMetadata: IFieldMetadata, bindingPath: string): Control;\r\n\r\n /**\r\n * Evaluates the current state of the UI5 control against the required schema rules.\r\n * @returns True if the input is valid, false otherwise. Must set ValueState natively.\r\n */\r\n validate(): boolean;\r\n\r\n /**\r\n * Hook triggered when a cross-field dependency requires this field to re-evaluate its state.\r\n * @param newMetadata The dynamically updated schema rules for this field.\r\n */\r\n onStateChange(newMetadata: IFieldMetadata): void;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/interfaces/IPlugin" {
2
+ /**
3
+ * @file IPlugin.ts
4
+ * @description Contract for all discrete UI control generation plugins.
5
+ * Enforces a strict lifecycle for rendering, validation, and dynamic state updates.
6
+ */
7
+ import Control from "sap/ui/core/Control";
8
+ import { IFieldMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
9
+ /**
10
+ * Defines the contract that every MetaUI plugin must fulfill.
11
+ */
12
+ export interface IPlugin {
13
+ /**
14
+ * Instantiates and binds the appropriate UI5 control based on the field metadata.
15
+ * @param fieldMetadata The immutable schema configuration for this specific field.
16
+ * @param bindingPath The exact model path where this field's data is stored.
17
+ * @returns The fully constructed and bound UI5 Control ready for layout insertion.
18
+ */
19
+ render(fieldMetadata: IFieldMetadata, bindingPath: string): Control;
20
+ /**
21
+ * Evaluates the current state of the UI5 control against the required schema rules.
22
+ * @returns True if the input is valid, false otherwise. Must set ValueState natively.
23
+ */
24
+ validate(): boolean;
25
+ /**
26
+ * Hook triggered when a cross-field dependency requires this field to re-evaluate its state.
27
+ * @param newMetadata The dynamically updated schema rules for this field.
28
+ */
29
+ onStateChange(newMetadata: IFieldMetadata): void;
30
+ }
31
+ }
32
+ //# sourceMappingURL=IPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPlugin.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\interfaces\\IPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,+CAA+C,CAAC;IAC/D;;;;OAIG;IAEH,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;IAE/E;;OAEG;IACH,UAAiB,OAAO;QACpB;;;;;WAKG;QACH,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAEpE;;;WAGG;QACH,QAAQ,IAAI,OAAO,CAAC;QAEpB;;;WAGG;QACH,aAAa,CAAC,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;KACpD;CAEA"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=IPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPlugin.js","names":[],"sources":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=ISchema-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISchema-dbg.js","names":[],"sources":["ISchema.ts"],"sourcesContent":["/**\r\n * @file ISchema.ts\r\n * @description Defines the core structural contract for the MetaUI engine.\r\n * The schema maps perfectly to the JSON payload generated by the ABAP RTTI extractor.\r\n */\r\n\r\n/**\r\n * Supported data primitive types that drive plugin selection.\r\n */\r\nexport type FieldType = \"string\" | \"number\" | \"boolean\" | \"date\" | \"dropdown\";\r\n\r\n/**\r\n * Value help structure mapping SAP Key/Text pairs.\r\n */\r\nexport interface IValueHelp {\r\n /** The technical key passed back to the backend. */\r\n key: string;\r\n /** The localized descriptive text displayed to the user. */\r\n text: string;\r\n}\r\n\r\n/**\r\n * Metadata definition for a single atomic input field.\r\n */\r\nexport interface IFieldMetadata {\r\n /** The technical field name mapping to the data model property. */\r\n fieldName: string;\r\n /** The primitive type determining the rendering plugin. */\r\n type: FieldType;\r\n /** The localized label text for the UI. */\r\n label: string;\r\n /** Indicates if the field is a primary key (often rendered first or highlighted). */\r\n isKey: boolean;\r\n /** If true, the field is rendered as a non-editable display element. */\r\n isReadOnly: boolean;\r\n /** If true, triggers UI5 validation to ensure a value exists. */\r\n isRequired: boolean;\r\n /** Maximum allowed character length for string-based inputs. */\r\n maxLength?: number;\r\n /** The total number of significant digits for numeric inputs. */\r\n precision?: number;\r\n /** The number of decimal places for numeric inputs. */\r\n scale?: number;\r\n /** Pre-loaded static value help arrays for dropdowns. */\r\n valueHelp?: IValueHelp[];\r\n}\r\n\r\n/**\r\n * Metadata definition for a tabular structure.\r\n */\r\nexport interface ITableMetadata {\r\n /** The internal ID/name of the table. */\r\n tableName: string;\r\n /** The localized table header label. */\r\n label: string;\r\n /** Array of field definitions dictating the table's columns. */\r\n fields: IFieldMetadata[];\r\n}\r\n\r\n/**\r\n * The master schema contract ingested by the Engine to build the UI5 layout.\r\n */\r\nexport interface ISchema {\r\n /** Determines the root container layout strategy. */\r\n mode: \"form\" | \"table\" | \"mixed\";\r\n /** The fields to be rendered at the root level (typically form inputs). */\r\n rootFields: IFieldMetadata[];\r\n /** The table structures to be rendered sequentially. */\r\n tables: ITableMetadata[];\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/interfaces/ISchema" {
2
+ /**
3
+ * @file ISchema.ts
4
+ * @description Defines the core structural contract for the MetaUI engine.
5
+ * The schema maps perfectly to the JSON payload generated by the ABAP RTTI extractor.
6
+ */
7
+ /**
8
+ * Supported data primitive types that drive plugin selection.
9
+ */
10
+ export type FieldType = "string" | "number" | "boolean" | "date" | "dropdown";
11
+ /**
12
+ * Value help structure mapping SAP Key/Text pairs.
13
+ */
14
+ export interface IValueHelp {
15
+ /** The technical key passed back to the backend. */
16
+ key: string;
17
+ /** The localized descriptive text displayed to the user. */
18
+ text: string;
19
+ }
20
+ /**
21
+ * Metadata definition for a single atomic input field.
22
+ */
23
+ export interface IFieldMetadata {
24
+ /** The technical field name mapping to the data model property. */
25
+ fieldName: string;
26
+ /** The primitive type determining the rendering plugin. */
27
+ type: FieldType;
28
+ /** The localized label text for the UI. */
29
+ label: string;
30
+ /** Indicates if the field is a primary key (often rendered first or highlighted). */
31
+ isKey: boolean;
32
+ /** If true, the field is rendered as a non-editable display element. */
33
+ isReadOnly: boolean;
34
+ /** If true, triggers UI5 validation to ensure a value exists. */
35
+ isRequired: boolean;
36
+ /** Maximum allowed character length for string-based inputs. */
37
+ maxLength?: number;
38
+ /** The total number of significant digits for numeric inputs. */
39
+ precision?: number;
40
+ /** The number of decimal places for numeric inputs. */
41
+ scale?: number;
42
+ /** Pre-loaded static value help arrays for dropdowns. */
43
+ valueHelp?: IValueHelp[];
44
+ }
45
+ /**
46
+ * Metadata definition for a tabular structure.
47
+ */
48
+ export interface ITableMetadata {
49
+ /** The internal ID/name of the table. */
50
+ tableName: string;
51
+ /** The localized table header label. */
52
+ label: string;
53
+ /** Array of field definitions dictating the table's columns. */
54
+ fields: IFieldMetadata[];
55
+ }
56
+ /**
57
+ * The master schema contract ingested by the Engine to build the UI5 layout.
58
+ */
59
+ export interface ISchema {
60
+ /** Determines the root container layout strategy. */
61
+ mode: "form" | "table" | "mixed";
62
+ /** The fields to be rendered at the root level (typically form inputs). */
63
+ rootFields: IFieldMetadata[];
64
+ /** The table structures to be rendered sequentially. */
65
+ tables: ITableMetadata[];
66
+ }
67
+ }
68
+ //# sourceMappingURL=ISchema.d.ts.map