@siliconst/metaui 1.0.2 → 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 (588) hide show
  1. package/README.md +203 -123
  2. package/package.json +3 -2
  3. package/src/nz/co/siliconst/ui5/metaui/.library +7 -7
  4. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js +70 -0
  5. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -0
  6. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts +67 -0
  7. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts.map +1 -0
  8. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js +2 -0
  9. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -0
  10. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +58 -0
  11. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js +28 -0
  12. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -0
  13. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts +16 -0
  14. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -0
  15. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js +2 -0
  16. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -0
  17. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +28 -0
  18. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +142 -0
  19. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -0
  20. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +33 -0
  21. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -0
  22. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +2 -0
  23. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -0
  24. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +164 -0
  25. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +266 -0
  26. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -0
  27. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +162 -0
  28. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -0
  29. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +2 -0
  30. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -0
  31. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +203 -0
  32. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +73 -0
  33. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -0
  34. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +32 -0
  35. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -0
  36. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +2 -0
  37. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -0
  38. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +86 -0
  39. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +60 -0
  40. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -0
  41. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +32 -0
  42. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -0
  43. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +2 -0
  44. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -0
  45. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +61 -0
  46. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +157 -0
  47. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -0
  48. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +33 -0
  49. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -0
  50. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +2 -0
  51. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -0
  52. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +169 -0
  53. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +160 -0
  54. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -0
  55. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +28 -0
  56. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -0
  57. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +2 -0
  58. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -0
  59. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +185 -0
  60. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +443 -0
  61. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -0
  62. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +227 -0
  63. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -0
  64. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +2 -0
  65. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -0
  66. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +421 -0
  67. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +103 -0
  68. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -0
  69. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +32 -0
  70. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -0
  71. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +2 -0
  72. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -0
  73. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +119 -0
  74. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +64 -0
  75. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -0
  76. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +21 -0
  77. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -0
  78. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +2 -0
  79. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -0
  80. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +64 -0
  81. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +120 -0
  82. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -0
  83. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +45 -0
  84. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -0
  85. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +2 -0
  86. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -0
  87. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +131 -0
  88. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +76 -43
  89. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
  90. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +31 -6
  91. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
  92. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +1 -1
  93. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
  94. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +75 -40
  95. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +62 -0
  96. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -0
  97. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +26 -0
  98. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -0
  99. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +2 -0
  100. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -0
  101. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +62 -0
  102. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +197 -58
  103. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  104. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +63 -9
  105. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  107. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  108. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +205 -56
  109. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +32 -0
  110. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +1 -0
  111. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +16 -0
  112. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +1 -0
  113. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +2 -0
  114. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +1 -0
  115. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +26 -0
  116. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +123 -0
  117. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -0
  118. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +49 -0
  119. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -0
  120. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +2 -0
  121. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -0
  122. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +106 -0
  123. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +151 -59
  124. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  125. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +23 -13
  126. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  129. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +160 -56
  130. package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js +79 -0
  131. package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js.map +1 -0
  132. package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts +43 -0
  133. package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts.map +1 -0
  134. package/src/nz/co/siliconst/ui5/metaui/core/Registry.js +2 -0
  135. package/src/nz/co/siliconst/ui5/metaui/core/Registry.js.map +1 -0
  136. package/src/nz/co/siliconst/ui5/metaui/core/Registry.ts +70 -0
  137. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +196 -36
  138. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  139. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +14 -8
  140. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  141. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  142. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +208 -31
  144. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +54 -0
  145. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -0
  146. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts +11 -0
  147. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -0
  148. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +2 -0
  149. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -0
  150. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +53 -0
  151. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +141 -55
  152. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  153. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +15 -1
  154. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  155. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
  156. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  157. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +158 -56
  158. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js +1 -1
  159. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +7 -14
  161. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -1
  162. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.ts +21 -26
  163. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js +2 -0
  164. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js.map +1 -0
  165. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts +38 -0
  166. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts.map +1 -0
  167. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js +2 -0
  168. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js.map +1 -0
  169. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.ts +39 -0
  170. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js +1 -1
  171. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  172. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +34 -15
  173. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +55 -33
  175. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js +1 -1
  176. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  177. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +63 -44
  178. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  179. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +102 -70
  180. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +144 -0
  181. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -0
  182. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +27 -0
  183. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -0
  184. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js +2 -0
  185. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -0
  186. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +139 -0
  187. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +169 -56
  188. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +19 -12
  190. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  191. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +161 -60
  194. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +169 -90
  195. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  196. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +21 -12
  197. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  198. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  199. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  200. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +188 -102
  201. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +125 -0
  202. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -0
  203. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +28 -0
  204. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -0
  205. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js +2 -0
  206. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -0
  207. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +127 -0
  208. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +48 -32
  209. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +72 -20
  211. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  212. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +1 -0
  213. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
  214. package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
  215. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
  216. package/src/nz/co/siliconst/ui5/metaui/library.ts +68 -43
  217. package/src/nz/co/siliconst/ui5/metaui/manifest.json +9 -1
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +58 -0
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -0
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts +22 -0
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -0
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js +2 -0
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -0
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +57 -0
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +55 -0
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -0
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts +21 -0
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts.map +1 -0
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js +2 -0
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -0
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +54 -0
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js +46 -0
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js.map +1 -0
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts +23 -0
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts.map +1 -0
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js +2 -0
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js.map +1 -0
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.ts +45 -0
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +74 -0
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -0
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +15 -0
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -0
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +2 -0
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -0
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +80 -0
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +75 -0
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -0
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +12 -0
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -0
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +2 -0
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -0
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +83 -0
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +174 -0
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -0
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +78 -0
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -0
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +2 -0
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -0
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +165 -0
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +79 -0
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -0
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +36 -0
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -0
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +2 -0
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -0
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +77 -0
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +60 -0
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -0
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +11 -0
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -0
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +2 -0
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -0
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +56 -0
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +122 -0
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -0
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +24 -0
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -0
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +2 -0
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -0
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +125 -0
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +78 -0
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -0
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +18 -0
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -0
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +2 -0
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -0
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +74 -0
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +78 -0
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -0
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +18 -0
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -0
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +2 -0
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -0
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +75 -0
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +109 -0
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -0
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +37 -0
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -0
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +2 -0
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -0
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +105 -0
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +65 -0
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -0
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +21 -0
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -0
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +2 -0
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -0
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +64 -0
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +59 -0
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -0
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +11 -0
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -0
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +2 -0
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -0
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +56 -0
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +45 -0
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -0
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +22 -0
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -0
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js +2 -0
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -0
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +42 -0
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +74 -0
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -0
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +22 -0
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -0
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +2 -0
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -0
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +73 -0
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +61 -0
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -0
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +18 -0
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -0
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +2 -0
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -0
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +62 -0
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +74 -0
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -0
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +17 -0
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -0
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +2 -0
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -0
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +81 -0
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +61 -0
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -0
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +21 -0
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -0
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +2 -0
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -0
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +62 -0
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +64 -0
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -0
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +16 -0
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -0
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +2 -0
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -0
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +67 -0
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +58 -0
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -0
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +11 -0
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -0
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +2 -0
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -0
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +55 -0
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +64 -0
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -0
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +21 -0
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -0
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +2 -0
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -0
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +65 -0
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +87 -0
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -0
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +37 -0
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -0
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +2 -0
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -0
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +85 -0
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +61 -0
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -0
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +18 -0
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -0
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +2 -0
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -0
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +62 -0
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +64 -0
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -0
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +18 -0
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -0
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +2 -0
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -0
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +63 -0
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +79 -0
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -0
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +18 -0
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -0
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +2 -0
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -0
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +76 -0
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +62 -0
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -0
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +11 -0
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -0
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +2 -0
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -0
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +59 -0
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +94 -0
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -0
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts +29 -0
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -0
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js +2 -0
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -0
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +102 -0
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +60 -0
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -0
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts +22 -0
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -0
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +2 -0
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -0
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +57 -0
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +106 -0
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -0
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +22 -0
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -0
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +2 -0
  426. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -0
  427. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +101 -0
  428. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +77 -0
  429. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -0
  430. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts +25 -0
  431. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -0
  432. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js +2 -0
  433. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -0
  434. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +86 -0
  435. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js +36 -0
  436. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js.map +1 -0
  437. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts +25 -0
  438. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts.map +1 -0
  439. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js +2 -0
  440. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js.map +1 -0
  441. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.ts +36 -0
  442. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js +32 -0
  443. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js.map +1 -0
  444. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts +19 -0
  445. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts.map +1 -0
  446. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js +2 -0
  447. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js.map +1 -0
  448. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.ts +31 -0
  449. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js +32 -0
  450. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js.map +1 -0
  451. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts +17 -0
  452. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts.map +1 -0
  453. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js +2 -0
  454. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js.map +1 -0
  455. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.ts +27 -0
  456. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js +31 -0
  457. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js.map +1 -0
  458. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts +18 -0
  459. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts.map +1 -0
  460. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js +2 -0
  461. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js.map +1 -0
  462. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.ts +23 -0
  463. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js +45 -0
  464. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js.map +1 -0
  465. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts +24 -0
  466. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts.map +1 -0
  467. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js +2 -0
  468. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js.map +1 -0
  469. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.ts +30 -0
  470. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js +42 -0
  471. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js.map +1 -0
  472. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts +18 -0
  473. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts.map +1 -0
  474. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js +2 -0
  475. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js.map +1 -0
  476. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.ts +29 -0
  477. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js +41 -0
  478. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js.map +1 -0
  479. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts +17 -0
  480. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts.map +1 -0
  481. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js +2 -0
  482. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js.map +1 -0
  483. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.ts +25 -0
  484. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js +51 -0
  485. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js.map +1 -0
  486. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts +17 -0
  487. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts.map +1 -0
  488. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js +2 -0
  489. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js.map +1 -0
  490. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.ts +33 -0
  491. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js +48 -0
  492. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js.map +1 -0
  493. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts +17 -0
  494. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts.map +1 -0
  495. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js +2 -0
  496. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js.map +1 -0
  497. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.ts +32 -0
  498. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js +46 -0
  499. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js.map +1 -0
  500. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts +17 -0
  501. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts.map +1 -0
  502. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js +2 -0
  503. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js.map +1 -0
  504. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.ts +29 -0
  505. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js +83 -0
  506. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -0
  507. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts +29 -0
  508. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -0
  509. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js +2 -0
  510. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -0
  511. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +75 -0
  512. package/ui5.yaml +3 -3
  513. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +0 -164
  514. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +0 -1
  515. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +0 -82
  516. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +0 -1
  517. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +0 -2
  518. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +0 -1
  519. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.ts +0 -162
  520. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js +0 -51
  521. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +0 -1
  522. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +0 -31
  523. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +0 -1
  524. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +0 -2
  525. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +0 -1
  526. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.ts +0 -45
  527. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +0 -2
  528. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +0 -1
  529. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts +0 -29
  530. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +0 -1
  531. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js +0 -2
  532. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js.map +0 -1
  533. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.ts +0 -29
  534. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +0 -39
  535. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +0 -1
  536. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +0 -28
  537. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +0 -1
  538. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +0 -2
  539. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +0 -1
  540. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.ts +0 -34
  541. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +0 -60
  542. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +0 -1
  543. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +0 -43
  544. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +0 -1
  545. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +0 -2
  546. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +0 -1
  547. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.ts +0 -58
  548. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +0 -43
  549. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +0 -1
  550. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +0 -18
  551. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +0 -1
  552. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +0 -2
  553. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +0 -1
  554. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts +0 -42
  555. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js +0 -61
  556. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +0 -1
  557. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts +0 -18
  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 -63
  562. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +0 -67
  563. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +0 -1
  564. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +0 -18
  565. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +0 -1
  566. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +0 -2
  567. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +0 -1
  568. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts +0 -65
  569. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js +0 -54
  570. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +0 -1
  571. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts +0 -18
  572. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +0 -1
  573. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +0 -2
  574. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +0 -1
  575. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts +0 -55
  576. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +0 -54
  577. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +0 -1
  578. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +0 -18
  579. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +0 -1
  580. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +0 -2
  581. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +0 -1
  582. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts +0 -55
  583. package/test-resources/App.js +0 -11
  584. package/test-resources/Main.controller.js +0 -73
  585. package/test-resources/Main.view.xml +0 -42
  586. package/test-resources/index.html +0 -21
  587. package/test-resources/mockData.json +0 -27
  588. package/test-resources/mockSchema.json +0 -98
