@siliconst/metaui 1.4.34 → 1.4.37

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 (499) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +22 -20
  4. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -1
  5. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +3 -3
  6. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -1
  7. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +1 -1
  8. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -1
  9. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +24 -16
  10. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -1
  11. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -1
  12. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +2 -2
  13. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js +62 -2
  14. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js.map +1 -1
  15. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts +54 -0
  16. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts.map +1 -1
  17. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js +1 -1
  18. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js.map +1 -1
  19. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.ts +59 -2
  20. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +43 -47
  21. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  22. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +2 -2
  23. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  24. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  25. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  26. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +61 -66
  27. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +120 -63
  28. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  29. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +16 -4
  30. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
  31. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  32. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  33. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +126 -65
  34. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +41 -38
  35. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
  36. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +6 -4
  37. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
  38. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
  39. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
  40. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +47 -39
  41. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +41 -2
  42. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
  43. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +6 -2
  44. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
  45. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +1 -1
  46. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
  47. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +47 -2
  48. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -2
  49. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +4 -1
  51. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
  52. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +1 -1
  53. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
  54. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +7 -2
  55. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +212 -34
  56. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  57. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +21 -3
  58. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  59. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  60. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +214 -35
  62. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js +3 -1
  63. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js.map +1 -1
  64. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts.map +1 -1
  65. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js +1 -1
  66. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.ts +3 -1
  68. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js +5 -0
  69. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js.map +1 -1
  70. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts.map +1 -1
  71. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js.map +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.ts +6 -0
  74. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +8 -0
  75. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
  77. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
  78. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +7 -0
  80. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +127 -50
  81. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +13 -0
  83. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  84. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +140 -57
  87. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js +310 -0
  88. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js.map +1 -0
  89. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts +73 -0
  90. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts.map +1 -0
  91. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js +2 -0
  92. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js.map +1 -0
  93. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.ts +307 -0
  94. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +34 -13
  95. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  96. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +4 -4
  97. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  99. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  100. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +45 -20
  101. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +15 -3
  102. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
  103. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -1
  104. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +15 -1
  107. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +82 -16
  108. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +16 -0
  110. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  111. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
  112. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  113. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +89 -17
  114. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  115. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +12 -1
  116. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  117. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +13 -1
  118. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js +2 -0
  119. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js.map +1 -0
  120. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts +50 -0
  121. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts.map +1 -0
  122. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js +2 -0
  123. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js.map +1 -0
  124. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.ts +49 -0
  125. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +19 -0
  127. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +22 -0
  129. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +26 -31
  130. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  131. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  132. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  133. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  134. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +22 -25
  135. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +40 -6
  136. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  137. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  138. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  139. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +37 -5
  141. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +69 -56
  142. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +3 -2
  144. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -1
  145. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +1 -1
  146. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -1
  147. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +1 -1
  148. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -1
  149. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +4 -3
  150. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -1
  151. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -1
  153. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +4 -4
  155. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js +2 -1
  156. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -1
  157. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -1
  159. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -1
  161. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.ts +4 -3
  162. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +12 -8
  163. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -1
  164. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +1 -1
  165. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -1
  166. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +1 -1
  167. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -1
  168. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +16 -12
  169. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +20 -12
  170. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -1
  171. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +5 -5
  172. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -1
  175. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +25 -17
  176. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +18 -11
  177. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -1
  178. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +5 -5
  179. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -1
  180. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +1 -1
  181. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -1
  182. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +23 -16
  183. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +24 -100
  184. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +10 -74
  186. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -1
  187. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +1 -1
  188. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +54 -117
  190. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +7 -4
  191. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
  194. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
  195. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  196. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +6 -4
  197. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +4 -4
  198. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  199. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +1 -1
  200. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
  201. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  203. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +5 -5
  204. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +129 -9
  205. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  206. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +45 -4
  207. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
  209. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +143 -13
  211. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +35 -14
  212. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  213. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +1 -1
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +38 -14
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +1 -1
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +3 -3
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +69 -20
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +2 -1
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +77 -21
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +2 -2
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +1 -1
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +3 -3
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +2 -2
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +1 -1
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +3 -3
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +1 -0
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -1
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -1
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +1 -1
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -1
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +6 -5
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +8 -3
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +1 -1
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +9 -4
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +2 -2
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -1
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts +1 -1
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts.map +1 -1
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +1 -1
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -1
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +3 -3
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +2 -2
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +1 -1
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +3 -3
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +2 -2
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +1 -1
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +3 -3
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +2 -2
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -1
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts +1 -1
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts.map +1 -1
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +1 -1
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -1
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +3 -3
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +1 -1
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +1 -1
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +6 -5
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +1 -1
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +9 -8
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +2 -2
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +1 -1
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +3 -3
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +35 -20
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +1 -1
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +39 -22
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +5 -3
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +1 -1
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +4 -3
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +2 -2
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -1
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts +1 -1
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts.map +1 -1
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +1 -1
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -1
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +3 -3
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -2
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +1 -1
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +3 -3
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +28 -12
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -1
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +5 -1
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -1
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +1 -1
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -1
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +29 -10
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +1 -1
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +3 -3
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +1 -1
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +3 -3
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -2
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +1 -1
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +3 -3
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +2 -2
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts +1 -1
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts.map +1 -1
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +4 -4
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -2
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +1 -1
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +3 -3
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +2 -2
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +1 -1
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +3 -3
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +58 -56
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +2 -5
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +66 -55
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +2 -2
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +1 -1
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +3 -3
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +2 -2
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +1 -1
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +3 -3
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +110 -109
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +2 -1
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +1 -1
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +66 -64
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +29 -8
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +1 -1
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +1 -1
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +145 -118
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +106 -105
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js +41 -0
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js.map +1 -0
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts +24 -0
  426. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts.map +1 -0
  427. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js +2 -0
  428. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js.map +1 -0
  429. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.ts +34 -0
  430. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js +41 -0
  431. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js.map +1 -0
  432. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts +24 -0
  433. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts.map +1 -0
  434. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js +2 -0
  435. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js.map +1 -0
  436. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.ts +34 -0
  437. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js +52 -0
  438. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js.map +1 -0
  439. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts +30 -0
  440. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts.map +1 -0
  441. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js +2 -0
  442. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js.map +1 -0
  443. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.ts +45 -0
  444. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js +52 -0
  445. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js.map +1 -0
  446. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts +30 -0
  447. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts.map +1 -0
  448. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js +2 -0
  449. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js.map +1 -0
  450. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.ts +45 -0
  451. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js +41 -0
  452. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js.map +1 -0
  453. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts +24 -0
  454. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts.map +1 -0
  455. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js +2 -0
  456. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js.map +1 -0
  457. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.ts +34 -0
  458. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js +40 -0
  459. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js.map +1 -0
  460. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts +28 -0
  461. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts.map +1 -0
  462. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js +2 -0
  463. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js.map +1 -0
  464. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.ts +34 -0
  465. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js +40 -0
  466. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js.map +1 -0
  467. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts +28 -0
  468. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts.map +1 -0
  469. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js +2 -0
  470. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js.map +1 -0
  471. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.ts +34 -0
  472. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js +40 -0
  473. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js.map +1 -0
  474. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts +28 -0
  475. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts.map +1 -0
  476. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js +2 -0
  477. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js.map +1 -0
  478. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.ts +34 -0
  479. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js +40 -0
  480. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js.map +1 -0
  481. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts +28 -0
  482. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts.map +1 -0
  483. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js +2 -0
  484. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js.map +1 -0
  485. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.ts +34 -0
  486. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js +33 -0
  487. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js.map +1 -0
  488. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts +14 -0
  489. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts.map +1 -0
  490. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js +2 -0
  491. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js.map +1 -0
  492. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.ts +24 -0
  493. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +0 -75
  494. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +0 -1
  495. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +0 -47
  496. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +0 -1
  497. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +0 -2
  498. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +0 -1
  499. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +0 -72
