@siliconst/metaui 1.2.0 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/README.md +102 -33
  2. package/package.json +1 -1
  3. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js +70 -0
  4. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -0
  5. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts +67 -0
  6. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts.map +1 -0
  7. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js +2 -0
  8. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -0
  9. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +58 -0
  10. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js +28 -0
  11. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -0
  12. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts +16 -0
  13. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -0
  14. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js +2 -0
  15. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -0
  16. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +28 -0
  17. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +142 -0
  18. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -0
  19. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +33 -0
  20. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -0
  21. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +2 -0
  22. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -0
  23. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +164 -0
  24. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +266 -0
  25. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -0
  26. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +162 -0
  27. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -0
  28. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +2 -0
  29. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -0
  30. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +203 -0
  31. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +73 -0
  32. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -0
  33. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +32 -0
  34. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -0
  35. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +2 -0
  36. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -0
  37. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +86 -0
  38. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +60 -0
  39. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -0
  40. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +32 -0
  41. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -0
  42. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +2 -0
  43. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -0
  44. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +61 -0
  45. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +157 -0
  46. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -0
  47. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +33 -0
  48. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -0
  49. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +2 -0
  50. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -0
  51. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +169 -0
  52. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +160 -0
  53. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -0
  54. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +28 -0
  55. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -0
  56. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +2 -0
  57. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -0
  58. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +185 -0
  59. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +443 -0
  60. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -0
  61. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +227 -0
  62. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -0
  63. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +2 -0
  64. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -0
  65. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +421 -0
  66. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +103 -0
  67. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -0
  68. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +32 -0
  69. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -0
  70. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +2 -0
  71. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -0
  72. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +119 -0
  73. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +64 -0
  74. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -0
  75. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +21 -0
  76. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -0
  77. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +2 -0
  78. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -0
  79. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +64 -0
  80. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +120 -0
  81. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -0
  82. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +45 -0
  83. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -0
  84. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +2 -0
  85. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -0
  86. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +131 -0
  87. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +40 -15
  88. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +27 -7
  90. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
  91. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +1 -1
  92. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
  93. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +41 -15
  94. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +62 -0
  95. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -0
  96. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +26 -0
  97. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -0
  98. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +2 -0
  99. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -0
  100. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +62 -0
  101. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +159 -43
  102. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  103. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +64 -3
  104. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  107. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +166 -43
  108. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +32 -0
  109. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +1 -0
  110. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +16 -0
  111. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +1 -0
  112. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +2 -0
  113. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +1 -0
  114. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +26 -0
  115. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +123 -0
  116. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -0
  117. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +49 -0
  118. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -0
  119. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +2 -0
  120. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -0
  121. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +106 -0
  122. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +104 -25
  123. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  124. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +21 -13
  125. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +110 -21
  129. package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js +79 -0
  130. package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js.map +1 -0
  131. package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts +43 -0
  132. package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts.map +1 -0
  133. package/src/nz/co/siliconst/ui5/metaui/core/Registry.js +2 -0
  134. package/src/nz/co/siliconst/ui5/metaui/core/Registry.js.map +1 -0
  135. package/src/nz/co/siliconst/ui5/metaui/core/Registry.ts +70 -0
  136. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +71 -20
  137. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  138. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +1 -0
  139. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  141. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  142. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +71 -20
  143. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +54 -0
  144. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -0
  145. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts +11 -0
  146. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -0
  147. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +2 -0
  148. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -0
  149. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +53 -0
  150. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +88 -2
  151. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +15 -1
  153. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
  155. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  156. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +103 -1
  157. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +7 -8
  159. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.ts +7 -7
  161. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js +2 -0
  162. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js.map +1 -0
  163. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts +38 -0
  164. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts.map +1 -0
  165. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js +2 -0
  166. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js.map +1 -0
  167. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.ts +39 -0
  168. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  169. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +38 -2
  170. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  171. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +43 -2
  172. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +32 -3
  174. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  175. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +35 -3
  176. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +144 -0
  177. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -0
  178. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +27 -0
  179. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -0
  180. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js +2 -0
  181. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -0
  182. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +139 -0
  183. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +132 -61
  184. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +19 -12
  186. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  187. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  188. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +135 -71
  190. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +118 -51
  191. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +21 -8
  193. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  194. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  195. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  196. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +134 -65
  197. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +125 -0
  198. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -0
  199. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +28 -0
  200. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -0
  201. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js +2 -0
  202. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -0
  203. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +127 -0
  204. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +17 -12
  205. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
  206. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +72 -25
  207. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +1 -0
  209. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
  211. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
  212. package/src/nz/co/siliconst/ui5/metaui/library.ts +25 -12
  213. package/src/nz/co/siliconst/ui5/metaui/manifest.json +8 -1
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +58 -0
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -0
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts +22 -0
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -0
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js +2 -0
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -0
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +57 -0
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +55 -0
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -0
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts +21 -0
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts.map +1 -0
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js +2 -0
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -0
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +54 -0
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js +46 -0
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js.map +1 -0
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts +23 -0
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts.map +1 -0
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js +2 -0
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js.map +1 -0
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.ts +45 -0
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +74 -0
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -0
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +15 -0
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -0
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +2 -0
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -0
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +80 -0
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +75 -0
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -0
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +12 -0
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -0
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +2 -0
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -0
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +83 -0
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +174 -0
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -0
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +78 -0
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -0
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +2 -0
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -0
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +165 -0
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +79 -0
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -0
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +36 -0
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -0
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +2 -0
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -0
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +77 -0
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +60 -0
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -0
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +11 -0
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -0
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +2 -0
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -0
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +56 -0
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +122 -0
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -0
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +24 -0
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -0
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +2 -0
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -0
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +125 -0
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/{DatePlugin-dbg.js → controls/DatePlugin-dbg.js} +29 -20
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -0
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/{DatePlugin.d.ts → controls/DatePlugin.d.ts} +4 -4
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -0
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +2 -0
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -0
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +74 -0
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/{DateTimePlugin-dbg.js → controls/DateTimePlugin-dbg.js} +30 -20
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -0
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/{DateTimePlugin.d.ts → controls/DateTimePlugin.d.ts} +4 -4
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -0
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +2 -0
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -0
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +75 -0
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +109 -0
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -0
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +37 -0
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -0
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +2 -0
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -0
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +105 -0
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +65 -0
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -0
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +21 -0
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -0
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +2 -0
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -0
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +64 -0
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +59 -0
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -0
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +11 -0
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -0
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +2 -0
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -0
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +56 -0
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +45 -0
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -0
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +22 -0
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -0
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js +2 -0
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -0
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +42 -0
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +74 -0
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -0
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +22 -0
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -0
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +2 -0
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -0
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +73 -0
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/{NumberPlugin-dbg.js → controls/NumberPlugin-dbg.js} +21 -16
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -0
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/{NumberPlugin.d.ts → controls/NumberPlugin.d.ts} +4 -4
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -0
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +2 -0
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -0
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +62 -0
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +74 -0
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -0
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +17 -0
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -0
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +2 -0
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -0
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +81 -0
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +61 -0
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -0
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +21 -0
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -0
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +2 -0
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -0
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +62 -0
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +64 -0
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -0
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +16 -0
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -0
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +2 -0
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -0
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +67 -0
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +58 -0
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -0
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +11 -0
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -0
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +2 -0
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -0
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +55 -0
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +64 -0
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -0
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +21 -0
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -0
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +2 -0
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -0
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +65 -0
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +87 -0
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -0
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +37 -0
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -0
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +2 -0
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -0
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +85 -0
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/{SwitchPlugin-dbg.js → controls/SwitchPlugin-dbg.js} +24 -6
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -0
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/{SwitchPlugin.d.ts → controls/SwitchPlugin.d.ts} +4 -4
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -0
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +2 -0
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -0
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +62 -0
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/{TextAreaPlugin-dbg.js → controls/TextAreaPlugin-dbg.js} +20 -14
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -0
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/{TextAreaPlugin.d.ts → controls/TextAreaPlugin.d.ts} +4 -4
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -0
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +2 -0
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -0
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +63 -0
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/{TimePlugin-dbg.js → controls/TimePlugin-dbg.js} +30 -25
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -0
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/{TimePlugin.d.ts → controls/TimePlugin.d.ts} +4 -4
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -0
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +2 -0
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -0
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +76 -0
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +62 -0
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -0
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +11 -0
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -0
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +2 -0
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -0
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +59 -0
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +94 -0
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -0
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts +29 -0
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -0
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js +2 -0
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -0
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +102 -0
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +60 -0
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -0
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts +22 -0
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -0
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +2 -0
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -0
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +57 -0
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +106 -0
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -0
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +22 -0
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -0
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +2 -0
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -0
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +101 -0
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +77 -0
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -0
  426. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts +25 -0
  427. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -0
  428. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js +2 -0
  429. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -0
  430. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +86 -0
  431. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js +36 -0
  432. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js.map +1 -0
  433. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts +25 -0
  434. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts.map +1 -0
  435. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js +2 -0
  436. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js.map +1 -0
  437. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.ts +36 -0
  438. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js +32 -0
  439. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js.map +1 -0
  440. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts +19 -0
  441. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts.map +1 -0
  442. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js +2 -0
  443. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js.map +1 -0
  444. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.ts +31 -0
  445. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js +32 -0
  446. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js.map +1 -0
  447. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts +17 -0
  448. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts.map +1 -0
  449. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js +2 -0
  450. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js.map +1 -0
  451. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.ts +27 -0
  452. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js +31 -0
  453. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js.map +1 -0
  454. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts +18 -0
  455. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts.map +1 -0
  456. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js +2 -0
  457. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js.map +1 -0
  458. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.ts +23 -0
  459. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js +45 -0
  460. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js.map +1 -0
  461. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts +24 -0
  462. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts.map +1 -0
  463. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js +2 -0
  464. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js.map +1 -0
  465. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.ts +30 -0
  466. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js +42 -0
  467. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js.map +1 -0
  468. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts +18 -0
  469. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts.map +1 -0
  470. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js +2 -0
  471. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js.map +1 -0
  472. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.ts +29 -0
  473. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js +41 -0
  474. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js.map +1 -0
  475. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts +17 -0
  476. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts.map +1 -0
  477. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js +2 -0
  478. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js.map +1 -0
  479. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.ts +25 -0
  480. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js +51 -0
  481. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js.map +1 -0
  482. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts +17 -0
  483. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts.map +1 -0
  484. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js +2 -0
  485. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js.map +1 -0
  486. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.ts +33 -0
  487. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js +48 -0
  488. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js.map +1 -0
  489. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts +17 -0
  490. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts.map +1 -0
  491. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js +2 -0
  492. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js.map +1 -0
  493. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.ts +32 -0
  494. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js +46 -0
  495. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js.map +1 -0
  496. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts +17 -0
  497. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts.map +1 -0
  498. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js +2 -0
  499. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js.map +1 -0
  500. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.ts +29 -0
  501. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js +83 -0
  502. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -0
  503. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts +29 -0
  504. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -0
  505. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js +2 -0
  506. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -0
  507. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +75 -0
  508. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +0 -300
  509. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +0 -1
  510. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +0 -130
  511. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +0 -1
  512. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +0 -2
  513. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +0 -1
  514. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.ts +0 -292
  515. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js +0 -66
  516. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +0 -1
  517. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +0 -40
  518. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +0 -1
  519. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +0 -2
  520. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +0 -1
  521. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.ts +0 -60
  522. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +0 -2
  523. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +0 -1
  524. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts +0 -29
  525. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +0 -1
  526. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js +0 -2
  527. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js.map +0 -1
  528. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.ts +0 -29
  529. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +0 -24
  530. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +0 -1
  531. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +0 -15
  532. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +0 -1
  533. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +0 -2
  534. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +0 -1
  535. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.ts +0 -22
  536. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js +0 -68
  537. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js.map +0 -1
  538. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts +0 -15
  539. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts.map +0 -1
  540. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js +0 -2
  541. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js.map +0 -1
  542. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.ts +0 -71
  543. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +0 -55
  544. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +0 -1
  545. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +0 -24
  546. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +0 -1
  547. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +0 -2
  548. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +0 -1
  549. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.ts +0 -56
  550. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +0 -42
  551. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +0 -1
  552. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +0 -18
  553. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +0 -1
  554. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +0 -2
  555. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +0 -1
  556. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts +0 -41
  557. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +0 -1
  558. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts.map +0 -1
  559. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js +0 -2
  560. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js.map +0 -1
  561. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.ts +0 -69
  562. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js.map +0 -1
  563. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts.map +0 -1
  564. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js +0 -2
  565. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js.map +0 -1
  566. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.ts +0 -68
  567. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +0 -67
  568. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +0 -1
  569. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +0 -18
  570. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +0 -1
  571. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +0 -2
  572. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +0 -1
  573. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts +0 -65
  574. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +0 -1
  575. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +0 -1
  576. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +0 -2
  577. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +0 -1
  578. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts +0 -56
  579. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +0 -57
  580. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +0 -1
  581. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +0 -18
  582. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +0 -1
  583. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +0 -2
  584. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +0 -1
  585. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts +0 -58
  586. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js.map +0 -1
  587. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts.map +0 -1
  588. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js +0 -2
  589. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js.map +0 -1
  590. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.ts +0 -42
  591. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js.map +0 -1
  592. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts.map +0 -1
  593. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js +0 -2
  594. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js.map +0 -1
  595. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.ts +0 -58
  596. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js.map +0 -1
  597. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts.map +0 -1
  598. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js +0 -2
  599. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js.map +0 -1
  600. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.ts +0 -71