@@ -1,37 +1,197 @@
1
- sap.ui.define([], function () {
2
- "use strict";
3
-
4
- /**
5
- * @file SchemaNormalizer.ts
6
- * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.
7
- */
8
-
9
- /**
10
- * Utility class ensuring data fidelity before layout construction begins.
11
- */
12
- class SchemaNormalizer {
13
- /**
14
- * Validates that the provided raw payload conforms to the required ISchema structures.
15
- * @param rawSchema The heterogeneous JSON object provided to the Engine.
16
- * @returns The strictly cast ISchema matrix.
17
- * @throws Error if the mandatory schema properties are missing.
18
- */
19
- static normalize(rawSchema) {
20
- if (!rawSchema || typeof rawSchema !== 'object') {
21
- throw new Error("[MetaUI] Invalid Schema Payload: Payload is not an object.");
22
- }
23
- if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {
24
- throw new Error("[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).");
25
- }
26
-
27
- // Return the strongly typed and validated schema block.
28
- return rawSchema;
29
- }
30
- }
31
- var __exports = {
32
- __esModule: true
33
- };
34
- __exports.SchemaNormalizer = SchemaNormalizer;
35
- return __exports;
36
- });
1
+ sap.ui.define(["../utils/Logger"], function (___utils_Logger) {
2
+ "use strict";
3
+
4
+ /**
5
+ * @file SchemaNormalizer.ts
6
+ * @description Transforms and validates incoming JSON payloads into the strict v2 ISchema dictionary matrix.
7
+ */
8
+ const Logger = ___utils_Logger["Logger"];
9
+ class SchemaNormalizer {
10
+ /**
11
+ * Validates that the provided raw payload conforms to the required ISchema structures.
12
+ */
13
+ static normalize(rawSchema, data) {
14
+ let schemaObj = rawSchema;
15
+ if (typeof schemaObj === "string") {
16
+ try {
17
+ schemaObj = JSON.parse(schemaObj);
18
+ } catch (e) {
19
+ const msg = e.message;
20
+ Logger.error("[MetaUI SchemaNormalizer] Failed to parse schema string.", msg);
21
+ Logger.showErrorPopup(`Failed to parse the provided JSON schema.\n\nDetails: ${msg}`);
22
+ schemaObj = null;
23
+ }
24
+ }
25
+ if (!schemaObj || typeof schemaObj !== 'object' || Array.isArray(schemaObj)) {
26
+ return this.inferSchemaFromData(data);
27
+ }
28
+ try {
29
+ // It is an object. Ensure it conforms to v2 structure.
30
+ const normalized = {
31
+ title: schemaObj.title,
32
+ type: schemaObj.type || (schemaObj.items ? "array" : "object"),
33
+ layoutStrategy: schemaObj.layoutStrategy,
34
+ uiLayout: schemaObj.uiLayout,
35
+ additionalProperties: schemaObj.additionalProperties
36
+ };
37
+ let targetProperties = schemaObj.properties || {};
38
+ if (schemaObj.additionalProperties === true && data) {
39
+ const inferred = this.inferSchemaFromData(data);
40
+ if (inferred.type === "object" && inferred.properties) {
41
+ targetProperties = this.deepMergeProperties(inferred.properties, targetProperties);
42
+ } else if (inferred.type === "array" && inferred.items && inferred.items.properties) {
43
+ // Array schema merging could be added here if we want full support.
44
+ }
45
+ }
46
+ if (normalized.type === "object") {
47
+ normalized.properties = this.normalizeProperties(targetProperties);
48
+ } else if (normalized.type === "array") {
49
+ // Future expansion: array deep merge
50
+ normalized.items = this.normalizePropertyMetadata(schemaObj.items || {
51
+ type: "object",
52
+ properties: {}
53
+ }, "items");
54
+ }
55
+ return normalized;
56
+ } catch (error) {
57
+ const msg = error.message;
58
+ Logger.error("[MetaUI SchemaNormalizer] Critical error normalizing schema object.", msg);
59
+ Logger.showErrorPopup(`Schema Normalization failed.\n\nDetails: ${msg}`);
60
+ // Fallback to empty object to prevent hard crash downstream
61
+ return {
62
+ type: "object",
63
+ properties: {}
64
+ };
65
+ }
66
+ }
67
+ static deepMergeProperties(base, override) {
68
+ const merged = {
69
+ ...base
70
+ };
71
+ for (const key of Object.keys(override)) {
72
+ const overrideVal = override[key];
73
+ const baseVal = merged[key];
74
+ if (baseVal && typeof baseVal === "object" && !Array.isArray(baseVal) && overrideVal && typeof overrideVal === "object" && !Array.isArray(overrideVal)) {
75
+ merged[key] = this.deepMergeProperties(baseVal, overrideVal);
76
+ } else {
77
+ merged[key] = overrideVal;
78
+ }
79
+ }
80
+ return merged;
81
+ }
82
+ static normalizeProperties(properties) {
83
+ const normalizedProps = {};
84
+ for (const key of Object.keys(properties)) {
85
+ normalizedProps[key] = this.normalizePropertyMetadata(properties[key], key);
86
+ }
87
+ return normalizedProps;
88
+ }
89
+ static normalizePropertyMetadata(prop, keyName) {
90
+ const normalized = {
91
+ type: prop.type || "string",
92
+ ui: {
93
+ label: prop.ui?.label || this.generateLabel(keyName),
94
+ isKey: !!prop.ui?.isKey,
95
+ readOnly: !!prop.ui?.readOnly,
96
+ widget: prop.ui?.widget || (prop.valueHelp || prop.enum ? "select" : undefined),
97
+ visibleOn: prop.ui?.visibleOn,
98
+ enabledOn: prop.ui?.enabledOn,
99
+ format: prop.ui?.format,
100
+ validators: prop.ui?.validators,
101
+ formatter: prop.ui?.formatter,
102
+ args: prop.ui?.args,
103
+ rows: prop.ui?.rows,
104
+ fullWidth: prop.ui?.fullWidth
105
+ },
106
+ required: !!prop.required,
107
+ maxLength: prop.maxLength,
108
+ minimum: prop.minimum,
109
+ maximum: prop.maximum,
110
+ pattern: prop.pattern,
111
+ precision: prop.precision,
112
+ scale: prop.scale,
113
+ valueHelp: prop.valueHelp,
114
+ enum: prop.enum
115
+ };
116
+ if (normalized.type === "object" && prop.properties) {
117
+ normalized.properties = this.normalizeProperties(prop.properties);
118
+ normalized.uiLayout = prop.uiLayout;
119
+ } else if (normalized.type === "array" && prop.items) {
120
+ normalized.items = this.normalizePropertyMetadata(prop.items, "items");
121
+ normalized.uiLayout = prop.uiLayout;
122
+ }
123
+ return normalized;
124
+ }
125
+
126
+ /**
127
+ * Generates a Title Case label from camelCase or snake_case technical names.
128
+ */
129
+ static generateLabel(name) {
130
+ if (!name) return "";
131
+ let spaced = name.replace(/([A-Z])/g, " $1").replace(/_/g, " ");
132
+ return spaced.split(' ').filter(w => w.length > 0).map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ').trim();
133
+ }
134
+
135
+ /**
136
+ * Infers a v2 ISchema structure dynamically from a plain data payload.
137
+ */
138
+ static inferSchemaFromData(data) {
139
+ const schema = {
140
+ type: "object",
141
+ properties: {},
142
+ layoutStrategy: "compact",
143
+ title: ""
144
+ };
145
+ if (!data || typeof data !== "object") {
146
+ return schema;
147
+ }
148
+ if (Array.isArray(data)) {
149
+ schema.type = "array";
150
+ schema.layoutStrategy = "table";
151
+ schema.items = {
152
+ type: "object",
153
+ layoutStrategy: "compact",
154
+ properties: data.length > 0 ? this.inferPropertiesFromObject(data[0]) : {}
155
+ };
156
+ } else {
157
+ schema.type = "object";
158
+ schema.properties = this.inferPropertiesFromObject(data);
159
+ }
160
+ return schema;
161
+ }
162
+ static inferPropertiesFromObject(obj) {
163
+ const properties = {};
164
+ if (!obj || typeof obj !== "object") return properties;
165
+ for (const key of Object.keys(obj)) {
166
+ const val = obj[key];
167
+ if (val === null || val === undefined) continue;
168
+ if (typeof val === "object" && !Array.isArray(val)) continue;
169
+ let type = "string";
170
+ let items;
171
+ if (typeof val === "number") type = "number";else if (typeof val === "boolean") type = "boolean";else if (Array.isArray(val)) {
172
+ type = "array";
173
+ items = {
174
+ type: "object",
175
+ properties: val.length > 0 ? this.inferPropertiesFromObject(val[0]) : {}
176
+ };
177
+ }
178
+ properties[key] = {
179
+ type,
180
+ items,
181
+ ui: {
182
+ label: this.generateLabel(key),
183
+ isKey: false,
184
+ readOnly: false
185
+ }
186
+ };
187
+ }
188
+ return properties;
189
+ }
190
+ }
191
+ var __exports = {
192
+ __esModule: true
193
+ };
194
+ __exports.SchemaNormalizer = SchemaNormalizer;
195
+ return __exports;
196
+ });
37
197
  //# sourceMappingURL=SchemaNormalizer-dbg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaNormalizer-dbg.js","names":["SchemaNormalizer","normalize","rawSchema","Error","mode","rootFields","tables","__exports","__esModule"],"sources":["SchemaNormalizer.ts"],"sourcesContent":["/**\r\n * @file SchemaNormalizer.ts\r\n * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.\r\n */\r\n\r\nimport { ISchema } from \"../interfaces/ISchema\";\r\n\r\n/**\r\n * Utility class ensuring data fidelity before layout construction begins.\r\n */\r\nexport class SchemaNormalizer {\r\n \r\n /**\r\n * Validates that the provided raw payload conforms to the required ISchema structures.\r\n * @param rawSchema The heterogeneous JSON object provided to the Engine.\r\n * @returns The strictly cast ISchema matrix.\r\n * @throws Error if the mandatory schema properties are missing.\r\n */\r\n public static normalize(rawSchema: any): ISchema {\r\n if (!rawSchema || typeof rawSchema !== 'object') {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Payload is not an object.\");\r\n }\r\n \r\n if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).\");\r\n }\r\n\r\n // Return the strongly typed and validated schema block.\r\n return rawSchema as ISchema;\r\n }\r\n}\r\n"],"mappings":";;;EAAA;AACA;AACA;AACA;;EAIA;AACA;AACA;EACO,MAAMA,gBAAgB,CAAC;IAE1B;AACJ;AACA;AACA;AACA;AACA;IACI,OAAcC,SAASA,CAACC,SAAc,EAAW;MAC7C,IAAI,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;QAC7C,MAAM,IAAIC,KAAK,CAAC,4DAA4D,CAAC;MACjF;MAEA,IAAI,CAACD,SAAS,CAACE,IAAI,IAAI,CAACF,SAAS,CAACG,UAAU,IAAI,CAACH,SAAS,CAACI,MAAM,EAAE;QAC/D,MAAM,IAAIH,KAAK,CAAC,0FAA0F,CAAC;MAC/G;;MAEA;MACA,OAAOD,SAAS;IACpB;EACJ;EAAC,IAAAK,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAP,gBAAA,GAAAA,gBAAA;EAAA,OAAAO,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"SchemaNormalizer-dbg.js","names":["Logger","___utils_Logger","SchemaNormalizer","normalize","rawSchema","data","schemaObj","JSON","parse","e","msg","message","error","showErrorPopup","Array","isArray","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":[]}