@@ -1 +1 @@
1
- {"version":3,"file":"GeneratorHost.js","names":["Logger","____utils_Logger","SchemaNormalizer","____core_SchemaNormalizer","SchemaValidator","____core_SchemaValidator","Engine","____core_Engine","StateManager","____core_StateManager","DataSyncDelegate","___delegates_DataSyncDelegate","ValidationDelegate","___delegates_ValidationDelegate","DialogDelegate","___delegates_DialogDelegate","PluginRegistry","____core_PluginRegistry","LayoutScorer","____core_LayoutScorer","LayoutMutator","____core_LayoutMutator","DefaultLayoutGenerator","____core_DefaultLayoutGenerator","GeneratorHost","Control","extend","renderer","apiVersion","render","rm","control","openStart","style","openEnd","content","getAggregation","renderControl","close","metadata","properties","schemaDefinition","type","defaultValue","schemaDefinitions","schemaTarget","pluginRegistry","schemaBuilderRegistry","data","bindable","dataJson","liveUpdate","isValid","useMessageManager","modelName","debugMode","editable","layoutBudget","engineScopeId","aggregations","_content","multiple","visibility","events","beforeSubmit","parameters","payload","addError","preventDefault","submit","payloadJson","cancel","fieldChange","fieldPath","value","validationStateChanged","validationError","message","validationSuccess","error","exception","constructor","_constructor","idOrSettings","settings","Control.prototype.constructor.call","this","stateManager","generatedContent","engine","activeModelName","parsedSchema","_generatePromise","init","_init","Control.prototype.init.call","dataSyncDelegate","validationDelegate","dialogDelegate","onInternalFieldChange","bind","setDebugMode","_setDebugMode","enabled","setProperty","getStateManager","_getStateManager","getSchemaDefinition","_getSchemaDefinition","refPath","defs","getProperty","undefined","key","startsWith","substring","tearDownGeneratedLayout","_tearDownGeneratedLayout","unregisterObject","destroy","_onInternalFieldChange","fieldKey","errorMessage","controlId","extractPayload","debug","pushToBindings","currentValidity","fireEvent","exit","_exit","getModel","getParsedSchema","_getParsedSchema","onBeforeRendering","_onBeforeRendering","hasSchema","hasData","generate","msg","Error","triggerSubmit","_triggerSubmit","isPrevented","removeAllMessages","applyVisualFallback","errors","validateAll","length","pushMessage","err","JSON","stringify","propertyPath","plugin","getPluginByPath","setVisualValidationState","addCustomError","_addCustomError","clearCustomError","_clearCustomError","schemaValid","validate","setBusy","_setBusy","isBusy","Control.prototype.setBusy.call","_setProperty","propertyName","suppressInvalidate","setUseMessageManager","handleInputDataHotSwap","currentVal","Control.prototype.setProperty.call","setBaseProperty","_setBaseProperty","async","_generate","Promise","resolve","then","_doGenerate","e","internalPayload","rawSchema","isSchemaEmpty","Object","keys","inputData","inputDataJson","parse","finalData","schemaToNormalize","normalizedSchema","normalize","schemaErrors","validateSchemaStructure","errorMsg","join","MessageBox","title","rawDefinitions","parsedRawSchema","trim","definitions","assign","normalizedDefinitions","warn","budget","ensureLayout","apply","activePluginRegistry","getInstance","pathsToLoad","getPathsToLoad","needsNetworkLoad","Array","from","some","path","sap","ui","require","preloadDependencies","injectSchemaDefaults","getId","setModel","isEditable","host","build","contentContainer","hasProperties","strip","MessageStrip","text","showIcon","showCloseButton","addStyleClass","VBox","items","hasPartialRenderingErrors","setAggregation","registerObject","optimalWidth","calculateOptimalDialogWidth","updateDialogWidthDynamically","mountCrashBoundary","_calculateOptimalDialogWidth","schema","requiresWideDialog","scanProperties","props","prop","fullWidth","widget","openInDialog","_openInDialog","submitButtonText","cancelButtonText","dialogWidth","parentView","isGenerated","finalWidth"],"sources":["GeneratorHost.ts"],"sourcesContent":["import Control from \"sap/ui/core/Control\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport { Logger } from \"../../utils/Logger\";\nimport { SchemaNormalizer } from \"../../core/SchemaNormalizer\";\nimport { SchemaValidator } from \"../../core/SchemaValidator\";\nimport { Engine } from \"../../core/Engine\";\nimport { StateManager } from \"../../core/StateManager\";\nimport { DataSyncDelegate } from \"./delegates/DataSyncDelegate\";\nimport { ValidationDelegate } from \"./delegates/ValidationDelegate\";\nimport { DialogDelegate } from \"./delegates/DialogDelegate\";\nimport MessageBox from \"sap/m/MessageBox\";\nimport MessageStrip from \"sap/m/MessageStrip\";\nimport VBox from \"sap/m/VBox\";\nimport { PluginRegistry } from \"../../core/PluginRegistry\";\nimport { LayoutScorer } from \"../../core/LayoutScorer\";\nimport { LayoutMutator } from \"../../core/LayoutMutator\";\nimport { DefaultLayoutGenerator } from \"../../core/DefaultLayoutGenerator\";\nimport type { ISchema } from \"../../interfaces/ISchema\";\n\n/**\n * Base wrapper element for embedding the dynamic form natively via Explicit Schemas.\n * \n * This class serves as the core rendering engine for standard MetaUI implementations.\n * It manages the lifecycle of the Engine, StateManager, and the delegation of \n * data synchronization, validation, and dialog interactions.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls.host\n */\nexport default class GeneratorHost extends Control {\n\n protected stateManager: StateManager | null = null;\n protected generatedContent: Control | null = null;\n protected engine: Engine | null = null;\n protected activeModelName: string = \"\";\n\n protected dataSyncDelegate!: DataSyncDelegate;\n protected validationDelegate!: ValidationDelegate;\n protected dialogDelegate!: DialogDelegate;\n\n static readonly metadata = {\n properties: {\n schemaDefinition: { type: \"any\", defaultValue: null },\n schemaDefinitions: { type: \"object\", defaultValue: {} },\n schemaTarget: { type: \"string\", defaultValue: null },\n pluginRegistry: { type: \"object\", defaultValue: null },\n schemaBuilderRegistry: { type: \"object\", defaultValue: null },\n data: { type: \"object\", defaultValue: null, bindable: \"bindable\" },\n dataJson: { type: \"string\", defaultValue: null, bindable: \"bindable\" },\n liveUpdate: { type: \"boolean\", defaultValue: false },\n isValid: { type: \"boolean\", defaultValue: true },\n useMessageManager: { type: \"boolean\", defaultValue: false },\n modelName: { type: \"string\", defaultValue: \"meta\" },\n debugMode: { type: \"boolean\", defaultValue: false },\n editable: { type: \"boolean\", defaultValue: true },\n layoutBudget: { type: \"int\", defaultValue: 0 },\n engineScopeId: { type: \"string\", defaultValue: null }\n },\n aggregations: {\n _content: { type: \"sap.ui.core.Control\", multiple: false, visibility: \"hidden\" }\n },\n events: {\n beforeSubmit: {\n parameters: {\n payload: { type: \"object\" },\n addError: { type: \"function\" },\n preventDefault: { type: \"function\" }\n }\n },\n submit: {\n parameters: {\n payload: { type: \"object\" },\n payloadJson: { type: \"string\" }\n }\n },\n cancel: {},\n fieldChange: {\n parameters: {\n fieldPath: { type: \"string\" },\n value: { type: \"any\" },\n payload: { type: \"object\" },\n isValid: { type: \"boolean\" }\n }\n },\n validationStateChanged: { parameters: { isValid: { type: \"boolean\" } } },\n validationError: { parameters: { fieldPath: { type: \"string\" }, message: { type: \"string\" } } },\n validationSuccess: { parameters: { fieldPath: { type: \"string\" } } },\n error: { parameters: { message: { type: \"string\" }, exception: { type: \"object\" } } }\n }\n };\n\n static renderer = {\n apiVersion: 2,\n render(rm: RenderManager, control: GeneratorHost) {\n rm.openStart(\"div\", control);\n rm.style(\"width\", \"100%\");\n rm.style(\"height\", \"100%\");\n rm.openEnd();\n\n const content = control.getAggregation(\"_content\") as Control;\n if (content) {\n rm.renderControl(content);\n }\n\n rm.close(\"div\");\n }\n };\n\n /**\n * Standard UI5 Constructor.\n */\n constructor(idOrSettings?: string | object, settings?: object) {\n super(idOrSettings as string, settings);\n }\n\n /**\n * Initializes the control and instantiates the composition delegates.\n * Delegates must be initialized here rather than in the constructor so they are \n * available before `applySettings` runs during UI5's control lifecycle.\n */\n public init(): void {\n super.init();\n\n // Initialize Composition Delegates\n this.dataSyncDelegate = new DataSyncDelegate(this);\n this.validationDelegate = new ValidationDelegate(this);\n this.dialogDelegate = new DialogDelegate(this as any);\n\n this.onInternalFieldChange = this.onInternalFieldChange.bind(this);\n }\n\n /**\n * Enables or disables debug mode.\n */\n public setDebugMode(enabled: boolean): this {\n this.setProperty(\"debugMode\", enabled, true);\n Logger.setDebugMode(enabled);\n return this;\n }\n\n\n /**\n * Returns the active state manager instance managing the JSON payload.\n */\n public getStateManager(): StateManager | null {\n return this.stateManager;\n }\n\n /**\n * Resolves a reference pointer against the global schema definitions dictionary.\n * @param refPath The string reference path (e.g., \"#/definitions/User\")\n * @returns The resolved ISchema or undefined\n */\n public getSchemaDefinition(refPath: string): ISchema | undefined {\n const defs = this.getProperty(\"schemaDefinitions\") as Record<string, ISchema>;\n if (!defs || !refPath) return undefined;\n let key = refPath;\n if (key.startsWith(\"#/definitions/\")) {\n key = key.substring(14);\n } else if (key.startsWith(\"#/components/schemas/\")) {\n key = key.substring(21);\n }\n return defs[key];\n }\n\n /**\n * Safely destroys the currently generated UI tree and cleans up references.\n * This is called before every regeneration to prevent memory leaks.\n */\n public tearDownGeneratedLayout(): void {\n if (this.generatedContent) {\n this.validationDelegate.unregisterObject(this.generatedContent);\n this.generatedContent.destroy();\n this.generatedContent = null;\n }\n }\n\n /**\n * Internal event handler triggered by the Engine when a field value changes.\n * Coordinates LiveUpdate syncs, validation state tracking, and bubbling the change upwards.\n */\n protected onInternalFieldChange(isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string): void {\n const payload = this.stateManager ? this.stateManager.extractPayload() : {};\n\n if (this.getProperty(\"liveUpdate\") === true) {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI]\", \"liveUpdate is enabled, pushing outbound payload.\", \"GeneratorHost\");\n }\n this.dataSyncDelegate.pushToBindings(payload);\n }\n\n const currentValidity = this.getProperty(\"isValid\") as boolean;\n if (isValid !== currentValidity) {\n this.setProperty(\"isValid\", isValid, true);\n this.fireEvent(\"validationStateChanged\", { isValid });\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI]\", `Validation state shifted to: ${isValid}`, \"GeneratorHost\");\n }\n }\n\n this.fireEvent(\"fieldChange\", {\n fieldPath: fieldKey || \"\",\n value: undefined,\n payload: payload,\n isValid: isValid\n });\n }\n\n /**\n * Standard UI5 Exit Hook. Ensures complete teardown of the engine and state manager.\n */\n public exit(): void {\n if (this.engine) {\n this.engine.destroy();\n this.engine = null;\n }\n\n if (this.stateManager) {\n this.stateManager.getModel().destroy();\n this.stateManager = null;\n }\n\n if (this.generatedContent) {\n this.generatedContent.destroy();\n this.generatedContent = null;\n }\n }\n\n /** Cached schema for intelligent diffing during inference mode hot-swaps */\n protected parsedSchema: Record<string, unknown> | null = null;\n\n /**\n * Exposes the parsed schema to the DataSyncDelegate for diffing.\n */\n public getParsedSchema(): Record<string, unknown> | null {\n return this.parsedSchema;\n }\n\n /**\n * Standard UI5 Rendering Hook.\n * Evaluates whether it possesses a schema or data. If so, triggers the internal engine generation.\n */\n public onBeforeRendering(): void {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI GeneratorHost]\", `onBeforeRendering called. Engine boot state: schemaDefinition exists = ${!!this.getProperty(\"schemaDefinition\")}, data exists = ${!!this.getProperty(\"data\")}, dataJson exists = ${!!this.getProperty(\"dataJson\")}`, \"GeneratorHost\");\n }\n\n if (!this.generatedContent) {\n const hasSchema = !!this.getProperty(\"schemaDefinition\");\n const hasData = !!this.getProperty(\"dataJson\") || !!this.getProperty(\"data\");\n\n if (hasSchema || hasData) {\n this.generate();\n } else {\n const msg = \"GeneratorHost skipped rendering. Neither 'schemaDefinition' nor 'data' was provided.\";\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg });\n throw new Error(msg); // Eradicate silent errors\n }\n }\n }\n\n /**\n * Public API method to manually trigger form submission.\n * Executes all structural validations, clears old messages, and pushes payload to bindings.\n * @returns boolean True if submission succeeded, false if validation failed.\n */\n public triggerSubmit(): boolean {\n if (this.stateManager && this.engine) {\n let isPrevented = false;\n\n this.validationDelegate.removeAllMessages();\n\n // Only apply local fallback visual states if the global MessageManager is explicitly disabled\n const applyVisualFallback = this.getProperty(\"useMessageManager\") !== true;\n const errors = this.engine.validateAll(applyVisualFallback);\n if (errors.length > 0) {\n this.validationDelegate.pushMessage(\"\", \"One or more fields failed schema validation. Please review the highlighted fields.\");\n for (const err of errors) {\n if (err.fieldKey && err.errorMessage) {\n this.validationDelegate.pushMessage(err.fieldKey, err.errorMessage);\n }\n }\n return false;\n }\n\n const payload = this.stateManager.extractPayload();\n const payloadJson = JSON.stringify(payload);\n\n this.fireEvent(\"beforeSubmit\", {\n payload,\n preventDefault: () => { isPrevented = true; },\n addError: (propertyPath: string, errorMessage: string) => {\n isPrevented = true;\n this.validationDelegate.pushMessage(propertyPath, errorMessage);\n if (applyVisualFallback && this.engine) {\n const plugin = this.engine.getPluginByPath(propertyPath);\n if (plugin && typeof plugin.setVisualValidationState === \"function\") {\n plugin.setVisualValidationState(false, errorMessage);\n }\n }\n }\n });\n\n if (isPrevented) {\n return false;\n }\n\n this.dataSyncDelegate.pushToBindings(payload);\n this.fireEvent(\"submit\", { payload, payloadJson });\n return true;\n }\n return false;\n }\n\n /**\n * Injects a custom error message onto a specific field.\n */\n public addCustomError(fieldPath: string, message: string): void {\n this.validationDelegate.addCustomError(fieldPath, message);\n if (this.getProperty(\"useMessageManager\") !== true && this.engine) {\n const plugin = this.engine.getPluginByPath(fieldPath);\n if (plugin && typeof plugin.setVisualValidationState === \"function\") {\n plugin.setVisualValidationState(false, message);\n }\n }\n }\n\n /**\n * Clears a custom error message from a specific field.\n */\n public clearCustomError(fieldPath: string): void {\n this.validationDelegate.clearCustomError(fieldPath);\n if (this.getProperty(\"useMessageManager\") !== true && this.engine) {\n const plugin = this.engine.getPluginByPath(fieldPath);\n if (plugin && typeof plugin.setVisualValidationState === \"function\") {\n const schemaValid = plugin.validate();\n plugin.setVisualValidationState(schemaValid.isValid, schemaValid.errorMessage);\n }\n }\n }\n\n /**\n * Toggles busy state on the host control.\n */\n public setBusy(isBusy: boolean): this {\n super.setBusy(isBusy);\n return this;\n }\n\n /**\n * Intercepts property changes. Hot-swaps data gracefully if it's an inputData change,\n * or forces a full UI teardown if it's a structural property change (like schemaDefinition).\n */\n public setProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {\n if (propertyName === \"useMessageManager\" && this.stateManager) {\n this.stateManager.setUseMessageManager(value === true);\n }\n\n if (propertyName === \"dataJson\" || propertyName === \"data\") {\n this.dataSyncDelegate.handleInputDataHotSwap(propertyName, value, suppressInvalidate);\n return this;\n }\n\n if (propertyName === \"editable\" || propertyName === \"debugMode\" || propertyName === \"schemaDefinition\" || propertyName === \"schemaTarget\") {\n const currentVal = this.getProperty(propertyName);\n if (currentVal !== value) {\n super.setProperty(propertyName, value, suppressInvalidate);\n this.tearDownGeneratedLayout();\n }\n return this;\n }\n\n return super.setProperty(propertyName, value, suppressInvalidate);\n }\n\n /**\n * Bypasses the interceptor to write directly to the base UI5 control.\n */\n public setBaseProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {\n return super.setProperty(propertyName, value, suppressInvalidate);\n }\n\n /**\n * Internal reference to the active generate promise.\n * Prevents concurrent redundant layouts from being generated when properties are set rapidly or DialogDelegate triggers it.\n */\n private _generatePromise: Promise<void> | null = null;\n\n /**\n * The core rendering pipeline entry point.\n * Uses Promise resolution to debounce concurrent or rapid consecutive calls natively without arbitrary timeouts.\n * @returns Promise that resolves when the layout is successfully built and mounted.\n */\n public async generate(): Promise<void> {\n if (this._generatePromise) {\n return this._generatePromise;\n }\n this._generatePromise = Promise.resolve().then(async () => {\n try {\n await this._doGenerate();\n } catch (e) {\n Logger.error(\"[MetaUI]\", \"Error in deferred generate: \" + e, \"GeneratorHost\");\n throw e; // Ensure it bubbles up to awaiters\n } finally {\n this._generatePromise = null;\n }\n });\n return this._generatePromise;\n }\n\n /**\n * The underlying synchronous generator orchestration method.\n * Normalizes the schema, sets up the state manager, loads missing plugins over the network,\n * orchestrates the Engine build, and mounts the generated UI components into the internal tree.\n */\n private async _doGenerate(): Promise<void> {\n try {\n this.tearDownGeneratedLayout();\n\n // CRITICAL FIX: Extract the unsaved internal payload BEFORE destroying the state manager\n // Otherwise, toggling editable (or other structural properties) will wipe user inputs!\n let internalPayload = null;\n if (this.stateManager) {\n internalPayload = this.stateManager.extractPayload();\n }\n\n if (this.engine) {\n this.engine.destroy();\n this.engine = null;\n }\n if (this.stateManager) {\n this.stateManager.getModel().destroy();\n this.stateManager = null;\n }\n\n const rawSchema = this.getProperty(\"schemaDefinition\");\n const isSchemaEmpty = !rawSchema || (typeof rawSchema === \"object\" && Object.keys(rawSchema).length === 0);\n\n let inputData = this.getProperty(\"data\");\n const inputDataJson = this.getProperty(\"dataJson\");\n\n if (inputDataJson) {\n try {\n inputData = JSON.parse(inputDataJson as string);\n } catch (e) {\n const msg = \"Failed to parse inputDataJson string: \" + (e as Error).message;\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg, exception: e });\n throw new Error(msg); // Critical error instead of silent fallback\n }\n } else if (typeof inputData === \"string\") {\n try {\n inputData = JSON.parse(inputData);\n } catch (e) {\n const msg = \"Failed to parse inputData string: \" + (e as Error).message;\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg, exception: e });\n throw new Error(msg); // Critical error instead of silent fallback\n }\n }\n\n // The internal payload represents the user's latest un-extracted edits. It must take priority.\n const finalData = internalPayload || inputData;\n\n if (!finalData || Object.keys(finalData).length === 0) {\n if (isSchemaEmpty) {\n const msg = \"No payload provided and no explicit schema defined. Cannot infer UI.\";\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg });\n throw new Error(msg);\n }\n }\n\n const schemaToNormalize = isSchemaEmpty ? null : rawSchema;\n const normalizedSchema = SchemaNormalizer.normalize(schemaToNormalize, finalData);\n\n // Cache the parsed/inferred schema so DataSyncDelegate can diff against it later\n this.parsedSchema = normalizedSchema as Record<string, unknown>;\n\n if (normalizedSchema) {\n const schemaErrors = SchemaValidator.validateSchemaStructure(normalizedSchema);\n if (schemaErrors.length > 0) {\n const errorMsg = \"Schema Structural Errors Found:\\n- \" + schemaErrors.join(\"\\n- \");\n // Let's log it out loudly regardless of debug mode, so developers can see why it didn't render\n Logger.error(\"[MetaUI]\", errorMsg, \"GeneratorHost\");\n if (this.getProperty(\"debugMode\")) {\n MessageBox.error(errorMsg, { title: \"MetaUI Schema Error\" });\n return;\n }\n }\n }\n\n const rawDefinitions = this.getProperty(\"schemaDefinitions\") as Record<string, any> || {};\n \n // Extract any definitions embedded inside the root schema definition\n let parsedRawSchema = rawSchema;\n if (typeof rawSchema === \"string\" && rawSchema.trim() !== \"\") {\n try {\n parsedRawSchema = JSON.parse(rawSchema);\n } catch (e) {\n // Ignore parse errors here; SchemaNormalizer will throw loudly later if invalid.\n }\n }\n\n if (parsedRawSchema && typeof parsedRawSchema === \"object\" && (parsedRawSchema as any).definitions) {\n Object.assign(rawDefinitions, (parsedRawSchema as any).definitions);\n this.setProperty(\"schemaDefinitions\", rawDefinitions, true);\n }\n\n let normalizedDefinitions: Record<string, ISchema> | undefined;\n if (Object.keys(rawDefinitions).length > 0) {\n normalizedDefinitions = {};\n for (const key in rawDefinitions) {\n try {\n normalizedDefinitions[key] = SchemaNormalizer.normalize(rawDefinitions[key]) as ISchema;\n } catch (e) {\n Logger.warn(`[MetaUI] Failed to normalize schema definition '${key}'`, \"\", \"GeneratorHost\");\n }\n }\n }\n\n const budget = this.getProperty(\"layoutBudget\") as number;\n\n // Ensure we have a uiLayout synthesized before applying scoring and mutation \n // (crucial for inferred/swagger schemas)\n if (DefaultLayoutGenerator.ensureLayout(normalizedSchema as ISchema)) {\n Logger.warn(\"[MetaUI GeneratorHost] Missing 'uiLayout' array in schema. Synthesized a default layout mapping to prevent a blank render.\");\n }\n\n LayoutScorer.apply(normalizedSchema as ISchema, budget, normalizedDefinitions);\n LayoutMutator.apply(normalizedSchema as ISchema);\n\n const activePluginRegistry = this.getProperty(\"pluginRegistry\") || PluginRegistry.getInstance();\n \n const pathsToLoad = activePluginRegistry.getPathsToLoad(normalizedSchema as ISchema);\n const needsNetworkLoad = Array.from(pathsToLoad).some((path: any) => !sap.ui.require(path));\n\n if (needsNetworkLoad) {\n this.setBusy(true);\n await activePluginRegistry.preloadDependencies(normalizedSchema as ISchema);\n this.setBusy(false);\n }\n\n // Inject defaults into empty payload values\n if (normalizedSchema && finalData) {\n this.dataSyncDelegate.injectSchemaDefaults(normalizedSchema, finalData);\n }\n\n this.activeModelName = \"metaUI_\" + this.getId();\n this.stateManager = new StateManager(finalData, normalizedSchema, this.activeModelName);\n this.stateManager.setUseMessageManager(this.getProperty(\"useMessageManager\") === true);\n this.setModel(this.stateManager.getModel(), this.activeModelName);\n\n if (!this.engine) {\n const isEditable = this.getProperty(\"editable\") !== false;\n const useMessageManager = this.getProperty(\"useMessageManager\") === true;\n const activePluginRegistry = this.getProperty(\"pluginRegistry\") || PluginRegistry.getInstance();\n this.engine = new Engine(isEditable, useMessageManager, activePluginRegistry);\n this.engine.host = this;\n }\n\n this.generatedContent = this.engine.build(\n normalizedSchema,\n this.stateManager.getModel(),\n this.activeModelName,\n this.triggerSubmit.bind(this),\n this.getId(),\n this.onInternalFieldChange.bind(this)\n );\n\n let contentContainer = this.generatedContent;\n\n const hasProperties = normalizedSchema && Object.keys(normalizedSchema).length > 0;\n\n if (!hasProperties) {\n const strip = new MessageStrip({\n text: \"Warning: The generated UI is blank. Reason: The schema (or inferred schema) contains no valid properties to render.\",\n type: \"Warning\",\n showIcon: true,\n showCloseButton: false\n });\n strip.addStyleClass(\"sapUiSmallMarginBottom\");\n contentContainer = new VBox({\n items: [strip, this.generatedContent]\n });\n } else if (this.engine.hasPartialRenderingErrors) {\n const strip = new MessageStrip({\n text: \"Layout partially rendered. Some fields failed to generate due to configuration errors.\",\n type: \"Warning\",\n showIcon: true,\n showCloseButton: true\n });\n strip.addStyleClass(\"sapUiSmallMarginBottom\");\n contentContainer = new VBox({\n items: [strip, this.generatedContent]\n });\n }\n\n this.setAggregation(\"_content\", contentContainer);\n this.validationDelegate.registerObject(this.generatedContent);\n\n const payload = this.stateManager.extractPayload();\n this.dataSyncDelegate.pushToBindings(payload);\n\n // Retroactively expand the dialog if the heuristic determines it needs more space\n const optimalWidth = this.calculateOptimalDialogWidth(this.parsedSchema);\n this.dialogDelegate.updateDialogWidthDynamically(optimalWidth);\n\n } catch (error) {\n this.setBusy(false);\n const msg = \"Fatal crash during layout generation: \" + (error as Error).message;\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg, exception: error });\n this.validationDelegate.mountCrashBoundary(error as Error);\n throw error; // Completely eliminate silent error swallowing\n }\n }\n\n /**\n * Helper to heuristically calculate optimal dialog width based on schema content.\n */\n private calculateOptimalDialogWidth(schema: Record<string, any> | null): string {\n if (!schema) return \"auto\";\n let requiresWideDialog = false;\n\n const scanProperties = (props: Record<string, any>) => {\n if (requiresWideDialog) return;\n for (const key in props) {\n const prop = props[key];\n if (prop.type === \"array\") {\n requiresWideDialog = true;\n return;\n }\n if (prop.ui?.fullWidth === true) {\n requiresWideDialog = true;\n return;\n }\n if (prop.ui?.widget === \"codeEditor\" || prop.ui?.widget === \"textArea\" || prop.ui?.widget === \"richText\") {\n requiresWideDialog = true;\n return;\n }\n if (prop.properties) scanProperties(prop.properties);\n if (prop.items && prop.items.properties) scanProperties(prop.items.properties);\n }\n };\n\n if (schema.type === \"array\") return \"80vw\";\n if (schema.properties) {\n scanProperties(schema.properties);\n }\n\n return requiresWideDialog ? \"80vw\" : \"auto\";\n }\n\n /**\n * Programmatic API. Re-parents the generated content into a dialog and opens it.\n */\n public openInDialog(title: string = \"Form\", submitButtonText: string = \"OK\", cancelButtonText: string = \"Cancel\", dialogWidth: string = \"auto\", parentView?: Control): void {\n const isGenerated = !!this.generatedContent;\n \n // If we already have the schema parsed, we can calculate it instantly to prevent flicker\n let finalWidth = dialogWidth;\n if (finalWidth === \"auto\" && this.parsedSchema) {\n finalWidth = this.calculateOptimalDialogWidth(this.parsedSchema);\n }\n \n this.dialogDelegate.openInDialog(title, submitButtonText, isGenerated, cancelButtonText, finalWidth, parentView);\n }\n}\n"],"mappings":"weAESA,EAAMC,EAAA,gBACNC,EAAgBC,EAAA,0BAChBC,EAAeC,EAAA,yBACfC,EAAMC,EAAA,gBACNC,EAAYC,EAAA,sBACZC,EAAgBC,EAAA,0BAChBC,EAAkBC,EAAA,4BAClBC,EAAcC,EAAA,wBAIdC,EAAcC,EAAA,wBACdC,EAAYC,EAAA,sBACZC,EAAaC,EAAA,uBACbC,EAAsBC,EAAA,0BAG/B,MASqBC,EAAsBC,EAAOC,OAAA,0DA8DvCC,SAAW,CACdC,WAAY,EACZC,OAAOC,EAAmBC,GACtBD,EAAGE,UAAU,MAAOD,GACpBD,EAAGG,MAAM,QAAS,QAClBH,EAAGG,MAAM,SAAU,QACnBH,EAAGI,UAEH,MAAMC,EAAUJ,EAAQK,eAAe,YACvC,GAAID,EAAS,CACTL,EAAGO,cAAcF,EACrB,CAEAL,EAAGQ,MAAM,MACb,GAjEYC,SAAW,CACvBC,WAAY,CACRC,iBAAkB,CAAEC,KAAM,MAAOC,aAAc,MAC/CC,kBAAmB,CAAEF,KAAM,SAAUC,aAAc,CAAC,GACpDE,aAAc,CAAEH,KAAM,SAAUC,aAAc,MAC9CG,eAAgB,CAAEJ,KAAM,SAAUC,aAAc,MAChDI,sBAAuB,CAAEL,KAAM,SAAUC,aAAc,MACvDK,KAAM,CAAEN,KAAM,SAAUC,aAAc,KAAMM,SAAU,YACtDC,SAAU,CAAER,KAAM,SAAUC,aAAc,KAAMM,SAAU,YAC1DE,WAAY,CAAET,KAAM,UAAWC,aAAc,OAC7CS,QAAS,CAAEV,KAAM,UAAWC,aAAc,MAC1CU,kBAAmB,CAAEX,KAAM,UAAWC,aAAc,OACpDW,UAAW,CAAEZ,KAAM,SAAUC,aAAc,QAC3CY,UAAW,CAAEb,KAAM,UAAWC,aAAc,OAC5Ca,SAAU,CAAEd,KAAM,UAAWC,aAAc,MAC3Cc,aAAc,CAAEf,KAAM,MAAOC,aAAc,GAC3Ce,cAAe,CAAEhB,KAAM,SAAUC,aAAc,OAEnDgB,aAAc,CACVC,SAAU,CAAElB,KAAM,sBAAuBmB,SAAU,MAAOC,WAAY,WAE1EC,OAAQ,CACJC,aAAc,CACVC,WAAY,CACRC,QAAS,CAAExB,KAAM,UACjByB,SAAU,CAAEzB,KAAM,YAClB0B,eAAgB,CAAE1B,KAAM,cAGhC2B,OAAQ,CACJJ,WAAY,CACRC,QAAS,CAAExB,KAAM,UACjB4B,YAAa,CAAE5B,KAAM,YAG7B6B,OAAQ,CAAC,EACTC,YAAa,CACTP,WAAY,CACRQ,UAAW,CAAE/B,KAAM,UACnBgC,MAAO,CAAEhC,KAAM,OACfwB,QAAS,CAAExB,KAAM,UACjBU,QAAS,CAAEV,KAAM,aAGzBiC,uBAAwB,CAAEV,WAAY,CAAEb,QAAS,CAAEV,KAAM,aACzDkC,gBAAiB,CAAEX,WAAY,CAAEQ,UAAW,CAAE/B,KAAM,UAAYmC,QAAS,CAAEnC,KAAM,YACjFoC,kBAAmB,CAAEb,WAAY,CAAEQ,UAAW,CAAE/B,KAAM,YACtDqC,MAAO,CAAEd,WAAY,CAAEY,QAAS,CAAEnC,KAAM,UAAYsC,UAAW,CAAEtC,KAAM,cAwB/EuC,YAAW,SAAAC,EAACC,EAAgCC,GACxCC,6BAAAC,KAAMH,EAAwBC,GAAUE,KAjFlCC,aAAoC,KAAID,KACxCE,iBAAmC,KAAIF,KACvCG,OAAwB,KAAIH,KAC5BI,gBAA0B,GAkMpCJ,KACUK,aAA+C,KA0JzDL,KAIQM,iBAAyC,IAlRjD,EAOOC,KAAI,SAAAC,IACPC,sBAAAT,MAGAA,KAAKU,iBAAmB,IAAItF,EAAiB4E,MAC7CA,KAAKW,mBAAqB,IAAIrF,EAAmB0E,MACjDA,KAAKY,eAAiB,IAAIpF,EAAewE,MAEzCA,KAAKa,sBAAwBb,KAAKa,sBAAsBC,KAAKd,KACjE,EAKOe,aAAY,SAAAC,EAACC,GAChBjB,KAAKkB,YAAY,YAAaD,EAAS,MACvCvG,EAAOqG,aAAaE,GACpB,OAAOjB,IACX,EAMOmB,gBAAe,SAAAC,IAClB,OAAOpB,KAAKC,YAChB,EAOOoB,oBAAmB,SAAAC,EAACC,GACvB,MAAMC,EAAOxB,KAAKyB,YAAY,qBAC9B,IAAKD,IAASD,EAAS,OAAOG,UAC9B,IAAIC,EAAMJ,EACV,GAAII,EAAIC,WAAW,kBAAmB,CAClCD,EAAMA,EAAIE,UAAU,GACxB,MAAO,GAAIF,EAAIC,WAAW,yBAA0B,CAChDD,EAAMA,EAAIE,UAAU,GACxB,CACA,OAAOL,EAAKG,EAChB,EAMOG,wBAAuB,SAAAC,IAC1B,GAAI/B,KAAKE,iBAAkB,CACvBF,KAAKW,mBAAmBqB,iBAAiBhC,KAAKE,kBAC9CF,KAAKE,iBAAiB+B,UACtBjC,KAAKE,iBAAmB,IAC5B,CACJ,EAMUW,sBAAqB,SAAAqB,EAACpE,EAAkBqE,EAAmBC,EAAuBC,GACxF,MAAMzD,EAAUoB,KAAKC,aAAeD,KAAKC,aAAaqC,iBAAmB,CAAC,EAE1E,GAAItC,KAAKyB,YAAY,gBAAkB,KAAM,CACzC,GAAIzB,KAAKyB,YAAY,aAAc,CAC/B/G,EAAO6H,MAAM,WAAY,mDAAoD,gBACjF,CACAvC,KAAKU,iBAAiB8B,eAAe5D,EACzC,CAEA,MAAM6D,EAAkBzC,KAAKyB,YAAY,WACzC,GAAI3D,IAAY2E,EAAiB,CAC7BzC,KAAKkB,YAAY,UAAWpD,EAAS,MACrCkC,KAAK0C,UAAU,yBAA0B,CAAE5E,YAC3C,GAAIkC,KAAKyB,YAAY,aAAc,CAC/B/G,EAAO6H,MAAM,WAAY,gCAAgCzE,IAAW,gBACxE,CACJ,CAEAkC,KAAK0C,UAAU,cAAe,CAC1BvD,UAAWgD,GAAY,GACvB/C,MAAOsC,UACP9C,QAASA,EACTd,QAASA,GAEjB,EAKO6E,KAAI,SAAAC,IACP,GAAI5C,KAAKG,OAAQ,CACbH,KAAKG,OAAO8B,UACZjC,KAAKG,OAAS,IAClB,CAEA,GAAIH,KAAKC,aAAc,CACnBD,KAAKC,aAAa4C,WAAWZ,UAC7BjC,KAAKC,aAAe,IACxB,CAEA,GAAID,KAAKE,iBAAkB,CACvBF,KAAKE,iBAAiB+B,UACtBjC,KAAKE,iBAAmB,IAC5B,CACJ,EAQO4C,gBAAe,SAAAC,IAClB,OAAO/C,KAAKK,YAChB,EAMO2C,kBAAiB,SAAAC,IACpB,GAAIjD,KAAKyB,YAAY,aAAc,CAC/B/G,EAAO6H,MAAM,yBAA0B,4EAA4EvC,KAAKyB,YAAY,wCAAwCzB,KAAKyB,YAAY,gCAAgCzB,KAAKyB,YAAY,cAAe,gBACjQ,CAEA,IAAKzB,KAAKE,iBAAkB,CACxB,MAAMgD,IAAclD,KAAKyB,YAAY,oBACrC,MAAM0B,IAAYnD,KAAKyB,YAAY,eAAiBzB,KAAKyB,YAAY,QAErE,GAAIyB,GAAaC,EAAS,CACtBnD,KAAKoD,UACT,KAAO,CACH,MAAMC,EAAM,uFACZ3I,EAAO+E,MAAM,WAAY4D,EAAK,iBAC9BrD,KAAK0C,UAAU,QAAS,CAAEnD,QAAS8D,IACnC,MAAM,IAAIC,MAAMD,EACpB,CACJ,CACJ,EAOOE,cAAa,SAAAC,IAChB,GAAIxD,KAAKC,cAAgBD,KAAKG,OAAQ,CAClC,IAAIsD,EAAc,MAElBzD,KAAKW,mBAAmB+C,oBAGxB,MAAMC,EAAsB3D,KAAKyB,YAAY,uBAAyB,KACtE,MAAMmC,EAAS5D,KAAKG,OAAO0D,YAAYF,GACvC,GAAIC,EAAOE,OAAS,EAAG,CACnB9D,KAAKW,mBAAmBoD,YAAY,GAAI,sFACxC,IAAK,MAAMC,KAAOJ,EAAQ,CACtB,GAAII,EAAI7B,UAAY6B,EAAI5B,aAAc,CAClCpC,KAAKW,mBAAmBoD,YAAYC,EAAI7B,SAAU6B,EAAI5B,aAC1D,CACJ,CACA,OAAO,KACX,CAEA,MAAMxD,EAAUoB,KAAKC,aAAaqC,iBAClC,MAAMtD,EAAciF,KAAKC,UAAUtF,GAEnCoB,KAAK0C,UAAU,eAAgB,CAC3B9D,UACAE,eAAgBA,KAAQ2E,EAAc,MACtC5E,SAAUA,CAACsF,EAAsB/B,KAC7BqB,EAAc,KACdzD,KAAKW,mBAAmBoD,YAAYI,EAAc/B,GAClD,GAAIuB,GAAuB3D,KAAKG,OAAQ,CACpC,MAAMiE,EAASpE,KAAKG,OAAOkE,gBAAgBF,GAC3C,GAAIC,UAAiBA,EAAOE,2BAA6B,WAAY,CACjEF,EAAOE,yBAAyB,MAAOlC,EAC3C,CACJ,KAIR,GAAIqB,EAAa,CACb,OAAO,KACX,CAEAzD,KAAKU,iBAAiB8B,eAAe5D,GACrCoB,KAAK0C,UAAU,SAAU,CAAE9D,UAASI,gBACpC,OAAO,IACX,CACA,OAAO,KACX,EAKOuF,eAAc,SAAAC,EAACrF,EAAmBI,GACrCS,KAAKW,mBAAmB4D,eAAepF,EAAWI,GAClD,GAAIS,KAAKyB,YAAY,uBAAyB,MAAQzB,KAAKG,OAAQ,CAC/D,MAAMiE,EAASpE,KAAKG,OAAOkE,gBAAgBlF,GAC3C,GAAIiF,UAAiBA,EAAOE,2BAA6B,WAAY,CACjEF,EAAOE,yBAAyB,MAAO/E,EAC3C,CACJ,CACJ,EAKOkF,iBAAgB,SAAAC,EAACvF,GACpBa,KAAKW,mBAAmB8D,iBAAiBtF,GACzC,GAAIa,KAAKyB,YAAY,uBAAyB,MAAQzB,KAAKG,OAAQ,CAC/D,MAAMiE,EAASpE,KAAKG,OAAOkE,gBAAgBlF,GAC3C,GAAIiF,UAAiBA,EAAOE,2BAA6B,WAAY,CACjE,MAAMK,EAAcP,EAAOQ,WAC3BR,EAAOE,yBAAyBK,EAAY7G,QAAS6G,EAAYvC,aACrE,CACJ,CACJ,EAKOyC,QAAO,SAAAC,EAACC,GACXC,yBAAAhF,KAAc+E,GACd,OAAO/E,IACX,EAMOkB,YAAW,SAAA+D,EAACC,EAAsB9F,EAAgB+F,GACrD,GAAID,IAAiB,qBAAuBlF,KAAKC,aAAc,CAC3DD,KAAKC,aAAamF,qBAAqBhG,IAAU,KACrD,CAEA,GAAI8F,IAAiB,YAAcA,IAAiB,OAAQ,CACxDlF,KAAKU,iBAAiB2E,uBAAuBH,EAAc9F,EAAO+F,GAClE,OAAOnF,IACX,CAEA,GAAIkF,IAAiB,YAAcA,IAAiB,aAAeA,IAAiB,oBAAsBA,IAAiB,eAAgB,CACvI,MAAMI,EAAatF,KAAKyB,YAAYyD,GACpC,GAAII,IAAelG,EAAO,CACtBmG,6BAAAvF,KAAkBkF,EAAc9F,EAAO+F,GACvCnF,KAAK8B,yBACT,CACA,OAAO9B,IACX,CAEA,OAAAuF,6BAAAvF,KAAyBkF,EAAc9F,EAAO+F,EAClD,EAKOK,gBAAe,SAAAC,EAACP,EAAsB9F,EAAgB+F,GACzD,OAAAI,6BAAAvF,KAAyBkF,EAAc9F,EAAO+F,EAClD,EAaa/B,SAAQsC,eAAAC,IACjB,GAAI3F,KAAKM,iBAAkB,CACvB,OAAON,KAAKM,gBAChB,CACAN,KAAKM,iBAAmBsF,QAAQC,UAAUC,KAAKJ,UAC3C,UACU1F,KAAK+F,aACf,CAAE,MAAOC,GACLtL,EAAO+E,MAAM,WAAY,+BAAiCuG,EAAG,iBAC7D,MAAMA,CACV,CAAC,QACGhG,KAAKM,iBAAmB,IAC5B,IAEJ,OAAON,KAAKM,gBAChB,EAOcyF,YAAWL,eAAAK,IACrB,IACI/F,KAAK8B,0BAIL,IAAImE,EAAkB,KACtB,GAAIjG,KAAKC,aAAc,CACnBgG,EAAkBjG,KAAKC,aAAaqC,gBACxC,CAEA,GAAItC,KAAKG,OAAQ,CACbH,KAAKG,OAAO8B,UACZjC,KAAKG,OAAS,IAClB,CACA,GAAIH,KAAKC,aAAc,CACnBD,KAAKC,aAAa4C,WAAWZ,UAC7BjC,KAAKC,aAAe,IACxB,CAEA,MAAMiG,EAAYlG,KAAKyB,YAAY,oBACnC,MAAM0E,GAAiBD,UAAqBA,IAAc,UAAYE,OAAOC,KAAKH,GAAWpC,SAAW,EAExG,IAAIwC,EAAYtG,KAAKyB,YAAY,QACjC,MAAM8E,EAAgBvG,KAAKyB,YAAY,YAEvC,GAAI8E,EAAe,CACf,IACID,EAAYrC,KAAKuC,MAAMD,EAC3B,CAAE,MAAOP,GACL,MAAM3C,EAAM,yCAA4C2C,EAAYzG,QACpE7E,EAAO+E,MAAM,WAAY4D,EAAK,iBAC9BrD,KAAK0C,UAAU,QAAS,CAAEnD,QAAS8D,EAAK3D,UAAWsG,IACnD,MAAM,IAAI1C,MAAMD,EACpB,CACJ,MAAO,UAAWiD,IAAc,SAAU,CACtC,IACIA,EAAYrC,KAAKuC,MAAMF,EAC3B,CAAE,MAAON,GACL,MAAM3C,EAAM,qCAAwC2C,EAAYzG,QAChE7E,EAAO+E,MAAM,WAAY4D,EAAK,iBAC9BrD,KAAK0C,UAAU,QAAS,CAAEnD,QAAS8D,EAAK3D,UAAWsG,IACnD,MAAM,IAAI1C,MAAMD,EACpB,CACJ,CAGA,MAAMoD,EAAYR,GAAmBK,EAErC,IAAKG,GAAaL,OAAOC,KAAKI,GAAW3C,SAAW,EAAG,CACnD,GAAIqC,EAAe,CACf,MAAM9C,EAAM,uEACZ3I,EAAO+E,MAAM,WAAY4D,EAAK,iBAC9BrD,KAAK0C,UAAU,QAAS,CAAEnD,QAAS8D,IACnC,MAAM,IAAIC,MAAMD,EACpB,CACJ,CAEA,MAAMqD,EAAoBP,EAAgB,KAAOD,EACjD,MAAMS,EAAmB/L,EAAiBgM,UAAUF,EAAmBD,GAGvEzG,KAAKK,aAAesG,EAEpB,GAAIA,EAAkB,CAClB,MAAME,EAAe/L,EAAgBgM,wBAAwBH,GAC7D,GAAIE,EAAa/C,OAAS,EAAG,CACzB,MAAMiD,EAAW,sCAAwCF,EAAaG,KAAK,QAE3EtM,EAAO+E,MAAM,WAAYsH,EAAU,iBACnC,GAAI/G,KAAKyB,YAAY,aAAc,CAC/BwF,EAAWxH,MAAMsH,EAAU,CAAEG,MAAO,wBACpC,MACJ,CACJ,CACJ,CAEA,MAAMC,EAAiBnH,KAAKyB,YAAY,sBAA+C,CAAC,EAGxF,IAAI2F,EAAkBlB,EACtB,UAAWA,IAAc,UAAYA,EAAUmB,SAAW,GAAI,CAC1D,IACID,EAAkBnD,KAAKuC,MAAMN,EACjC,CAAE,MAAOF,GACL,CAER,CAEA,GAAIoB,UAA0BA,IAAoB,UAAaA,EAAwBE,YAAa,CAChGlB,OAAOmB,OAAOJ,EAAiBC,EAAwBE,aACvDtH,KAAKkB,YAAY,oBAAqBiG,EAAgB,KAC1D,CAEA,IAAIK,EACJ,GAAIpB,OAAOC,KAAKc,GAAgBrD,OAAS,EAAG,CACxC0D,EAAwB,CAAC,EACzB,IAAK,MAAM7F,KAAOwF,EAAgB,CAC9B,IACIK,EAAsB7F,GAAO/G,EAAiBgM,UAAUO,EAAexF,GAC3E,CAAE,MAAOqE,GACLtL,EAAO+M,KAAK,mDAAmD9F,KAAQ,GAAI,gBAC/E,CACJ,CACJ,CAEA,MAAM+F,EAAS1H,KAAKyB,YAAY,gBAIhC,GAAIzF,EAAuB2L,aAAahB,GAA8B,CAClEjM,EAAO+M,KAAK,6HAChB,CAEA7L,EAAagM,MAAMjB,EAA6Be,EAAQF,GACxD1L,EAAc8L,MAAMjB,GAEpB,MAAMkB,EAAuB7H,KAAKyB,YAAY,mBAAqB/F,EAAeoM,cAElF,MAAMC,EAAcF,EAAqBG,eAAerB,GACxD,MAAMsB,EAAmBC,MAAMC,KAAKJ,GAAaK,KAAMC,IAAeC,IAAIC,GAAGC,QAAQH,IAErF,GAAIJ,EAAkB,CAClBjI,KAAK6E,QAAQ,YACPgD,EAAqBY,oBAAoB9B,GAC/C3G,KAAK6E,QAAQ,MACjB,CAGA,GAAI8B,GAAoBF,EAAW,CAC/BzG,KAAKU,iBAAiBgI,qBAAqB/B,EAAkBF,EACjE,CAEAzG,KAAKI,gBAAkB,UAAYJ,KAAK2I,QACxC3I,KAAKC,aAAe,IAAI/E,EAAauL,EAAWE,EAAkB3G,KAAKI,iBACvEJ,KAAKC,aAAamF,qBAAqBpF,KAAKyB,YAAY,uBAAyB,MACjFzB,KAAK4I,SAAS5I,KAAKC,aAAa4C,WAAY7C,KAAKI,iBAEjD,IAAKJ,KAAKG,OAAQ,CACd,MAAM0I,EAAa7I,KAAKyB,YAAY,cAAgB,MACpD,MAAM1D,EAAoBiC,KAAKyB,YAAY,uBAAyB,KACpE,MAAMoG,EAAuB7H,KAAKyB,YAAY,mBAAqB/F,EAAeoM,cAClF9H,KAAKG,OAAS,IAAInF,EAAO6N,EAAY9K,EAAmB8J,GACxD7H,KAAKG,OAAO2I,KAAO9I,IACvB,CAEAA,KAAKE,iBAAmBF,KAAKG,OAAO4I,MAChCpC,EACA3G,KAAKC,aAAa4C,WAClB7C,KAAKI,gBACLJ,KAAKuD,cAAczC,KAAKd,MACxBA,KAAK2I,QACL3I,KAAKa,sBAAsBC,KAAKd,OAGpC,IAAIgJ,EAAmBhJ,KAAKE,iBAE5B,MAAM+I,EAAgBtC,GAAoBP,OAAOC,KAAKM,GAAkB7C,OAAS,EAEjF,IAAKmF,EAAe,CAChB,MAAMC,EAAQ,IAAIC,EAAa,CAC3BC,KAAM,sHACNhM,KAAM,UACNiM,SAAU,KACVC,gBAAiB,QAErBJ,EAAMK,cAAc,0BACpBP,EAAmB,IAAIQ,EAAK,CACxBC,MAAO,CAACP,EAAOlJ,KAAKE,mBAE5B,MAAO,GAAIF,KAAKG,OAAOuJ,0BAA2B,CAC9C,MAAMR,EAAQ,IAAIC,EAAa,CAC3BC,KAAM,yFACNhM,KAAM,UACNiM,SAAU,KACVC,gBAAiB,OAErBJ,EAAMK,cAAc,0BACpBP,EAAmB,IAAIQ,EAAK,CACxBC,MAAO,CAACP,EAAOlJ,KAAKE,mBAE5B,CAEAF,KAAK2J,eAAe,WAAYX,GAChChJ,KAAKW,mBAAmBiJ,eAAe5J,KAAKE,kBAE5C,MAAMtB,EAAUoB,KAAKC,aAAaqC,iBAClCtC,KAAKU,iBAAiB8B,eAAe5D,GAGrC,MAAMiL,EAAe7J,KAAK8J,4BAA4B9J,KAAKK,cAC3DL,KAAKY,eAAemJ,6BAA6BF,EAErD,CAAE,MAAOpK,GACLO,KAAK6E,QAAQ,OACb,MAAMxB,EAAM,yCAA4C5D,EAAgBF,QACxE7E,EAAO+E,MAAM,WAAY4D,EAAK,iBAC9BrD,KAAK0C,UAAU,QAAS,CAAEnD,QAAS8D,EAAK3D,UAAWD,IACnDO,KAAKW,mBAAmBqJ,mBAAmBvK,GAC3C,MAAMA,CACV,CACJ,EAKQqK,4BAA2B,SAAAG,EAACC,GAChC,IAAKA,EAAQ,MAAO,OACpB,IAAIC,EAAqB,MAEzB,MAAMC,EAAkBC,IACpB,GAAIF,EAAoB,OACxB,IAAK,MAAMxI,KAAO0I,EAAO,CACrB,MAAMC,EAAOD,EAAM1I,GACnB,GAAI2I,EAAKlN,OAAS,QAAS,CACvB+M,EAAqB,KACrB,MACJ,CACA,GAAIG,EAAK/B,IAAIgC,YAAc,KAAM,CAC7BJ,EAAqB,KACrB,MACJ,CACA,GAAIG,EAAK/B,IAAIiC,SAAW,cAAgBF,EAAK/B,IAAIiC,SAAW,YAAcF,EAAK/B,IAAIiC,SAAW,WAAY,CACtGL,EAAqB,KACrB,MACJ,CACA,GAAIG,EAAKpN,WAAYkN,EAAeE,EAAKpN,YACzC,GAAIoN,EAAKb,OAASa,EAAKb,MAAMvM,WAAYkN,EAAeE,EAAKb,MAAMvM,WACvE,GAGJ,GAAIgN,EAAO9M,OAAS,QAAS,MAAO,OACpC,GAAI8M,EAAOhN,WAAY,CACnBkN,EAAeF,EAAOhN,WAC1B,CAEA,OAAOiN,EAAqB,OAAS,MACzC,EAKOM,aAAY,SAAAC,EAACxD,EAAgB,OAAQyD,EAA2B,KAAMC,EAA2B,SAAUC,EAAsB,OAAQC,GAC5I,MAAMC,IAAgB/K,KAAKE,iBAG3B,IAAI8K,EAAaH,EACjB,GAAIG,IAAe,QAAUhL,KAAKK,aAAc,CAC5C2K,EAAahL,KAAK8J,4BAA4B9J,KAAKK,aACvD,CAEAL,KAAKY,eAAe6J,aAAavD,EAAOyD,EAAkBI,EAAaH,EAAkBI,EAAYF,EACzG,IAAC,OA/nBgB5O,CAAa","ignoreList":[]}
1
+ {"version":3,"file":"GeneratorHost.js","names":["Logger","____utils_Logger","SchemaNormalizer","____core_SchemaNormalizer","SchemaValidator","____core_SchemaValidator","Engine","____core_Engine","StateManager","____core_StateManager","PolicyEngine","____core_PolicyEngine","DataSyncDelegate","___delegates_DataSyncDelegate","ValidationDelegate","___delegates_ValidationDelegate","DialogDelegate","___delegates_DialogDelegate","PluginRegistry","____core_PluginRegistry","LayoutScorer","____core_LayoutScorer","LayoutMutator","____core_LayoutMutator","DefaultLayoutGenerator","____core_DefaultLayoutGenerator","GeneratorHost","Control","extend","renderer","apiVersion","render","rm","control","openStart","style","openEnd","content","getAggregation","renderControl","close","metadata","properties","schemaDefinition","type","defaultValue","schemaDefinitions","schemaTarget","pluginRegistry","schemaBuilderRegistry","data","bindable","dataJson","liveUpdate","isValid","useMessageManager","modelName","debugMode","editable","layoutBudget","engineScopeId","aggregations","_content","multiple","visibility","events","beforeSubmit","parameters","payload","addError","preventDefault","submit","payloadJson","cancel","fieldChange","fieldPath","value","validationStateChanged","validationError","message","validationSuccess","error","exception","constructor","_constructor","idOrSettings","settings","Control.prototype.constructor.call","this","stateManager","generatedContent","engine","policyEngine","policyDebounceTimer","activeModelName","parsedSchema","_generatePromise","init","_init","Control.prototype.init.call","dataSyncDelegate","validationDelegate","dialogDelegate","onInternalFieldChange","bind","setDebugMode","_setDebugMode","enabled","setProperty","getStateManager","_getStateManager","getSchemaDefinition","_getSchemaDefinition","refPath","defs","getProperty","undefined","key","startsWith","substring","tearDownGeneratedLayout","_tearDownGeneratedLayout","unregisterObject","destroy","_onInternalFieldChange","fieldKey","errorMessage","controlId","extractPayload","debug","pushToBindings","currentValidity","fireEvent","clearTimeout","setTimeout","evaluatePolicies","_evaluatePolicies","deltas","evaluate","delta","plugin","getPluginByPath","target","property","applyVisibility","reportPolicyError","applyRequired","applyEditable","exit","_exit","getModel","getParsedSchema","_getParsedSchema","onBeforeRendering","_onBeforeRendering","hasSchema","hasData","generate","msg","Error","triggerSubmit","_triggerSubmit","isPrevented","removeAllMessages","errors","validateAll","length","pushMessage","err","fieldLabel","JSON","stringify","propertyPath","setVisualValidationState","addCustomError","_addCustomError","clearCustomError","_clearCustomError","schemaValid","validate","setBusy","_setBusy","isBusy","Control.prototype.setBusy.call","_setProperty","propertyName","suppressInvalidate","setUseMessageManager","handleInputDataHotSwap","currentVal","Control.prototype.setProperty.call","setBaseProperty","_setBaseProperty","async","_generate","Promise","resolve","then","_doGenerate","e","internalPayload","rawSchema","parse","isSchemaEmpty","Object","keys","inputData","inputDataJson","dataParseError","finalData","schemaToNormalize","normalizedSchema","normalize","uiPolicies","schemaErrors","validateSchemaStructure","errorMsg","join","MessageBox","title","rawDefinitions","parsedRawSchema","trim","definitions","assign","normalizedDefinitions","warn","budget","ensureLayout","apply","activePluginRegistry","getInstance","pathsToLoad","getPathsToLoad","needsNetworkLoad","Array","from","some","path","sap","ui","require","preloadDependencies","injectSchemaDefaults","getId","setModel","isEditable","host","build","contentContainer","hasProperties","strip","MessageStrip","text","showIcon","showCloseButton","addStyleClass","VBox","items","insertItem","insertContent","hasPartialRenderingErrors","setAggregation","registerObject","calculateAndApplyOptimalWidth","mountCrashBoundary","openInDialog","_openInDialog","submitButtonText","cancelButtonText","dialogWidth","parentView","isGenerated"],"sources":["GeneratorHost.ts"],"sourcesContent":["import Control from \"sap/ui/core/Control\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport { Logger } from \"../../utils/Logger\";\nimport { SchemaNormalizer } from \"../../core/SchemaNormalizer\";\nimport { SchemaValidator } from \"../../core/SchemaValidator\";\nimport { Engine } from \"../../core/Engine\";\nimport { StateManager } from \"../../core/StateManager\";\nimport { PolicyEngine } from \"../../core/PolicyEngine\";\nimport { DataSyncDelegate } from \"./delegates/DataSyncDelegate\";\nimport { ValidationDelegate } from \"./delegates/ValidationDelegate\";\nimport { DialogDelegate } from \"./delegates/DialogDelegate\";\nimport MessageBox from \"sap/m/MessageBox\";\nimport MessageStrip from \"sap/m/MessageStrip\";\nimport VBox from \"sap/m/VBox\";\nimport { PluginRegistry } from \"../../core/PluginRegistry\";\nimport { LayoutScorer } from \"../../core/LayoutScorer\";\nimport { LayoutMutator } from \"../../core/LayoutMutator\";\nimport { DefaultLayoutGenerator } from \"../../core/DefaultLayoutGenerator\";\nimport type { ISchema } from \"../../interfaces/ISchema\";\n\n/**\n * Base wrapper element for embedding the dynamic form natively via Explicit Schemas.\n * \n * This class serves as the core rendering engine for standard MetaUI implementations.\n * It manages the lifecycle of the Engine, StateManager, and the delegation of \n * data synchronization, validation, and dialog interactions.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls.host\n */\nexport default class GeneratorHost extends Control {\n\n protected stateManager: StateManager | null = null;\n protected generatedContent: Control | null = null;\n /** The embedded engine responsible for rendering the UI controls */\n protected engine: Engine | null = null;\n \n /** \n * The Policy-Based Rules Engine.\n * Continuously evaluates declarative cross-field rules and pushes visual/structural mutations down into the plugins.\n */\n protected policyEngine: PolicyEngine | null = null;\n \n private policyDebounceTimer: any = null;\n protected activeModelName: string = \"\";\n\n protected dataSyncDelegate!: DataSyncDelegate;\n protected validationDelegate!: ValidationDelegate;\n protected dialogDelegate!: DialogDelegate;\n\n static readonly metadata = {\n properties: {\n schemaDefinition: { type: \"any\", defaultValue: null },\n schemaDefinitions: { type: \"object\", defaultValue: {} },\n schemaTarget: { type: \"string\", defaultValue: null },\n pluginRegistry: { type: \"object\", defaultValue: null },\n schemaBuilderRegistry: { type: \"object\", defaultValue: null },\n data: { type: \"object\", defaultValue: null, bindable: \"bindable\" },\n dataJson: { type: \"string\", defaultValue: null, bindable: \"bindable\" },\n liveUpdate: { type: \"boolean\", defaultValue: false },\n isValid: { type: \"boolean\", defaultValue: true },\n useMessageManager: { type: \"boolean\", defaultValue: false },\n modelName: { type: \"string\", defaultValue: \"meta\" },\n debugMode: { type: \"boolean\", defaultValue: false },\n editable: { type: \"boolean\", defaultValue: true },\n layoutBudget: { type: \"int\", defaultValue: 0 },\n engineScopeId: { type: \"string\", defaultValue: null }\n },\n aggregations: {\n _content: { type: \"sap.ui.core.Control\", multiple: false, visibility: \"hidden\" }\n },\n events: {\n beforeSubmit: {\n parameters: {\n payload: { type: \"object\" },\n addError: { type: \"function\" },\n preventDefault: { type: \"function\" }\n }\n },\n submit: {\n parameters: {\n payload: { type: \"object\" },\n payloadJson: { type: \"string\" }\n }\n },\n cancel: {},\n fieldChange: {\n parameters: {\n fieldPath: { type: \"string\" },\n value: { type: \"any\" },\n payload: { type: \"object\" },\n isValid: { type: \"boolean\" }\n }\n },\n validationStateChanged: { parameters: { isValid: { type: \"boolean\" } } },\n validationError: { parameters: { fieldPath: { type: \"string\" }, message: { type: \"string\" } } },\n validationSuccess: { parameters: { fieldPath: { type: \"string\" } } },\n error: { parameters: { message: { type: \"string\" }, exception: { type: \"object\" } } }\n }\n };\n\n static renderer = {\n apiVersion: 2,\n render(rm: RenderManager, control: GeneratorHost) {\n rm.openStart(\"div\", control);\n rm.style(\"width\", \"100%\");\n rm.style(\"height\", \"100%\");\n rm.openEnd();\n\n const content = control.getAggregation(\"_content\") as Control;\n if (content) {\n rm.renderControl(content);\n }\n\n rm.close(\"div\");\n }\n };\n\n /**\n * Standard UI5 Constructor.\n */\n constructor(idOrSettings?: string | object, settings?: object) {\n super(idOrSettings as string, settings);\n }\n\n /**\n * Initializes the control and instantiates the composition delegates.\n * Delegates must be initialized here rather than in the constructor so they are \n * available before `applySettings` runs during UI5's control lifecycle.\n */\n public init(): void {\n super.init();\n\n // Initialize Composition Delegates\n this.dataSyncDelegate = new DataSyncDelegate(this);\n this.validationDelegate = new ValidationDelegate(this);\n this.dialogDelegate = new DialogDelegate(this as any);\n\n this.onInternalFieldChange = this.onInternalFieldChange.bind(this);\n }\n\n /**\n * Enables or disables debug mode.\n */\n public setDebugMode(enabled: boolean): this {\n this.setProperty(\"debugMode\", enabled, true);\n Logger.setDebugMode(enabled);\n return this;\n }\n\n\n /**\n * Returns the active state manager instance managing the JSON payload.\n */\n public getStateManager(): StateManager | null {\n return this.stateManager;\n }\n\n /**\n * Resolves a reference pointer against the global schema definitions dictionary.\n * @param refPath The string reference path (e.g., \"#/definitions/User\")\n * @returns The resolved ISchema or undefined\n */\n public getSchemaDefinition(refPath: string): ISchema | undefined {\n const defs = this.getProperty(\"schemaDefinitions\") as Record<string, ISchema>;\n if (!defs || !refPath) return undefined;\n let key = refPath;\n if (key.startsWith(\"#/definitions/\")) {\n key = key.substring(14);\n } else if (key.startsWith(\"#/components/schemas/\")) {\n key = key.substring(21);\n }\n return defs[key];\n }\n\n /**\n * Safely destroys the currently generated UI tree and cleans up references.\n * This is called before every regeneration to prevent memory leaks.\n */\n public tearDownGeneratedLayout(): void {\n if (this.generatedContent) {\n this.validationDelegate.unregisterObject(this.generatedContent);\n this.generatedContent.destroy();\n this.generatedContent = null;\n }\n }\n\n /**\n * Internal event handler triggered by the Engine when a field value changes.\n * Coordinates LiveUpdate syncs, validation state tracking, and bubbling the change upwards.\n */\n protected onInternalFieldChange(isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string): void {\n const payload = this.stateManager ? this.stateManager.extractPayload() : {};\n\n if (this.getProperty(\"liveUpdate\") === true) {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI]\", \"liveUpdate is enabled, pushing outbound payload.\", \"GeneratorHost\");\n }\n this.dataSyncDelegate.pushToBindings(payload);\n }\n\n const currentValidity = this.getProperty(\"isValid\") as boolean;\n if (isValid !== currentValidity) {\n this.setProperty(\"isValid\", isValid, true);\n this.fireEvent(\"validationStateChanged\", { isValid });\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI]\", `Validation state shifted to: ${isValid}`, \"GeneratorHost\");\n }\n }\n\n this.fireEvent(\"fieldChange\", {\n fieldPath: fieldKey || \"\",\n value: undefined,\n payload: payload,\n isValid: isValid\n });\n\n // Trigger PBRE Live Evaluation\n if (this.policyEngine && fieldKey) {\n if (this.policyDebounceTimer) clearTimeout(this.policyDebounceTimer);\n this.policyDebounceTimer = setTimeout(() => {\n this.evaluatePolicies();\n }, 200);\n }\n }\n\n /**\n * Executes the PBRE policy evaluations and orchestrates the delta updates to the UI plugins.\n * Acts as the bridge between the headless PolicyEngine calculations and the physical UI5 plugins.\n * \n * @param changedPath The specific JSON path that triggered the evaluation (used for incremental sweeps).\n * If undefined, a full engine sweep is performed (e.g. during initial render or manual submit).\n */\n private evaluatePolicies(): void {\n if (!this.policyEngine || !this.stateManager || !this.engine) return;\n const payload = this.stateManager.extractPayload();\n const deltas = this.policyEngine.evaluate(payload);\n for (const delta of deltas) {\n const plugin = this.engine.getPluginByPath(delta.target);\n if (plugin) {\n // Systemic Failsafe: State Pruning on Hide/Disable\n if ((delta.property === \"visibility\" || delta.property === \"editable\") && delta.value === false) {\n this.stateManager.setProperty(delta.target, undefined); \n }\n\n switch (delta.property) {\n case \"visibility\": \n if (plugin.applyVisibility) plugin.applyVisibility(delta.value);\n break;\n case \"validity\":\n if (delta.value) {\n this.engine.reportPolicyError(delta.target, null);\n } else {\n this.engine.reportPolicyError(delta.target, delta.errorMessage || \"Validation failed by policy\");\n }\n break;\n case \"required\":\n if (plugin.applyRequired) plugin.applyRequired(delta.value);\n break;\n case \"editable\":\n if (plugin.applyEditable) plugin.applyEditable(delta.value);\n break;\n }\n }\n }\n }\n\n /**\n * Standard UI5 Exit Hook. Ensures complete teardown of the engine and state manager.\n */\n public exit(): void {\n if (this.engine) {\n this.engine.destroy();\n this.engine = null;\n }\n\n if (this.stateManager) {\n this.stateManager.getModel().destroy();\n this.stateManager = null;\n }\n\n if (this.generatedContent) {\n this.generatedContent.destroy();\n this.generatedContent = null;\n }\n }\n\n /** Cached schema for intelligent diffing during inference mode hot-swaps */\n protected parsedSchema: Record<string, unknown> | null = null;\n\n /**\n * Exposes the parsed schema to the DataSyncDelegate for diffing.\n */\n public getParsedSchema(): Record<string, unknown> | null {\n return this.parsedSchema;\n }\n\n /**\n * Standard UI5 Rendering Hook.\n * Evaluates whether it possesses a schema or data. If so, triggers the internal engine generation.\n */\n public onBeforeRendering(): void {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI GeneratorHost]\", `onBeforeRendering called. Engine boot state: schemaDefinition exists = ${!!this.getProperty(\"schemaDefinition\")}, data exists = ${!!this.getProperty(\"data\")}, dataJson exists = ${!!this.getProperty(\"dataJson\")}`, \"GeneratorHost\");\n }\n\n if (!this.generatedContent) {\n const hasSchema = !!this.getProperty(\"schemaDefinition\");\n const hasData = !!this.getProperty(\"dataJson\") || !!this.getProperty(\"data\");\n\n if (hasSchema || hasData) {\n this.generate();\n } else {\n const msg = \"GeneratorHost skipped rendering. Neither 'schemaDefinition' nor 'data' was provided.\";\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg });\n throw new Error(msg); // Eradicate silent errors\n }\n }\n }\n\n /**\n * Public API method to manually trigger form submission.\n * Executes all structural validations, clears old messages, and pushes payload to bindings.\n * @returns boolean True if submission succeeded, false if validation failed.\n */\n public triggerSubmit(): boolean {\n if (this.stateManager && this.engine) {\n let isPrevented = false;\n\n this.validationDelegate.removeAllMessages();\n\n // Run PBRE Full Sweep before validation to ensure visibility states are perfect\n if (this.policyEngine) {\n this.evaluatePolicies();\n }\n\n // PBRE Architecture Rule 12: Controls are deliberately isolated from UI5's native \n // MessageManager auto-sync. We must explicitly instruct plugins to paint their \n // visual red borders (ValueState) manually during a full form submission sweep.\n const errors = this.engine.validateAll(true);\n if (errors.length > 0) {\n if (this.getProperty(\"useMessageManager\") === true) {\n this.validationDelegate.pushMessage(\"\", \"One or more fields failed schema validation. Please review the highlighted fields.\");\n }\n for (const err of errors) {\n if (err.fieldKey && err.errorMessage) {\n this.validationDelegate.pushMessage(err.fieldKey, err.errorMessage, err.fieldLabel);\n }\n }\n return false;\n }\n\n const payload = this.stateManager.extractPayload();\n const payloadJson = JSON.stringify(payload);\n\n this.fireEvent(\"beforeSubmit\", {\n payload,\n preventDefault: () => { isPrevented = true; },\n addError: (propertyPath: string, errorMessage: string) => {\n isPrevented = true;\n if (this.getProperty(\"useMessageManager\") === true) {\n this.validationDelegate.pushMessage(propertyPath, errorMessage);\n }\n if (this.engine) {\n const plugin = this.engine.getPluginByPath(propertyPath);\n if (plugin && typeof plugin.setVisualValidationState === \"function\") {\n plugin.setVisualValidationState(false, errorMessage);\n }\n }\n }\n });\n\n if (isPrevented) {\n return false;\n }\n\n this.dataSyncDelegate.pushToBindings(payload);\n this.fireEvent(\"submit\", { payload, payloadJson });\n return true;\n }\n return false;\n }\n\n /**\n * Injects a custom error message onto a specific field.\n */\n public addCustomError(fieldPath: string, message: string): void {\n this.validationDelegate.addCustomError(fieldPath, message);\n if (this.getProperty(\"useMessageManager\") !== true && this.engine) {\n const plugin = this.engine.getPluginByPath(fieldPath);\n if (plugin && typeof plugin.setVisualValidationState === \"function\") {\n plugin.setVisualValidationState(false, message);\n }\n }\n }\n\n /**\n * Clears a custom error message from a specific field.\n */\n public clearCustomError(fieldPath: string): void {\n this.validationDelegate.clearCustomError(fieldPath);\n if (this.getProperty(\"useMessageManager\") !== true && this.engine) {\n const plugin = this.engine.getPluginByPath(fieldPath);\n if (plugin && typeof plugin.setVisualValidationState === \"function\") {\n const schemaValid = plugin.validate();\n plugin.setVisualValidationState(schemaValid.isValid, schemaValid.errorMessage);\n }\n }\n }\n\n /**\n * Toggles busy state on the host control.\n */\n public setBusy(isBusy: boolean): this {\n super.setBusy(isBusy);\n return this;\n }\n\n /**\n * Intercepts property changes. Hot-swaps data gracefully if it's an inputData change,\n * or forces a full UI teardown if it's a structural property change (like schemaDefinition).\n */\n public setProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {\n if (propertyName === \"useMessageManager\" && this.stateManager) {\n this.stateManager.setUseMessageManager(value === true);\n }\n\n if (propertyName === \"dataJson\" || propertyName === \"data\") {\n this.dataSyncDelegate.handleInputDataHotSwap(propertyName, value, suppressInvalidate);\n return this;\n }\n\n if (propertyName === \"editable\" || propertyName === \"debugMode\" || propertyName === \"schemaDefinition\" || propertyName === \"schemaTarget\") {\n const currentVal = this.getProperty(propertyName);\n if (currentVal !== value) {\n super.setProperty(propertyName, value, suppressInvalidate);\n this.tearDownGeneratedLayout();\n }\n return this;\n }\n\n return super.setProperty(propertyName, value, suppressInvalidate);\n }\n\n /**\n * Bypasses the interceptor to write directly to the base UI5 control.\n */\n public setBaseProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {\n return super.setProperty(propertyName, value, suppressInvalidate);\n }\n\n /**\n * Internal reference to the active generate promise.\n * Prevents concurrent redundant layouts from being generated when properties are set rapidly or DialogDelegate triggers it.\n */\n private _generatePromise: Promise<void> | null = null;\n\n /**\n * The core rendering pipeline entry point.\n * Uses Promise resolution to debounce concurrent or rapid consecutive calls natively without arbitrary timeouts.\n * @returns Promise that resolves when the layout is successfully built and mounted.\n */\n public async generate(): Promise<void> {\n if (this._generatePromise) {\n return this._generatePromise;\n }\n this._generatePromise = Promise.resolve().then(async () => {\n try {\n await this._doGenerate();\n } catch (e) {\n Logger.error(\"[MetaUI]\", \"Error in deferred generate: \" + e, \"GeneratorHost\");\n throw e; // Ensure it bubbles up to awaiters\n } finally {\n this._generatePromise = null;\n }\n });\n return this._generatePromise;\n }\n\n /**\n * The underlying synchronous generator orchestration method.\n * Normalizes the schema, sets up the state manager, loads missing plugins over the network,\n * orchestrates the Engine build, and mounts the generated UI components into the internal tree.\n */\n private async _doGenerate(): Promise<void> {\n try {\n this.tearDownGeneratedLayout();\n\n // CRITICAL FIX: Extract the unsaved internal payload BEFORE destroying the state manager\n // Otherwise, toggling editable (or other structural properties) will wipe user inputs!\n let internalPayload = null;\n if (this.stateManager) {\n internalPayload = this.stateManager.extractPayload();\n }\n\n if (this.engine) {\n this.engine.destroy();\n this.engine = null;\n }\n if (this.stateManager) {\n this.stateManager.getModel().destroy();\n this.stateManager = null;\n }\n\n let rawSchema = this.getProperty(\"schemaDefinition\");\n if (rawSchema && typeof rawSchema === \"object\") {\n rawSchema = JSON.parse(JSON.stringify(rawSchema));\n }\n const isSchemaEmpty = !rawSchema || (typeof rawSchema === \"object\" && Object.keys(rawSchema).length === 0);\n\n let inputData = this.getProperty(\"data\");\n const inputDataJson = this.getProperty(\"dataJson\");\n\n let dataParseError = \"\";\n\n if (inputDataJson) {\n try {\n inputData = JSON.parse(inputDataJson as string);\n } catch (e) {\n dataParseError = \"Failed to parse inputDataJson string: \" + (e as Error).message;\n Logger.error(\"[MetaUI]\", dataParseError, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: dataParseError, exception: e });\n inputData = {}; // Fallback to empty object to allow schema to render\n }\n } else if (typeof inputData === \"string\") {\n try {\n inputData = JSON.parse(inputData);\n } catch (e) {\n dataParseError = \"Failed to parse inputData string: \" + (e as Error).message;\n Logger.error(\"[MetaUI]\", dataParseError, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: dataParseError, exception: e });\n inputData = {}; // Fallback to empty object to allow schema to render\n }\n }\n\n // The internal payload represents the user's latest un-extracted edits. It must take priority, unless an external data-swap failed.\n const finalData = dataParseError ? inputData : (internalPayload || inputData);\n\n if (!finalData || Object.keys(finalData).length === 0) {\n if (isSchemaEmpty) {\n const msg = \"No payload provided and no explicit schema defined. Cannot infer UI.\";\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg });\n throw new Error(msg);\n }\n }\n\n const schemaToNormalize = isSchemaEmpty ? null : rawSchema;\n const normalizedSchema = SchemaNormalizer.normalize(schemaToNormalize, finalData);\n\n // Cache the parsed/inferred schema so DataSyncDelegate can diff against it later\n this.parsedSchema = normalizedSchema as Record<string, unknown>;\n\n if (normalizedSchema) {\n if (normalizedSchema.uiPolicies && normalizedSchema.uiPolicies.length > 0) {\n this.policyEngine = new PolicyEngine(normalizedSchema.uiPolicies);\n } else {\n this.policyEngine = null;\n }\n\n const schemaErrors = SchemaValidator.validateSchemaStructure(normalizedSchema);\n if (schemaErrors.length > 0) {\n const errorMsg = \"Schema Structural Errors Found:\\n- \" + schemaErrors.join(\"\\n- \");\n // Let's log it out loudly regardless of debug mode, so developers can see why it didn't render\n Logger.error(\"[MetaUI]\", errorMsg, \"GeneratorHost\");\n if (this.getProperty(\"debugMode\")) {\n MessageBox.error(errorMsg, { title: \"MetaUI Schema Error\" });\n return;\n }\n }\n }\n\n const rawDefinitions = this.getProperty(\"schemaDefinitions\") as Record<string, any> || {};\n \n // Extract any definitions embedded inside the root schema definition\n let parsedRawSchema = rawSchema;\n if (typeof rawSchema === \"string\" && rawSchema.trim() !== \"\") {\n try {\n parsedRawSchema = JSON.parse(rawSchema);\n } catch (e) {\n // Ignore parse errors here; SchemaNormalizer will throw loudly later if invalid.\n }\n }\n\n if (parsedRawSchema && typeof parsedRawSchema === \"object\" && (parsedRawSchema as any).definitions) {\n Object.assign(rawDefinitions, (parsedRawSchema as any).definitions);\n this.setProperty(\"schemaDefinitions\", rawDefinitions, true);\n }\n\n let normalizedDefinitions: Record<string, ISchema> | undefined;\n if (Object.keys(rawDefinitions).length > 0) {\n normalizedDefinitions = {};\n for (const key in rawDefinitions) {\n try {\n normalizedDefinitions[key] = SchemaNormalizer.normalize(rawDefinitions[key]) as ISchema;\n } catch (e) {\n Logger.warn(`[MetaUI] Failed to normalize schema definition '${key}'`, \"\", \"GeneratorHost\");\n }\n }\n }\n\n const budget = this.getProperty(\"layoutBudget\") as number;\n\n // Ensure we have a uiLayout synthesized before applying scoring and mutation \n // (crucial for inferred/swagger schemas)\n if (DefaultLayoutGenerator.ensureLayout(normalizedSchema as ISchema)) {\n Logger.warn(\"[MetaUI GeneratorHost] Missing 'uiLayout' array in schema. Synthesized a default layout mapping to prevent a blank render.\");\n }\n\n LayoutScorer.apply(normalizedSchema as ISchema, budget, normalizedDefinitions);\n LayoutMutator.apply(normalizedSchema as ISchema);\n\n const activePluginRegistry = this.getProperty(\"pluginRegistry\") || PluginRegistry.getInstance();\n \n const pathsToLoad = activePluginRegistry.getPathsToLoad(normalizedSchema as ISchema);\n const needsNetworkLoad = Array.from(pathsToLoad).some((path: any) => !sap.ui.require(path));\n\n if (needsNetworkLoad) {\n this.setBusy(true);\n await activePluginRegistry.preloadDependencies(normalizedSchema as ISchema);\n this.setBusy(false);\n }\n\n // Inject defaults into empty payload values\n if (normalizedSchema && finalData) {\n this.dataSyncDelegate.injectSchemaDefaults(normalizedSchema, finalData);\n }\n\n this.activeModelName = \"metaUI_\" + this.getId();\n this.stateManager = new StateManager(finalData, normalizedSchema, this.activeModelName);\n this.stateManager.setUseMessageManager(this.getProperty(\"useMessageManager\") === true);\n this.setModel(this.stateManager.getModel(), this.activeModelName);\n\n if (!this.engine) {\n const isEditable = this.getProperty(\"editable\") !== false;\n const useMessageManager = this.getProperty(\"useMessageManager\") === true;\n const activePluginRegistry = this.getProperty(\"pluginRegistry\") || PluginRegistry.getInstance();\n this.engine = new Engine(isEditable, useMessageManager, activePluginRegistry);\n this.engine.host = this;\n }\n\n this.generatedContent = this.engine.build(\n normalizedSchema,\n this.stateManager.getModel(),\n this.activeModelName,\n this.triggerSubmit.bind(this),\n this.getId(),\n this.onInternalFieldChange.bind(this)\n );\n\n // Defect #15: PBRE Initialization Blackout - Force headless evaluation of initial visibility state\n if (this.policyEngine) {\n this.evaluatePolicies();\n }\n\n let contentContainer = this.generatedContent;\n\n const hasProperties = normalizedSchema && Object.keys(normalizedSchema).length > 0;\n\n if (!hasProperties) {\n const strip = new MessageStrip({\n text: \"Warning: The generated UI is blank. Reason: The schema (or inferred schema) contains no valid properties to render.\",\n type: \"Warning\",\n showIcon: true,\n showCloseButton: true\n });\n strip.addStyleClass(\"sapUiSmallMargin\");\n contentContainer = new VBox({\n items: [strip]\n });\n } else if (dataParseError) {\n const strip = new MessageStrip({\n text: \"Data Error: \" + dataParseError + \". The form has been rendered with a blank dataset.\",\n type: \"Error\",\n showIcon: true,\n showCloseButton: true\n });\n strip.addStyleClass(\"sapUiSmallMargin\");\n \n if (typeof (contentContainer as any).insertItem === \"function\") {\n (contentContainer as any).insertItem(strip, 0);\n } else if (typeof (contentContainer as any).insertContent === \"function\") {\n (contentContainer as any).insertContent(strip, 0);\n } else {\n contentContainer = new VBox({\n items: [strip, this.generatedContent!]\n });\n }\n } else if (this.engine.hasPartialRenderingErrors) {\n const strip = new MessageStrip({\n text: \"Layout partially rendered. Some fields failed to generate due to configuration errors.\",\n type: \"Warning\",\n showIcon: true,\n showCloseButton: true\n });\n strip.addStyleClass(\"sapUiSmallMarginBottom\");\n contentContainer = new VBox({\n items: [strip, this.generatedContent]\n });\n }\n\n this.setAggregation(\"_content\", contentContainer);\n this.validationDelegate.registerObject(this.generatedContent);\n\n const payload = this.stateManager.extractPayload();\n this.dataSyncDelegate.pushToBindings(payload);\n\n // Retroactively expand the dialog if the heuristic determines it needs more space\n this.dialogDelegate.calculateAndApplyOptimalWidth(this.parsedSchema);\n\n } catch (error) {\n this.setBusy(false);\n const msg = \"Fatal crash during layout generation: \" + (error as Error).message;\n Logger.error(\"[MetaUI]\", msg, \"GeneratorHost\");\n this.fireEvent(\"error\", { message: msg, exception: error });\n this.validationDelegate.mountCrashBoundary(error as Error);\n throw error; // Completely eliminate silent error swallowing\n }\n }\n\n\n\n /**\n * Programmatic API. Re-parents the generated content into a dialog and opens it.\n */\n public openInDialog(title: string = \"Form\", submitButtonText: string = \"OK\", cancelButtonText: string = \"Cancel\", dialogWidth: string = \"auto\", parentView?: Control): void {\n const isGenerated = !!this.generatedContent;\n this.dialogDelegate.openInDialog(title, submitButtonText, isGenerated, cancelButtonText, dialogWidth, parentView);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ import { SchemaNormalizer } from "../../core/SchemaNormalizer";
5
5
  import { SchemaValidator } from "../../core/SchemaValidator";
6
6
  import { Engine } from "../../core/Engine";
7
7
  import { StateManager } from "../../core/StateManager";
8
+ import { PolicyEngine } from "../../core/PolicyEngine";
8
9
  import { DataSyncDelegate } from "./delegates/DataSyncDelegate";
9
10
  import { ValidationDelegate } from "./delegates/ValidationDelegate";
10
11
  import { DialogDelegate } from "./delegates/DialogDelegate";
@@ -30,7 +31,16 @@ export default class GeneratorHost extends Control {
30
31
 
31
32
  protected stateManager: StateManager | null = null;
32
33
  protected generatedContent: Control | null = null;
34
+ /** The embedded engine responsible for rendering the UI controls */
33
35
  protected engine: Engine | null = null;
36
+
37
+ /**
38
+ * The Policy-Based Rules Engine.
39
+ * Continuously evaluates declarative cross-field rules and pushes visual/structural mutations down into the plugins.
40
+ */
41
+ protected policyEngine: PolicyEngine | null = null;
42
+
43
+ private policyDebounceTimer: any = null;
34
44
  protected activeModelName: string = "";
35
45
 
36
46
  protected dataSyncDelegate!: DataSyncDelegate;
@@ -203,6 +213,55 @@ export default class GeneratorHost extends Control {
203
213
  payload: payload,
204
214
  isValid: isValid
205
215
  });
216
+
217
+ // Trigger PBRE Live Evaluation
218
+ if (this.policyEngine && fieldKey) {
219
+ if (this.policyDebounceTimer) clearTimeout(this.policyDebounceTimer);
220
+ this.policyDebounceTimer = setTimeout(() => {
221
+ this.evaluatePolicies();
222
+ }, 200);
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Executes the PBRE policy evaluations and orchestrates the delta updates to the UI plugins.
228
+ * Acts as the bridge between the headless PolicyEngine calculations and the physical UI5 plugins.
229
+ *
230
+ * @param changedPath The specific JSON path that triggered the evaluation (used for incremental sweeps).
231
+ * If undefined, a full engine sweep is performed (e.g. during initial render or manual submit).
232
+ */
233
+ private evaluatePolicies(): void {
234
+ if (!this.policyEngine || !this.stateManager || !this.engine) return;
235
+ const payload = this.stateManager.extractPayload();
236
+ const deltas = this.policyEngine.evaluate(payload);
237
+ for (const delta of deltas) {
238
+ const plugin = this.engine.getPluginByPath(delta.target);
239
+ if (plugin) {
240
+ // Systemic Failsafe: State Pruning on Hide/Disable
241
+ if ((delta.property === "visibility" || delta.property === "editable") && delta.value === false) {
242
+ this.stateManager.setProperty(delta.target, undefined);
243
+ }
244
+
245
+ switch (delta.property) {
246
+ case "visibility":
247
+ if (plugin.applyVisibility) plugin.applyVisibility(delta.value);
248
+ break;
249
+ case "validity":
250
+ if (delta.value) {
251
+ this.engine.reportPolicyError(delta.target, null);
252
+ } else {
253
+ this.engine.reportPolicyError(delta.target, delta.errorMessage || "Validation failed by policy");
254
+ }
255
+ break;
256
+ case "required":
257
+ if (plugin.applyRequired) plugin.applyRequired(delta.value);
258
+ break;
259
+ case "editable":
260
+ if (plugin.applyEditable) plugin.applyEditable(delta.value);
261
+ break;
262
+ }
263
+ }
264
+ }
206
265
  }
207
266
 
208
267
  /**
@@ -270,14 +329,22 @@ export default class GeneratorHost extends Control {
270
329
 
271
330
  this.validationDelegate.removeAllMessages();
272
331
 
273
- // Only apply local fallback visual states if the global MessageManager is explicitly disabled
274
- const applyVisualFallback = this.getProperty("useMessageManager") !== true;
275
- const errors = this.engine.validateAll(applyVisualFallback);
332
+ // Run PBRE Full Sweep before validation to ensure visibility states are perfect
333
+ if (this.policyEngine) {
334
+ this.evaluatePolicies();
335
+ }
336
+
337
+ // PBRE Architecture Rule 12: Controls are deliberately isolated from UI5's native
338
+ // MessageManager auto-sync. We must explicitly instruct plugins to paint their
339
+ // visual red borders (ValueState) manually during a full form submission sweep.
340
+ const errors = this.engine.validateAll(true);
276
341
  if (errors.length > 0) {
277
- this.validationDelegate.pushMessage("", "One or more fields failed schema validation. Please review the highlighted fields.");
342
+ if (this.getProperty("useMessageManager") === true) {
343
+ this.validationDelegate.pushMessage("", "One or more fields failed schema validation. Please review the highlighted fields.");
344
+ }
278
345
  for (const err of errors) {
279
346
  if (err.fieldKey && err.errorMessage) {
280
- this.validationDelegate.pushMessage(err.fieldKey, err.errorMessage);
347
+ this.validationDelegate.pushMessage(err.fieldKey, err.errorMessage, err.fieldLabel);
281
348
  }
282
349
  }
283
350
  return false;
@@ -291,8 +358,10 @@ export default class GeneratorHost extends Control {
291
358
  preventDefault: () => { isPrevented = true; },
292
359
  addError: (propertyPath: string, errorMessage: string) => {
293
360
  isPrevented = true;
294
- this.validationDelegate.pushMessage(propertyPath, errorMessage);
295
- if (applyVisualFallback && this.engine) {
361
+ if (this.getProperty("useMessageManager") === true) {
362
+ this.validationDelegate.pushMessage(propertyPath, errorMessage);
363
+ }
364
+ if (this.engine) {
296
365
  const plugin = this.engine.getPluginByPath(propertyPath);
297
366
  if (plugin && typeof plugin.setVisualValidationState === "function") {
298
367
  plugin.setVisualValidationState(false, errorMessage);
@@ -433,34 +502,39 @@ export default class GeneratorHost extends Control {
433
502
  this.stateManager = null;
434
503
  }
435
504
 
436
- const rawSchema = this.getProperty("schemaDefinition");
505
+ let rawSchema = this.getProperty("schemaDefinition");
506
+ if (rawSchema && typeof rawSchema === "object") {
507
+ rawSchema = JSON.parse(JSON.stringify(rawSchema));
508
+ }
437
509
  const isSchemaEmpty = !rawSchema || (typeof rawSchema === "object" && Object.keys(rawSchema).length === 0);
438
510
 
439
511
  let inputData = this.getProperty("data");
440
512
  const inputDataJson = this.getProperty("dataJson");
441
513
 
514
+ let dataParseError = "";
515
+
442
516
  if (inputDataJson) {
443
517
  try {
444
518
  inputData = JSON.parse(inputDataJson as string);
445
519
  } catch (e) {
446
- const msg = "Failed to parse inputDataJson string: " + (e as Error).message;
447
- Logger.error("[MetaUI]", msg, "GeneratorHost");
448
- this.fireEvent("error", { message: msg, exception: e });
449
- throw new Error(msg); // Critical error instead of silent fallback
520
+ dataParseError = "Failed to parse inputDataJson string: " + (e as Error).message;
521
+ Logger.error("[MetaUI]", dataParseError, "GeneratorHost");
522
+ this.fireEvent("error", { message: dataParseError, exception: e });
523
+ inputData = {}; // Fallback to empty object to allow schema to render
450
524
  }
451
525
  } else if (typeof inputData === "string") {
452
526
  try {
453
527
  inputData = JSON.parse(inputData);
454
528
  } catch (e) {
455
- const msg = "Failed to parse inputData string: " + (e as Error).message;
456
- Logger.error("[MetaUI]", msg, "GeneratorHost");
457
- this.fireEvent("error", { message: msg, exception: e });
458
- throw new Error(msg); // Critical error instead of silent fallback
529
+ dataParseError = "Failed to parse inputData string: " + (e as Error).message;
530
+ Logger.error("[MetaUI]", dataParseError, "GeneratorHost");
531
+ this.fireEvent("error", { message: dataParseError, exception: e });
532
+ inputData = {}; // Fallback to empty object to allow schema to render
459
533
  }
460
534
  }
461
535
 
462
- // The internal payload represents the user's latest un-extracted edits. It must take priority.
463
- const finalData = internalPayload || inputData;
536
+ // The internal payload represents the user's latest un-extracted edits. It must take priority, unless an external data-swap failed.
537
+ const finalData = dataParseError ? inputData : (internalPayload || inputData);
464
538
 
465
539
  if (!finalData || Object.keys(finalData).length === 0) {
466
540
  if (isSchemaEmpty) {
@@ -478,6 +552,12 @@ export default class GeneratorHost extends Control {
478
552
  this.parsedSchema = normalizedSchema as Record<string, unknown>;
479
553
 
480
554
  if (normalizedSchema) {
555
+ if (normalizedSchema.uiPolicies && normalizedSchema.uiPolicies.length > 0) {
556
+ this.policyEngine = new PolicyEngine(normalizedSchema.uiPolicies);
557
+ } else {
558
+ this.policyEngine = null;
559
+ }
560
+
481
561
  const schemaErrors = SchemaValidator.validateSchemaStructure(normalizedSchema);
482
562
  if (schemaErrors.length > 0) {
483
563
  const errorMsg = "Schema Structural Errors Found:\n- " + schemaErrors.join("\n- ");
@@ -568,6 +648,11 @@ export default class GeneratorHost extends Control {
568
648
  this.onInternalFieldChange.bind(this)
569
649
  );
570
650
 
651
+ // Defect #15: PBRE Initialization Blackout - Force headless evaluation of initial visibility state
652
+ if (this.policyEngine) {
653
+ this.evaluatePolicies();
654
+ }
655
+
571
656
  let contentContainer = this.generatedContent;
572
657
 
573
658
  const hasProperties = normalizedSchema && Object.keys(normalizedSchema).length > 0;
@@ -577,12 +662,30 @@ export default class GeneratorHost extends Control {
577
662
  text: "Warning: The generated UI is blank. Reason: The schema (or inferred schema) contains no valid properties to render.",
578
663
  type: "Warning",
579
664
  showIcon: true,
580
- showCloseButton: false
665
+ showCloseButton: true
581
666
  });
582
- strip.addStyleClass("sapUiSmallMarginBottom");
667
+ strip.addStyleClass("sapUiSmallMargin");
583
668
  contentContainer = new VBox({
584
- items: [strip, this.generatedContent]
669
+ items: [strip]
585
670
  });
671
+ } else if (dataParseError) {
672
+ const strip = new MessageStrip({
673
+ text: "Data Error: " + dataParseError + ". The form has been rendered with a blank dataset.",
674
+ type: "Error",
675
+ showIcon: true,
676
+ showCloseButton: true
677
+ });
678
+ strip.addStyleClass("sapUiSmallMargin");
679
+
680
+ if (typeof (contentContainer as any).insertItem === "function") {
681
+ (contentContainer as any).insertItem(strip, 0);
682
+ } else if (typeof (contentContainer as any).insertContent === "function") {
683
+ (contentContainer as any).insertContent(strip, 0);
684
+ } else {
685
+ contentContainer = new VBox({
686
+ items: [strip, this.generatedContent!]
687
+ });
688
+ }
586
689
  } else if (this.engine.hasPartialRenderingErrors) {
587
690
  const strip = new MessageStrip({
588
691
  text: "Layout partially rendered. Some fields failed to generate due to configuration errors.",
@@ -603,8 +706,7 @@ export default class GeneratorHost extends Control {
603
706
  this.dataSyncDelegate.pushToBindings(payload);
604
707
 
605
708
  // Retroactively expand the dialog if the heuristic determines it needs more space
606
- const optimalWidth = this.calculateOptimalDialogWidth(this.parsedSchema);
607
- this.dialogDelegate.updateDialogWidthDynamically(optimalWidth);
709
+ this.dialogDelegate.calculateAndApplyOptimalWidth(this.parsedSchema);
608
710
 
609
711
  } catch (error) {
610
712
  this.setBusy(false);
@@ -616,54 +718,13 @@ export default class GeneratorHost extends Control {
616
718
  }
617
719
  }
618
720
 
619
- /**
620
- * Helper to heuristically calculate optimal dialog width based on schema content.
621
- */
622
- private calculateOptimalDialogWidth(schema: Record<string, any> | null): string {
623
- if (!schema) return "auto";
624
- let requiresWideDialog = false;
625
-
626
- const scanProperties = (props: Record<string, any>) => {
627
- if (requiresWideDialog) return;
628
- for (const key in props) {
629
- const prop = props[key];
630
- if (prop.type === "array") {
631
- requiresWideDialog = true;
632
- return;
633
- }
634
- if (prop.ui?.fullWidth === true) {
635
- requiresWideDialog = true;
636
- return;
637
- }
638
- if (prop.ui?.widget === "codeEditor" || prop.ui?.widget === "textArea" || prop.ui?.widget === "richText") {
639
- requiresWideDialog = true;
640
- return;
641
- }
642
- if (prop.properties) scanProperties(prop.properties);
643
- if (prop.items && prop.items.properties) scanProperties(prop.items.properties);
644
- }
645
- };
646
721
 
647
- if (schema.type === "array") return "80vw";
648
- if (schema.properties) {
649
- scanProperties(schema.properties);
650
- }
651
-
652
- return requiresWideDialog ? "80vw" : "auto";
653
- }
654
722
 
655
723
  /**
656
724
  * Programmatic API. Re-parents the generated content into a dialog and opens it.
657
725
  */
658
726
  public openInDialog(title: string = "Form", submitButtonText: string = "OK", cancelButtonText: string = "Cancel", dialogWidth: string = "auto", parentView?: Control): void {
659
727
  const isGenerated = !!this.generatedContent;
660
-
661
- // If we already have the schema parsed, we can calculate it instantly to prevent flicker
662
- let finalWidth = dialogWidth;
663
- if (finalWidth === "auto" && this.parsedSchema) {
664
- finalWidth = this.calculateOptimalDialogWidth(this.parsedSchema);
665
- }
666
-
667
- this.dialogDelegate.openInDialog(title, submitButtonText, isGenerated, cancelButtonText, finalWidth, parentView);
728
+ this.dialogDelegate.openInDialog(title, submitButtonText, isGenerated, cancelButtonText, dialogWidth, parentView);
668
729
  }
669
730
  }