@siliconst/metaui 1.4.17 → 1.4.20

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 (395) hide show
  1. package/package.json +1 -1
  2. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig-dbg.js +47 -0
  3. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig-dbg.js.map +1 -0
  4. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.d.ts +28 -0
  5. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.d.ts.map +1 -0
  6. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.js +2 -0
  7. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.js.map +1 -0
  8. package/src/nz/co/siliconst/ui5/metaui/ai/AIConfig.ts +39 -0
  9. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +83 -0
  10. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -0
  11. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +30 -0
  12. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -0
  13. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +2 -0
  14. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -0
  15. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +74 -0
  16. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy-dbg.js +61 -0
  17. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy-dbg.js.map +1 -0
  18. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.d.ts +13 -0
  19. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.d.ts.map +1 -0
  20. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.js +2 -0
  21. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.js.map +1 -0
  22. package/src/nz/co/siliconst/ui5/metaui/ai/MockLLMProxy.ts +59 -0
  23. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js +50 -0
  24. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -0
  25. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.d.ts +12 -0
  26. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.d.ts.map +1 -0
  27. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js +2 -0
  28. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -0
  29. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +44 -0
  30. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +79 -13
  31. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  32. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +12 -0
  33. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  34. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  35. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  36. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +77 -15
  37. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +31 -1
  38. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  39. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +15 -0
  40. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
  41. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  42. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  43. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +26 -1
  44. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +35 -0
  45. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
  46. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +8 -0
  47. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
  48. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
  49. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +37 -0
  51. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +11 -32
  52. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
  53. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
  54. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
  55. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
  56. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +9 -13
  57. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +6 -2
  58. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  59. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +2 -0
  60. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  62. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  63. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +12 -7
  64. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +3 -0
  65. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  66. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  68. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  69. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +3 -0
  70. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js +3 -3
  71. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry-dbg.js.map +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.d.ts.map +1 -1
  74. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js +1 -1
  75. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/core/SchemaBuilderRegistry.ts +3 -3
  77. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +4 -4
  78. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +2 -2
  80. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  81. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  83. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +10 -10
  84. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +1 -1
  87. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
  88. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  90. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +1 -1
  91. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  92. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +1 -1
  93. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  94. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +19 -3
  95. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  96. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +22 -3
  97. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin-dbg.js.map +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts +3 -2
  99. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.d.ts.map +1 -1
  100. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchemaBuilderPlugin.ts +3 -2
  101. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +18 -2
  102. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  103. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  104. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +19 -2
  107. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +1 -1
  108. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +62 -43
  110. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  111. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +4 -0
  112. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
  113. package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
  114. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
  115. package/src/nz/co/siliconst/ui5/metaui/library.ts +6 -0
  116. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder-dbg.js +93 -0
  117. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder-dbg.js.map +1 -0
  118. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.d.ts +52 -0
  119. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.d.ts.map +1 -0
  120. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.js +2 -0
  121. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.js.map +1 -0
  122. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiBuilder.ts +88 -0
  123. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +47 -0
  124. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -0
  125. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts +25 -0
  126. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -0
  127. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +2 -0
  128. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -0
  129. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +43 -0
  130. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js +68 -0
  131. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -0
  132. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts +21 -0
  133. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.d.ts.map +1 -0
  134. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js +2 -0
  135. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -0
  136. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +61 -0
  137. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper-dbg.js +45 -0
  138. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper-dbg.js.map +1 -0
  139. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.d.ts +25 -0
  140. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.d.ts.map +1 -0
  141. package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerTypeMapper.js → openapi/OpenApiTypeMapper.js} +2 -2
  142. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.js.map +1 -0
  143. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiTypeMapper.ts +36 -0
  144. package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerUIMapper-dbg.js → openapi/OpenApiUIMapper-dbg.js} +23 -14
  145. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -0
  146. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +34 -0
  147. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -0
  148. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +2 -0
  149. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -0
  150. package/src/nz/co/siliconst/ui5/metaui/{swagger/SwaggerUIMapper.ts → openapi/OpenApiUIMapper.ts} +22 -13
  151. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js +50 -0
  152. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js.map +1 -0
  153. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.d.ts +25 -0
  154. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.d.ts.map +1 -0
  155. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js +2 -0
  156. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js.map +1 -0
  157. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.ts +43 -0
  158. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin-dbg.js +2 -0
  159. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin-dbg.js.map +1 -0
  160. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.d.ts +23 -0
  161. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.d.ts.map +1 -0
  162. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.js +2 -0
  163. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.js.map +1 -0
  164. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/interfaces/IHeuristicPlugin.ts +21 -0
  165. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +117 -0
  166. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -0
  167. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts +47 -0
  168. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -0
  169. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +2 -0
  170. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -0
  171. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +113 -0
  172. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin-dbg.js +2 -0
  173. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin-dbg.js.map +1 -0
  174. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.d.ts +26 -0
  175. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.d.ts.map +1 -0
  176. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.js +2 -0
  177. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.js.map +1 -0
  178. package/src/nz/co/siliconst/ui5/metaui/openapi/interfaces/IOpenApiParserPlugin.ts +25 -0
  179. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +106 -0
  180. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -0
  181. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +27 -0
  182. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -0
  183. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +2 -0
  184. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -0
  185. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +104 -0
  186. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +107 -0
  187. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -0
  188. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +27 -0
  189. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -0
  190. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +2 -0
  191. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -0
  192. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +105 -0
  193. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +347 -0
  194. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -0
  195. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +110 -0
  196. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -0
  197. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +2 -0
  198. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -0
  199. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +377 -0
  200. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +11 -0
  201. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
  203. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
  204. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  205. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +13 -0
  206. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +2 -2
  207. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  209. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +2 -2
  211. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +31 -7
  212. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  213. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +17 -1
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +33 -8
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +3 -4
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +3 -4
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +2 -2
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +2 -2
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +1 -1
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +1 -1
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +4 -8
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +4 -8
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +4 -8
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +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 +4 -8
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +217 -0
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -0
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts +26 -0
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -0
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +2 -0
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -0
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +249 -0
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +3 -4
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +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 +3 -4
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +3 -3
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +3 -3
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +3 -4
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +4 -5
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +1 -1
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js +1 -1
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +1 -1
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +115 -49
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +17 -2
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +114 -54
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +3 -4
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +3 -4
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +3 -2
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +3 -2
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +2 -2
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +2 -2
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +194 -0
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -0
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +25 -0
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -0
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +2 -0
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -0
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +192 -0
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +2 -2
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +2 -2
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +2 -2
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +2 -2
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +2 -2
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +2 -2
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +2 -2
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +2 -2
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +2 -2
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +2 -2
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +3 -4
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +3 -4
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +2 -2
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +2 -2
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +4 -8
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +4 -8
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +3 -4
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +3 -4
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +2 -2
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js +1 -1
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +2 -2
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +2 -2
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js +1 -1
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +2 -2
  364. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor-dbg.js +146 -0
  365. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor-dbg.js.map +1 -0
  366. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.d.ts +27 -0
  367. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.d.ts.map +1 -0
  368. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.js +2 -0
  369. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.js.map +1 -0
  370. package/src/nz/co/siliconst/ui5/metaui/swagger/OpenApiExtractor.ts +160 -0
  371. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js +0 -226
  372. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder-dbg.js.map +0 -1
  373. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts +0 -63
  374. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.d.ts.map +0 -1
  375. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js +0 -2
  376. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.js.map +0 -1
  377. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerBuilder.ts +0 -233
  378. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js +0 -43
  379. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver-dbg.js.map +0 -1
  380. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts +0 -15
  381. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.d.ts.map +0 -1
  382. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js +0 -2
  383. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.js.map +0 -1
  384. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerRefResolver.ts +0 -37
  385. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js +0 -37
  386. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper-dbg.js.map +0 -1
  387. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts +0 -18
  388. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.d.ts.map +0 -1
  389. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.js.map +0 -1
  390. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerTypeMapper.ts +0 -28
  391. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper-dbg.js.map +0 -1
  392. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts +0 -27
  393. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.d.ts.map +0 -1
  394. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js +0 -2
  395. package/src/nz/co/siliconst/ui5/metaui/swagger/SwaggerUIMapper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicHost.js","names":["GeneratorHost","_interopRequireDefault","__GeneratorHost","Logger","___utils_Logger","ODataDelegate","___host_delegates_ODataDelegate","SchemaBuilderRegistry","___core_SchemaBuilderRegistry","DynamicHost","Control","extend","constructor","prototype","apply","this","arguments","odataDelegate","_innerHost","_initializedInner","renderer","apiVersion","render","rm","control","openStart","style","openEnd","content","getAggregation","renderControl","close","metadata","properties","schemaDefinition","type","defaultValue","data","bindable","dataJson","liveUpdate","isValid","useMessageManager","modelName","debugMode","editable","aggregations","_content","multiple","visibility","events","beforeSubmit","parameters","payload","addError","preventDefault","submit","payloadJson","cancel","fieldChange","fieldPath","value","validationStateChanged","validationError","message","validationSuccess","error","exception","initODataDelegate","_initODataDelegate","getBindingInfo","dataBinding","path","oContext","getBindingContext","debug","getPath","requestObject","syncToEngine","Object","keys","setBindingContext","_setBindingContext","sModelName","Control.prototype.setBindingContext.call","bindElement","_bindElement","vPath","mParameters","Control.prototype.bindElement.call","model","undefined","oBinding","getElementBinding","attachChange","onBeforeRendering","_onBeforeRendering","schemaRaw","getProperty","startsWith","_fetchingSchema","sap","ui","require","BusyIndicator","MessageToast","show","fetch","then","res","ok","Error","status","json","plugin","getBuilderFor","finalSchema","build","Control.prototype.setProperty.call","hide","invalidate","catch","err","warn","schema","trim","JSON","parse","e","hasSchema","length","hasData","props","getMetadata","getProperties","propName","val","Control.prototype.getProperty.call","setProperty","setAggregation","getEvents","eventName","attachEvent","oEvent","params","getParameters","isLive","str","stringify","handleFieldChange","fireEvent","_setProperty","propertyName","suppressInvalidate","openInDialog","_openInDialog","title","submitButtonText","cancelButtonText","dialogWidth","parentView","triggerSubmit","_triggerSubmit","addCustomError","_addCustomError","clearCustomError","_clearCustomError","_getProperty"],"sources":["DynamicHost.ts"],"sourcesContent":["import Control from \"sap/ui/core/Control\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport GeneratorHost from \"./host/GeneratorHost\";\nimport { Logger } from \"../utils/Logger\";\nimport { ODataDelegate } from \"./host/delegates/ODataDelegate\";\nimport ODataV4Context from \"sap/ui/model/odata/v4/Context\";\nimport { SchemaBuilderRegistry } from \"../core/SchemaBuilderRegistry\";\n\n/**\n * A transparent wrapper control (Facade) that automatically chooses between Explicit Schema Mode \n * and Inference Mode based on the presence of a 'schemaDefinition'.\n * \n * This maintains total architectural separation of the modes without forcing developers to \n * use different XML tags.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nexport default class DynamicHost extends Control {\n private odataDelegate: ODataDelegate | null = null;\n\n static readonly metadata = {\n properties: {\n schemaDefinition: { type: \"any\", 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 },\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: DynamicHost) {\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 * Internal reference to the generated inner host instance.\n * @private\n */\n private _innerHost: GeneratorHost | null = null;\n\n /**\n * Flag indicating if the inner host has been initialized.\n * @private\n */\n private _initializedInner: boolean = false;\n\n /**\n * Initializes the OData Delegate if an OData context is detected.\n * This allows DynamicHost to seamlessly synchronize metadata and properties from an OData model.\n * @private\n */\n private initODataDelegate(): void {\n if (!this.odataDelegate) {\n // Guard: If the user explicitly bound dataJson, do not steal the context.\n if (this.getBindingInfo(\"dataJson\")) {\n return;\n }\n\n // Guard: If the user explicitly bound 'data' to a specific property path, do not steal the context.\n const dataBinding = this.getBindingInfo(\"data\") as any;\n if (dataBinding && dataBinding.path && dataBinding.path !== \"\") {\n return;\n }\n\n const oContext = this.getBindingContext(\"odata\") || this.getBindingContext();\n if (oContext) {\n Logger.debug(\"[MetaUI DynamicHost]\", `Context found for delegate initialization: ${oContext.getPath()}`, \"DynamicHost\");\n if (oContext && (oContext as ODataV4Context).requestObject && typeof (oContext as ODataV4Context).requestObject === \"function\") {\n Logger.debug(\"[MetaUI DynamicHost]\", `Context supports requestObject/getObject. Instantiating ODataDelegate.`, \"DynamicHost\");\n this.odataDelegate = new ODataDelegate(this, oContext as ODataV4Context);\n this.odataDelegate.syncToEngine();\n } else {\n Logger.debug(\"[MetaUI DynamicHost]\", `Context does NOT support requestObject/getObject! Keys: ${Object.keys(oContext)}`, \"DynamicHost\");\n }\n }\n }\n }\n\n /**\n * Standard UI5 method override.\n * Sets the binding context for the control and attempts to initialize the OData delegate\n * if the context points to an OData model.\n * \n * @param {sap.ui.model.Context | null | undefined} oContext The binding context object\n * @param {string} [sModelName] Optional model name\n * @returns {this} The control instance for chaining\n */\n public setBindingContext(oContext: sap.ui.model.Context | null | undefined, sModelName?: string): this {\n super.setBindingContext(oContext, sModelName);\n this.initODataDelegate();\n return this;\n }\n\n /**\n * Standard UI5 method override.\n * Binds the element to the given path and attaches a change listener to re-evaluate\n * the OData delegate when the element binding resolves.\n * \n * @param {string | Record<string, unknown>} vPath The binding path or configuration object\n * @param {object} [mParameters] Optional mapping parameters\n * @returns {this} Reference to this instance for chaining\n */\n public bindElement(vPath: string | Record<string, unknown>, mParameters?: object): this {\n super.bindElement(vPath, mParameters);\n const sModelName = typeof vPath === \"object\" ? vPath.model : undefined;\n const oBinding = this.getElementBinding(sModelName);\n if (oBinding) {\n oBinding.attachChange(() => {\n this.initODataDelegate();\n });\n }\n return this;\n }\n\n /**\n * Standard UI5 Lifecycle Hook.\n * Evaluates the initial properties and spawns the GeneratorHost.\n * It handles the complex lifecycle task of copying all bindings, raw properties, and event listeners \n * down to the inner host perfectly transparently.\n */\n public onBeforeRendering(): void {\n Logger.debug(\"[MetaUI DynamicHost]\", `onBeforeRendering called. _initializedInner: ${this._initializedInner}`, \"DynamicHost\");\n\n this.initODataDelegate();\n\n if (!this._initializedInner) {\n let schemaRaw = this.getProperty(\"schemaDefinition\");\n\n // 1. URL Detection & Fetching\n if (typeof schemaRaw === \"string\" && (schemaRaw.startsWith(\"http://\") || schemaRaw.startsWith(\"https://\"))) {\n if ((this as any)._fetchingSchema) return; // Prevent re-entry\n (this as any)._fetchingSchema = true;\n \n sap.ui.require([\"sap/ui/core/BusyIndicator\", \"sap/m/MessageToast\"], (BusyIndicator: any, MessageToast: any) => {\n BusyIndicator.show(0);\n fetch(schemaRaw as string)\n .then(res => {\n if (!res.ok) throw new Error(\"HTTP \" + res.status);\n return res.json();\n })\n .then(json => {\n const plugin = SchemaBuilderRegistry.getBuilderFor(json);\n const finalSchema = plugin ? plugin.build(json) : json;\n super.setProperty(\"schemaDefinition\", finalSchema, true);\n (this as any)._fetchingSchema = false;\n BusyIndicator.hide();\n this.invalidate(); // Force re-render with resolved schema\n })\n .catch(err => {\n Logger.warn(\"[MetaUI DynamicHost]\", \"Failed to fetch remote schema: \" + err, \"DynamicHost\");\n if (MessageToast) MessageToast.show(\"Failed to fetch remote schema\");\n super.setProperty(\"schemaDefinition\", null, true); // Fallback to full inference\n (this as any)._fetchingSchema = false;\n BusyIndicator.hide();\n this.invalidate();\n });\n });\n return; // Abort this render cycle until fetch completes\n }\n\n // 2. Local Plugin Detection (Stringified JSON or Raw Object)\n let schema = schemaRaw;\n if (schema && typeof schema === \"string\" && (schema as string).trim().startsWith(\"{\")) {\n try {\n schema = JSON.parse(schema);\n } catch (e) {\n // Ignore, let standard validation catch it\n }\n }\n\n if (schema && typeof schema === \"object\") {\n const plugin = SchemaBuilderRegistry.getBuilderFor(schema);\n if (plugin) {\n schema = plugin.build(schema);\n // Silently update the wrapper property so the inner host gets the final parsed MetaUI format\n super.setProperty(\"schemaDefinition\", schema, true);\n }\n }\n\n const dataJson = this.getProperty(\"dataJson\");\n const data = this.getProperty(\"data\");\n\n let hasSchema = !!schema;\n if (hasSchema && typeof schema === \"object\" && Object.keys(schema).length === 0) {\n hasSchema = false; // Treat empty object as no schema\n }\n\n const hasData = !!dataJson || !!data;\n\n Logger.debug(\"[MetaUI DynamicHost]\", `Evaluating boot. hasSchema: ${hasSchema}, hasData: ${hasData}`, \"DynamicHost\");\n\n // Only boot if we have either a schema or some data to infer from\n if (hasSchema || hasData) {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI DynamicHost]\", `Booting inner host. hasSchema: ${hasSchema}, hasData: ${hasData}`, \"DynamicHost\");\n }\n // The architectural Facade router logic:\n // We've simplified this! We no longer use HostFactory or separate subclasses.\n // GeneratorHost is fully capable of inferring the schema if none is provided.\n this._innerHost = new GeneratorHost();\n\n // 1. Forward all static values to the spawned host BEFORE mounting.\n // Since we no longer use bindProperty, it's perfectly safe to set raw properties before mounting.\n const props = this.getMetadata().getProperties();\n for (const propName in props) {\n const val = super.getProperty(propName);\n if (val !== null && val !== undefined) {\n this._innerHost.setProperty(propName, val);\n }\n }\n\n // 2. Mount so it inherits models and triggers lifecycle.\n this.setAggregation(\"_content\", this._innerHost);\n\n // 3. Forward all event subscriptions.\n // By proxying the events upwards, the developer can subscribe to `<meta:DynamicHost submit=\"...\">` \n // and perfectly receive the inner host's submission event.\n const events = this.getMetadata().getEvents();\n for (const eventName in events) {\n this._innerHost.attachEvent(eventName, (oEvent: sap.ui.base.Event) => {\n // Natively push updated payload out to any bound Fiori Element properties.\n // Using super.setProperty prevents an infinite loop back down to _innerHost.\n if (eventName === \"submit\" || eventName === \"fieldChange\") {\n const params = oEvent.getParameters();\n if (params.payload) {\n const isLive = this.getProperty(\"liveUpdate\") === true;\n if (eventName === \"submit\" || isLive) {\n super.setProperty(\"data\", params.payload, true);\n\n const str = params.payloadJson || JSON.stringify(params.payload, null, 2);\n super.setProperty(\"dataJson\", str, true);\n }\n }\n if (eventName === \"fieldChange\" && this.odataDelegate) {\n this.odataDelegate.handleFieldChange(params.fieldPath, params.value);\n }\n }\n this.fireEvent(eventName, oEvent.getParameters());\n });\n }\n\n this._initializedInner = true;\n }\n }\n }\n\n /**\n * Overrides standard UI5 setProperty to act as a transparent proxy.\n * When a property is updated on the wrapper (either programmatically or via a binding update),\n * it instantly mirrors that value down to the inner instantiated host.\n */\n public setProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {\n if (propertyName === \"data\" || propertyName === \"dataJson\" || propertyName === \"schemaDefinition\") {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI DynamicHost]\", `Wrapper received setProperty: ${propertyName}`, \"DynamicHost\");\n }\n }\n super.setProperty(propertyName, value, suppressInvalidate);\n if (this._innerHost) {\n this._innerHost.setProperty(propertyName, value, suppressInvalidate);\n } else if (propertyName === \"data\" || propertyName === \"dataJson\" || propertyName === \"schemaDefinition\") {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI DynamicHost]\", `_innerHost not yet initialized when ${propertyName} was set. Booting will happen on next render.`, \"DynamicHost\");\n }\n }\n return this;\n }\n\n\n\n\n\n /**\n * Programmatic API support. Routes dialog commands down to the spawned inner host.\n * If the inner host has not booted yet, it forces initialization immediately.\n * \n * @param {string} [title=\"Form\"] The title of the dialog\n * @param {string} [submitButtonText=\"OK\"] The text for the primary action button\n * @param {string} [cancelButtonText=\"Cancel\"] The text for the cancel button\n * @param {string} [dialogWidth=\"auto\"] The width of the dialog\n * @param {sap.ui.core.Control} [parentView] The parent view to attach the dialog to for model inheritance.\n */\n public openInDialog(title?: string, submitButtonText?: string, cancelButtonText?: string, dialogWidth?: string, parentView?: Control): void {\n if (!this._innerHost) {\n this.onBeforeRendering(); // Force init if they bypassed UI5 rendering\n }\n this._innerHost?.openInDialog(title, submitButtonText, cancelButtonText, dialogWidth, parentView);\n }\n\n /**\n * Proxies submission triggering down to the instantiated generator host.\n * Evaluates the internal Engine validation suite and returns true if structurally sound.\n * \n * @returns {boolean} True if the internal payload passes schema validation, false otherwise.\n */\n public triggerSubmit(): boolean {\n if (!this._innerHost) {\n return false;\n }\n return this._innerHost.triggerSubmit();\n }\n\n /**\n * Injects a custom error message onto a specific field.\n * Useful for injecting custom backend validation errors.\n * \n * @param {string} fieldPath The schema key path to target.\n * @param {string} message The custom error message to display.\n */\n public addCustomError(fieldPath: string, message: string): void {\n if (this._innerHost && typeof (this._innerHost as any).addCustomError === \"function\") {\n (this._innerHost as any).addCustomError(fieldPath, message);\n }\n }\n\n /**\n * Clears a custom error message from a specific field.\n * \n * @param {string} fieldPath The schema key path to target.\n */\n public clearCustomError(fieldPath: string): void {\n if (this._innerHost && typeof (this._innerHost as any).clearCustomError === \"function\") {\n (this._innerHost as any).clearCustomError(fieldPath);\n }\n }\n\n /**\n * Overrides standard UI5 getProperty to transparently pull extracted data from the inner host.\n * Ensures that querying the DynamicHost facade for `data` always yields the freshest payload.\n * \n * @param {string} propertyName The name of the property to retrieve\n * @returns {unknown} The property value\n */\n public getProperty(propertyName: string): unknown {\n if (propertyName === \"outputData\") {\n propertyName = \"data\"; // Forward deprecated outputData to data\n }\n if (this._innerHost && (propertyName === \"data\" || propertyName === \"dataJson\")) {\n return this._innerHost.getProperty(propertyName);\n }\n return super.getProperty(propertyName);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DynamicHost.js","names":["GeneratorHost","_interopRequireDefault","__GeneratorHost","Logger","___utils_Logger","ODataDelegate","___host_delegates_ODataDelegate","SchemaBuilderRegistry","___core_SchemaBuilderRegistry","DynamicHost","Control","extend","constructor","prototype","apply","this","arguments","odataDelegate","_innerHost","_initializedInner","renderer","apiVersion","render","rm","control","openStart","style","openEnd","content","getAggregation","renderControl","close","metadata","properties","schemaDefinition","type","defaultValue","schemaDefinitions","schemaTarget","data","bindable","dataJson","liveUpdate","isValid","useMessageManager","modelName","debugMode","editable","inferenceStrategy","aggregations","_content","multiple","visibility","events","beforeSubmit","parameters","payload","addError","preventDefault","submit","payloadJson","cancel","fieldChange","fieldPath","value","validationStateChanged","validationError","message","validationSuccess","error","exception","initODataDelegate","_initODataDelegate","getBindingInfo","dataBinding","path","oContext","getBindingContext","debug","getPath","requestObject","syncToEngine","Object","keys","setBindingContext","_setBindingContext","sModelName","Control.prototype.setBindingContext.call","bindElement","_bindElement","vPath","mParameters","Control.prototype.bindElement.call","model","undefined","oBinding","getElementBinding","attachChange","onBeforeRendering","_onBeforeRendering","schemaRaw","getProperty","startsWith","self","_fetchingSchema","sap","ui","require","BusyIndicator","MessageToast","show","fetch","then","res","ok","Error","status","json","plugin","getBuilderFor","finalSchema","build","Control.prototype.setProperty.call","definitions","hide","invalidate","catch","err","warn","schema","trim","JSON","parse","e","hasSchema","length","hasData","rawDataObj","trace","AIConfig","proxy","getProxy","generateSchema","generatedSchema","props","getMetadata","getProperties","propName","val","Control.prototype.getProperty.call","setProperty","setAggregation","getEvents","eventName","attachEvent","oEvent","params","getParameters","isLive","str","stringify","handleFieldChange","fireEvent","_setProperty","propertyName","suppressInvalidate","openInDialog","_openInDialog","title","submitButtonText","cancelButtonText","dialogWidth","parentView","triggerSubmit","_triggerSubmit","addCustomError","_addCustomError","inner","clearCustomError","_clearCustomError","_getProperty"],"sources":["DynamicHost.ts"],"sourcesContent":["import Control from \"sap/ui/core/Control\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport GeneratorHost from \"./host/GeneratorHost\";\nimport { Logger } from \"../utils/Logger\";\nimport { ODataDelegate } from \"./host/delegates/ODataDelegate\";\nimport ODataV4Context from \"sap/ui/model/odata/v4/Context\";\nimport { SchemaBuilderRegistry } from \"../core/SchemaBuilderRegistry\";\n\n/**\n * A transparent wrapper control (Facade) that automatically chooses between Explicit Schema Mode \n * and Inference Mode based on the presence of a 'schemaDefinition'.\n * \n * This maintains total architectural separation of the modes without forcing developers to \n * use different XML tags.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nexport default class DynamicHost extends Control {\n private odataDelegate: ODataDelegate | null = null;\n\n static readonly metadata = {\n properties: {\n schemaDefinition: { type: \"any\", defaultValue: null },\n schemaDefinitions: { type: \"object\", defaultValue: null },\n schemaTarget: { type: \"string\", 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 inferenceStrategy: { type: \"string\", defaultValue: \"RuleBased\" }\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: DynamicHost) {\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 * Internal reference to the generated inner host instance.\n * @private\n */\n private _innerHost: GeneratorHost | null = null;\n\n /**\n * Flag indicating if the inner host has been initialized.\n * @private\n */\n private _initializedInner: boolean = false;\n\n /**\n * Initializes the OData Delegate if an OData context is detected.\n * This allows DynamicHost to seamlessly synchronize metadata and properties from an OData model.\n * @private\n */\n private initODataDelegate(): void {\n if (!this.odataDelegate) {\n // Guard: If the user explicitly bound dataJson, do not steal the context.\n if (this.getBindingInfo(\"dataJson\")) {\n return;\n }\n\n // Guard: If the user explicitly bound 'data' to a specific property path, do not steal the context.\n const dataBinding = this.getBindingInfo(\"data\") as any;\n if (dataBinding && dataBinding.path && dataBinding.path !== \"\") {\n return;\n }\n\n const oContext = this.getBindingContext(\"odata\") || this.getBindingContext();\n if (oContext) {\n Logger.debug(\"[MetaUI DynamicHost]\", `Context found for delegate initialization: ${oContext.getPath()}`, \"DynamicHost\");\n if (oContext && (oContext as ODataV4Context).requestObject && typeof (oContext as ODataV4Context).requestObject === \"function\") {\n Logger.debug(\"[MetaUI DynamicHost]\", `Context supports requestObject/getObject. Instantiating ODataDelegate.`, \"DynamicHost\");\n this.odataDelegate = new ODataDelegate(this, oContext as ODataV4Context);\n this.odataDelegate.syncToEngine();\n } else {\n Logger.debug(\"[MetaUI DynamicHost]\", `Context does NOT support requestObject/getObject! Keys: ${Object.keys(oContext)}`, \"DynamicHost\");\n }\n }\n }\n }\n\n /**\n * Standard UI5 method override.\n * Sets the binding context for the control and attempts to initialize the OData delegate\n * if the context points to an OData model.\n * \n * @param {sap.ui.model.Context | null | undefined} oContext The binding context object\n * @param {string} [sModelName] Optional model name\n * @returns {this} The control instance for chaining\n */\n public setBindingContext(oContext: sap.ui.model.Context | null | undefined, sModelName?: string): this {\n super.setBindingContext(oContext, sModelName);\n this.initODataDelegate();\n return this;\n }\n\n /**\n * Standard UI5 method override.\n * Binds the element to the given path and attaches a change listener to re-evaluate\n * the OData delegate when the element binding resolves.\n * \n * @param {string | Record<string, unknown>} vPath The binding path or configuration object\n * @param {object} [mParameters] Optional mapping parameters\n * @returns {this} Reference to this instance for chaining\n */\n public bindElement(vPath: string | Record<string, unknown>, mParameters?: object): this {\n super.bindElement(vPath, mParameters);\n const sModelName = typeof vPath === \"object\" ? vPath.model : undefined;\n const oBinding = this.getElementBinding(sModelName);\n if (oBinding) {\n oBinding.attachChange(() => {\n this.initODataDelegate();\n });\n }\n return this;\n }\n\n /**\n * Standard UI5 Lifecycle Hook.\n * Evaluates the initial properties and spawns the GeneratorHost.\n * It handles the complex lifecycle task of copying all bindings, raw properties, and event listeners \n * down to the inner host perfectly transparently.\n */\n public onBeforeRendering(): void {\n Logger.debug(\"[MetaUI DynamicHost]\", `onBeforeRendering called. _initializedInner: ${this._initializedInner}`, \"DynamicHost\");\n\n this.initODataDelegate();\n\n if (!this._initializedInner) {\n let schemaRaw = this.getProperty(\"schemaDefinition\");\n\n // 1. URL Detection & Fetching\n if (typeof schemaRaw === \"string\" && (schemaRaw.startsWith(\"http://\") || schemaRaw.startsWith(\"https://\"))) {\n const self = this as unknown as { _fetchingSchema?: boolean };\n if (self._fetchingSchema) return; // Prevent re-entry\n self._fetchingSchema = true;\n \n sap.ui.require([\"sap/ui/core/BusyIndicator\", \"sap/m/MessageToast\"], (BusyIndicator: { show: (n: number) => void, hide: () => void }, MessageToast: { show: (s: string) => void }) => {\n BusyIndicator.show(0);\n fetch(schemaRaw as string)\n .then(res => {\n if (!res.ok) throw new Error(\"HTTP \" + res.status);\n return res.json();\n })\n .then(json => {\n const plugin = SchemaBuilderRegistry.getBuilderFor(json);\n const finalSchema = plugin ? plugin.build(json, this.getProperty(\"schemaTarget\")) : json;\n super.setProperty(\"schemaDefinition\", finalSchema, true);\n if (finalSchema.definitions) {\n super.setProperty(\"schemaDefinitions\", finalSchema.definitions, true);\n }\n const self = this as unknown as { _fetchingSchema?: boolean };\n self._fetchingSchema = false;\n BusyIndicator.hide();\n this.invalidate(); // Force re-render with resolved schema\n })\n .catch(err => {\n const self = this as unknown as { _fetchingSchema?: boolean };\n Logger.warn(\"[MetaUI DynamicHost]\", \"Failed to fetch remote schema: \" + err, \"DynamicHost\");\n if (MessageToast) MessageToast.show(\"Failed to fetch remote schema\");\n super.setProperty(\"schemaDefinition\", null, true); // Fallback to full inference\n self._fetchingSchema = false;\n BusyIndicator.hide();\n this.invalidate();\n });\n });\n return; // Abort this render cycle until fetch completes\n }\n\n // 2. Local Plugin Detection (Stringified JSON or Raw Object)\n let schema = schemaRaw;\n if (schema && typeof schema === \"string\" && (schema as string).trim().startsWith(\"{\")) {\n try {\n schema = JSON.parse(schema);\n } catch (e) {\n // Ignore, let standard validation catch it\n }\n }\n\n if (schema && typeof schema === \"object\") {\n const plugin = SchemaBuilderRegistry.getBuilderFor(schema);\n if (plugin) {\n schema = plugin.build(schema, this.getProperty(\"schemaTarget\"));\n // Silently update the wrapper property so the inner host gets the final parsed MetaUI format\n super.setProperty(\"schemaDefinition\", schema, true);\n if (schema.definitions) {\n super.setProperty(\"schemaDefinitions\", schema.definitions, true);\n }\n }\n }\n\n const dataJson = this.getProperty(\"dataJson\");\n const data = this.getProperty(\"data\");\n\n let hasSchema = !!schema;\n if (hasSchema && typeof schema === \"object\" && Object.keys(schema).length === 0) {\n hasSchema = false; // Treat empty object as no schema\n }\n\n const hasData = !!dataJson || !!data;\n\n // 3. AI Schema Inference Detection\n if (hasData && this.getProperty(\"inferenceStrategy\") === \"AI\") {\n const self = this as unknown as { _fetchingSchema?: boolean };\n if (self._fetchingSchema) return; // Prevent re-entry\n self._fetchingSchema = true;\n\n let rawDataObj = data;\n if (!rawDataObj && dataJson) {\n try { rawDataObj = JSON.parse(dataJson as string); } catch(e: Error) { Logger.trace(\"[DynamicHost] Ignored invalid dataJson parse: \" + e.message); }\n }\n\n if (rawDataObj) {\n sap.ui.require([\n \"sap/ui/core/BusyIndicator\", \n \"sap/m/MessageToast\",\n \"nz/co/siliconst/ui5/metaui/ai/AIConfig\"\n ], (BusyIndicator: { show: (n: number) => void, hide: () => void }, MessageToast: { show: (s: string) => void }, AIConfig: { getProxy: () => { generateSchema: (d: unknown, s?: unknown) => Promise<unknown> } }) => {\n BusyIndicator.show(0);\n const proxy = AIConfig.getProxy();\n \n proxy.generateSchema(rawDataObj, schema || undefined)\n .then((generatedSchema: unknown) => {\n const self = this as unknown as { _fetchingSchema?: boolean };\n super.setProperty(\"schemaDefinition\", generatedSchema, true);\n self._fetchingSchema = false;\n BusyIndicator.hide();\n this.invalidate(); // Force re-render with the new schema\n })\n .catch((err: Error) => {\n const self = this as unknown as { _fetchingSchema?: boolean };\n Logger.warn(\"[MetaUI DynamicHost]\", \"AI inference failed, falling back to RuleBased. Error: \" + err.message, \"DynamicHost\");\n if (MessageToast) MessageToast.show(\"AI Inference failed, using fallback.\");\n super.setProperty(\"inferenceStrategy\", \"RuleBased\", true); // Fallback to normal inference\n self._fetchingSchema = false;\n BusyIndicator.hide();\n this.invalidate(); \n });\n });\n return; // Abort render cycle until AI is done\n }\n }\n\n Logger.debug(\"[MetaUI DynamicHost]\", `Evaluating boot. hasSchema: ${hasSchema}, hasData: ${hasData}`, \"DynamicHost\");\n\n // Only boot if we have either a schema or some data to infer from\n if (hasSchema || hasData) {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI DynamicHost]\", `Booting inner host. hasSchema: ${hasSchema}, hasData: ${hasData}`, \"DynamicHost\");\n }\n // The architectural Facade router logic:\n // We've simplified this! We no longer use HostFactory or separate subclasses.\n // GeneratorHost is fully capable of inferring the schema if none is provided.\n this._innerHost = new GeneratorHost();\n\n // 1. Forward all static values to the spawned host BEFORE mounting.\n // Since we no longer use bindProperty, it's perfectly safe to set raw properties before mounting.\n const props = this.getMetadata().getProperties();\n for (const propName in props) {\n if (propName === \"inferenceStrategy\") continue;\n const val = super.getProperty(propName);\n if (val !== null && val !== undefined) {\n if (propName === \"schemaDefinitions\") {\n Logger.debug(`[MetaUI DynamicHost] Proxying schemaDefinitions: ${Object.keys(val)}`, \"\", \"DynamicHost\");\n }\n this._innerHost.setProperty(propName, val);\n } else if (propName === \"schemaDefinitions\") {\n Logger.warn(`[MetaUI DynamicHost] Warning: schemaDefinitions is null/undefined in Wrapper. Defaulting to empty object in GeneratorHost.`, \"\", \"DynamicHost\");\n }\n }\n\n // 2. Mount so it inherits models and triggers lifecycle.\n this.setAggregation(\"_content\", this._innerHost);\n\n // 3. Forward all event subscriptions.\n // By proxying the events upwards, the developer can subscribe to `<meta:DynamicHost submit=\"...\">` \n // and perfectly receive the inner host's submission event.\n const events = this.getMetadata().getEvents();\n for (const eventName in events) {\n this._innerHost.attachEvent(eventName, (oEvent: sap.ui.base.Event) => {\n // Natively push updated payload out to any bound Fiori Element properties.\n // Using super.setProperty prevents an infinite loop back down to _innerHost.\n if (eventName === \"submit\" || eventName === \"fieldChange\") {\n const params = oEvent.getParameters();\n if (params.payload) {\n const isLive = this.getProperty(\"liveUpdate\") === true;\n if (eventName === \"submit\" || isLive) {\n super.setProperty(\"data\", params.payload, true);\n\n const str = params.payloadJson || JSON.stringify(params.payload, null, 2);\n super.setProperty(\"dataJson\", str, true);\n }\n }\n if (eventName === \"fieldChange\" && this.odataDelegate) {\n this.odataDelegate.handleFieldChange(params.fieldPath, params.value);\n }\n }\n this.fireEvent(eventName, oEvent.getParameters());\n });\n }\n\n this._initializedInner = true;\n }\n }\n }\n\n /**\n * Overrides standard UI5 setProperty to act as a transparent proxy.\n * When a property is updated on the wrapper (either programmatically or via a binding update),\n * it instantly mirrors that value down to the inner instantiated host.\n */\n public setProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {\n if (propertyName === \"data\" || propertyName === \"dataJson\" || propertyName === \"schemaDefinition\" || propertyName === \"schemaDefinitions\") {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI DynamicHost]\", `Wrapper received setProperty: ${propertyName}`, \"DynamicHost\");\n }\n }\n super.setProperty(propertyName, value, suppressInvalidate);\n if (this._innerHost && propertyName !== \"inferenceStrategy\") {\n this._innerHost.setProperty(propertyName, value, suppressInvalidate);\n } else if (propertyName === \"data\" || propertyName === \"dataJson\" || propertyName === \"schemaDefinition\" || propertyName === \"schemaDefinitions\") {\n if (this.getProperty(\"debugMode\")) {\n Logger.debug(\"[MetaUI DynamicHost]\", `_innerHost not yet initialized when ${propertyName} was set. Booting will happen on next render.`, \"DynamicHost\");\n }\n }\n return this;\n }\n\n\n\n\n\n /**\n * Programmatic API support. Routes dialog commands down to the spawned inner host.\n * If the inner host has not booted yet, it forces initialization immediately.\n * \n * @param {string} [title=\"Form\"] The title of the dialog\n * @param {string} [submitButtonText=\"OK\"] The text for the primary action button\n * @param {string} [cancelButtonText=\"Cancel\"] The text for the cancel button\n * @param {string} [dialogWidth=\"auto\"] The width of the dialog\n * @param {sap.ui.core.Control} [parentView] The parent view to attach the dialog to for model inheritance.\n */\n public openInDialog(title?: string, submitButtonText?: string, cancelButtonText?: string, dialogWidth?: string, parentView?: Control): void {\n if (!this._innerHost) {\n this.onBeforeRendering(); // Force init if they bypassed UI5 rendering\n }\n this._innerHost?.openInDialog(title, submitButtonText, cancelButtonText, dialogWidth, parentView);\n }\n\n /**\n * Proxies submission triggering down to the instantiated generator host.\n * Evaluates the internal Engine validation suite and returns true if structurally sound.\n * \n * @returns {boolean} True if the internal payload passes schema validation, false otherwise.\n */\n public triggerSubmit(): boolean {\n if (!this._innerHost) {\n return false;\n }\n return this._innerHost.triggerSubmit();\n }\n\n /**\n * Injects a custom error message onto a specific field.\n * Useful for injecting custom backend validation errors.\n * \n * @param {string} fieldPath The schema key path to target.\n * @param {string} message The custom error message to display.\n */\n public addCustomError(fieldPath: string, message: string): void {\n const inner = this._innerHost as unknown as { addCustomError?: (p: string, m: string) => void };\n if (inner && typeof inner.addCustomError === \"function\") {\n inner.addCustomError(fieldPath, message);\n }\n }\n\n /**\n * Clears a custom error message from a specific field.\n * \n * @param {string} fieldPath The schema key path to target.\n */\n public clearCustomError(fieldPath: string): void {\n const inner = this._innerHost as unknown as { clearCustomError?: (p: string) => void };\n if (inner && typeof inner.clearCustomError === \"function\") {\n inner.clearCustomError(fieldPath);\n }\n }\n\n /**\n * Overrides standard UI5 getProperty to transparently pull extracted data from the inner host.\n * Ensures that querying the DynamicHost facade for `data` always yields the freshest payload.\n * \n * @param {string} propertyName The name of the property to retrieve\n * @returns {unknown} The property value\n */\n public getProperty(propertyName: string): unknown {\n if (propertyName === \"outputData\") {\n propertyName = \"data\"; // Forward deprecated outputData to data\n }\n if (this._innerHost && (propertyName === \"data\" || propertyName === \"dataJson\")) {\n return this._innerHost.getProperty(propertyName);\n }\n return super.getProperty(propertyName);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -21,6 +21,8 @@ export default class DynamicHost extends Control {
21
21
  static readonly metadata = {
22
22
  properties: {
23
23
  schemaDefinition: { type: "any", defaultValue: null },
24
+ schemaDefinitions: { type: "object", defaultValue: null },
25
+ schemaTarget: { type: "string", defaultValue: null },
24
26
  data: { type: "object", defaultValue: null, bindable: "bindable" },
25
27
  dataJson: { type: "string", defaultValue: null, bindable: "bindable" },
26
28
  liveUpdate: { type: "boolean", defaultValue: false },
@@ -28,7 +30,8 @@ export default class DynamicHost extends Control {
28
30
  useMessageManager: { type: "boolean", defaultValue: false },
29
31
  modelName: { type: "string", defaultValue: "meta" },
30
32
  debugMode: { type: "boolean", defaultValue: false },
31
- editable: { type: "boolean", defaultValue: true }
33
+ editable: { type: "boolean", defaultValue: true },
34
+ inferenceStrategy: { type: "string", defaultValue: "RuleBased" }
32
35
  },
33
36
  aggregations: {
34
37
  _content: { type: "sap.ui.core.Control", multiple: false, visibility: "hidden" }
@@ -176,10 +179,11 @@ export default class DynamicHost extends Control {
176
179
 
177
180
  // 1. URL Detection & Fetching
178
181
  if (typeof schemaRaw === "string" && (schemaRaw.startsWith("http://") || schemaRaw.startsWith("https://"))) {
179
- if ((this as any)._fetchingSchema) return; // Prevent re-entry
180
- (this as any)._fetchingSchema = true;
182
+ const self = this as unknown as { _fetchingSchema?: boolean };
183
+ if (self._fetchingSchema) return; // Prevent re-entry
184
+ self._fetchingSchema = true;
181
185
 
182
- sap.ui.require(["sap/ui/core/BusyIndicator", "sap/m/MessageToast"], (BusyIndicator: any, MessageToast: any) => {
186
+ sap.ui.require(["sap/ui/core/BusyIndicator", "sap/m/MessageToast"], (BusyIndicator: { show: (n: number) => void, hide: () => void }, MessageToast: { show: (s: string) => void }) => {
183
187
  BusyIndicator.show(0);
184
188
  fetch(schemaRaw as string)
185
189
  .then(res => {
@@ -188,17 +192,22 @@ export default class DynamicHost extends Control {
188
192
  })
189
193
  .then(json => {
190
194
  const plugin = SchemaBuilderRegistry.getBuilderFor(json);
191
- const finalSchema = plugin ? plugin.build(json) : json;
195
+ const finalSchema = plugin ? plugin.build(json, this.getProperty("schemaTarget")) : json;
192
196
  super.setProperty("schemaDefinition", finalSchema, true);
193
- (this as any)._fetchingSchema = false;
197
+ if (finalSchema.definitions) {
198
+ super.setProperty("schemaDefinitions", finalSchema.definitions, true);
199
+ }
200
+ const self = this as unknown as { _fetchingSchema?: boolean };
201
+ self._fetchingSchema = false;
194
202
  BusyIndicator.hide();
195
203
  this.invalidate(); // Force re-render with resolved schema
196
204
  })
197
205
  .catch(err => {
206
+ const self = this as unknown as { _fetchingSchema?: boolean };
198
207
  Logger.warn("[MetaUI DynamicHost]", "Failed to fetch remote schema: " + err, "DynamicHost");
199
208
  if (MessageToast) MessageToast.show("Failed to fetch remote schema");
200
209
  super.setProperty("schemaDefinition", null, true); // Fallback to full inference
201
- (this as any)._fetchingSchema = false;
210
+ self._fetchingSchema = false;
202
211
  BusyIndicator.hide();
203
212
  this.invalidate();
204
213
  });
@@ -219,9 +228,12 @@ export default class DynamicHost extends Control {
219
228
  if (schema && typeof schema === "object") {
220
229
  const plugin = SchemaBuilderRegistry.getBuilderFor(schema);
221
230
  if (plugin) {
222
- schema = plugin.build(schema);
231
+ schema = plugin.build(schema, this.getProperty("schemaTarget"));
223
232
  // Silently update the wrapper property so the inner host gets the final parsed MetaUI format
224
233
  super.setProperty("schemaDefinition", schema, true);
234
+ if (schema.definitions) {
235
+ super.setProperty("schemaDefinitions", schema.definitions, true);
236
+ }
225
237
  }
226
238
  }
227
239
 
@@ -235,6 +247,48 @@ export default class DynamicHost extends Control {
235
247
 
236
248
  const hasData = !!dataJson || !!data;
237
249
 
250
+ // 3. AI Schema Inference Detection
251
+ if (hasData && this.getProperty("inferenceStrategy") === "AI") {
252
+ const self = this as unknown as { _fetchingSchema?: boolean };
253
+ if (self._fetchingSchema) return; // Prevent re-entry
254
+ self._fetchingSchema = true;
255
+
256
+ let rawDataObj = data;
257
+ if (!rawDataObj && dataJson) {
258
+ try { rawDataObj = JSON.parse(dataJson as string); } catch(e: Error) { Logger.trace("[DynamicHost] Ignored invalid dataJson parse: " + e.message); }
259
+ }
260
+
261
+ if (rawDataObj) {
262
+ sap.ui.require([
263
+ "sap/ui/core/BusyIndicator",
264
+ "sap/m/MessageToast",
265
+ "nz/co/siliconst/ui5/metaui/ai/AIConfig"
266
+ ], (BusyIndicator: { show: (n: number) => void, hide: () => void }, MessageToast: { show: (s: string) => void }, AIConfig: { getProxy: () => { generateSchema: (d: unknown, s?: unknown) => Promise<unknown> } }) => {
267
+ BusyIndicator.show(0);
268
+ const proxy = AIConfig.getProxy();
269
+
270
+ proxy.generateSchema(rawDataObj, schema || undefined)
271
+ .then((generatedSchema: unknown) => {
272
+ const self = this as unknown as { _fetchingSchema?: boolean };
273
+ super.setProperty("schemaDefinition", generatedSchema, true);
274
+ self._fetchingSchema = false;
275
+ BusyIndicator.hide();
276
+ this.invalidate(); // Force re-render with the new schema
277
+ })
278
+ .catch((err: Error) => {
279
+ const self = this as unknown as { _fetchingSchema?: boolean };
280
+ Logger.warn("[MetaUI DynamicHost]", "AI inference failed, falling back to RuleBased. Error: " + err.message, "DynamicHost");
281
+ if (MessageToast) MessageToast.show("AI Inference failed, using fallback.");
282
+ super.setProperty("inferenceStrategy", "RuleBased", true); // Fallback to normal inference
283
+ self._fetchingSchema = false;
284
+ BusyIndicator.hide();
285
+ this.invalidate();
286
+ });
287
+ });
288
+ return; // Abort render cycle until AI is done
289
+ }
290
+ }
291
+
238
292
  Logger.debug("[MetaUI DynamicHost]", `Evaluating boot. hasSchema: ${hasSchema}, hasData: ${hasData}`, "DynamicHost");
239
293
 
240
294
  // Only boot if we have either a schema or some data to infer from
@@ -251,9 +305,15 @@ export default class DynamicHost extends Control {
251
305
  // Since we no longer use bindProperty, it's perfectly safe to set raw properties before mounting.
252
306
  const props = this.getMetadata().getProperties();
253
307
  for (const propName in props) {
308
+ if (propName === "inferenceStrategy") continue;
254
309
  const val = super.getProperty(propName);
255
310
  if (val !== null && val !== undefined) {
311
+ if (propName === "schemaDefinitions") {
312
+ Logger.debug(`[MetaUI DynamicHost] Proxying schemaDefinitions: ${Object.keys(val)}`, "", "DynamicHost");
313
+ }
256
314
  this._innerHost.setProperty(propName, val);
315
+ } else if (propName === "schemaDefinitions") {
316
+ Logger.warn(`[MetaUI DynamicHost] Warning: schemaDefinitions is null/undefined in Wrapper. Defaulting to empty object in GeneratorHost.`, "", "DynamicHost");
257
317
  }
258
318
  }
259
319
 
@@ -298,15 +358,15 @@ export default class DynamicHost extends Control {
298
358
  * it instantly mirrors that value down to the inner instantiated host.
299
359
  */
300
360
  public setProperty(propertyName: string, value: unknown, suppressInvalidate?: boolean): this {
301
- if (propertyName === "data" || propertyName === "dataJson" || propertyName === "schemaDefinition") {
361
+ if (propertyName === "data" || propertyName === "dataJson" || propertyName === "schemaDefinition" || propertyName === "schemaDefinitions") {
302
362
  if (this.getProperty("debugMode")) {
303
363
  Logger.debug("[MetaUI DynamicHost]", `Wrapper received setProperty: ${propertyName}`, "DynamicHost");
304
364
  }
305
365
  }
306
366
  super.setProperty(propertyName, value, suppressInvalidate);
307
- if (this._innerHost) {
367
+ if (this._innerHost && propertyName !== "inferenceStrategy") {
308
368
  this._innerHost.setProperty(propertyName, value, suppressInvalidate);
309
- } else if (propertyName === "data" || propertyName === "dataJson" || propertyName === "schemaDefinition") {
369
+ } else if (propertyName === "data" || propertyName === "dataJson" || propertyName === "schemaDefinition" || propertyName === "schemaDefinitions") {
310
370
  if (this.getProperty("debugMode")) {
311
371
  Logger.debug("[MetaUI DynamicHost]", `_innerHost not yet initialized when ${propertyName} was set. Booting will happen on next render.`, "DynamicHost");
312
372
  }
@@ -356,8 +416,9 @@ export default class DynamicHost extends Control {
356
416
  * @param {string} message The custom error message to display.
357
417
  */
358
418
  public addCustomError(fieldPath: string, message: string): void {
359
- if (this._innerHost && typeof (this._innerHost as any).addCustomError === "function") {
360
- (this._innerHost as any).addCustomError(fieldPath, message);
419
+ const inner = this._innerHost as unknown as { addCustomError?: (p: string, m: string) => void };
420
+ if (inner && typeof inner.addCustomError === "function") {
421
+ inner.addCustomError(fieldPath, message);
361
422
  }
362
423
  }
363
424
 
@@ -367,8 +428,9 @@ export default class DynamicHost extends Control {
367
428
  * @param {string} fieldPath The schema key path to target.
368
429
  */
369
430
  public clearCustomError(fieldPath: string): void {
370
- if (this._innerHost && typeof (this._innerHost as any).clearCustomError === "function") {
371
- (this._innerHost as any).clearCustomError(fieldPath);
431
+ const inner = this._innerHost as unknown as { clearCustomError?: (p: string) => void };
432
+ if (inner && typeof inner.clearCustomError === "function") {
433
+ inner.clearCustomError(fieldPath);
372
434
  }
373
435
  }
374
436
 
@@ -40,6 +40,14 @@ sap.ui.define(["sap/ui/core/Control", "../../utils/Logger", "../../core/SchemaNo
40
40
  type: "any",
41
41
  defaultValue: null
42
42
  },
43
+ schemaDefinitions: {
44
+ type: "object",
45
+ defaultValue: {}
46
+ },
47
+ schemaTarget: {
48
+ type: "string",
49
+ defaultValue: null
50
+ },
43
51
  data: {
44
52
  type: "object",
45
53
  defaultValue: null,
@@ -214,6 +222,22 @@ sap.ui.define(["sap/ui/core/Control", "../../utils/Logger", "../../core/SchemaNo
214
222
  getStateManager: function _getStateManager() {
215
223
  return this.stateManager;
216
224
  },
225
+ /**
226
+ * Resolves a reference pointer against the global schema definitions dictionary.
227
+ * @param refPath The string reference path (e.g., "#/definitions/User")
228
+ * @returns The resolved ISchema or undefined
229
+ */
230
+ getSchemaDefinition: function _getSchemaDefinition(refPath) {
231
+ const defs = this.getProperty("schemaDefinitions");
232
+ if (!defs || !refPath) return undefined;
233
+ let key = refPath;
234
+ if (key.startsWith("#/definitions/")) {
235
+ key = key.substring(14);
236
+ } else if (key.startsWith("#/components/schemas/")) {
237
+ key = key.substring(21);
238
+ }
239
+ return defs[key];
240
+ },
217
241
  /**
218
242
  * Safely destroys the currently generated UI tree and cleans up references.
219
243
  * This is called before every regeneration to prevent memory leaks.
@@ -393,7 +417,7 @@ sap.ui.define(["sap/ui/core/Control", "../../utils/Logger", "../../core/SchemaNo
393
417
  this.dataSyncDelegate.handleInputDataHotSwap(propertyName, value, suppressInvalidate);
394
418
  return this;
395
419
  }
396
- if (propertyName === "editable" || propertyName === "debugMode" || propertyName === "schemaDefinition") {
420
+ if (propertyName === "editable" || propertyName === "debugMode" || propertyName === "schemaDefinition" || propertyName === "schemaTarget") {
397
421
  const currentVal = this.getProperty(propertyName);
398
422
  if (currentVal !== value) {
399
423
  Control.prototype.setProperty.call(this, propertyName, value, suppressInvalidate);
@@ -521,6 +545,11 @@ sap.ui.define(["sap/ui/core/Control", "../../utils/Logger", "../../core/SchemaNo
521
545
  await PluginRegistry.getInstance().preloadDependencies(normalizedSchema);
522
546
  this.setBusy(false);
523
547
  }
548
+
549
+ // Inject defaults into empty payload values
550
+ if (normalizedSchema && finalData) {
551
+ this.dataSyncDelegate.injectSchemaDefaults(normalizedSchema, finalData);
552
+ }
524
553
  this.activeModelName = "metaUI_" + this.getId();
525
554
  this.stateManager = new StateManager(finalData, normalizedSchema, this.activeModelName);
526
555
  this.stateManager.setUseMessageManager(this.getProperty("useMessageManager") === true);
@@ -529,6 +558,7 @@ sap.ui.define(["sap/ui/core/Control", "../../utils/Logger", "../../core/SchemaNo
529
558
  const isEditable = this.getProperty("editable") !== false;
530
559
  const useMessageManager = this.getProperty("useMessageManager") === true;
531
560
  this.engine = new Engine(isEditable, useMessageManager);
561
+ this.engine.host = this;
532
562
  }
533
563
  this.generatedContent = this.engine.build(normalizedSchema, this.stateManager.getModel(), this.activeModelName, this.triggerSubmit.bind(this), this.getId(), this.onInternalFieldChange.bind(this));
534
564
  let contentContainer = this.generatedContent;