@@ -1,20 +1,26 @@
1
1
  declare module "nz/co/siliconst/ui5/metaui/core/SchemaNormalizer" {
2
2
  /**
3
3
  * @file SchemaNormalizer.ts
4
- * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.
4
+ * @description Transforms and validates incoming JSON payloads into the strict v2 ISchema dictionary matrix.
5
5
  */
6
6
  import { ISchema } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
7
- /**
8
- * Utility class ensuring data fidelity before layout construction begins.
9
- */
10
7
  export class SchemaNormalizer {
11
8
  /**
12
9
  * Validates that the provided raw payload conforms to the required ISchema structures.
13
- * @param rawSchema The heterogeneous JSON object provided to the Engine.
14
- * @returns The strictly cast ISchema matrix.
15
- * @throws Error if the mandatory schema properties are missing.
16
10
  */
17
- static normalize(rawSchema: any): ISchema;
11
+ static normalize(rawSchema?: any, data?: any): ISchema;
12
+ private static deepMergeProperties;
13
+ private static normalizeProperties;
14
+ private static normalizePropertyMetadata;
15
+ /**
16
+ * Generates a Title Case label from camelCase or snake_case technical names.
17
+ */
18
+ private static generateLabel;
19
+ /**
20
+ * Infers a v2 ISchema structure dynamically from a plain data payload.
21
+ */
22
+ private static inferSchemaFromData;
23
+ private static inferPropertiesFromObject;
18
24
  }
19
25
  }
