@siliconst/metaui 1.4.21 → 1.4.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js +22 -20
  4. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator-dbg.js.map +1 -1
  5. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts +3 -3
  6. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.d.ts.map +1 -1
  7. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js +1 -1
  8. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.js.map +1 -1
  9. package/src/nz/co/siliconst/ui5/metaui/ai/BaseAIGenerator.ts +24 -16
  10. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy-dbg.js.map +1 -1
  11. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.js.map +1 -1
  12. package/src/nz/co/siliconst/ui5/metaui/ai/RestLLMProxy.ts +2 -2
  13. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js +111 -0
  14. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants-dbg.js.map +1 -0
  15. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts +95 -0
  16. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.d.ts.map +1 -0
  17. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js +2 -0
  18. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.js.map +1 -0
  19. package/src/nz/co/siliconst/ui5/metaui/constants/MetaUIConstants.ts +101 -0
  20. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -1
  21. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -1
  22. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +1 -1
  23. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -1
  24. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -1
  25. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -1
  26. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +2 -1
  27. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +2 -2
  28. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -1
  29. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +1 -1
  30. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -1
  31. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +3 -3
  32. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +47 -47
  33. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  34. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +6 -2
  35. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  36. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  37. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  38. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +62 -66
  39. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +0 -9
  40. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -1
  41. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +0 -9
  42. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -1
  43. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +1 -1
  44. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -1
  45. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +3 -9
  46. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +0 -11
  47. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -1
  48. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +0 -11
  49. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +1 -1
  51. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -1
  52. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +2 -9
  53. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +2 -7
  54. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -1
  55. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +0 -5
  56. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -1
  57. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +1 -1
  58. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -1
  59. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +3 -7
  60. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +1 -6
  61. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -1
  62. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +0 -5
  63. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -1
  64. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +1 -1
  65. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -1
  66. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +9 -12
  67. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +170 -74
  68. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  69. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +29 -4
  70. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
  71. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +179 -79
  74. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +41 -38
  75. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +5 -3
  77. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
  78. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
  80. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +46 -38
  81. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +41 -2
  82. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
  83. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +6 -2
  84. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
  87. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +47 -2
  88. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js.map +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts +1 -1
  90. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts.map +1 -1
  91. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js.map +1 -1
  92. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.ts +8 -7
  93. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -2
  94. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
  95. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +5 -2
  96. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
  97. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
  99. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +10 -5
  100. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +215 -38
  101. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  102. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +21 -3
  103. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  104. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +218 -40
  107. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js +86 -0
  108. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator-dbg.js.map +1 -0
  109. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts +16 -0
  110. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.d.ts.map +1 -0
  111. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js +2 -0
  112. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.js.map +1 -0
  113. package/src/nz/co/siliconst/ui5/metaui/core/LayoutMutator.ts +82 -0
  114. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js +142 -0
  115. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer-dbg.js.map +1 -0
  116. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts +24 -0
  117. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.d.ts.map +1 -0
  118. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js +2 -0
  119. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.js.map +1 -0
  120. package/src/nz/co/siliconst/ui5/metaui/core/LayoutScorer.ts +147 -0
  121. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +8 -0
  122. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
  123. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
  124. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
  125. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +7 -0
  127. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +153 -50
  128. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  129. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +15 -0
  130. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  131. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  132. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  133. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +164 -53
  134. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js +310 -0
  135. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine-dbg.js.map +1 -0
  136. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts +73 -0
  137. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.d.ts.map +1 -0
  138. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js +2 -0
  139. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.js.map +1 -0
  140. package/src/nz/co/siliconst/ui5/metaui/core/PolicyEngine.ts +307 -0
  141. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +35 -14
  142. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  144. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  145. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  146. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +40 -15
  147. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +15 -3
  148. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
  149. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -1
  150. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +1 -1
  151. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +15 -1
  153. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +82 -16
  154. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  155. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +16 -0
  156. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  157. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  159. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +89 -17
  160. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  161. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +12 -1
  162. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  163. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +13 -1
  164. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js +2 -0
  165. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin-dbg.js.map +1 -0
  166. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts +50 -0
  167. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.d.ts.map +1 -0
  168. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js +2 -0
  169. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.js.map +1 -0
  170. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPolicyPlugin.ts +49 -0
  171. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  172. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +23 -1
  173. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +27 -1
  175. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +31 -36
  176. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  177. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  178. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  179. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  180. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +26 -29
  181. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +47 -11
  182. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  183. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  184. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  186. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +48 -12
  187. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +74 -58
  188. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js +3 -2
  190. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory-dbg.js.map +1 -1
  191. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.d.ts.map +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.js.map +1 -1
  194. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiParserFactory.ts +3 -2
  195. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver-dbg.js.map +1 -1
  196. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.js.map +1 -1
  197. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiRefResolver.ts +3 -3
  198. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js +2 -1
  199. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper-dbg.js.map +1 -1
  200. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts +1 -1
  201. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.d.ts.map +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js +1 -1
  203. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.js.map +1 -1
  204. package/src/nz/co/siliconst/ui5/metaui/openapi/OpenApiUIMapper.ts +4 -3
  205. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js +2 -2
  206. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine-dbg.js.map +1 -1
  207. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.js.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/OpenApiHeuristicEngine.ts +2 -2
  209. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js +12 -8
  210. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic-dbg.js.map +1 -1
  211. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.d.ts.map +1 -1
  212. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js +1 -1
  213. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.js.map +1 -1
  214. package/src/nz/co/siliconst/ui5/metaui/openapi/heuristics/plugins/ProtobufVariantHeuristic.ts +15 -11
  215. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js +20 -12
  216. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser-dbg.js.map +1 -1
  217. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts +4 -4
  218. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.d.ts.map +1 -1
  219. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js +1 -1
  220. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.js.map +1 -1
  221. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi2Parser.ts +24 -16
  222. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js +18 -11
  223. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser-dbg.js.map +1 -1
  224. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts +4 -4
  225. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.d.ts.map +1 -1
  226. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js +1 -1
  227. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.js.map +1 -1
  228. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApi3Parser.ts +22 -15
  229. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js +24 -100
  230. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper-dbg.js.map +1 -1
  231. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts +8 -72
  232. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.d.ts.map +1 -1
  233. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js +1 -1
  234. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.js.map +1 -1
  235. package/src/nz/co/siliconst/ui5/metaui/openapi/parsers/OpenApiPropertyMapper.ts +45 -108
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -1
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +2 -1
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +24 -18
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +1 -1
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +1 -1
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +23 -21
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +5 -5
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +1 -1
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +7 -7
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +129 -9
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +46 -10
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +1 -1
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +145 -15
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +35 -14
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +1 -1
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +38 -14
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +4 -4
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +1 -1
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +5 -5
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +69 -20
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +2 -1
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +77 -21
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +3 -3
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +1 -1
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +5 -5
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +3 -3
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +1 -1
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +5 -5
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js +1 -0
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin-dbg.js.map +1 -1
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.d.ts.map +1 -1
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js +1 -1
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.js.map +1 -1
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DictionaryMapPlugin.ts +6 -5
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +8 -3
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +1 -1
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +10 -5
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js +3 -3
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin-dbg.js.map +1 -1
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts +1 -1
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.d.ts.map +1 -1
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js +1 -1
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.js.map +1 -1
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/EmailPlugin.ts +4 -4
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +3 -3
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +1 -1
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +5 -5
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +4 -4
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +1 -1
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +5 -5
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js +3 -3
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin-dbg.js.map +1 -1
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts +1 -1
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.d.ts.map +1 -1
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js +1 -1
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.js.map +1 -1
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/LinkPlugin.ts +4 -4
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +1 -1
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +1 -1
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js +7 -6
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin-dbg.js.map +1 -1
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts +1 -1
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.d.ts.map +1 -1
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js +1 -1
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.js.map +1 -1
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiInputPlugin.ts +9 -8
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +2 -2
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +1 -1
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +3 -3
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +36 -21
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +1 -1
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +40 -23
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +9 -6
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +1 -1
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +1 -1
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +10 -8
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js +3 -3
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin-dbg.js.map +1 -1
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts +1 -1
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.d.ts.map +1 -1
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js +1 -1
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.js.map +1 -1
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/PasswordPlugin.ts +4 -4
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +3 -3
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +1 -1
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +5 -5
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js +29 -12
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin-dbg.js.map +1 -1
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts +5 -1
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.d.ts.map +1 -1
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js +1 -1
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.js.map +1 -1
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts +30 -10
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +4 -4
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +1 -1
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +5 -5
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +4 -4
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +1 -1
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +5 -5
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +3 -3
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +1 -1
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +4 -4
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js +3 -3
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin-dbg.js.map +1 -1
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts +1 -1
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.d.ts.map +1 -1
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js +1 -1
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.js.map +1 -1
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StepInputPlugin.ts +5 -5
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +3 -3
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +1 -1
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +4 -4
  426. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +2 -2
  427. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
  428. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +1 -1
  429. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
  430. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
  431. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
  432. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +3 -3
  433. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +58 -56
  434. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  435. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +2 -5
  436. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
  437. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  438. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  439. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +66 -55
  440. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +3 -3
  441. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  442. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +1 -1
  443. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
  444. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  445. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  446. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +4 -4
  447. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +4 -4
  448. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  449. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +1 -1
  450. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
  451. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  452. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  453. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +5 -5
  454. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
  455. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -1
  456. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
  457. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +5 -3
  458. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +2 -1
  459. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
  460. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
  461. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +1 -1
  462. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
  463. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +6 -3
  464. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +30 -9
  465. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
  466. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +2 -2
  467. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
  468. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +1 -1
  469. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
  470. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +41 -13
  471. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
  472. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -1
  473. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
  474. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +5 -3
  475. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js +41 -0
  476. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin-dbg.js.map +1 -0
  477. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts +24 -0
  478. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.d.ts.map +1 -0
  479. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js +2 -0
  480. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.js.map +1 -0
  481. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNotNullConditionPlugin.ts +34 -0
  482. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js +41 -0
  483. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin-dbg.js.map +1 -0
  484. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts +24 -0
  485. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.d.ts.map +1 -0
  486. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js +2 -0
  487. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.js.map +1 -0
  488. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/IsNullConditionPlugin.ts +34 -0
  489. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js +52 -0
  490. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin-dbg.js.map +1 -0
  491. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts +30 -0
  492. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.d.ts.map +1 -0
  493. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js +2 -0
  494. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.js.map +1 -0
  495. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericGreaterThanConditionPlugin.ts +45 -0
  496. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js +52 -0
  497. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin-dbg.js.map +1 -0
  498. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts +30 -0
  499. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.d.ts.map +1 -0
  500. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js +2 -0
  501. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.js.map +1 -0
  502. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/NumericLessThanConditionPlugin.ts +45 -0
  503. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js +41 -0
  504. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin-dbg.js.map +1 -0
  505. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts +24 -0
  506. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.d.ts.map +1 -0
  507. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js +2 -0
  508. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.js.map +1 -0
  509. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/conditions/StringEqualsConditionPlugin.ts +34 -0
  510. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js +40 -0
  511. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin-dbg.js.map +1 -0
  512. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts +28 -0
  513. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.d.ts.map +1 -0
  514. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js +2 -0
  515. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.js.map +1 -0
  516. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/EditableEffectPlugin.ts +34 -0
  517. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js +40 -0
  518. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin-dbg.js.map +1 -0
  519. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts +28 -0
  520. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.d.ts.map +1 -0
  521. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js +2 -0
  522. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.js.map +1 -0
  523. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/RequirementEffectPlugin.ts +34 -0
  524. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js +40 -0
  525. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin-dbg.js.map +1 -0
  526. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts +28 -0
  527. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.d.ts.map +1 -0
  528. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js +2 -0
  529. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.js.map +1 -0
  530. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/ValidityEffectPlugin.ts +34 -0
  531. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js +40 -0
  532. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin-dbg.js.map +1 -0
  533. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts +28 -0
  534. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.d.ts.map +1 -0
  535. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js +2 -0
  536. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.js.map +1 -0
  537. package/src/nz/co/siliconst/ui5/metaui/plugins/policies/effects/VisibilityEffectPlugin.ts +34 -0
  538. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js +33 -0
  539. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider-dbg.js.map +1 -0
  540. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts +14 -0
  541. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.d.ts.map +1 -0
  542. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js +2 -0
  543. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.js.map +1 -0
  544. package/src/nz/co/siliconst/ui5/metaui/services/SchemaProvider.ts +24 -0
  545. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -1
  546. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -1
  547. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -1
  548. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +1 -1
  549. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +0 -75
  550. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +0 -1
  551. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +0 -47
  552. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +0 -1
  553. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +0 -2
  554. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +0 -1
  555. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +0 -72
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/RatingIndicator","sap/m/Text"],function(t,e,i){"use strict";const n=t["BasePlugin"];class a extends n{render(t,n,a="meta",s,r){this.onChange=r;this.metadata=t;this.fieldKey=n.startsWith("/")?n.substring(1):n;if(!this.isEditable){this.control=new i({id:this.generateStableId(s,n),text:this.generateBindingInfo(n,a)});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new e({id:this.generateStableId(s,n),value:this.generateBindingInfo(n,a),enabled:!t.ui?.readOnly,maxValue:t.maximum!==undefined?t.maximum:5,change:t=>{const e=t.getParameter("value");const i=this.validateAndApplyVisualState();if(this.onChange){this.onChange(i.isValid,this.fieldKey)}}});this.applyCommonDirectives(this.control,t,a);return this.control}getValue(){return this.control?this.control.getValue():0}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.RatingIndicatorPlugin=a;return s});
1
+ sap.ui.define(["./BasePlugin","sap/m/RatingIndicator","sap/m/Text"],function(t,e,i){"use strict";const n=t["BasePlugin"];class a extends n{render(t,n,a="meta",s,r){this.onChange=r;this.metadata=t;this.fieldKey=n.startsWith("/")?n.substring(1):n;if(!this.isEditable){this.control=new i({id:this.generateStableId(s,n),text:this.generateBindingInfo(n,a)});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new e({id:this.generateStableId(s,n),value:this.generateBindingInfo(n,a),enabled:!t.ui?.readOnly,maxValue:t.maximum!==undefined?t.maximum:5,change:t=>{const e=t.getParameter("value");const i=this.validate();if(this.onChange){this.onChange(i.isValid,this.fieldKey,i.errorMessage)}}});this.applyCommonDirectives(this.control,t,a);return this.control}getValue(){return this.control?this.control.getProperty("value"):0}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.RatingIndicatorPlugin=a;return s});
2
2
  //# sourceMappingURL=RatingIndicatorPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RatingIndicatorPlugin.js","names":["BasePlugin","___BasePlugin","RatingIndicatorPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","RatingIndicator","value","enabled","ui","readOnly","maxValue","maximum","undefined","change","oEvent","val","getParameter","result","validateAndApplyVisualState","isValid","getValue","applyState","setEnabled","__exports","__esModule"],"sources":["RatingIndicatorPlugin.ts"],"sourcesContent":["/**\n * @file RatingIndicatorPlugin.ts\n * @description Renders a sap.m.RatingIndicator for 1-5 numeric feedback.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport RatingIndicator from \"sap/m/RatingIndicator\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for rating feedback.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class RatingIndicatorPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.RatingIndicator` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured RatingIndicator control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n\n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName)\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n \n this.control = new RatingIndicator({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n maxValue: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 5,\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"value\");\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current rating value.\n * @returns {unknown} The rating value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as RatingIndicator).getValue() : 0;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as RatingIndicator).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"iGAAA,MAKSA,EAAUC,EAAA,cAYZ,MAAMC,UAA8BF,EAWhCG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChBK,KAAKE,SAAWN,EAAYO,WAAW,KAAOP,EAAYQ,UAAU,GAAKR,EAEzE,IAAKI,KAAKK,WAAY,CAElBL,KAAKM,QAAU,IAAIC,EAAY,CAC3BC,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCc,KAAMV,KAAKW,oBAAoBf,EAAaC,KAEhDG,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GACxD,OAAOG,KAAKM,OAChB,CAEAN,KAAKM,QAAU,IAAIO,EAAgB,CAC/BL,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCkB,MAAOd,KAAKW,oBAAoBf,EAAaC,GAC7CkB,SAAUpB,EAAcqB,IAAIC,SAC5BC,SAAUvB,EAAcwB,UAAYC,UAAYzB,EAAcwB,QAAU,EACxEE,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,SAChC,MAAMC,EAASzB,KAAK0B,8BACpB,GAAI1B,KAAKD,SAAU,CACfC,KAAKD,SAAS0B,EAAOE,QAAS3B,KAAKE,SACvC,KAIRF,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GAExD,OAAOG,KAAKM,OAChB,CAMUsB,WACN,OAAO5B,KAAKM,QAAWN,KAAKM,QAA4BsB,WAAa,CACzE,CAKUC,aACN,GAAI7B,KAAKM,SAAWN,KAAKC,SAAU,CAC/B,IAAKD,KAAKK,WAAY,OACrBL,KAAKM,QAA4BwB,YAAY9B,KAAKC,SAASe,IAAIC,SACpE,CACJ,EACH,IAAAc,EAAA,CAAAC,WAAA,MAAAD,EAAAtC,wBAAA,OAAAsC,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"RatingIndicatorPlugin.js","names":["BasePlugin","___BasePlugin","RatingIndicatorPlugin","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","this","metadata","fieldKey","startsWith","substring","isEditable","control","TextControl","id","generateStableId","text","generateBindingInfo","applyCommonDirectives","RatingIndicator","value","enabled","ui","readOnly","maxValue","maximum","undefined","change","oEvent","val","getParameter","result","validate","isValid","errorMessage","getValue","getProperty","applyState","setEnabled","__exports","__esModule"],"sources":["RatingIndicatorPlugin.ts"],"sourcesContent":["/**\n * @file RatingIndicatorPlugin.ts\n * @description Renders a sap.m.RatingIndicator for 1-5 numeric feedback.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport RatingIndicator from \"sap/m/RatingIndicator\";\nimport Control from \"sap/ui/core/Control\";\nimport TextControl from \"sap/m/Text\";\n\n/**\n * Handles rendering logic for rating feedback.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class RatingIndicatorPlugin extends BasePlugin {\n /**\n * Renders a `sap.m.RatingIndicator` component.\n * \n * @param fieldMetadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured RatingIndicator control.\n */\n public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = fieldMetadata;\n this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;\n\n if (!this.isEditable) {\n \n this.control = new TextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: this.generateBindingInfo(bindingPath, modelName)\n });\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n return this.control as Control;\n }\n \n this.control = new RatingIndicator({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n enabled: !fieldMetadata.ui?.readOnly,\n maxValue: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 5,\n change: (oEvent: sap.ui.base.Event) => {\n const val = (oEvent as any).getParameter(\"value\");\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n }\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current rating value.\n * @returns {unknown} The rating value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as RatingIndicator).getProperty('value') : 0;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as RatingIndicator).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"iGAAA,MAKSA,EAAUC,EAAA,cAYZ,MAAMC,UAA8BF,EAWhCG,OAAOC,EAAmCC,EAAsBC,EAAoB,OAAQC,EAAwBC,GACvHC,KAAKD,SAAWA,EAChBC,KAAKC,SAAWN,EAChBK,KAAKE,SAAWN,EAAYO,WAAW,KAAOP,EAAYQ,UAAU,GAAKR,EAEzE,IAAKI,KAAKK,WAAY,CAElBL,KAAKM,QAAU,IAAIC,EAAY,CAC3BC,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCc,KAAMV,KAAKW,oBAAoBf,EAAaC,KAEhDG,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GACxD,OAAOG,KAAKM,OAChB,CAEAN,KAAKM,QAAU,IAAIO,EAAgB,CAC/BL,GAAIR,KAAKS,iBAAiBX,EAAeF,GACzCkB,MAAOd,KAAKW,oBAAoBf,EAAaC,GAC7CkB,SAAUpB,EAAcqB,IAAIC,SAC5BC,SAAUvB,EAAcwB,UAAYC,UAAYzB,EAAcwB,QAAU,EACxEE,OAASC,IACL,MAAMC,EAAOD,EAAeE,aAAa,SACzC,MAAMC,EAASzB,KAAK0B,WACpB,GAAI1B,KAAKD,SAAU,CACfC,KAAKD,SAAS0B,EAAOE,QAAS3B,KAAKE,SAAUuB,EAAOG,aACxD,KAIR5B,KAAKY,sBAAsBZ,KAAKM,QAASX,EAAeE,GAExD,OAAOG,KAAKM,OAChB,CAMUuB,WACN,OAAO7B,KAAKM,QAAWN,KAAKM,QAA4BwB,YAAY,SAAW,CACnF,CAKUC,aACN,GAAI/B,KAAKM,SAAWN,KAAKC,SAAU,CAC/B,IAAKD,KAAKK,WAAY,OACrBL,KAAKM,QAA4B0B,YAAYhC,KAAKC,SAASe,IAAIC,SACpE,CACJ,EACH,IAAAgB,EAAA,CAAAC,WAAA,MAAAD,EAAAxC,wBAAA,OAAAwC,CAAA","ignoreList":[]}
@@ -26,7 +26,7 @@ export class RatingIndicatorPlugin extends BasePlugin {
26
26
  * @param onChange The callback fired on value change.
27
27
  * @returns {Control} The configured RatingIndicator control.
28
28
  */
29
- public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
29
+ public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
30
30
  this.onChange = onChange;
31
31
  this.metadata = fieldMetadata;
32
32
  this.fieldKey = bindingPath.startsWith('/') ? bindingPath.substring(1) : bindingPath;
@@ -47,10 +47,10 @@ export class RatingIndicatorPlugin extends BasePlugin {
47
47
  enabled: !fieldMetadata.ui?.readOnly,
48
48
  maxValue: fieldMetadata.maximum !== undefined ? fieldMetadata.maximum : 5,
49
49
  change: (oEvent: sap.ui.base.Event) => {
50
- const val = oEvent.getParameter("value");
51
- const result = this.validateAndApplyVisualState();
50
+ const val = (oEvent as any).getParameter("value");
51
+ const result = this.validate();
52
52
  if (this.onChange) {
53
- this.onChange(result.isValid, this.fieldKey);
53
+ this.onChange(result.isValid, this.fieldKey, result.errorMessage);
54
54
  }
55
55
  }
56
56
  });
@@ -65,7 +65,7 @@ export class RatingIndicatorPlugin extends BasePlugin {
65
65
  * @returns {unknown} The rating value.
66
66
  */
67
67
  protected getValue(): unknown {
68
- return this.control ? (this.control as RatingIndicator).getValue() : 0;
68
+ return this.control ? (this.control as RatingIndicator).getProperty('value') : 0;
69
69
  }
70
70
 
71
71
  /**
@@ -1,4 +1,4 @@
1
- sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], function (___BasePlugin, Button, ____core_PipelineManager) {
1
+ sap.ui.define(["./BasePlugin", "../../constants/MetaUIConstants", "sap/m/Button", "../../core/PipelineManager", "../../utils/Logger"], function (___BasePlugin, ____constants_MetaUIConstants, Button, ____core_PipelineManager, ____utils_Logger) {
2
2
  "use strict";
3
3
 
4
4
  /**
@@ -7,15 +7,28 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
7
7
  * and opens it in a nested dialog. Implements headless validation for the deferred schema.
8
8
  */
9
9
  const BasePlugin = ___BasePlugin["BasePlugin"];
10
+ const UI5_EVENT = ____constants_MetaUIConstants["UI5_EVENT"];
10
11
  const GlobalPipeline = ____core_PipelineManager["GlobalPipeline"];
12
+ const Logger = ____utils_Logger["Logger"];
11
13
  class ReferencePlugin extends BasePlugin {
14
+ /**
15
+ * Interface for the duck-typed parent GeneratorHost.
16
+ */
17
+ _asHost(control) {
18
+ const host = control;
19
+ if (typeof host.getSchemaDefinition === "function") {
20
+ return host;
21
+ }
22
+ return null;
23
+ }
24
+
12
25
  /**
13
26
  * Finds the closest GeneratorHost in the control hierarchy.
14
27
  */
15
28
  findParentHost(control) {
16
29
  let parent = control.getParent();
17
30
  while (parent) {
18
- if (typeof parent.getSchemaDefinition === "function") {
31
+ if (this._asHost(parent)) {
19
32
  return parent;
20
33
  }
21
34
  parent = parent.getParent();
@@ -37,14 +50,16 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
37
50
  Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);
38
51
  return;
39
52
  }
40
- const parentHost = this.findParentHost(btn);
53
+ const rawParentHost = this.findParentHost(btn);
54
+ const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;
41
55
  if (!parentHost) {
42
56
  Logger.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");
43
57
  return;
44
58
  }
45
59
  const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);
46
60
  if (!subSchema) {
47
- Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty("schemaDefinitions"));
61
+ const keys = Object.keys(parentHost.getProperty("schemaDefinitions") || {});
62
+ Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions keys: ${keys.join(", ")}`);
48
63
  return;
49
64
  }
50
65
  const parentModel = btn.getModel(modelName);
@@ -79,7 +94,7 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
79
94
  parentHost.fireEvent("validationSuccess", e.getParameters());
80
95
  });
81
96
  if (!!this.isEditable) {
82
- host.attachSubmit(e => {
97
+ host.attachEvent(UI5_EVENT.SUBMIT, e => {
83
98
  const payload = e.getParameter("payload");
84
99
  parentModel.setProperty(updatePath, payload);
85
100
  if (this.onChange) {
@@ -106,7 +121,8 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
106
121
  if (!this.metadata?.$ref || !this.control) return {
107
122
  isValid: true
108
123
  };
109
- const parentHost = this.findParentHost(this.control);
124
+ const rawParentHost = this.findParentHost(this.control);
125
+ const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;
110
126
  if (!parentHost) return {
111
127
  isValid: true
112
128
  };
@@ -135,12 +151,13 @@ sap.ui.define(["./BasePlugin", "sap/m/Button", "../../core/PipelineManager"], fu
135
151
  }
136
152
  const validatorsToRun = [];
137
153
  const argsMap = {};
138
- if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {
139
- validatorsToRun.push("length");
140
- argsMap["length"] = {
141
- min: propMeta.minLength,
142
- max: propMeta.maxLength
143
- };
154
+ if (propMeta.maxLength !== undefined) {
155
+ validatorsToRun.push("maxLength");
156
+ argsMap["maxLength"] = propMeta.maxLength;
157
+ }
158
+ if (propMeta.minLength !== undefined) {
159
+ validatorsToRun.push("minLength");
160
+ argsMap["minLength"] = propMeta.minLength;
144
161
  }
145
162
  if (propMeta.pattern !== undefined) {
146
163
  validatorsToRun.push("pattern");
@@ -1 +1 @@
1
- {"version":3,"file":"ReferencePlugin-dbg.js","names":["BasePlugin","___BasePlugin","GlobalPipeline","____core_PipelineManager","ReferencePlugin","findParentHost","control","parent","getParent","getSchemaDefinition","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","Logger","error","parentHost","subSchema","getProperty","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","host","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","attachSubmit","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","Object","keys","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","minLength","maxLength","push","min","max","pattern","regex","minimum","maximum","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (typeof (parent as any).getSchemaDefinition === \"function\") {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const parentHost = this.findParentHost(btn);\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty(\"schemaDefinitions\"));\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachSubmit((e: Event) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const parentHost = this.findParentHost(this.control);\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"length\");\n argsMap[\"length\"] = { min: propMeta.minLength, max: propMeta.maxLength };\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;AACA;EAJA,MAMSA,UAAU,GAAAC,aAAA;EAAA,MAOVC,cAAc,GAAAC,wBAAA;EAEhB,MAAMC,eAAe,SAASJ,UAAU,CAAC;IAC5C;AACJ;AACA;IACYK,cAAcA,CAACC,OAAgB,EAAW;MAC9C,IAAIC,MAAM,GAAGD,OAAO,CAACE,SAAS,CAAC,CAAC;MAChC,OAAOD,MAAM,EAAE;QACX,IAAI,OAAQA,MAAM,CAASE,mBAAmB,KAAK,UAAU,EAAE;UAC3D,OAAOF,MAAM;QACjB;QACAA,MAAM,GAAGA,MAAM,CAACC,SAAS,CAAC,CAAC;MAC/B;MACA,OAAO,IAAI;IACf;IAEOE,MAAMA,CAACC,KAAwB,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAwD,EAAW;MAChL,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACC,QAAQ,GAAGL,KAAK;MACrB,MAAMM,OAAO,GAAGL,WAAW,CAACM,UAAU,CAAC,GAAG,CAAC,GAAGN,WAAW,CAACO,SAAS,CAAC,CAAC,CAAC,GAAGP,WAAW;MACpF,MAAMQ,KAAK,GAAGT,KAAK,CAACU,EAAE,EAAED,KAAK,IAAIH,OAAO;MAExC,IAAI,CAACX,OAAO,GAAG,IAAIgB,MAAM,CAAC;QACtBC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACV,aAAa,EAAEF,WAAW,CAAC;QACrDa,IAAI,EAAE,CAAC,IAAI,CAACC,UAAU,GAAG,cAAcN,KAAK,EAAE,GAAG,cAAcA,KAAK,EAAE;QACtEO,IAAI,EAAE,uBAAuB;QAC7BC,KAAK,EAAGC,MAAa,IAAK;UACtB,MAAMC,GAAG,GAAGD,MAAM,CAACE,SAAS,CAAC,CAAW;UACxC,IAAI,CAAC,IAAI,CAACf,QAAQ,EAAEgB,IAAI,EAAE;YACtBC,MAAM,CAACC,KAAK,CAAC,mGAAmG,CAAC;YACjH;UACJ;UAEA,MAAMC,UAAU,GAAG,IAAI,CAAC9B,cAAc,CAACyB,GAAG,CAAC;UAC3C,IAAI,CAACK,UAAU,EAAE;YACbF,MAAM,CAACC,KAAK,CAAC,uGAAuG,CAAC;YACrH;UACJ;UAEA,MAAME,SAAS,GAAGD,UAAU,CAAC1B,mBAAmB,CAAC,IAAI,CAACO,QAAQ,CAACgB,IAAI,CAAC;UACpE,IAAI,CAACI,SAAS,EAAE;YACZH,MAAM,CAACC,KAAK,CAAC,uEAAuE,IAAI,CAAClB,QAAQ,CAACgB,IAAI,qCAAqC,EAAEG,UAAU,CAACE,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACzL;UACJ;UAEA,MAAMC,WAAW,GAAGR,GAAG,CAACS,QAAQ,CAAC1B,SAAS,CAAc;UACxD,IAAI,CAACyB,WAAW,EAAE;YACdL,MAAM,CAACC,KAAK,CAAC,2DAA2DrB,SAAS,oBAAoB,CAAC;YACtG;UACJ;UAEA,MAAM2B,cAAc,GAAGV,GAAG,CAACW,iBAAiB,CAAC5B,SAAS,CAAC;UACvD,IAAI6B,UAAU,GAAG9B,WAAW;UAC5B,IAAI4B,cAAc,IAAI,CAAC5B,WAAW,CAACM,UAAU,CAAC,GAAG,CAAC,EAAE;YAChD,MAAMyB,OAAO,GAAGH,cAAc,CAACI,OAAO,CAAC,CAAC;YACxCF,UAAU,GAAGC,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,GAAGF,OAAO,GAAG/B,WAAW,GAAI+B,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG/B,WAAW,GAAG+B,OAAO,GAAG,GAAG,GAAG/B,WAAY;UACpI;UAEA,MAAMkC,OAAO,GAAGR,WAAW,CAACD,WAAW,CAACK,UAAU,CAAC;UACnD,MAAMK,UAAU,GAAGD,OAAO,GAAGE,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;UAErEK,GAAG,CAAC9B,EAAE,CAAC+B,OAAO,CAAC,CAAC,iDAAiD,CAAC,EAAGC,iBAA0B,IAAK;YAChG,MAAMC,gBAAgB,GAAGD,iBAAiB,CAACE,OAAO,IAAIF,iBAAiB;YACvE,MAAMG,IAAI,GAAG,IAAIF,gBAAgB,CAAC;cAC9BG,gBAAgB,EAAErB,SAAS;cAC3BsB,iBAAiB,EAAEvB,UAAU,CAACE,WAAW,CAAC,mBAAmB,CAAC;cAAE;cAChEsB,IAAI,EAAEZ,UAAU;cAChBa,QAAQ,EAAE,IAAI,CAAClC,UAAU;cACzBmC,iBAAiB,EAAE,IAAI,CAACA;YAC5B,CAAC,CAAC;;YAEF;YACAL,IAAI,CAACM,WAAW,CAAC,iBAAiB,EAAGC,CAAQ,IAAK;cAC9C5B,UAAU,CAAC6B,SAAS,CAAC,iBAAiB,EAAED,CAAC,CAACE,aAAa,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC;YACFT,IAAI,CAACM,WAAW,CAAC,mBAAmB,EAAGC,CAAQ,IAAK;cAChD5B,UAAU,CAAC6B,SAAS,CAAC,mBAAmB,EAAED,CAAC,CAACE,aAAa,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC;YAEF,IAAI,CAAC,CAAC,IAAI,CAACvC,UAAU,EAAE;cACnB8B,IAAI,CAACU,YAAY,CAAEH,CAAQ,IAAK;gBAC5B,MAAMI,OAAO,GAAIJ,CAAC,CAACK,YAAY,CAAC,SAAS,CAAa;gBACtD9B,WAAW,CAAC+B,WAAW,CAAC3B,UAAU,EAAEyB,OAAO,CAAC;gBAE5C,IAAI,IAAI,CAACpD,QAAQ,EAAE;kBACf,IAAI,CAACA,QAAQ,CAAC,IAAI,EAAEE,OAAO,CAAC;gBAChC;cACJ,CAAC,CAAC;YACN;YAEA,MAAMqD,UAAU,GAAG3D,KAAK,CAACU,EAAE,EAAEkD,gBAAgB,KAAK,CAAC,IAAI,CAAC7C,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC;YACpF,IAAI;cACA8B,IAAI,CAACgB,YAAY,CAAC,gBAAgBpD,KAAK,EAAE,EAAEkD,UAAU,EAAEG,SAAS,EAAEA,SAAS,EAAE3C,GAAG,CAAC;YACrF,CAAC,CAAC,OAAOiC,CAAC,EAAE;cACR9B,MAAM,CAACC,KAAK,CAAC,qDAAqD,EAAG6B,CAAC,CAAWW,OAAO,CAAC;YAC7F;UACJ,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;MAEF,OAAO,IAAI,CAACpE,OAAO;IACvB;;IAEA;AACJ;AACA;IACWqE,QAAQA,CAAA,EAA4B;MACvC,IAAI,CAAC,IAAI,CAAC3D,QAAQ,EAAEgB,IAAI,IAAI,CAAC,IAAI,CAAC1B,OAAO,EAAE,OAAO;QAAEsE,OAAO,EAAE;MAAK,CAAC;MAEnE,MAAMzC,UAAU,GAAG,IAAI,CAAC9B,cAAc,CAAC,IAAI,CAACC,OAAO,CAAC;MACpD,IAAI,CAAC6B,UAAU,EAAE,OAAO;QAAEyC,OAAO,EAAE;MAAK,CAAC;MAEzC,MAAMxC,SAAS,GAAGD,UAAU,CAAC1B,mBAAmB,CAAC,IAAI,CAACO,QAAQ,CAACgB,IAAI,CAAC;MACpE,IAAI,CAACI,SAAS,IAAI,CAACA,SAAS,CAACyC,UAAU,EAAE,OAAO;QAAED,OAAO,EAAE;MAAK,CAAC;MAEjE,MAAMtC,WAAW,GAAG,IAAI,CAAChC,OAAO,CAACiC,QAAQ,CAAC,IAAI,CAAC1B,SAAS,CAAc;MACtE,IAAI,CAACyB,WAAW,EAAE,OAAO;QAAEsC,OAAO,EAAE;MAAK,CAAC;MAE1C,IAAIlC,UAAU,GAAG,IAAI,CAACoC,sBAAsB,CAAC,CAAC;MAE9C,MAAM/B,UAAU,GAAGT,WAAW,CAACD,WAAW,CAACK,UAAU,CAAC,IAAI,CAAC,CAAC;;MAE5D;MACA,KAAK,MAAMqC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAAC7C,SAAS,CAACyC,UAAU,CAAC,EAAE;QACjD,MAAMK,QAAQ,GAAG9C,SAAS,CAACyC,UAAU,CAACE,GAAG,CAAsB;QAC/D,MAAMI,GAAG,GAAGpC,UAAU,CAACgC,GAAG,CAAC;QAE3B,IAAIG,QAAQ,CAACE,QAAQ,KAAKD,GAAG,KAAKV,SAAS,IAAIU,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,EAAE,CAAC,EAAE;UACxE,MAAME,MAAM,GAAG,UAAUN,GAAG,qCAAqC;UACjE,IAAI,CAACO,wBAAwB,CAAC,KAAK,EAAED,MAAM,CAAC;UAC5C,OAAO;YAAET,OAAO,EAAE,KAAK;YAAEW,YAAY,EAAEF;UAAO,CAAC;QACnD;QAEA,MAAMG,eAAyB,GAAG,EAAE;QACpC,MAAMC,OAAgC,GAAG,CAAC,CAAC;QAE3C,IAAIP,QAAQ,CAACQ,SAAS,KAAKjB,SAAS,IAAIS,QAAQ,CAACS,SAAS,KAAKlB,SAAS,EAAE;UACtEe,eAAe,CAACI,IAAI,CAAC,QAAQ,CAAC;UAC9BH,OAAO,CAAC,QAAQ,CAAC,GAAG;YAAEI,GAAG,EAAEX,QAAQ,CAACQ,SAAS;YAAEI,GAAG,EAAEZ,QAAQ,CAACS;UAAU,CAAC;QAC5E;QACA,IAAIT,QAAQ,CAACa,OAAO,KAAKtB,SAAS,EAAE;UAChCe,eAAe,CAACI,IAAI,CAAC,SAAS,CAAC;UAC/BH,OAAO,CAAC,SAAS,CAAC,GAAG;YAAEO,KAAK,EAAEd,QAAQ,CAACa;UAAQ,CAAC;QACpD;QACA,IAAIb,QAAQ,CAACe,OAAO,KAAKxB,SAAS,IAAIS,QAAQ,CAACgB,OAAO,KAAKzB,SAAS,EAAE;UAClEe,eAAe,CAACI,IAAI,CAAC,OAAO,CAAC;UAC7BH,OAAO,CAAC,OAAO,CAAC,GAAG;YAAEI,GAAG,EAAEX,QAAQ,CAACe,OAAO;YAAEH,GAAG,EAAEZ,QAAQ,CAACgB;UAAQ,CAAC;QACvE;QAEA,MAAMC,MAAM,GAAGjB,QAAQ,CAAC7D,EAAE,EAAE8E,MAAM;QAClC,IAAIA,MAAM,KAAK,OAAO,IAAIA,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,MAAM,EAAE;UAC7DX,eAAe,CAACI,IAAI,CAACO,MAAM,CAAC;QAChC;QAEA,IAAIX,eAAe,CAACY,MAAM,GAAG,CAAC,EAAE;UAC5B,MAAMC,GAAG,GAAGnG,cAAc,CAACoG,iBAAiB,CAACnB,GAAG,EAAEK,eAAe,EAAEC,OAAO,CAAC;UAC3E,IAAI,CAACY,GAAG,CAACzB,OAAO,EAAE;YACd,MAAMS,MAAM,GAAG,UAAUN,GAAG,mBAAmBsB,GAAG,CAACd,YAAY,EAAE;YACjE,IAAI,CAACD,wBAAwB,CAAC,KAAK,EAAED,MAAM,CAAC;YAC5C,OAAO;cAAET,OAAO,EAAE,KAAK;cAAEW,YAAY,EAAEF;YAAO,CAAC;UACnD;QACJ;MACJ;MAEA,IAAI,CAACC,wBAAwB,CAAC,IAAI,CAAC;MACnC,OAAO;QAAEV,OAAO,EAAE;MAAK,CAAC;IAC5B;IAEU2B,QAAQA,CAAA,EAAS;MACvB,OAAO,IAAI;IACf;IAEUC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAAClG,OAAO,IAAI,IAAI,CAACU,QAAQ,EAAE;QAC9B,IAAI,CAACV,OAAO,CAAYmG,UAAU,CAAC,CAAC,IAAI,CAACzF,QAAQ,CAACK,EAAE,EAAEqF,QAAQ,CAAC;MACpE;IACJ;EACJ;EAAC,IAAAC,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAvG,eAAA,GAAAA,eAAA;EAAA,OAAAuG,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"ReferencePlugin-dbg.js","names":["BasePlugin","___BasePlugin","UI5_EVENT","____constants_MetaUIConstants","GlobalPipeline","____core_PipelineManager","Logger","____utils_Logger","ReferencePlugin","_asHost","control","host","getSchemaDefinition","findParentHost","parent","getParent","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","error","rawParentHost","parentHost","subSchema","keys","Object","getProperty","join","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","SUBMIT","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","maxLength","push","minLength","pattern","regex","minimum","maximum","min","max","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { UI5_EVENT, UI5_AGGREGATION } from \"../../constants/MetaUIConstants\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\nimport { Logger } from \"../../utils/Logger\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Interface for the duck-typed parent GeneratorHost.\n */\n private _asHost(control: Control): { getSchemaDefinition(ref: string): ISchema; getProperty(name: string): unknown; fireEvent(name: string, params?: unknown): void; } | null {\n const host = control as unknown as { getSchemaDefinition?: Function; getProperty?: Function; fireEvent?: Function; };\n if (typeof host.getSchemaDefinition === \"function\") {\n return host as { getSchemaDefinition(ref: string): ISchema; getProperty(name: string): unknown; fireEvent(name: string, params?: unknown): void; };\n }\n return null;\n }\n\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (this._asHost(parent)) {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const rawParentHost = this.findParentHost(btn) as Control;\n const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n const keys = Object.keys(parentHost.getProperty(\"schemaDefinitions\") || {});\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions keys: ${keys.join(\", \")}`);\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = (DynamicHostModule as any).default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachEvent(UI5_EVENT.SUBMIT, (e: Event) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const rawParentHost = this.findParentHost(this.control) as Control;\n const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"maxLength\");\n argsMap[\"maxLength\"] = propMeta.maxLength;\n }\n if (propMeta.minLength !== undefined) {\n validatorsToRun.push(\"minLength\");\n argsMap[\"minLength\"] = propMeta.minLength;\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,11 +9,15 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin" {
9
9
  import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
10
10
  import Control from "sap/ui/core/Control";
11
11
  export class ReferencePlugin extends BasePlugin {
12
+ /**
13
+ * Interface for the duck-typed parent GeneratorHost.
14
+ */
15
+ private _asHost;
12
16
  /**
13
17
  * Finds the closest GeneratorHost in the control hierarchy.
14
18
  */
15
19
  private findParentHost;
16
- render(field: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
20
+ render(field: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
17
21
  /**
18
22
  * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.
19
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ReferencePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,6DAA6D,CAAC;IAC7E;;;;OAIG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;IACxF,OAAO,EAAW,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAC3F,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAM1C,MAAa,eAAgB,SAAQ,UAAU;QAC3C;;WAEG;QACH,OAAO,CAAC,cAAc;QAWf,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAuFnL;;WAEG;QACI,QAAQ,IAAI,uBAAuB;QA8D1C,SAAS,CAAC,QAAQ,IAAI,IAAI;QAI1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAK/B;CAEA"}
1
+ {"version":3,"file":"ReferencePlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/ReferencePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,6DAA6D,CAAC;IAC7E;;;;OAIG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;IAExF,OAAO,EAAW,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAC3F,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAO1C,MAAa,eAAgB,SAAQ,UAAU;QAC3C;;WAEG;QACH,OAAO,CAAC,OAAO;QAQf;;WAEG;QACH,OAAO,CAAC,cAAc;QAWf,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAyF9N;;WAEG;QACI,QAAQ,IAAI,uBAAuB;QAmE1C,SAAS,CAAC,QAAQ,IAAI,IAAI;QAI1B,SAAS,CAAC,UAAU,IAAI,IAAI;KAK/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin","sap/m/Button","../../core/PipelineManager"],function(e,t,i){"use strict";const n=e["BasePlugin"];const r=i["GlobalPipeline"];class a extends n{findParentHost(e){let t=e.getParent();while(t){if(typeof t.getSchemaDefinition==="function"){return t}t=t.getParent()}return null}render(e,i,n="meta",r,a){this.onChange=a;this.metadata=e;const s=i.startsWith("/")?i.substring(1):i;const o=e.ui?.label||s;this.control=new t({id:this.generateStableId(r,i),text:!this.isEditable?`View Link: ${o}`:`Edit Link: ${o}`,icon:"sap-icon://chain-link",press:t=>{const r=t.getSource();if(!this.metadata?.$ref){Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);return}const a=this.findParentHost(r);if(!a){Logger.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");return}const l=a.getSchemaDefinition(this.metadata.$ref);if(!l){Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`,a.getProperty("schemaDefinitions"));return}const u=r.getModel(n);if(!u){Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${n}' from the button.`);return}const c=r.getBindingContext(n);let d=i;if(c&&!i.startsWith("/")){const e=c.getPath();d=e.endsWith("/")?e+i:e==="/"?"/"+i:e+"/"+i}const f=u.getProperty(d);const g=f?JSON.parse(JSON.stringify(f)):{};sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"],t=>{const i=t.default||t;const n=new i({schemaDefinition:l,schemaDefinitions:a.getProperty("schemaDefinitions"),data:g,editable:this.isEditable,useMessageManager:this.useMessageManager});n.attachEvent("validationError",e=>{a.fireEvent("validationError",e.getParameters())});n.attachEvent("validationSuccess",e=>{a.fireEvent("validationSuccess",e.getParameters())});if(!!this.isEditable){n.attachSubmit(e=>{const t=e.getParameter("payload");u.setProperty(d,t);if(this.onChange){this.onChange(true,s)}})}const c=e.ui?.dialogButtonText||(!this.isEditable?"Close":"OK");try{n.openInDialog(`Nested Link: ${o}`,c,undefined,undefined,r)}catch(e){Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`,e.message)}})}});return this.control}validate(){if(!this.metadata?.$ref||!this.control)return{isValid:true};const e=this.findParentHost(this.control);if(!e)return{isValid:true};const t=e.getSchemaDefinition(this.metadata.$ref);if(!t||!t.properties)return{isValid:true};const i=this.control.getModel(this.modelName);if(!i)return{isValid:true};let n=this.getAbsoluteBindingPath();const a=i.getProperty(n)||{};for(const e of Object.keys(t.properties)){const i=t.properties[e];const n=a[e];if(i.required&&(n===undefined||n===null||n==="")){const t=`Field '${e}' is required in referenced object.`;this.setVisualValidationState(false,t);return{isValid:false,errorMessage:t}}const s=[];const o={};if(i.minLength!==undefined||i.maxLength!==undefined){s.push("length");o["length"]={min:i.minLength,max:i.maxLength}}if(i.pattern!==undefined){s.push("pattern");o["pattern"]={regex:i.pattern}}if(i.minimum!==undefined||i.maximum!==undefined){s.push("range");o["range"]={min:i.minimum,max:i.maximum}}const l=i.ui?.format;if(l==="email"||l==="url"||l==="iban"){s.push(l)}if(s.length>0){const t=r.executeValidation(n,s,o);if(!t.isValid){const i=`Field '${e}' in reference: ${t.errorMessage}`;this.setVisualValidationState(false,i);return{isValid:false,errorMessage:i}}}}this.setVisualValidationState(true);return{isValid:true}}getValue(){return null}applyState(){if(this.control&&this.metadata){this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.ReferencePlugin=a;return s});
1
+ sap.ui.define(["./BasePlugin","../../constants/MetaUIConstants","sap/m/Button","../../core/PipelineManager","../../utils/Logger"],function(e,t,n,i,s){"use strict";const a=e["BasePlugin"];const r=t["UI5_EVENT"];const o=i["GlobalPipeline"];const l=s["Logger"];class u extends a{_asHost(e){const t=e;if(typeof t.getSchemaDefinition==="function"){return t}return null}findParentHost(e){let t=e.getParent();while(t){if(this._asHost(t)){return t}t=t.getParent()}return null}render(e,t,i="meta",s,a){this.onChange=a;this.metadata=e;const o=t.startsWith("/")?t.substring(1):t;const u=e.ui?.label||o;this.control=new n({id:this.generateStableId(s,t),text:!this.isEditable?`View Link: ${u}`:`Edit Link: ${u}`,icon:"sap-icon://chain-link",press:n=>{const s=n.getSource();if(!this.metadata?.$ref){l.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);return}const a=this.findParentHost(s);const c=a?this._asHost(a):null;if(!c){l.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");return}const d=c.getSchemaDefinition(this.metadata.$ref);if(!d){const e=Object.keys(c.getProperty("schemaDefinitions")||{});l.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions keys: ${e.join(", ")}`);return}const f=s.getModel(i);if(!f){l.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${i}' from the button.`);return}const h=s.getBindingContext(i);let g=t;if(h&&!t.startsWith("/")){const e=h.getPath();g=e.endsWith("/")?e+t:e==="/"?"/"+t:e+"/"+t}const m=f.getProperty(g);const p=m?JSON.parse(JSON.stringify(m)):{};sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"],t=>{const n=t.default||t;const i=new n({schemaDefinition:d,schemaDefinitions:c.getProperty("schemaDefinitions"),data:p,editable:this.isEditable,useMessageManager:this.useMessageManager});i.attachEvent("validationError",e=>{c.fireEvent("validationError",e.getParameters())});i.attachEvent("validationSuccess",e=>{c.fireEvent("validationSuccess",e.getParameters())});if(!!this.isEditable){i.attachEvent(r.SUBMIT,e=>{const t=e.getParameter("payload");f.setProperty(g,t);if(this.onChange){this.onChange(true,o)}})}const a=e.ui?.dialogButtonText||(!this.isEditable?"Close":"OK");try{i.openInDialog(`Nested Link: ${u}`,a,undefined,undefined,s)}catch(e){l.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`,e.message)}})}});return this.control}validate(){if(!this.metadata?.$ref||!this.control)return{isValid:true};const e=this.findParentHost(this.control);const t=e?this._asHost(e):null;if(!t)return{isValid:true};const n=t.getSchemaDefinition(this.metadata.$ref);if(!n||!n.properties)return{isValid:true};const i=this.control.getModel(this.modelName);if(!i)return{isValid:true};let s=this.getAbsoluteBindingPath();const a=i.getProperty(s)||{};for(const e of Object.keys(n.properties)){const t=n.properties[e];const i=a[e];if(t.required&&(i===undefined||i===null||i==="")){const t=`Field '${e}' is required in referenced object.`;this.setVisualValidationState(false,t);return{isValid:false,errorMessage:t}}const s=[];const r={};if(t.maxLength!==undefined){s.push("maxLength");r["maxLength"]=t.maxLength}if(t.minLength!==undefined){s.push("minLength");r["minLength"]=t.minLength}if(t.pattern!==undefined){s.push("pattern");r["pattern"]={regex:t.pattern}}if(t.minimum!==undefined||t.maximum!==undefined){s.push("range");r["range"]={min:t.minimum,max:t.maximum}}const l=t.ui?.format;if(l==="email"||l==="url"||l==="iban"){s.push(l)}if(s.length>0){const t=o.executeValidation(i,s,r);if(!t.isValid){const n=`Field '${e}' in reference: ${t.errorMessage}`;this.setVisualValidationState(false,n);return{isValid:false,errorMessage:n}}}}this.setVisualValidationState(true);return{isValid:true}}getValue(){return null}applyState(){if(this.control&&this.metadata){this.control.setEnabled(!this.metadata.ui?.readOnly)}}}var c={__esModule:true};c.ReferencePlugin=u;return c});
2
2
  //# sourceMappingURL=ReferencePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReferencePlugin.js","names":["BasePlugin","___BasePlugin","GlobalPipeline","____core_PipelineManager","ReferencePlugin","findParentHost","control","parent","getParent","getSchemaDefinition","render","field","bindingPath","modelName","engineScopeId","onChange","this","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","Logger","error","parentHost","subSchema","getProperty","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","host","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","attachSubmit","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","Object","keys","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","minLength","maxLength","push","min","max","pattern","regex","minimum","maximum","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (typeof (parent as any).getSchemaDefinition === \"function\") {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const parentHost = this.findParentHost(btn);\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty(\"schemaDefinitions\"));\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachSubmit((e: Event) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const parentHost = this.findParentHost(this.control);\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"length\");\n argsMap[\"length\"] = { min: propMeta.minLength, max: propMeta.maxLength };\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ReferencePlugin.js","names":["BasePlugin","___BasePlugin","UI5_EVENT","____constants_MetaUIConstants","GlobalPipeline","____core_PipelineManager","Logger","____utils_Logger","ReferencePlugin","_asHost","control","host","getSchemaDefinition","findParentHost","parent","getParent","this","render","field","bindingPath","modelName","engineScopeId","onChange","metadata","propKey","startsWith","substring","label","ui","Button","id","generateStableId","text","isEditable","icon","press","oEvent","btn","getSource","$ref","error","rawParentHost","parentHost","subSchema","keys","Object","getProperty","join","parentModel","getModel","bindingContext","getBindingContext","updatePath","ctxPath","getPath","endsWith","rawData","nestedData","JSON","parse","stringify","sap","require","DynamicHostModule","DynamicHostClass","default","schemaDefinition","schemaDefinitions","data","editable","useMessageManager","attachEvent","e","fireEvent","getParameters","SUBMIT","payload","getParameter","setProperty","buttonText","dialogButtonText","openInDialog","undefined","message","validate","isValid","properties","getAbsoluteBindingPath","key","propMeta","val","required","errMsg","setVisualValidationState","errorMessage","validatorsToRun","argsMap","maxLength","push","minLength","pattern","regex","minimum","maximum","min","max","format","length","res","executeValidation","getValue","applyState","setEnabled","readOnly","__exports","__esModule"],"sources":["ReferencePlugin.ts"],"sourcesContent":["/**\n * @file ReferencePlugin.ts\n * @description Renders a button that lazily loads a referenced schema definition from the global dictionary\n * and opens it in a nested dialog. Implements headless validation for the deferred schema.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPluginValidationResult } from \"../../interfaces/IPlugin\";\nimport { UI5_EVENT, UI5_AGGREGATION } from \"../../constants/MetaUIConstants\";\nimport { ISchema, IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport Event from \"sap/ui/base/Event\";\nimport Button from \"sap/m/Button\";\nimport JSONModel from \"sap/ui/model/json/JSONModel\";\nimport { GlobalPipeline } from \"../../core/PipelineManager\";\nimport { Logger } from \"../../utils/Logger\";\n\nexport class ReferencePlugin extends BasePlugin {\n /**\n * Interface for the duck-typed parent GeneratorHost.\n */\n private _asHost(control: Control): { getSchemaDefinition(ref: string): ISchema; getProperty(name: string): unknown; fireEvent(name: string, params?: unknown): void; } | null {\n const host = control as unknown as { getSchemaDefinition?: Function; getProperty?: Function; fireEvent?: Function; };\n if (typeof host.getSchemaDefinition === \"function\") {\n return host as { getSchemaDefinition(ref: string): ISchema; getProperty(name: string): unknown; fireEvent(name: string, params?: unknown): void; };\n }\n return null;\n }\n\n /**\n * Finds the closest GeneratorHost in the control hierarchy.\n */\n private findParentHost(control: Control): unknown {\n let parent = control.getParent();\n while (parent) {\n if (this._asHost(parent)) {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n }\n\n public render(field: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = field;\n const propKey = bindingPath.startsWith(\"/\") ? bindingPath.substring(1) : bindingPath;\n const label = field.ui?.label || propKey;\n\n this.control = new Button({\n id: this.generateStableId(engineScopeId, bindingPath),\n text: !this.isEditable ? `View Link: ${label}` : `Edit Link: ${label}`,\n icon: \"sap-icon://chain-link\",\n press: (oEvent: Event) => {\n const btn = oEvent.getSource() as Button;\n if (!this.metadata?.$ref) {\n Logger.error(`[ReferencePlugin] FATAL: this.metadata.$ref is MISSING or UNDEFINED! Cannot resolve child schema.`);\n return;\n }\n \n const rawParentHost = this.findParentHost(btn) as Control;\n const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;\n if (!parentHost) {\n Logger.error(\"[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.\");\n return;\n }\n\n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema) {\n const keys = Object.keys(parentHost.getProperty(\"schemaDefinitions\") || {});\n Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions keys: ${keys.join(\", \")}`);\n return;\n }\n\n const parentModel = btn.getModel(modelName) as JSONModel;\n if (!parentModel) {\n Logger.error(`[ReferencePlugin] FATAL: Could not get JSONModel named '${modelName}' from the button.`);\n return;\n }\n \n const bindingContext = btn.getBindingContext(modelName);\n let updatePath = bindingPath;\n if (bindingContext && !bindingPath.startsWith(\"/\")) {\n const ctxPath = bindingContext.getPath();\n updatePath = ctxPath.endsWith(\"/\") ? ctxPath + bindingPath : (ctxPath === \"/\" ? \"/\" + bindingPath : ctxPath + \"/\" + bindingPath);\n }\n \n const rawData = parentModel.getProperty(updatePath);\n const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};\n\n sap.ui.require([\"nz/co/siliconst/ui5/metaui/controls/DynamicHost\"], (DynamicHostModule: unknown) => {\n const DynamicHostClass = (DynamicHostModule as any).default || DynamicHostModule;\n const host = new DynamicHostClass({\n schemaDefinition: subSchema,\n schemaDefinitions: parentHost.getProperty(\"schemaDefinitions\"), // Pass the dictionary down\n data: nestedData,\n editable: this.isEditable,\n useMessageManager: this.useMessageManager\n });\n\n // Event Piping: Bubble validation events up to the parent host\n host.attachEvent(\"validationError\", (e: Event) => {\n parentHost.fireEvent(\"validationError\", e.getParameters());\n });\n host.attachEvent(\"validationSuccess\", (e: Event) => {\n parentHost.fireEvent(\"validationSuccess\", e.getParameters());\n });\n\n if (!!this.isEditable) {\n host.attachEvent(UI5_EVENT.SUBMIT, (e: Event) => {\n const payload = (e.getParameter(\"payload\") as unknown);\n parentModel.setProperty(updatePath, payload);\n \n if (this.onChange) {\n this.onChange(true, propKey);\n }\n });\n }\n\n const buttonText = field.ui?.dialogButtonText || (!this.isEditable ? \"Close\" : \"OK\");\n try {\n host.openInDialog(`Nested Link: ${label}`, buttonText, undefined, undefined, btn);\n } catch (e) {\n Logger.error(`[ReferencePlugin] FATAL ERROR CALLING openInDialog:`, (e as Error).message);\n }\n });\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Headless validation: since child controls are not rendered, we manually validate the nested payload against the lazily resolved schema.\n */\n public validate(): IPluginValidationResult {\n if (!this.metadata?.$ref || !this.control) return { isValid: true };\n \n const rawParentHost = this.findParentHost(this.control) as Control;\n const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;\n if (!parentHost) return { isValid: true };\n \n const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);\n if (!subSchema || !subSchema.properties) return { isValid: true };\n \n const parentModel = this.control.getModel(this.modelName) as JSONModel;\n if (!parentModel) return { isValid: true };\n \n let updatePath = this.getAbsoluteBindingPath();\n \n const nestedData = parentModel.getProperty(updatePath) || {};\n \n // Basic headless validation over the subSchema properties\n for (const key of Object.keys(subSchema.properties)) {\n const propMeta = subSchema.properties[key] as IPropertyMetadata;\n const val = nestedData[key];\n \n if (propMeta.required && (val === undefined || val === null || val === \"\")) {\n const errMsg = `Field '${key}' is required in referenced object.`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n \n const validatorsToRun: string[] = [];\n const argsMap: Record<string, unknown> = {};\n\n if (propMeta.maxLength !== undefined) {\n validatorsToRun.push(\"maxLength\");\n argsMap[\"maxLength\"] = propMeta.maxLength;\n }\n if (propMeta.minLength !== undefined) {\n validatorsToRun.push(\"minLength\");\n argsMap[\"minLength\"] = propMeta.minLength;\n }\n if (propMeta.pattern !== undefined) {\n validatorsToRun.push(\"pattern\");\n argsMap[\"pattern\"] = { regex: propMeta.pattern };\n }\n if (propMeta.minimum !== undefined || propMeta.maximum !== undefined) {\n validatorsToRun.push(\"range\");\n argsMap[\"range\"] = { min: propMeta.minimum, max: propMeta.maximum };\n }\n \n const format = propMeta.ui?.format;\n if (format === \"email\" || format === \"url\" || format === \"iban\") {\n validatorsToRun.push(format);\n }\n \n if (validatorsToRun.length > 0) {\n const res = GlobalPipeline.executeValidation(val, validatorsToRun, argsMap);\n if (!res.isValid) {\n const errMsg = `Field '${key}' in reference: ${res.errorMessage}`;\n this.setVisualValidationState(false, errMsg);\n return { isValid: false, errorMessage: errMsg };\n }\n }\n }\n \n this.setVisualValidationState(true);\n return { isValid: true };\n }\n\n protected getValue(): null {\n return null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n (this.control as Button).setEnabled(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,21 +6,34 @@
6
6
 
7
7
  import { BasePlugin } from "./BasePlugin";
8
8
  import { IPluginValidationResult } from "../../interfaces/IPlugin";
9
+ import { UI5_EVENT, UI5_AGGREGATION } from "../../constants/MetaUIConstants";
9
10
  import { ISchema, IPropertyMetadata } from "../../interfaces/ISchema";
10
11
  import Control from "sap/ui/core/Control";
11
12
  import Event from "sap/ui/base/Event";
12
13
  import Button from "sap/m/Button";
13
14
  import JSONModel from "sap/ui/model/json/JSONModel";
14
15
  import { GlobalPipeline } from "../../core/PipelineManager";
16
+ import { Logger } from "../../utils/Logger";
15
17
 
16
18
  export class ReferencePlugin extends BasePlugin {
19
+ /**
20
+ * Interface for the duck-typed parent GeneratorHost.
21
+ */
22
+ private _asHost(control: Control): { getSchemaDefinition(ref: string): ISchema; getProperty(name: string): unknown; fireEvent(name: string, params?: unknown): void; } | null {
23
+ const host = control as unknown as { getSchemaDefinition?: Function; getProperty?: Function; fireEvent?: Function; };
24
+ if (typeof host.getSchemaDefinition === "function") {
25
+ return host as { getSchemaDefinition(ref: string): ISchema; getProperty(name: string): unknown; fireEvent(name: string, params?: unknown): void; };
26
+ }
27
+ return null;
28
+ }
29
+
17
30
  /**
18
31
  * Finds the closest GeneratorHost in the control hierarchy.
19
32
  */
20
33
  private findParentHost(control: Control): unknown {
21
34
  let parent = control.getParent();
22
35
  while (parent) {
23
- if (typeof (parent as any).getSchemaDefinition === "function") {
36
+ if (this._asHost(parent)) {
24
37
  return parent;
25
38
  }
26
39
  parent = parent.getParent();
@@ -28,7 +41,7 @@ export class ReferencePlugin extends BasePlugin {
28
41
  return null;
29
42
  }
30
43
 
31
- public render(field: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
44
+ public render(field: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {
32
45
  this.onChange = onChange;
33
46
  this.metadata = field;
34
47
  const propKey = bindingPath.startsWith("/") ? bindingPath.substring(1) : bindingPath;
@@ -45,7 +58,8 @@ export class ReferencePlugin extends BasePlugin {
45
58
  return;
46
59
  }
47
60
 
48
- const parentHost = this.findParentHost(btn);
61
+ const rawParentHost = this.findParentHost(btn) as Control;
62
+ const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;
49
63
  if (!parentHost) {
50
64
  Logger.error("[ReferencePlugin] FATAL: Could not locate parent GeneratorHost via duck typing `getSchemaDefinition`.");
51
65
  return;
@@ -53,7 +67,8 @@ export class ReferencePlugin extends BasePlugin {
53
67
 
54
68
  const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);
55
69
  if (!subSchema) {
56
- Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions:`, parentHost.getProperty("schemaDefinitions"));
70
+ const keys = Object.keys(parentHost.getProperty("schemaDefinitions") || {});
71
+ Logger.error(`[ReferencePlugin] FATAL: Schema definition not found for reference: ${this.metadata.$ref}. Dumping parent schemaDefinitions keys: ${keys.join(", ")}`);
57
72
  return;
58
73
  }
59
74
 
@@ -74,7 +89,7 @@ export class ReferencePlugin extends BasePlugin {
74
89
  const nestedData = rawData ? JSON.parse(JSON.stringify(rawData)) : {};
75
90
 
76
91
  sap.ui.require(["nz/co/siliconst/ui5/metaui/controls/DynamicHost"], (DynamicHostModule: unknown) => {
77
- const DynamicHostClass = DynamicHostModule.default || DynamicHostModule;
92
+ const DynamicHostClass = (DynamicHostModule as any).default || DynamicHostModule;
78
93
  const host = new DynamicHostClass({
79
94
  schemaDefinition: subSchema,
80
95
  schemaDefinitions: parentHost.getProperty("schemaDefinitions"), // Pass the dictionary down
@@ -92,7 +107,7 @@ export class ReferencePlugin extends BasePlugin {
92
107
  });
93
108
 
94
109
  if (!!this.isEditable) {
95
- host.attachSubmit((e: Event) => {
110
+ host.attachEvent(UI5_EVENT.SUBMIT, (e: Event) => {
96
111
  const payload = (e.getParameter("payload") as unknown);
97
112
  parentModel.setProperty(updatePath, payload);
98
113
 
@@ -121,7 +136,8 @@ export class ReferencePlugin extends BasePlugin {
121
136
  public validate(): IPluginValidationResult {
122
137
  if (!this.metadata?.$ref || !this.control) return { isValid: true };
123
138
 
124
- const parentHost = this.findParentHost(this.control);
139
+ const rawParentHost = this.findParentHost(this.control) as Control;
140
+ const parentHost = rawParentHost ? this._asHost(rawParentHost) : null;
125
141
  if (!parentHost) return { isValid: true };
126
142
 
127
143
  const subSchema = parentHost.getSchemaDefinition(this.metadata.$ref);
@@ -148,9 +164,13 @@ export class ReferencePlugin extends BasePlugin {
148
164
  const validatorsToRun: string[] = [];
149
165
  const argsMap: Record<string, unknown> = {};
150
166
 
151
- if (propMeta.minLength !== undefined || propMeta.maxLength !== undefined) {
152
- validatorsToRun.push("length");
153
- argsMap["length"] = { min: propMeta.minLength, max: propMeta.maxLength };
167
+ if (propMeta.maxLength !== undefined) {
168
+ validatorsToRun.push("maxLength");
169
+ argsMap["maxLength"] = propMeta.maxLength;
170
+ }
171
+ if (propMeta.minLength !== undefined) {
172
+ validatorsToRun.push("minLength");
173
+ argsMap["minLength"] = propMeta.minLength;
154
174
  }
155
175
  if (propMeta.pattern !== undefined) {
156
176
  validatorsToRun.push("pattern");
@@ -41,10 +41,10 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/RichTextControl", "sap/
41
41
  });
42
42
  this.applyCommonDirectives(this.control, metadata, modelName);
43
43
  if (isValueAccessor(this.control) && this.control.attachCapture) {
44
- this.control.attachCapture(() => {
45
- const result = this.validateAndApplyVisualState();
44
+ this.control.attachEvent('capture', () => {
45
+ const result = this.validate();
46
46
  if (this.onChange) {
47
- this.onChange(result.isValid, this.fieldKey);
47
+ this.onChange(result.isValid, this.fieldKey, result.errorMessage);
48
48
  }
49
49
  });
50
50
  }
@@ -57,7 +57,7 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/RichTextControl", "sap/
57
57
  */
58
58
  getValue() {
59
59
  if (isValueAccessor(this.control)) {
60
- return this.control.getValue();
60
+ return this.control.getProperty('value');
61
61
  }
62
62
  return null;
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","RichTextControl","_interopRequireDefault","__RichTextControl","isValueAccessor","control","getValue","RichTextPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","FormattedTextControl","id","generateStableId","htmlText","generateBindingInfo","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachCapture","result","validateAndApplyVisualState","isValid","applyState","setProperty","__exports","__esModule"],"sources":["RichTextPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport RichTextControl from \"../../controls/RichTextControl\";\nimport FormattedTextControl from \"sap/m/FormattedText\";\n\ninterface IValueAccessor {\n getValue(): unknown;\n attachCapture?(fn: Function): void;\n}\n\nfunction isValueAccessor(control: unknown): control is IValueAccessor {\n return control !== null && typeof (control as IValueAccessor).getValue === 'function';\n}\n\nexport class RichTextPlugin extends BasePlugin {\n /**\n * Renders a `RichTextControl` component.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured RichTextControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n \n this.control = new FormattedTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n htmlText: this.generateBindingInfo(bindingPath, modelName)\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new RichTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n }) as Control;\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n if (isValueAccessor(this.control) && this.control.attachCapture) {\n this.control.attachCapture(() => {\n const result = this.validateAndApplyVisualState();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n }\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current HTML string value.\n * @returns {unknown} The string value.\n */\n protected getValue(): unknown {\n if (isValueAccessor(this.control)) {\n return this.control.getValue();\n }\n return null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RichTextPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","RichTextControl","_interopRequireDefault","__RichTextControl","isValueAccessor","control","getValue","RichTextPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","FormattedTextControl","id","generateStableId","htmlText","generateBindingInfo","applyCommonDirectives","value","schemaMetadata","readOnly","ui","attachCapture","attachEvent","result","validate","isValid","errorMessage","getProperty","applyState","setProperty","__exports","__esModule"],"sources":["RichTextPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport RichTextControl from \"../../controls/RichTextControl\";\nimport FormattedTextControl from \"sap/m/FormattedText\";\n\ninterface IValueAccessor {\n getValue(): unknown;\n attachCapture?(fn: Function): void;\n}\n\nfunction isValueAccessor(control: unknown): control is IValueAccessor {\n return control !== null && typeof (control as IValueAccessor).getValue === 'function';\n}\n\nexport class RichTextPlugin extends BasePlugin {\n /**\n * Renders a `RichTextControl` component.\n * \n * @param metadata The specific JSON schema properties for this field.\n * @param bindingPath The JSON path bound to this control.\n * @param modelName The UI5 JSONModel name.\n * @param engineScopeId The deterministic scope ID.\n * @param onChange The callback fired on value change.\n * @returns {Control} The configured RichTextControl.\n */\n public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = \"meta\", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control {\n this.onChange = onChange;\n this.metadata = metadata;\n this.fieldKey = bindingPath.replace('/', '');\n this.modelName = modelName;\n\n if (!this.isEditable) {\n \n this.control = new FormattedTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n htmlText: this.generateBindingInfo(bindingPath, modelName)\n }) as Control;\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new RichTextControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: this.generateBindingInfo(bindingPath, modelName),\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n }) as Control;\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n if (isValueAccessor(this.control) && this.control.attachCapture) {\n this.control.attachEvent('capture', () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey, result.errorMessage);\n }\n });\n }\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current HTML string value.\n * @returns {unknown} The string value.\n */\n protected getValue(): unknown {\n if (isValueAccessor(this.control)) {\n return this.control.getProperty('value');\n }\n return null;\n }\n\n /**\n * Applies dynamic read-only state.\n */\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as sap.ui.core.Control).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,7 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin" {
18
18
  * @param onChange The callback fired on value change.
19
19
  * @returns {Control} The configured RichTextControl.
20
20
  */
21
- render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
21
+ render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string, errorMessage?: string, controlId?: string) => void): Control;
22
22
  /**
23
23
  * Retrieves the current HTML string value.
24
24
  * @returns {unknown} The string value.
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,4DAA4D,CAAC;IAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,UAAU,cAAc;QACpB,QAAQ,IAAI,OAAO,CAAC;QACpB,aAAa,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC;KACtC;IAED,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAEpE;IAED,MAAa,cAAe,SAAQ,UAAU;QAC1C;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAqCxL;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAO7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
1
+ {"version":3,"file":"RichTextPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,4DAA4D,CAAC;IAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,UAAU,cAAc;QACpB,QAAQ,IAAI,OAAO,CAAC;QACpB,aAAa,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC;KACtC;IAED,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAEpE;IAED,MAAa,cAAe,SAAQ,UAAU;QAC1C;;;;;;;;;WASG;QACI,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,EAAG,SAAS,GAAE,MAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO;QAqCnO;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAO7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["../controls/BasePlugin","../../controls/RichTextControl","sap/m/FormattedText"],function(t,e,i){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const o=n(e);function s(t){return t!==null&&typeof t.getValue==="function"}class r extends a{render(t,e,n="meta",a,r){this.onChange=r;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=n;if(!this.isEditable){this.control=new i({id:this.generateStableId(a,e),htmlText:this.generateBindingInfo(e,n)});this.applyCommonDirectives(this.control,t,n);return this.control}this.control=new o({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,n),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,n);if(s(this.control)&&this.control.attachCapture){this.control.attachCapture(()=>{const t=this.validateAndApplyVisualState();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}})}return this.control}getValue(){if(s(this.control)){return this.control.getValue()}return null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var l={__esModule:true};l.RichTextPlugin=r;return l});
1
+ sap.ui.define(["../controls/BasePlugin","../../controls/RichTextControl","sap/m/FormattedText"],function(t,e,i){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const r=n(e);function o(t){return t!==null&&typeof t.getValue==="function"}class s extends a{render(t,e,n="meta",a,s){this.onChange=s;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=n;if(!this.isEditable){this.control=new i({id:this.generateStableId(a,e),htmlText:this.generateBindingInfo(e,n)});this.applyCommonDirectives(this.control,t,n);return this.control}this.control=new r({id:this.generateStableId(a,e),value:this.generateBindingInfo(e,n),schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,n);if(o(this.control)&&this.control.attachCapture){this.control.attachEvent("capture",()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey,t.errorMessage)}})}return this.control}getValue(){if(o(this.control)){return this.control.getProperty("value")}return null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var l={__esModule:true};l.RichTextPlugin=s;return l});
2
2
  //# sourceMappingURL=RichTextPlugin.js.map