@@ -1,2 +1,2 @@
1
- sap.ui.define([],function(){"use strict";class e{static normalize(e,t){let r=e;if(typeof r==="string"){try{r=JSON.parse(r)}catch(e){console.warn("[MetaUI] Failed to parse schema string, falling back to inference.",e);r=null}}if(!r||typeof r!=="object"||Array.isArray(r)){return this.inferSchemaFromData(t)}const i={title:r.title||"MetaUI Generated Form",type:r.type||(r.items?"array":"object")};if(i.type==="object"){i.properties=this.normalizeProperties(r.properties||{})}else if(i.type==="array"){i.items=this.normalizePropertyMetadata(r.items||{type:"object",properties:{}},"items")}return i}static normalizeProperties(e){const t={};for(const r of Object.keys(e)){t[r]=this.normalizePropertyMetadata(e[r],r)}return t}static normalizePropertyMetadata(e,t){const r={type:e.type||"string",ui:{label:e.ui?.label||this.generateLabel(t),isKey:!!e.ui?.isKey,readOnly:!!e.ui?.readOnly,widget:e.ui?.widget,group:e.ui?.group,visibleOn:e.ui?.visibleOn,enabledOn:e.ui?.enabledOn,format:e.ui?.format},required:!!e.required,maxLength:e.maxLength,minimum:e.minimum,maximum:e.maximum,pattern:e.pattern,precision:e.precision,scale:e.scale,valueHelp:e.valueHelp};if(r.type==="object"&&e.properties){r.properties=this.normalizeProperties(e.properties)}else if(r.type==="array"&&e.items){r.items=this.normalizePropertyMetadata(e.items,"items")}return r}static generateLabel(e){if(!e)return"";let t=e.replace(/([A-Z])/g," $1").replace(/_/g," ");return t.split(" ").filter(e=>e.length>0).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim()}static inferSchemaFromData(e){const t={type:"object",properties:{}};if(!e||typeof e!=="object"){return t}if(Array.isArray(e)){t.type="array";t.items={type:"object",properties:e.length>0?this.inferPropertiesFromObject(e[0]):{}}}else{t.type="object";t.properties=this.inferPropertiesFromObject(e)}return t}static inferPropertiesFromObject(e){const t={};if(!e||typeof e!=="object")return t;for(const r of Object.keys(e)){const i=e[r];if(i===null||i===undefined)continue;if(typeof i==="object"&&!Array.isArray(i))continue;let a="string";let s;if(typeof i==="number")a="number";else if(typeof i==="boolean")a="boolean";else if(Array.isArray(i)){a="array";s={type:"object",properties:i.length>0?this.inferPropertiesFromObject(i[0]):{}}}t[r]={type:a,items:s,ui:{label:this.generateLabel(r),isKey:false,readOnly:false}}}return t}}var t={__esModule:true};t.SchemaNormalizer=e;return t});
1
+ sap.ui.define(["../utils/Logger"],function(e){"use strict";const t=e["Logger"];class r{static normalize(e,r){let i=e;if(typeof i==="string"){try{i=JSON.parse(i)}catch(e){const r=e.message;t.error("[MetaUI SchemaNormalizer] Failed to parse schema string.",r);t.showErrorPopup(`Failed to parse the provided JSON schema.\n\nDetails: ${r}`);i=null}}if(!i||typeof i!=="object"||Array.isArray(i)){return this.inferSchemaFromData(r)}try{const e={title:i.title,type:i.type||(i.items?"array":"object"),layoutStrategy:i.layoutStrategy,uiLayout:i.uiLayout,additionalProperties:i.additionalProperties};let t=i.properties||{};if(i.additionalProperties===true&&r){const e=this.inferSchemaFromData(r);if(e.type==="object"&&e.properties){t=this.deepMergeProperties(e.properties,t)}else if(e.type==="array"&&e.items&&e.items.properties){}}if(e.type==="object"){e.properties=this.normalizeProperties(t)}else if(e.type==="array"){e.items=this.normalizePropertyMetadata(i.items||{type:"object",properties:{}},"items")}return e}catch(e){const r=e.message;t.error("[MetaUI SchemaNormalizer] Critical error normalizing schema object.",r);t.showErrorPopup(`Schema Normalization failed.\n\nDetails: ${r}`);return{type:"object",properties:{}}}}static deepMergeProperties(e,t){const r={...e};for(const e of Object.keys(t)){const i=t[e];const a=r[e];if(a&&typeof a==="object"&&!Array.isArray(a)&&i&&typeof i==="object"&&!Array.isArray(i)){r[e]=this.deepMergeProperties(a,i)}else{r[e]=i}}return r}static normalizeProperties(e){const t={};for(const r of Object.keys(e)){t[r]=this.normalizePropertyMetadata(e[r],r)}return t}static normalizePropertyMetadata(e,t){const r={type:e.type||"string",ui:{label:e.ui?.label||this.generateLabel(t),isKey:!!e.ui?.isKey,readOnly:!!e.ui?.readOnly,widget:e.ui?.widget||(e.valueHelp||e.enum?"select":undefined),visibleOn:e.ui?.visibleOn,enabledOn:e.ui?.enabledOn,format:e.ui?.format,validators:e.ui?.validators,formatter:e.ui?.formatter,args:e.ui?.args,rows:e.ui?.rows,fullWidth:e.ui?.fullWidth},required:!!e.required,maxLength:e.maxLength,minimum:e.minimum,maximum:e.maximum,pattern:e.pattern,precision:e.precision,scale:e.scale,valueHelp:e.valueHelp,enum:e.enum};if(r.type==="object"&&e.properties){r.properties=this.normalizeProperties(e.properties);r.uiLayout=e.uiLayout}else if(r.type==="array"&&e.items){r.items=this.normalizePropertyMetadata(e.items,"items");r.uiLayout=e.uiLayout}return r}static generateLabel(e){if(!e)return"";let t=e.replace(/([A-Z])/g," $1").replace(/_/g," ");return t.split(" ").filter(e=>e.length>0).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ").trim()}static inferSchemaFromData(e){const t={type:"object",properties:{},layoutStrategy:"compact",title:""};if(!e||typeof e!=="object"){return t}if(Array.isArray(e)){t.type="array";t.layoutStrategy="table";t.items={type:"object",layoutStrategy:"compact",properties:e.length>0?this.inferPropertiesFromObject(e[0]):{}}}else{t.type="object";t.properties=this.inferPropertiesFromObject(e)}return t}static inferPropertiesFromObject(e){const t={};if(!e||typeof e!=="object")return t;for(const r of Object.keys(e)){const i=e[r];if(i===null||i===undefined)continue;if(typeof i==="object"&&!Array.isArray(i))continue;let a="string";let o;if(typeof i==="number")a="number";else if(typeof i==="boolean")a="boolean";else if(Array.isArray(i)){a="array";o={type:"object",properties:i.length>0?this.inferPropertiesFromObject(i[0]):{}}}t[r]={type:a,items:o,ui:{label:this.generateLabel(r),isKey:false,readOnly:false}}}return t}}var i={__esModule:true};i.SchemaNormalizer=r;return i});
2
2
  //# sourceMappingURL=SchemaNormalizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaNormalizer.js","names":["SchemaNormalizer","normalize","rawSchema","data","schemaObj","JSON","parse","e","console","warn","Array","isArray","this","inferSchemaFromData","normalized","title","type","items","properties","normalizeProperties","normalizePropertyMetadata","normalizedProps","key","Object","keys","prop","keyName","ui","label","generateLabel","isKey","readOnly","widget","group","visibleOn","enabledOn","format","required","maxLength","minimum","maximum","pattern","precision","scale","valueHelp","name","spaced","replace","split","filter","w","length","map","word","charAt","toUpperCase","slice","toLowerCase","join","trim","schema","inferPropertiesFromObject","obj","val","undefined","__exports","__esModule"],"sources":["SchemaNormalizer.ts"],"sourcesContent":["/**\n * @file SchemaNormalizer.ts\n * @description Transforms and validates incoming JSON payloads into the strict v2 ISchema dictionary matrix.\n */\n\nimport { ISchema, IPropertyMetadata, FieldType } from \"../interfaces/ISchema\";\n\nexport class SchemaNormalizer {\n \n /**\n * Validates that the provided raw payload conforms to the required ISchema structures.\n */\n public static normalize(rawSchema?: any, data?: any): ISchema {\n let schemaObj = rawSchema;\n\n if (typeof schemaObj === \"string\") {\n try {\n schemaObj = JSON.parse(schemaObj);\n } catch (e) {\n console.warn(\"[MetaUI] Failed to parse schema string, falling back to inference.\", e);\n schemaObj = null;\n }\n }\n\n if (!schemaObj || typeof schemaObj !== 'object' || Array.isArray(schemaObj)) {\n return this.inferSchemaFromData(data);\n }\n\n // It is an object. Ensure it conforms to v2 structure.\n const normalized: ISchema = {\n title: schemaObj.title || \"MetaUI Generated Form\",\n type: schemaObj.type || (schemaObj.items ? \"array\" : \"object\"),\n };\n\n if (normalized.type === \"object\") {\n normalized.properties = this.normalizeProperties(schemaObj.properties || {});\n } else if (normalized.type === \"array\") {\n normalized.items = this.normalizePropertyMetadata(schemaObj.items || { type: \"object\", properties: {} }, \"items\");\n }\n\n return normalized;\n }\n\n private static normalizeProperties(properties: any): Record<string, IPropertyMetadata> {\n const normalizedProps: Record<string, IPropertyMetadata> = {};\n for (const key of Object.keys(properties)) {\n normalizedProps[key] = this.normalizePropertyMetadata(properties[key], key);\n }\n return normalizedProps;\n }\n\n private static normalizePropertyMetadata(prop: any, keyName: string): IPropertyMetadata {\n const normalized: IPropertyMetadata = {\n type: prop.type || \"string\",\n ui: {\n label: prop.ui?.label || this.generateLabel(keyName),\n isKey: !!prop.ui?.isKey,\n readOnly: !!prop.ui?.readOnly,\n widget: prop.ui?.widget,\n group: prop.ui?.group,\n visibleOn: prop.ui?.visibleOn,\n enabledOn: prop.ui?.enabledOn,\n format: prop.ui?.format\n },\n required: !!prop.required,\n maxLength: prop.maxLength,\n minimum: prop.minimum,\n maximum: prop.maximum,\n pattern: prop.pattern,\n precision: prop.precision,\n scale: prop.scale,\n valueHelp: prop.valueHelp\n };\n\n if (normalized.type === \"object\" && prop.properties) {\n normalized.properties = this.normalizeProperties(prop.properties);\n } else if (normalized.type === \"array\" && prop.items) {\n normalized.items = this.normalizePropertyMetadata(prop.items, \"items\");\n }\n\n return normalized;\n }\n\n /**\n * Generates a Title Case label from camelCase or snake_case technical names.\n */\n private static generateLabel(name: string): string {\n if (!name) return \"\";\n let spaced = name.replace(/([A-Z])/g, \" $1\").replace(/_/g, \" \");\n return spaced.split(' ')\n .filter(w => w.length > 0)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ')\n .trim();\n }\n\n /**\n * Infers a v2 ISchema structure dynamically from a plain data payload.\n */\n private static inferSchemaFromData(data: any): ISchema {\n const schema: ISchema = { type: \"object\", properties: {} };\n \n if (!data || typeof data !== \"object\") {\n return schema;\n }\n\n if (Array.isArray(data)) {\n schema.type = \"array\";\n schema.items = {\n type: \"object\",\n properties: data.length > 0 ? this.inferPropertiesFromObject(data[0]) : {}\n };\n } else {\n schema.type = \"object\";\n schema.properties = this.inferPropertiesFromObject(data);\n }\n\n return schema;\n }\n\n private static inferPropertiesFromObject(obj: any): Record<string, IPropertyMetadata> {\n const properties: Record<string, IPropertyMetadata> = {};\n if (!obj || typeof obj !== \"object\") return properties;\n\n for (const key of Object.keys(obj)) {\n const val = obj[key];\n if (val === null || val === undefined) continue;\n \n if (typeof val === \"object\" && !Array.isArray(val)) continue;\n\n let type: FieldType = \"string\";\n let items: IPropertyMetadata | undefined;\n\n if (typeof val === \"number\") type = \"number\";\n else if (typeof val === \"boolean\") type = \"boolean\";\n else if (Array.isArray(val)) {\n type = \"array\";\n items = {\n type: \"object\",\n properties: val.length > 0 ? this.inferPropertiesFromObject(val[0]) : {}\n };\n }\n \n properties[key] = {\n type,\n items,\n ui: {\n label: this.generateLabel(key),\n isKey: false,\n readOnly: false\n }\n };\n }\n\n return properties;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SchemaNormalizer.js","names":["Logger","___utils_Logger","SchemaNormalizer","normalize","rawSchema","data","schemaObj","JSON","parse","e","msg","message","error","showErrorPopup","Array","isArray","this","inferSchemaFromData","normalized","title","type","items","layoutStrategy","uiLayout","additionalProperties","targetProperties","properties","inferred","deepMergeProperties","normalizeProperties","normalizePropertyMetadata","base","override","merged","key","Object","keys","overrideVal","baseVal","normalizedProps","prop","keyName","ui","label","generateLabel","isKey","readOnly","widget","valueHelp","enum","undefined","visibleOn","enabledOn","format","validators","formatter","args","rows","fullWidth","required","maxLength","minimum","maximum","pattern","precision","scale","name","spaced","replace","split","filter","w","length","map","word","charAt","toUpperCase","slice","toLowerCase","join","trim","schema","inferPropertiesFromObject","obj","val","__exports","__esModule"],"sources":["SchemaNormalizer.ts"],"sourcesContent":["/**\n * @file SchemaNormalizer.ts\n * @description Transforms and validates incoming JSON payloads into the strict v2 ISchema dictionary matrix.\n */\n\nimport { ISchema, IPropertyMetadata, FieldType } from \"../interfaces/ISchema\";\nimport { Logger } from \"../utils/Logger\";\n\nexport class SchemaNormalizer {\n\n /**\n * Validates that the provided raw payload conforms to the required ISchema structures.\n */\n public static normalize(rawSchema?: any, data?: any): ISchema {\n let schemaObj = rawSchema;\n\n if (typeof schemaObj === \"string\") {\n try {\n schemaObj = JSON.parse(schemaObj);\n } catch (e) {\n const msg = (e as Error).message;\n Logger.error(\"[MetaUI SchemaNormalizer] Failed to parse schema string.\", msg);\n Logger.showErrorPopup(`Failed to parse the provided JSON schema.\\n\\nDetails: ${msg}`);\n schemaObj = null;\n }\n }\n\n if (!schemaObj || typeof schemaObj !== 'object' || Array.isArray(schemaObj)) {\n return this.inferSchemaFromData(data);\n }\n\n try {\n // It is an object. Ensure it conforms to v2 structure.\n const normalized: ISchema = {\n title: schemaObj.title,\n type: schemaObj.type || (schemaObj.items ? \"array\" : \"object\"),\n layoutStrategy: schemaObj.layoutStrategy,\n uiLayout: schemaObj.uiLayout,\n additionalProperties: schemaObj.additionalProperties\n };\n\n let targetProperties = schemaObj.properties || {};\n\n if (schemaObj.additionalProperties === true && data) {\n const inferred = this.inferSchemaFromData(data);\n if (inferred.type === \"object\" && inferred.properties) {\n targetProperties = this.deepMergeProperties(inferred.properties, targetProperties);\n } else if (inferred.type === \"array\" && inferred.items && inferred.items.properties) {\n // Array schema merging could be added here if we want full support.\n }\n }\n\n if (normalized.type === \"object\") {\n normalized.properties = this.normalizeProperties(targetProperties);\n } else if (normalized.type === \"array\") {\n // Future expansion: array deep merge\n normalized.items = this.normalizePropertyMetadata(schemaObj.items || { type: \"object\", properties: {} }, \"items\");\n }\n\n return normalized;\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(\"[MetaUI SchemaNormalizer] Critical error normalizing schema object.\", msg);\n Logger.showErrorPopup(`Schema Normalization failed.\\n\\nDetails: ${msg}`);\n // Fallback to empty object to prevent hard crash downstream\n return { type: \"object\", properties: {} };\n }\n }\n\n private static deepMergeProperties(base: any, override: any): any {\n const merged = { ...base };\n for (const key of Object.keys(override)) {\n const overrideVal = override[key];\n const baseVal = merged[key];\n\n if (baseVal && typeof baseVal === \"object\" && !Array.isArray(baseVal) &&\n overrideVal && typeof overrideVal === \"object\" && !Array.isArray(overrideVal)) {\n merged[key] = this.deepMergeProperties(baseVal, overrideVal);\n } else {\n merged[key] = overrideVal;\n }\n }\n return merged;\n }\n\n private static normalizeProperties(properties: any): Record<string, IPropertyMetadata> {\n const normalizedProps: Record<string, IPropertyMetadata> = {};\n for (const key of Object.keys(properties)) {\n normalizedProps[key] = this.normalizePropertyMetadata(properties[key], key);\n }\n return normalizedProps;\n }\n\n private static normalizePropertyMetadata(prop: any, keyName: string): IPropertyMetadata {\n const normalized: IPropertyMetadata = {\n type: prop.type || \"string\",\n ui: {\n label: prop.ui?.label || this.generateLabel(keyName),\n isKey: !!prop.ui?.isKey,\n readOnly: !!prop.ui?.readOnly,\n widget: prop.ui?.widget || (prop.valueHelp || prop.enum ? \"select\" : undefined),\n visibleOn: prop.ui?.visibleOn,\n enabledOn: prop.ui?.enabledOn,\n format: prop.ui?.format,\n validators: prop.ui?.validators,\n formatter: prop.ui?.formatter,\n args: prop.ui?.args,\n rows: prop.ui?.rows,\n fullWidth: prop.ui?.fullWidth\n },\n required: !!prop.required,\n maxLength: prop.maxLength,\n minimum: prop.minimum,\n maximum: prop.maximum,\n pattern: prop.pattern,\n precision: prop.precision,\n scale: prop.scale,\n valueHelp: prop.valueHelp,\n enum: prop.enum\n };\n\n if (normalized.type === \"object\" && prop.properties) {\n normalized.properties = this.normalizeProperties(prop.properties);\n normalized.uiLayout = prop.uiLayout;\n } else if (normalized.type === \"array\" && prop.items) {\n normalized.items = this.normalizePropertyMetadata(prop.items, \"items\");\n normalized.uiLayout = prop.uiLayout;\n }\n\n return normalized;\n }\n\n /**\n * Generates a Title Case label from camelCase or snake_case technical names.\n */\n private static generateLabel(name: string): string {\n if (!name) return \"\";\n let spaced = name.replace(/([A-Z])/g, \" $1\").replace(/_/g, \" \");\n return spaced.split(' ')\n .filter(w => w.length > 0)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ')\n .trim();\n }\n\n /**\n * Infers a v2 ISchema structure dynamically from a plain data payload.\n */\n private static inferSchemaFromData(data: any): ISchema {\n const schema: ISchema = { type: \"object\", properties: {}, layoutStrategy: \"compact\", title: \"\" };\n\n if (!data || typeof data !== \"object\") {\n return schema;\n }\n\n if (Array.isArray(data)) {\n schema.type = \"array\";\n schema.layoutStrategy = \"table\";\n schema.items = {\n type: \"object\",\n layoutStrategy: \"compact\",\n properties: data.length > 0 ? this.inferPropertiesFromObject(data[0]) : {}\n };\n } else {\n schema.type = \"object\";\n schema.properties = this.inferPropertiesFromObject(data);\n }\n\n return schema;\n }\n\n private static inferPropertiesFromObject(obj: any): Record<string, IPropertyMetadata> {\n const properties: Record<string, IPropertyMetadata> = {};\n if (!obj || typeof obj !== \"object\") return properties;\n\n for (const key of Object.keys(obj)) {\n const val = obj[key];\n if (val === null || val === undefined) continue;\n\n if (typeof val === \"object\" && !Array.isArray(val)) continue;\n\n let type: FieldType = \"string\";\n let items: IPropertyMetadata | undefined;\n\n if (typeof val === \"number\") type = \"number\";\n else if (typeof val === \"boolean\") type = \"boolean\";\n else if (Array.isArray(val)) {\n type = \"array\";\n items = {\n type: \"object\",\n properties: val.length > 0 ? this.inferPropertiesFromObject(val[0]) : {}\n };\n }\n\n properties[key] = {\n type,\n items,\n ui: {\n label: this.generateLabel(key),\n isKey: false,\n readOnly: false\n }\n };\n }\n\n return properties;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,9 +4,10 @@
4
4
  */
5
5
 
6
6
  import { ISchema, IPropertyMetadata, FieldType } from "../interfaces/ISchema";
7
+ import { Logger } from "../utils/Logger";
7
8
 
8
9
  export class SchemaNormalizer {
9
-
10
+
10
11
  /**
11
12
  * Validates that the provided raw payload conforms to the required ISchema structures.
12
13
  */
@@ -17,7 +18,9 @@ export class SchemaNormalizer {
17
18
  try {
18
19
  schemaObj = JSON.parse(schemaObj);
19
20
  } catch (e) {
20
- console.warn("[MetaUI] Failed to parse schema string, falling back to inference.", e);
21
+ const msg = (e as Error).message;
22
+ Logger.error("[MetaUI SchemaNormalizer] Failed to parse schema string.", msg);
23
+ Logger.showErrorPopup(`Failed to parse the provided JSON schema.\n\nDetails: ${msg}`);
21
24
  schemaObj = null;
22
25
  }
23
26
  }
@@ -26,19 +29,58 @@ export class SchemaNormalizer {
26
29
  return this.inferSchemaFromData(data);
27
30
  }
28
31
 
29
- // It is an object. Ensure it conforms to v2 structure.
30
- const normalized: ISchema = {
31
- title: schemaObj.title || "MetaUI Generated Form",
32
- type: schemaObj.type || (schemaObj.items ? "array" : "object"),
33
- };
32
+ try {
33
+ // It is an object. Ensure it conforms to v2 structure.
34
+ const normalized: ISchema = {
35
+ title: schemaObj.title,
36
+ type: schemaObj.type || (schemaObj.items ? "array" : "object"),
37
+ layoutStrategy: schemaObj.layoutStrategy,
38
+ uiLayout: schemaObj.uiLayout,
39
+ additionalProperties: schemaObj.additionalProperties
40
+ };
41
+
42
+ let targetProperties = schemaObj.properties || {};
43
+
44
+ if (schemaObj.additionalProperties === true && data) {
45
+ const inferred = this.inferSchemaFromData(data);
46
+ if (inferred.type === "object" && inferred.properties) {
47
+ targetProperties = this.deepMergeProperties(inferred.properties, targetProperties);
48
+ } else if (inferred.type === "array" && inferred.items && inferred.items.properties) {
49
+ // Array schema merging could be added here if we want full support.
50
+ }
51
+ }
52
+
53
+ if (normalized.type === "object") {
54
+ normalized.properties = this.normalizeProperties(targetProperties);
55
+ } else if (normalized.type === "array") {
56
+ // Future expansion: array deep merge
57
+ normalized.items = this.normalizePropertyMetadata(schemaObj.items || { type: "object", properties: {} }, "items");
58
+ }
34
59
 
35
- if (normalized.type === "object") {
36
- normalized.properties = this.normalizeProperties(schemaObj.properties || {});
37
- } else if (normalized.type === "array") {
38
- normalized.items = this.normalizePropertyMetadata(schemaObj.items || { type: "object", properties: {} }, "items");
60
+ return normalized;
61
+ } catch (error) {
62
+ const msg = (error as Error).message;
63
+ Logger.error("[MetaUI SchemaNormalizer] Critical error normalizing schema object.", msg);
64
+ Logger.showErrorPopup(`Schema Normalization failed.\n\nDetails: ${msg}`);
65
+ // Fallback to empty object to prevent hard crash downstream
66
+ return { type: "object", properties: {} };
39
67
  }
68
+ }
40
69
 
41
- return normalized;
70
+ private static deepMergeProperties(base: any, override: any): any {
71
+ const merged = { ...base };
72
+ for (const key of Object.keys(override)) {
73
+ const overrideVal = override[key];
74
+ const baseVal = merged[key];
75
+
76
+ if (baseVal && typeof baseVal === "object" && !Array.isArray(baseVal) &&
77
+ overrideVal && typeof overrideVal === "object" && !Array.isArray(overrideVal)) {
78
+ merged[key] = this.deepMergeProperties(baseVal, overrideVal);
79
+ } else {
80
+ merged[key] = overrideVal;
81
+ }
82
+ }
83
+ return merged;
42
84
  }
43
85
 
44
86
  private static normalizeProperties(properties: any): Record<string, IPropertyMetadata> {
@@ -56,11 +98,15 @@ export class SchemaNormalizer {
56
98
  label: prop.ui?.label || this.generateLabel(keyName),
57
99
  isKey: !!prop.ui?.isKey,
58
100
  readOnly: !!prop.ui?.readOnly,
59
- widget: prop.ui?.widget,
60
- group: prop.ui?.group,
101
+ widget: prop.ui?.widget || (prop.valueHelp || prop.enum ? "select" : undefined),
61
102
  visibleOn: prop.ui?.visibleOn,
62
103
  enabledOn: prop.ui?.enabledOn,
63
- format: prop.ui?.format
104
+ format: prop.ui?.format,
105
+ validators: prop.ui?.validators,
106
+ formatter: prop.ui?.formatter,
107
+ args: prop.ui?.args,
108
+ rows: prop.ui?.rows,
109
+ fullWidth: prop.ui?.fullWidth
64
110
  },
65
111
  required: !!prop.required,
66
112
  maxLength: prop.maxLength,
@@ -69,13 +115,16 @@ export class SchemaNormalizer {
69
115
  pattern: prop.pattern,
70
116
  precision: prop.precision,
71
117
  scale: prop.scale,
72
- valueHelp: prop.valueHelp
118
+ valueHelp: prop.valueHelp,
119
+ enum: prop.enum
73
120
  };
74
121
 
75
122
  if (normalized.type === "object" && prop.properties) {
76
123
  normalized.properties = this.normalizeProperties(prop.properties);
124
+ normalized.uiLayout = prop.uiLayout;
77
125
  } else if (normalized.type === "array" && prop.items) {
78
126
  normalized.items = this.normalizePropertyMetadata(prop.items, "items");
127
+ normalized.uiLayout = prop.uiLayout;
79
128
  }
80
129
 
81
130
  return normalized;
@@ -98,16 +147,18 @@ export class SchemaNormalizer {
98
147
  * Infers a v2 ISchema structure dynamically from a plain data payload.
99
148
  */
100
149
  private static inferSchemaFromData(data: any): ISchema {
101
- const schema: ISchema = { type: "object", properties: {} };
102
-
150
+ const schema: ISchema = { type: "object", properties: {}, layoutStrategy: "compact", title: "" };
151
+
103
152
  if (!data || typeof data !== "object") {
104
153
  return schema;
105
154
  }
106
155
 
107
156
  if (Array.isArray(data)) {
108
157
  schema.type = "array";
158
+ schema.layoutStrategy = "table";
109
159
  schema.items = {
110
160
  type: "object",
161
+ layoutStrategy: "compact",
111
162
  properties: data.length > 0 ? this.inferPropertiesFromObject(data[0]) : {}
112
163
  };
113
164
  } else {
@@ -125,7 +176,7 @@ export class SchemaNormalizer {
125
176
  for (const key of Object.keys(obj)) {
126
177
  const val = obj[key];
127
178
  if (val === null || val === undefined) continue;
128
-
179
+
129
180
  if (typeof val === "object" && !Array.isArray(val)) continue;
130
181
 
131
182
  let type: FieldType = "string";
@@ -140,7 +191,7 @@ export class SchemaNormalizer {
140
191
  properties: val.length > 0 ? this.inferPropertiesFromObject(val[0]) : {}
141
192
  };
142
193
  }
143
-
194
+
144
195
  properties[key] = {
145
196
  type,
146
197
  items,
@@ -0,0 +1,54 @@
1
+ sap.ui.define([], function () {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file SchemaValidator.ts
6
+ * @description Structural validation utility to catch developer errors in the JSON schema itself.
7
+ */
8
+
9
+ class SchemaValidator {
10
+ /**
11
+ * Validates a parsed JSON schema object for structural correctness.
12
+ * @param schema The schema object to validate
13
+ * @returns An array of error strings. Empty if no errors.
14
+ */
15
+ static validateSchemaStructure(schema) {
16
+ const errors = [];
17
+ if (!schema || typeof schema !== "object") {
18
+ return ["Root schema must be an object."];
19
+ }
20
+ if (schema.type !== "object" && schema.type !== "array") {
21
+ errors.push(`Root schema must have type 'object' or 'array'. Found: '${schema.type}'`);
22
+ }
23
+ if (schema.type === "object" && !schema.properties) {
24
+ errors.push("Object schema is missing the 'properties' node.");
25
+ }
26
+ if (schema.properties) {
27
+ for (const key of Object.keys(schema.properties)) {
28
+ const prop = schema.properties[key];
29
+ if (!prop || typeof prop !== "object") {
30
+ errors.push(`Property '${key}' must be an object.`);
31
+ continue;
32
+ }
33
+ if (!prop.type) {
34
+ errors.push(`Property '${key}' is missing 'type'.`);
35
+ } else {
36
+ const allowedTypes = ["string", "number", "boolean", "date", "object", "array"];
37
+ if (!allowedTypes.includes(prop.type)) {
38
+ errors.push(`Property '${key}' has invalid type '${prop.type}'. Allowed: ${allowedTypes.join(", ")}`);
39
+ }
40
+ }
41
+
42
+ // Removed strict check for prop.items on array properties because inference handles empty definitions
43
+ }
44
+ }
45
+ return errors;
46
+ }
47
+ }
48
+ var __exports = {
49
+ __esModule: true
50
+ };
51
+ __exports.SchemaValidator = SchemaValidator;
52
+ return __exports;
53
+ });
54
+ //# sourceMappingURL=SchemaValidator-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaValidator-dbg.js","names":["SchemaValidator","validateSchemaStructure","schema","errors","type","push","properties","key","Object","keys","prop","allowedTypes","includes","join","__exports","__esModule"],"sources":["SchemaValidator.ts"],"sourcesContent":["/**\n * @file SchemaValidator.ts\n * @description Structural validation utility to catch developer errors in the JSON schema itself.\n */\n\nimport { ISchema, FieldType } from \"../interfaces/ISchema\";\n\nexport class SchemaValidator {\n /**\n * Validates a parsed JSON schema object for structural correctness.\n * @param schema The schema object to validate\n * @returns An array of error strings. Empty if no errors.\n */\n public static validateSchemaStructure(schema: any): string[] {\n const errors: string[] = [];\n\n if (!schema || typeof schema !== \"object\") {\n return [\"Root schema must be an object.\"];\n }\n\n if (schema.type !== \"object\" && schema.type !== \"array\") {\n errors.push(`Root schema must have type 'object' or 'array'. Found: '${schema.type}'`);\n }\n\n if (schema.type === \"object\" && !schema.properties) {\n errors.push(\"Object schema is missing the 'properties' node.\");\n }\n\n if (schema.properties) {\n for (const key of Object.keys(schema.properties)) {\n const prop = schema.properties[key];\n if (!prop || typeof prop !== \"object\") {\n errors.push(`Property '${key}' must be an object.`);\n continue;\n }\n\n if (!prop.type) {\n errors.push(`Property '${key}' is missing 'type'.`);\n } else {\n const allowedTypes: FieldType[] = [\"string\", \"number\", \"boolean\", \"date\", \"object\", \"array\"];\n if (!allowedTypes.includes(prop.type)) {\n errors.push(`Property '${key}' has invalid type '${prop.type}'. Allowed: ${allowedTypes.join(\", \")}`);\n }\n }\n\n // Removed strict check for prop.items on array properties because inference handles empty definitions\n\n }\n }\n\n return errors;\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;;EAIO,MAAMA,eAAe,CAAC;IACzB;AACJ;AACA;AACA;AACA;IACI,OAAcC,uBAAuBA,CAACC,MAAW,EAAY;MACzD,MAAMC,MAAgB,GAAG,EAAE;MAE3B,IAAI,CAACD,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;QACvC,OAAO,CAAC,gCAAgC,CAAC;MAC7C;MAEA,IAAIA,MAAM,CAACE,IAAI,KAAK,QAAQ,IAAIF,MAAM,CAACE,IAAI,KAAK,OAAO,EAAE;QACrDD,MAAM,CAACE,IAAI,CAAC,2DAA2DH,MAAM,CAACE,IAAI,GAAG,CAAC;MAC1F;MAEA,IAAIF,MAAM,CAACE,IAAI,KAAK,QAAQ,IAAI,CAACF,MAAM,CAACI,UAAU,EAAE;QAChDH,MAAM,CAACE,IAAI,CAAC,iDAAiD,CAAC;MAClE;MAEA,IAAIH,MAAM,CAACI,UAAU,EAAE;QACnB,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACP,MAAM,CAACI,UAAU,CAAC,EAAE;UAC9C,MAAMI,IAAI,GAAGR,MAAM,CAACI,UAAU,CAACC,GAAG,CAAC;UACnC,IAAI,CAACG,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;YACnCP,MAAM,CAACE,IAAI,CAAC,aAAaE,GAAG,sBAAsB,CAAC;YACnD;UACJ;UAEA,IAAI,CAACG,IAAI,CAACN,IAAI,EAAE;YACZD,MAAM,CAACE,IAAI,CAAC,aAAaE,GAAG,sBAAsB,CAAC;UACvD,CAAC,MAAM;YACH,MAAMI,YAAyB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;YAC5F,IAAI,CAACA,YAAY,CAACC,QAAQ,CAACF,IAAI,CAACN,IAAI,CAAC,EAAE;cACnCD,MAAM,CAACE,IAAI,CAAC,aAAaE,GAAG,uBAAuBG,IAAI,CAACN,IAAI,eAAeO,YAAY,CAACE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzG;UACJ;;UAEA;QAEJ;MACJ;MAEA,OAAOV,MAAM;IACjB;EACJ;EAAC,IAAAW,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAd,eAAA,GAAAA,eAAA;EAAA,OAAAc,SAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/core/SchemaValidator" {
2
+ export class SchemaValidator {
3
+ /**
4
+ * Validates a parsed JSON schema object for structural correctness.
5
+ * @param schema The schema object to validate
6
+ * @returns An array of error strings. Empty if no errors.
7
+ */
8
+ static validateSchemaStructure(schema: any): string[];
9
+ }
10
+ }
11
+ //# sourceMappingURL=SchemaValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,iDAAiD,CAAC;IAQjE,MAAa,eAAe;QACxB;;;;WAIG;eACW,uBAAuB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE;KAuC/D;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define([],function(){"use strict";class e{static validateSchemaStructure(e){const t=[];if(!e||typeof e!=="object"){return["Root schema must be an object."]}if(e.type!=="object"&&e.type!=="array"){t.push(`Root schema must have type 'object' or 'array'. Found: '${e.type}'`)}if(e.type==="object"&&!e.properties){t.push("Object schema is missing the 'properties' node.")}if(e.properties){for(const o of Object.keys(e.properties)){const r=e.properties[o];if(!r||typeof r!=="object"){t.push(`Property '${o}' must be an object.`);continue}if(!r.type){t.push(`Property '${o}' is missing 'type'.`)}else{const e=["string","number","boolean","date","object","array"];if(!e.includes(r.type)){t.push(`Property '${o}' has invalid type '${r.type}'. Allowed: ${e.join(", ")}`)}}}}return t}}var t={__esModule:true};t.SchemaValidator=e;return t});
2
+ //# sourceMappingURL=SchemaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaValidator.js","names":["SchemaValidator","validateSchemaStructure","schema","errors","type","push","properties","key","Object","keys","prop","allowedTypes","includes","join","__exports","__esModule"],"sources":["SchemaValidator.ts"],"sourcesContent":["/**\n * @file SchemaValidator.ts\n * @description Structural validation utility to catch developer errors in the JSON schema itself.\n */\n\nimport { ISchema, FieldType } from \"../interfaces/ISchema\";\n\nexport class SchemaValidator {\n /**\n * Validates a parsed JSON schema object for structural correctness.\n * @param schema The schema object to validate\n * @returns An array of error strings. Empty if no errors.\n */\n public static validateSchemaStructure(schema: any): string[] {\n const errors: string[] = [];\n\n if (!schema || typeof schema !== \"object\") {\n return [\"Root schema must be an object.\"];\n }\n\n if (schema.type !== \"object\" && schema.type !== \"array\") {\n errors.push(`Root schema must have type 'object' or 'array'. Found: '${schema.type}'`);\n }\n\n if (schema.type === \"object\" && !schema.properties) {\n errors.push(\"Object schema is missing the 'properties' node.\");\n }\n\n if (schema.properties) {\n for (const key of Object.keys(schema.properties)) {\n const prop = schema.properties[key];\n if (!prop || typeof prop !== \"object\") {\n errors.push(`Property '${key}' must be an object.`);\n continue;\n }\n\n if (!prop.type) {\n errors.push(`Property '${key}' is missing 'type'.`);\n } else {\n const allowedTypes: FieldType[] = [\"string\", \"number\", \"boolean\", \"date\", \"object\", \"array\"];\n if (!allowedTypes.includes(prop.type)) {\n errors.push(`Property '${key}' has invalid type '${prop.type}'. Allowed: ${allowedTypes.join(\", \")}`);\n }\n }\n\n // Removed strict check for prop.items on array properties because inference handles empty definitions\n\n }\n }\n\n return errors;\n }\n}\n"],"mappings":"yCAOO,MAAMA,EAMT,8BAAcC,CAAwBC,GAClC,MAAMC,EAAmB,GAEzB,IAAKD,UAAiBA,IAAW,SAAU,CACvC,MAAO,CAAC,iCACZ,CAEA,GAAIA,EAAOE,OAAS,UAAYF,EAAOE,OAAS,QAAS,CACrDD,EAAOE,KAAK,2DAA2DH,EAAOE,QAClF,CAEA,GAAIF,EAAOE,OAAS,WAAaF,EAAOI,WAAY,CAChDH,EAAOE,KAAK,kDAChB,CAEA,GAAIH,EAAOI,WAAY,CACnB,IAAK,MAAMC,KAAOC,OAAOC,KAAKP,EAAOI,YAAa,CAC9C,MAAMI,EAAOR,EAAOI,WAAWC,GAC/B,IAAKG,UAAeA,IAAS,SAAU,CACnCP,EAAOE,KAAK,aAAaE,yBACzB,QACJ,CAEA,IAAKG,EAAKN,KAAM,CACZD,EAAOE,KAAK,aAAaE,wBAC7B,KAAO,CACH,MAAMI,EAA4B,CAAC,SAAU,SAAU,UAAW,OAAQ,SAAU,SACpF,IAAKA,EAAaC,SAASF,EAAKN,MAAO,CACnCD,EAAOE,KAAK,aAAaE,wBAA0BG,EAAKN,mBAAmBO,EAAaE,KAAK,QACjG,CACJ,CAIJ,CACJ,CAEA,OAAOV,CACX,EACH,IAAAW,EAAA,CAAAC,WAAA,MAAAD,EAAAd,kBAAA,OAAAc,CAAA","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file SchemaValidator.ts
3
+ * @description Structural validation utility to catch developer errors in the JSON schema itself.
4
+ */
5
+
6
+ import { ISchema, FieldType } from "../interfaces/ISchema";
7
+
8
+ export class SchemaValidator {
9
+ /**
10
+ * Validates a parsed JSON schema object for structural correctness.
11
+ * @param schema The schema object to validate
12
+ * @returns An array of error strings. Empty if no errors.
13
+ */
14
+ public static validateSchemaStructure(schema: any): string[] {
15
+ const errors: string[] = [];
16
+
17
+ if (!schema || typeof schema !== "object") {
18
+ return ["Root schema must be an object."];
19
+ }
20
+
21
+ if (schema.type !== "object" && schema.type !== "array") {
22
+ errors.push(`Root schema must have type 'object' or 'array'. Found: '${schema.type}'`);
23
+ }
24
+
25
+ if (schema.type === "object" && !schema.properties) {
26
+ errors.push("Object schema is missing the 'properties' node.");
27
+ }
28
+
29
+ if (schema.properties) {
30
+ for (const key of Object.keys(schema.properties)) {
31
+ const prop = schema.properties[key];
32
+ if (!prop || typeof prop !== "object") {
33
+ errors.push(`Property '${key}' must be an object.`);
34
+ continue;
35
+ }
36
+
37
+ if (!prop.type) {
38
+ errors.push(`Property '${key}' is missing 'type'.`);
39
+ } else {
40
+ const allowedTypes: FieldType[] = ["string", "number", "boolean", "date", "object", "array"];
41
+ if (!allowedTypes.includes(prop.type)) {
42
+ errors.push(`Property '${key}' has invalid type '${prop.type}'. Allowed: ${allowedTypes.join(", ")}`);
43
+ }
44
+ }
45
+
46
+ // Removed strict check for prop.items on array properties because inference handles empty definitions
47
+
48
+ }
49
+ }
50
+
51
+ return errors;
52
+ }
53
+ }
@@ -1,6 +1,7 @@
1
- sap.ui.define(["sap/ui/model/json/JSONModel"], function (JSONModel) {
1
+ sap.ui.define(["sap/ui/model/json/JSONModel", "./PipelineManager", "sap/ui/core/message/Message", "sap/ui/core/library", "sap/ui/core/Messaging"], function (JSONModel, ___PipelineManager, Message, coreLibrary, Messaging) {
2
2
  "use strict";
3
3
 
4
+ const GlobalPipeline = ___PipelineManager["GlobalPipeline"];
4
5
  /**
5
6
  * Manages the isolated internal data payload for the MetaUI engine.
6
7
  */
@@ -8,12 +9,88 @@ sap.ui.define(["sap/ui/model/json/JSONModel"], function (JSONModel) {
8
9
  /**
9
10
  * Initializes the state manager with an optional initial payload.
10
11
  * @param initialData The initial JSON payload to populate the fields.
12
+ * @param schema The normalized schema for live validation.
13
+ * @param modelName The UI5 model alias used for isolation.
11
14
  */
12
- constructor(initialData = {}) {
15
+ constructor(initialData = {}, schema, modelName = "meta") {
16
+ this.activeModelName = modelName;
17
+ this.schema = schema;
18
+
13
19
  // Deep copy to ensure no reference leakage from the host application
14
20
  const safeData = JSON.parse(JSON.stringify(initialData));
15
21
  this.model = new JSONModel(safeData);
16
22
  this.model.setDefaultBindingMode("TwoWay");
23
+
24
+ // Centralized Model-Level Validation Interceptor
25
+ const originalSetProperty = this.model.setProperty.bind(this.model);
26
+ this.model.setProperty = (sPath, oValue, oContext, bAsyncUpdate) => {
27
+ const result = originalSetProperty(sPath, oValue, oContext, bAsyncUpdate);
28
+ this.validatePath(sPath, oValue);
29
+ return result;
30
+ };
31
+ }
32
+
33
+ /**
34
+ * Validates a specific path against the schema and updates the MessageManager.
35
+ */
36
+ validatePath(sPath, value) {
37
+ const fieldKey = sPath.replace(/^\//, "");
38
+ const metadata = this.findMetadataForPath(fieldKey);
39
+ const messageManager = Messaging;
40
+ const targetPath = sPath.startsWith("/") ? sPath : `/${sPath}`; // Pure UI5: target MUST be absolute path
41
+
42
+ // 1. Remove existing messages (strictly for THIS model instance)
43
+ const existingMessages = messageManager.getMessageModel().getData();
44
+ const messagesToRemove = existingMessages.filter(msg => {
45
+ const isMatch = msg.getTarget() === targetPath && msg.getMessageProcessor() && msg.getMessageProcessor().getId() === this.model.getId();
46
+ return isMatch;
47
+ });
48
+ if (messagesToRemove.length > 0) {
49
+ messageManager.removeMessages(messagesToRemove);
50
+ }
51
+ if (!metadata) return;
52
+
53
+ // 2. Run GlobalPipeline
54
+ const validatorsToRun = [];
55
+ const argsMap = {};
56
+ if (metadata.required) {
57
+ validatorsToRun.push("required");
58
+ }
59
+ if (metadata.type === "string" && metadata.maxLength) {
60
+ validatorsToRun.push("maxLength");
61
+ argsMap["maxLength"] = {
62
+ max: metadata.maxLength
63
+ };
64
+ }
65
+ if (metadata.ui?.validators) {
66
+ for (const v of metadata.ui.validators) {
67
+ if (typeof v === "string") {
68
+ validatorsToRun.push(v);
69
+ } else if (v && v.name) {
70
+ validatorsToRun.push(v.name);
71
+ if (v.args !== undefined) {
72
+ argsMap[v.name] = v.args;
73
+ }
74
+ }
75
+ }
76
+ }
77
+ if (validatorsToRun.length > 0) {
78
+ const validationResult = GlobalPipeline.executeValidation(value, validatorsToRun, argsMap);
79
+ if (!validationResult.isValid) {
80
+ const newMsg = new Message({
81
+ message: validationResult.errorMessage || "Invalid value.",
82
+ type: coreLibrary.MessageType.Error,
83
+ target: targetPath,
84
+ processor: this.model
85
+ });
86
+ messageManager.addMessages(newMsg);
87
+ }
88
+ }
89
+ }
90
+ findMetadataForPath(path) {
91
+ if (!this.schema || !this.schema.properties) return undefined;
92
+ // Basic single-level support for now. Nested object resolution would split by '.' or '/'
93
+ return this.schema.properties[path];
17
94
  }
18
95
 
19
96
  /**
@@ -46,6 +123,15 @@ sap.ui.define(["sap/ui/model/json/JSONModel"], function (JSONModel) {
46
123
  const data = this.model.getData();
47
124
  return JSON.parse(JSON.stringify(data));
48
125
  }
126
+
127
+ /**
128
+ * Cleans up internal state and natively destroys the UI5 JSONModel to prevent memory leaks.
129
+ */
130
+ destroy() {
131
+ if (this.model) {
132
+ this.model.destroy();
133
+ }
134
+ }
49
135
  }
50
136
  var __exports = {
51
137
  __esModule: true
@@ -1 +1 @@
1
- {"version":3,"file":"StateManager-dbg.js","names":["StateManager","constructor","initialData","safeData","JSON","parse","stringify","model","JSONModel","setDefaultBindingMode","getModel","bindControl","control","property","bindingPath","bindProperty","path","extractPayload","data","getData","__exports","__esModule"],"sources":["StateManager.ts"],"sourcesContent":["/**\n * @file StateManager.ts\n * @description Isolated internal state management. Decouples the MetaUI engine from external host models.\n */\n\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport ManagedObject from \"sap/ui/base/ManagedObject\";\n\n/**\n * Manages the isolated internal data payload for the MetaUI engine.\n */\nexport class StateManager {\n private model: JSONModel;\n\n /**\n * Initializes the state manager with an optional initial payload.\n * @param initialData The initial JSON payload to populate the fields.\n */\n constructor(initialData: Record<string, any> = {}) {\n // Deep copy to ensure no reference leakage from the host application\n const safeData = JSON.parse(JSON.stringify(initialData));\n this.model = new JSONModel(safeData);\n this.model.setDefaultBindingMode(\"TwoWay\");\n }\n\n /**\n * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.\n * @returns The internal JSONModel.\n */\n public getModel(): JSONModel {\n return this.model;\n }\n\n /**\n * Binds a generated UI control property to a path in the internal model.\n * @param control The target UI5 Control.\n * @param property The UI5 property name (e.g., 'value').\n * @param bindingPath The exact path in the JSON payload.\n */\n public bindControl(control: ManagedObject, property: string, bindingPath: string): void {\n control.bindProperty(property, {\n path: bindingPath,\n model: \"meta\" // Assumes the model is bound to the root container with the name 'meta'\n });\n }\n\n /**\n * Extracts the flat JavaScript object representing the current state of the UI.\n * @returns A serialized record of the data payload, free of UI5 wrappers.\n */\n public extractPayload(): Record<string, any> {\n // Create a deep copy to prevent accidental mutations by the host\n const data = this.model.getData();\n return JSON.parse(JSON.stringify(data));\n }\n}\n"],"mappings":";;;EAQA;AACA;AACA;EACO,MAAMA,YAAY,CAAC;IAGtB;AACJ;AACA;AACA;IACIC,WAAWA,CAACC,WAAgC,GAAG,CAAC,CAAC,EAAE;MAC/C;MACA,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,WAAW,CAAC,CAAC;MACxD,IAAI,CAACK,KAAK,GAAG,IAAIC,SAAS,CAACL,QAAQ,CAAC;MACpC,IAAI,CAACI,KAAK,CAACE,qBAAqB,CAAC,QAAQ,CAAC;IAC9C;;IAEA;AACJ;AACA;AACA;IACWC,QAAQA,CAAA,EAAc;MACzB,OAAO,IAAI,CAACH,KAAK;IACrB;;IAEA;AACJ;AACA;AACA;AACA;AACA;IACWI,WAAWA,CAACC,OAAsB,EAAEC,QAAgB,EAAEC,WAAmB,EAAQ;MACpFF,OAAO,CAACG,YAAY,CAACF,QAAQ,EAAE;QAC3BG,IAAI,EAAEF,WAAW;QACjBP,KAAK,EAAE,MAAM,CAAC;MAClB,CAAC,CAAC;IACN;;IAEA;AACJ;AACA;AACA;IACWU,cAAcA,CAAA,EAAwB;MACzC;MACA,MAAMC,IAAI,GAAG,IAAI,CAACX,KAAK,CAACY,OAAO,CAAC,CAAC;MACjC,OAAOf,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACY,IAAI,CAAC,CAAC;IAC3C;EACJ;EAAC,IAAAE,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAApB,YAAA,GAAAA,YAAA;EAAA,OAAAoB,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"StateManager-dbg.js","names":["GlobalPipeline","___PipelineManager","StateManager","constructor","initialData","schema","modelName","activeModelName","safeData","JSON","parse","stringify","model","JSONModel","setDefaultBindingMode","originalSetProperty","setProperty","bind","sPath","oValue","oContext","bAsyncUpdate","result","validatePath","value","fieldKey","replace","metadata","findMetadataForPath","messageManager","Messaging","targetPath","startsWith","existingMessages","getMessageModel","getData","messagesToRemove","filter","msg","isMatch","getTarget","getMessageProcessor","getId","length","removeMessages","validatorsToRun","argsMap","required","push","type","maxLength","max","ui","validators","v","name","args","undefined","validationResult","executeValidation","isValid","newMsg","Message","message","errorMessage","coreLibrary","MessageType","Error","target","processor","addMessages","path","properties","getModel","bindControl","control","property","bindingPath","bindProperty","extractPayload","data","destroy","__exports","__esModule"],"sources":["StateManager.ts"],"sourcesContent":["/**\n * @file StateManager.ts\n * @description Isolated internal state management. Decouples the MetaUI engine from external host models.\n */\n\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport ManagedObject from \"sap/ui/base/ManagedObject\";\nimport { ISchema, IPropertyMetadata } from \"../interfaces/ISchema\";\nimport { GlobalPipeline } from \"./PipelineManager\";\nimport Message from \"sap/ui/core/message/Message\";\nimport coreLibrary from \"sap/ui/core/library\";\nimport Core from \"sap/ui/core/Core\";\nimport Messaging from \"sap/ui/core/Messaging\";\n\n\n/**\n * Manages the isolated internal data payload for the MetaUI engine.\n */\nexport class StateManager {\n private model: JSONModel;\n private activeModelName: string;\n private schema: ISchema;\n\n /**\n * Initializes the state manager with an optional initial payload.\n * @param initialData The initial JSON payload to populate the fields.\n * @param schema The normalized schema for live validation.\n * @param modelName The UI5 model alias used for isolation.\n */\n constructor(initialData: Record<string, any> = {}, schema: ISchema, modelName: string = \"meta\") {\n this.activeModelName = modelName;\n this.schema = schema;\n \n // Deep copy to ensure no reference leakage from the host application\n const safeData = JSON.parse(JSON.stringify(initialData));\n this.model = new JSONModel(safeData);\n this.model.setDefaultBindingMode(\"TwoWay\");\n\n // Centralized Model-Level Validation Interceptor\n const originalSetProperty = this.model.setProperty.bind(this.model);\n this.model.setProperty = (sPath: string, oValue: any, oContext?: any, bAsyncUpdate?: boolean) => {\n const result = originalSetProperty(sPath, oValue, oContext, bAsyncUpdate);\n this.validatePath(sPath, oValue);\n return result;\n };\n }\n\n /**\n * Validates a specific path against the schema and updates the MessageManager.\n */\n private validatePath(sPath: string, value: any): void {\n const fieldKey = sPath.replace(/^\\//, \"\");\n const metadata = this.findMetadataForPath(fieldKey);\n \n const messageManager = Messaging;\n const targetPath = sPath.startsWith(\"/\") ? sPath : `/${sPath}`; // Pure UI5: target MUST be absolute path\n \n // 1. Remove existing messages (strictly for THIS model instance)\n const existingMessages = messageManager.getMessageModel().getData();\n const messagesToRemove = existingMessages.filter((msg: any) => {\n const isMatch = msg.getTarget() === targetPath && msg.getMessageProcessor() && msg.getMessageProcessor().getId() === this.model.getId();\n return isMatch;\n });\n \n \n if (messagesToRemove.length > 0) {\n messageManager.removeMessages(messagesToRemove);\n }\n\n if (!metadata) return;\n\n // 2. Run GlobalPipeline\n const validatorsToRun: string[] = [];\n const argsMap: Record<string, any> = {};\n\n if (metadata.required) {\n validatorsToRun.push(\"required\");\n }\n if (metadata.type === \"string\" && metadata.maxLength) {\n validatorsToRun.push(\"maxLength\");\n argsMap[\"maxLength\"] = { max: metadata.maxLength };\n }\n if (metadata.ui?.validators) {\n for (const v of metadata.ui.validators) {\n if (typeof v === \"string\") {\n validatorsToRun.push(v);\n } else if (v && v.name) {\n validatorsToRun.push(v.name);\n if (v.args !== undefined) {\n argsMap[v.name] = v.args;\n }\n }\n }\n }\n\n if (validatorsToRun.length > 0) {\n const validationResult = GlobalPipeline.executeValidation(value, validatorsToRun, argsMap);\n if (!validationResult.isValid) {\n const newMsg = new Message({\n message: validationResult.errorMessage || \"Invalid value.\",\n type: coreLibrary.MessageType.Error,\n target: targetPath,\n processor: this.model\n });\n messageManager.addMessages(newMsg);\n }\n }\n }\n\n private findMetadataForPath(path: string): IPropertyMetadata | undefined {\n if (!this.schema || !this.schema.properties) return undefined;\n // Basic single-level support for now. Nested object resolution would split by '.' or '/'\n return this.schema.properties[path];\n }\n\n\n\n /**\n * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.\n * @returns The internal JSONModel.\n */\n public getModel(): JSONModel {\n return this.model;\n }\n\n /**\n * Binds a generated UI control property to a path in the internal model.\n * @param control The target UI5 Control.\n * @param property The UI5 property name (e.g., 'value').\n * @param bindingPath The exact path in the JSON payload.\n */\n public bindControl(control: ManagedObject, property: string, bindingPath: string): void {\n control.bindProperty(property, {\n path: bindingPath,\n model: \"meta\" // Assumes the model is bound to the root container with the name 'meta'\n });\n }\n\n /**\n * Extracts the flat JavaScript object representing the current state of the UI.\n * @returns A serialized record of the data payload, free of UI5 wrappers.\n */\n public extractPayload(): Record<string, any> {\n // Create a deep copy to prevent accidental mutations by the host\n const data = this.model.getData();\n return JSON.parse(JSON.stringify(data));\n }\n\n /**\n * Cleans up internal state and natively destroys the UI5 JSONModel to prevent memory leaks.\n */\n public destroy(): void {\n \n if (this.model) {\n this.model.destroy();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,16 +5,26 @@ declare module "nz/co/siliconst/ui5/metaui/core/StateManager" {
5
5
  */
6
6
  import JSONModel from "sap/ui/model/json/JSONModel";
7
7
  import ManagedObject from "sap/ui/base/ManagedObject";
8
+ import { ISchema } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
8
9
  /**
9
10
  * Manages the isolated internal data payload for the MetaUI engine.
10
11
  */
11
12
  export class StateManager {
12
13
  private model;
14
+ private activeModelName;
15
+ private schema;
13
16
  /**
14
17
  * Initializes the state manager with an optional initial payload.
15
18
  * @param initialData The initial JSON payload to populate the fields.
19
+ * @param schema The normalized schema for live validation.
20
+ * @param modelName The UI5 model alias used for isolation.
16
21
  */
17
- constructor(initialData?: Record<string, any>);
22
+ constructor(initialData: Record<string, any>, schema: ISchema, modelName?: string);
23
+ /**
24
+ * Validates a specific path against the schema and updates the MessageManager.
25
+ */
26
+ private validatePath;
27
+ private findMetadataForPath;
18
28
  /**
19
29
  * Retrieves the isolated JSONModel instance to attach to the root GeneratorHost control.
20
30
  * @returns The internal JSONModel.
@@ -32,6 +42,10 @@ declare module "nz/co/siliconst/ui5/metaui/core/StateManager" {
32
42
  * @returns A serialized record of the data payload, free of UI5 wrappers.
33
43
  */
34
44
  extractPayload(): Record<string, any>;
45
+ /**
46
+ * Cleans up internal state and natively destroys the UI5 JSONModel to prevent memory leaks.
47
+ */
48
+ destroy(): void;
35
49
  }
36
50
  }
37
51
  //# sourceMappingURL=StateManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateManager.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/core/StateManager.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8CAA8C,CAAC;IAC9D;;;OAGG;IAEH,OAAO,SAAS,MAAM,6BAA6B,CAAC;IACpD,OAAO,aAAa,MAAM,2BAA2B,CAAC;IAEtD;;OAEG;IACH,MAAa,YAAY;QACrB,OAAO,CAAC,KAAK,CAAY;QAEzB;;;WAGG;oBACS,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;QAOjD;;;WAGG;QACI,QAAQ,IAAI,SAAS;QAI5B;;;;;WAKG;QACI,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;QAOvF;;;WAGG;QACI,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;KAK/C;CAEA"}
1
+ {"version":3,"file":"StateManager.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/core/StateManager.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8CAA8C,CAAC;IAC9D;;;OAGG;IAEH,OAAO,SAAS,MAAM,6BAA6B,CAAC;IACpD,OAAO,aAAa,MAAM,2BAA2B,CAAC;IACtD,OAAO,EAAE,OAAO,EAAqB,MAAM,+CAA+C,CAAC;IAQ3F;;OAEG;IACH,MAAa,YAAY;QACrB,OAAO,CAAC,KAAK,CAAY;QACzB,OAAO,CAAC,eAAe,CAAS;QAChC,OAAO,CAAC,MAAM,CAAU;QAExB;;;;;WAKG;oBACS,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAE,MAAe;QAkB9F;;WAEG;QACH,OAAO,CAAC,YAAY;QA2DpB,OAAO,CAAC,mBAAmB;QAQ3B;;;WAGG;QACI,QAAQ,IAAI,SAAS;QAI5B;;;;;WAKG;QACI,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;QAOvF;;;WAGG;QACI,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QAM5C;;WAEG;QACI,OAAO,IAAI,IAAI;KAMzB;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["sap/ui/model/json/JSONModel"],function(e){"use strict";class t{constructor(t={}){const o=JSON.parse(JSON.stringify(t));this.model=new e(o);this.model.setDefaultBindingMode("TwoWay")}getModel(){return this.model}bindControl(e,t,o){e.bindProperty(t,{path:o,model:"meta"})}extractPayload(){const e=this.model.getData();return JSON.parse(JSON.stringify(e))}}var o={__esModule:true};o.StateManager=t;return o});
1
+ sap.ui.define(["sap/ui/model/json/JSONModel","./PipelineManager","sap/ui/core/message/Message","sap/ui/core/library","sap/ui/core/Messaging"],function(e,t,s,a,i){"use strict";const r=t["GlobalPipeline"];class o{constructor(t={},s,a="meta"){this.activeModelName=a;this.schema=s;const i=JSON.parse(JSON.stringify(t));this.model=new e(i);this.model.setDefaultBindingMode("TwoWay");const r=this.model.setProperty.bind(this.model);this.model.setProperty=(e,t,s,a)=>{const i=r(e,t,s,a);this.validatePath(e,t);return i}}validatePath(e,t){const o=e.replace(/^\//,"");const n=this.findMetadataForPath(o);const d=i;const l=e.startsWith("/")?e:`/${e}`;const g=d.getMessageModel().getData();const h=g.filter(e=>{const t=e.getTarget()===l&&e.getMessageProcessor()&&e.getMessageProcessor().getId()===this.model.getId();return t});if(h.length>0){d.removeMessages(h)}if(!n)return;const c=[];const m={};if(n.required){c.push("required")}if(n.type==="string"&&n.maxLength){c.push("maxLength");m["maxLength"]={max:n.maxLength}}if(n.ui?.validators){for(const e of n.ui.validators){if(typeof e==="string"){c.push(e)}else if(e&&e.name){c.push(e.name);if(e.args!==undefined){m[e.name]=e.args}}}}if(c.length>0){const e=r.executeValidation(t,c,m);if(!e.isValid){const t=new s({message:e.errorMessage||"Invalid value.",type:a.MessageType.Error,target:l,processor:this.model});d.addMessages(t)}}}findMetadataForPath(e){if(!this.schema||!this.schema.properties)return undefined;return this.schema.properties[e]}getModel(){return this.model}bindControl(e,t,s){e.bindProperty(t,{path:s,model:"meta"})}extractPayload(){const e=this.model.getData();return JSON.parse(JSON.stringify(e))}destroy(){if(this.model){this.model.destroy()}}}var n={__esModule:true};n.StateManager=o;return n});
2
2
  //# sourceMappingURL=StateManager.js.map