20
26
  //# sourceMappingURL=SchemaNormalizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaNormalizer.d.ts","sourceRoot":"..\\..\\..\\..\\..\\..\\..\\..","sources":["src\\nz\\co\\siliconst\\ui5\\metaui\\core\\SchemaNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kDAAkD,CAAC;IAClE;;;OAGG;IAEH,OAAO,EAAE,OAAO,EAAE,MAAM,+CAA+C,CAAC;IAExE;;OAEG;IACH,MAAa,gBAAgB;QAEzB;;;;;WAKG;eACW,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;KAYnD;CAEA"}
1
+ {"version":3,"file":"SchemaNormalizer.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,kDAAkD,CAAC;IAClE;;;OAGG;IAEH,OAAO,EAAE,OAAO,EAAgC,MAAM,+CAA+C,CAAC;IAGtG,MAAa,gBAAgB;QAEzB;;WAEG;eACW,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO;QAwD7D,OAAO,CAAC,MAAM,CAAC,mBAAmB;QAgBlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;QAQlC,OAAO,CAAC,MAAM,CAAC,yBAAyB;QAuCxC;;WAEG;QACH,OAAO,CAAC,MAAM,CAAC,aAAa;QAU5B;;WAEG;QACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;QAuBlC,OAAO,CAAC,MAAM,CAAC,yBAAyB;KAoC3C;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define([],function(){"use strict";class e{static normalize(e){if(!e||typeof e!=="object"){throw new Error("[MetaUI] Invalid Schema Payload: Payload is not an object.")}if(!e.mode||!e.rootFields||!e.tables){throw new Error("[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).")}return e}}var r={__esModule:true};r.SchemaNormalizer=e;return r});
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","Error","mode","rootFields","tables","__exports","__esModule"],"sources":["SchemaNormalizer.ts"],"sourcesContent":["/**\r\n * @file SchemaNormalizer.ts\r\n * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.\r\n */\r\n\r\nimport { ISchema } from \"../interfaces/ISchema\";\r\n\r\n/**\r\n * Utility class ensuring data fidelity before layout construction begins.\r\n */\r\nexport class SchemaNormalizer {\r\n \r\n /**\r\n * Validates that the provided raw payload conforms to the required ISchema structures.\r\n * @param rawSchema The heterogeneous JSON object provided to the Engine.\r\n * @returns The strictly cast ISchema matrix.\r\n * @throws Error if the mandatory schema properties are missing.\r\n */\r\n public static normalize(rawSchema: any): ISchema {\r\n if (!rawSchema || typeof rawSchema !== 'object') {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Payload is not an object.\");\r\n }\r\n \r\n if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {\r\n throw new Error(\"[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).\");\r\n }\r\n\r\n // Return the strongly typed and validated schema block.\r\n return rawSchema as ISchema;\r\n }\r\n}\r\n"],"mappings":"yCAUO,MAAMA,EAQT,gBAAcC,CAAUC,GACpB,IAAKA,UAAoBA,IAAc,SAAU,CAC7C,MAAM,IAAIC,MAAM,6DACpB,CAEA,IAAKD,EAAUE,OAASF,EAAUG,aAAeH,EAAUI,OAAQ,CAC/D,MAAM,IAAIH,MAAM,2FACpB,CAGA,OAAOD,CACX,EACH,IAAAK,EAAA,CAAAC,WAAA,MAAAD,EAAAP,mBAAA,OAAAO,CAAA","ignoreList":[]}
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":[]}
@@ -1,31 +1,208 @@
1
- /**
2
- * @file SchemaNormalizer.ts
3
- * @description Transforms and validates incoming JSON payloads into the strict ISchema matrix.
4
- */
5
-
6
- import { ISchema } from "../interfaces/ISchema";
7
-
8
- /**
9
- * Utility class ensuring data fidelity before layout construction begins.
10
- */
11
- export class SchemaNormalizer {
12
-
13
- /**
14
- * Validates that the provided raw payload conforms to the required ISchema structures.
15
- * @param rawSchema The heterogeneous JSON object provided to the Engine.
16
- * @returns The strictly cast ISchema matrix.
17
- * @throws Error if the mandatory schema properties are missing.
18
- */
19
- public static normalize(rawSchema: any): ISchema {
20
- if (!rawSchema || typeof rawSchema !== 'object') {
21
- throw new Error("[MetaUI] Invalid Schema Payload: Payload is not an object.");
22
- }
23
-
24
- if (!rawSchema.mode || !rawSchema.rootFields || !rawSchema.tables) {
25
- throw new Error("[MetaUI] Invalid Schema Payload: Missing required structures (mode, rootFields, tables).");
26
- }
27
-
28
- // Return the strongly typed and validated schema block.
29
- return rawSchema as ISchema;
30
- }
31
- }
1
+ /**
2
+ * @file SchemaNormalizer.ts
3
+ * @description Transforms and validates incoming JSON payloads into the strict v2 ISchema dictionary matrix.
4
+ */
5
+
6
+ import { ISchema, IPropertyMetadata, FieldType } from "../interfaces/ISchema";
7
+ import { Logger } from "../utils/Logger";
8
+
9
+ export class SchemaNormalizer {
10
+
11
+ /**
12
+ * Validates that the provided raw payload conforms to the required ISchema structures.
13
+ */
14
+ public static normalize(rawSchema?: any, data?: any): ISchema {
15
+ let schemaObj = rawSchema;
16
+
17
+ if (typeof schemaObj === "string") {
18
+ try {
19
+ schemaObj = JSON.parse(schemaObj);
20
+ } catch (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}`);
24
+ schemaObj = null;
25
+ }
26
+ }
27
+
28
+ if (!schemaObj || typeof schemaObj !== 'object' || Array.isArray(schemaObj)) {
29
+ return this.inferSchemaFromData(data);
30
+ }
31
+
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
+ }
59
+
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: {} };
67
+ }
68
+ }
69
+
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;
84
+ }
85
+
86
+ private static normalizeProperties(properties: any): Record<string, IPropertyMetadata> {
87
+ const normalizedProps: Record<string, IPropertyMetadata> = {};
88
+ for (const key of Object.keys(properties)) {
89
+ normalizedProps[key] = this.normalizePropertyMetadata(properties[key], key);
90
+ }
91
+ return normalizedProps;
92
+ }
93
+
94
+ private static normalizePropertyMetadata(prop: any, keyName: string): IPropertyMetadata {
95
+ const normalized: IPropertyMetadata = {
96
+ type: prop.type || "string",
97
+ ui: {
98
+ label: prop.ui?.label || this.generateLabel(keyName),
99
+ isKey: !!prop.ui?.isKey,
100
+ readOnly: !!prop.ui?.readOnly,
101
+ widget: prop.ui?.widget || (prop.valueHelp || prop.enum ? "select" : undefined),
102
+ visibleOn: prop.ui?.visibleOn,
103
+ enabledOn: prop.ui?.enabledOn,
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
110
+ },
111
+ required: !!prop.required,
112
+ maxLength: prop.maxLength,
113
+ minimum: prop.minimum,
114
+ maximum: prop.maximum,
115
+ pattern: prop.pattern,
116
+ precision: prop.precision,
117
+ scale: prop.scale,
118
+ valueHelp: prop.valueHelp,
119
+ enum: prop.enum
120
+ };
121
+
122
+ if (normalized.type === "object" && prop.properties) {
123
+ normalized.properties = this.normalizeProperties(prop.properties);
124
+ normalized.uiLayout = prop.uiLayout;
125
+ } else if (normalized.type === "array" && prop.items) {
126
+ normalized.items = this.normalizePropertyMetadata(prop.items, "items");
127
+ normalized.uiLayout = prop.uiLayout;
128
+ }
129
+
130
+ return normalized;
131
+ }
132
+
133
+ /**
134
+ * Generates a Title Case label from camelCase or snake_case technical names.
135
+ */
136
+ private static generateLabel(name: string): string {
137
+ if (!name) return "";
138
+ let spaced = name.replace(/([A-Z])/g, " $1").replace(/_/g, " ");
139
+ return spaced.split(' ')
140
+ .filter(w => w.length > 0)
141
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
142
+ .join(' ')
143
+ .trim();
144
+ }
145
+
146
+ /**
147
+ * Infers a v2 ISchema structure dynamically from a plain data payload.
148
+ */
149
+ private static inferSchemaFromData(data: any): ISchema {
150
+ const schema: ISchema = { type: "object", properties: {}, layoutStrategy: "compact", title: "" };
151
+
152
+ if (!data || typeof data !== "object") {
153
+ return schema;
154
+ }
155
+
156
+ if (Array.isArray(data)) {
157
+ schema.type = "array";
158
+ schema.layoutStrategy = "table";
159
+ schema.items = {
160
+ type: "object",
161
+ layoutStrategy: "compact",
162
+ properties: data.length > 0 ? this.inferPropertiesFromObject(data[0]) : {}
163
+ };
164
+ } else {
165
+ schema.type = "object";
166
+ schema.properties = this.inferPropertiesFromObject(data);
167
+ }
168
+
169
+ return schema;
170
+ }
171
+
172
+ private static inferPropertiesFromObject(obj: any): Record<string, IPropertyMetadata> {
173
+ const properties: Record<string, IPropertyMetadata> = {};
174
+ if (!obj || typeof obj !== "object") return properties;
175
+
176
+ for (const key of Object.keys(obj)) {
177
+ const val = obj[key];
178
+ if (val === null || val === undefined) continue;
179
+
180
+ if (typeof val === "object" && !Array.isArray(val)) continue;
181
+
182
+ let type: FieldType = "string";
183
+ let items: IPropertyMetadata | undefined;
184
+
185
+ if (typeof val === "number") type = "number";
186
+ else if (typeof val === "boolean") type = "boolean";
187
+ else if (Array.isArray(val)) {
188
+ type = "array";
189
+ items = {
190
+ type: "object",
191
+ properties: val.length > 0 ? this.inferPropertiesFromObject(val[0]) : {}
192
+ };
193
+ }
194
+
195
+ properties[key] = {
196
+ type,
197
+ items,
198
+ ui: {
199
+ label: this.generateLabel(key),
200
+ isKey: false,
201
+ readOnly: false
202
+ }
203
+ };
204
+ }
205
+
206
+ return properties;
207
+ }
208
+ }