@siliconst/metaui 1.4.6 → 1.4.8

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 (433) hide show
  1. package/package.json +1 -1
  2. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -1
  3. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts +2 -2
  4. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts.map +1 -1
  5. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -1
  6. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +2 -2
  7. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -1
  8. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -1
  9. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +2 -2
  10. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +16 -2
  11. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -1
  12. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +11 -1
  13. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -1
  14. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +1 -1
  15. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -1
  16. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +14 -3
  17. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +48 -5
  18. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
  19. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +48 -5
  20. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
  21. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
  22. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
  23. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +55 -10
  24. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +32 -1
  25. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -1
  26. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +7 -0
  27. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -1
  28. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +1 -1
  29. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -1
  30. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +11 -1
  31. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +20 -0
  32. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -1
  33. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +12 -0
  34. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -1
  35. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +1 -1
  36. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -1
  37. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +21 -0
  38. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +38 -7
  39. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -1
  40. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +17 -1
  41. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -1
  42. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +1 -1
  43. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -1
  44. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +46 -8
  45. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +22 -6
  46. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -1
  47. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +41 -0
  48. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -1
  49. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +1 -1
  50. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -1
  51. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +57 -12
  52. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +33 -5
  53. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
  54. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +15 -4
  55. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
  56. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
  57. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
  58. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +40 -7
  59. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +5 -0
  60. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
  61. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +7 -3
  62. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
  63. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
  64. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +8 -4
  65. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +4 -0
  66. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
  67. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +5 -1
  68. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
  69. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
  70. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +5 -1
  71. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js +1 -1
  72. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js.map +1 -1
  73. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts +4 -3
  74. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts.map +1 -1
  75. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js.map +1 -1
  76. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.ts +9 -8
  77. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -3
  78. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
  79. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +5 -1
  80. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
  81. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +1 -1
  82. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
  83. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +11 -6
  84. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
  85. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +1 -1
  86. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
  87. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
  88. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +45 -12
  90. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
  91. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +6 -0
  92. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
  93. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
  94. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
  95. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +26 -13
  96. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +25 -12
  97. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  98. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +5 -5
  99. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  100. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  101. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  102. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +35 -28
  103. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +17 -3
  104. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +5 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
  107. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
  108. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
  109. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +14 -4
  110. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +162 -106
  111. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  112. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +25 -26
  113. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  114. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  115. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  116. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +180 -113
  117. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +26 -0
  118. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  119. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +23 -1
  120. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  121. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  122. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +29 -7
  123. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
  124. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts +1 -1
  125. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +6 -0
  129. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  130. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +7 -2
  131. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  132. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  133. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +11 -6
  134. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js.map +1 -1
  135. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts +1 -1
  136. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts.map +1 -1
  137. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.ts +1 -1
  138. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +10 -0
  139. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +9 -0
  141. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -1
  142. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -1
  143. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +9 -0
  144. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +10 -0
  145. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  146. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +9 -0
  147. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  148. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  149. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +10 -1
  150. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +9 -0
  151. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +8 -0
  153. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -1
  155. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +9 -1
  156. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +3 -33
  157. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +33 -34
  159. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +14 -7
  161. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
  162. package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
  163. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
  164. package/src/nz/co/siliconst/ui5/metaui/library.ts +15 -34
  165. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
  166. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts +1 -1
  167. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -1
  168. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
  169. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +1 -1
  170. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +0 -2
  171. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -1
  172. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts.map +1 -1
  174. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -1
  175. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +2 -4
  176. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js.map +1 -1
  177. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts +1 -1
  178. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts.map +1 -1
  179. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js.map +1 -1
  180. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.ts +1 -1
  181. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +18 -0
  182. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
  183. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +17 -1
  184. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
  186. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +20 -4
  187. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +21 -8
  188. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +18 -1
  190. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
  191. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
  193. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +25 -13
  194. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
  195. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +2 -2
  196. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
  197. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
  198. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +5 -5
  199. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +2 -3
  200. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
  201. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +1 -1
  202. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
  203. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
  204. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
  205. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +5 -3
  206. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +20 -3
  207. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +18 -1
  209. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
  211. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
  212. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +23 -6
  213. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +30 -3
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +26 -1
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +39 -14
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +20 -3
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +18 -1
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +20 -3
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +20 -3
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +18 -1
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +20 -3
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +4 -4
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +4 -2
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +6 -4
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +20 -3
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +18 -1
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +20 -3
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +20 -3
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +18 -1
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +23 -6
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +18 -0
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +17 -1
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +17 -1
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +20 -3
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +18 -1
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +21 -4
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +20 -3
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +18 -1
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +20 -3
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +23 -0
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +21 -1
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +28 -7
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +20 -3
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +18 -1
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +20 -3
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +20 -3
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +17 -0
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +22 -5
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +20 -3
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +18 -1
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +25 -8
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +20 -3
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +18 -1
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +22 -5
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +4 -4
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +4 -2
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +8 -6
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +20 -3
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +18 -1
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +22 -5
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +20 -3
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +18 -1
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +22 -5
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +20 -3
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +18 -1
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +22 -5
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +20 -3
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +18 -1
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +24 -7
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +9 -0
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts +8 -1
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -1
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +13 -6
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +9 -0
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts +8 -1
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +10 -3
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +19 -0
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +18 -1
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +19 -2
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +23 -0
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts +20 -1
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -1
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +25 -6
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js.map +1 -1
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts +1 -1
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts.map +1 -1
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js.map +1 -1
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.ts +2 -2
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js +6 -0
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js.map +1 -1
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts +6 -1
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts.map +1 -1
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js.map +1 -1
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.ts +7 -2
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js +5 -0
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js.map +1 -1
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts +6 -1
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts.map +1 -1
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js.map +1 -1
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.ts +6 -1
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js +5 -0
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js.map +1 -1
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts +6 -1
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts.map +1 -1
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js.map +1 -1
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.ts +6 -1
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js.map +1 -1
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts +1 -1
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts.map +1 -1
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js.map +1 -1
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.ts +1 -1
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js +6 -0
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js.map +1 -1
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts +7 -1
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts.map +1 -1
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js.map +1 -1
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.ts +7 -1
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js +6 -0
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js.map +1 -1
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts +7 -1
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts.map +1 -1
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js.map +1 -1
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.ts +7 -1
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js +6 -0
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js.map +1 -1
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts +7 -1
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts.map +1 -1
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js.map +1 -1
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.ts +7 -1
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js +6 -0
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js.map +1 -1
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts +7 -1
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts.map +1 -1
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js.map +1 -1
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.ts +7 -1
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js +6 -0
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js.map +1 -1
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts +7 -1
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts.map +1 -1
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js.map +1 -1
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.ts +7 -1
  426. package/src/nz/co/siliconst/ui5/metaui/typings/ui5-custom.d.ts +20 -0
  427. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +0 -32
  428. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +0 -1
  429. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +0 -16
  430. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +0 -1
  431. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +0 -2
  432. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +0 -1
  433. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +0 -26
@@ -1,4 +1,4 @@
1
- sap.ui.define(["../controls/BasePlugin", "../../controls/CameraControl"], function (___controls_BasePlugin, __CameraControl) {
1
+ sap.ui.define(["../controls/BasePlugin", "../../controls/CameraControl", "sap/m/Image"], function (___controls_BasePlugin, __CameraControl, ImageControl) {
2
2
  "use strict";
3
3
 
4
4
  function _interopRequireDefault(obj) {
@@ -7,14 +7,22 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/CameraControl"], functi
7
7
  const BasePlugin = ___controls_BasePlugin["BasePlugin"];
8
8
  const CameraControl = _interopRequireDefault(__CameraControl);
9
9
  class CameraPlugin extends BasePlugin {
10
+ /**
11
+ * Renders a `CameraControl` component.
12
+ *
13
+ * @param metadata The specific JSON schema properties for this field.
14
+ * @param bindingPath The JSON path bound to this control.
15
+ * @param modelName The UI5 JSONModel name.
16
+ * @param engineScopeId The deterministic scope ID.
17
+ * @param onChange The callback fired on value change.
18
+ * @returns {Control} The configured CameraControl.
19
+ */
10
20
  render(metadata, bindingPath, modelName = "meta", engineScopeId, onChange) {
11
21
  this.onChange = onChange;
12
22
  this.metadata = metadata;
13
23
  this.fieldKey = bindingPath.replace('/', '');
14
24
  this.modelName = modelName;
15
25
  if (!this.isEditable) {
16
- sap.ui.requireSync("sap/m/Image");
17
- const ImageControl = sap.ui.require("sap/m/Image");
18
26
  this.control = new ImageControl({
19
27
  id: this.generateStableId(engineScopeId, bindingPath),
20
28
  src: `{${modelName}>${bindingPath}}`,
@@ -41,9 +49,18 @@ sap.ui.define(["../controls/BasePlugin", "../../controls/CameraControl"], functi
41
49
  });
42
50
  return this.control;
43
51
  }
52
+
53
+ /**
54
+ * Retrieves the current base64 image state.
55
+ * @returns {unknown} The image value.
56
+ */
44
57
  getValue() {
45
58
  return this.control ? this.control.getValue() : null;
46
59
  }
60
+
61
+ /**
62
+ * Applies dynamic read-only state.
63
+ */
47
64
  applyState() {
48
65
  if (this.control && this.metadata) {
49
66
  if (!this.isEditable) return;
@@ -1 +1 @@
1
- {"version":3,"file":"CameraPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","sap","ui","requireSync","ImageControl","require","control","id","generateStableId","src","width","alt","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validate","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\n\nexport class CameraPlugin extends BasePlugin {\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 sap.ui.requireSync(\"sap/m/Image\");\n const ImageControl = sap.ui.require(\"sap/m/Image\");\n this.control = new ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: `{${modelName}>${bindingPath}}`,\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as unknown as { attachCapture: (fn: Function) => void }).attachCapture(() => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown as { setProperty: (k: string, v: unknown) => void }).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;;;;QAASA,UAAU,GAAAC,sBAAA;EAAA,MAGZC,aAAa,GAAAC,sBAAA,CAAAC,eAAA;EAEb,MAAMC,YAAY,SAASL,UAAU,CAAC;IAClCM,MAAMA,CAACC,QAA2B,EAAGC,WAAmB,EAAGC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAwD,EAAW;MACrL,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACK,QAAQ,GAAGJ,WAAW,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAC5C,IAAI,CAACJ,SAAS,GAAGA,SAAS;MAE1B,IAAI,CAAC,IAAI,CAACK,UAAU,EAAE;QAClBC,GAAG,CAACC,EAAE,CAACC,WAAW,CAAC,aAAa,CAAC;QACjC,MAAMC,YAAY,GAAGH,GAAG,CAACC,EAAE,CAACG,OAAO,CAAC,aAAa,CAAC;QAClD,IAAI,CAACC,OAAO,GAAG,IAAIF,YAAY,CAAC;UAC5BG,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACZ,aAAa,EAAEF,WAAW,CAAC;UACrDe,GAAG,EAAE,IAAId,SAAS,IAAID,WAAW,GAAG;UACpCgB,KAAK,EAAE,OAAO;UACdC,GAAG,EAAElB,QAAQ,CAACS,EAAE,EAAEU,KAAK,IAAI;QAC/B,CAAC,CAAC;QACF,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACP,OAAO,EAAEb,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACW,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIlB,aAAa,CAAC;QAC7BmB,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACZ,aAAa,EAAEF,WAAW,CAAC;QACrDoB,KAAK,EAAE,IAAInB,SAAS,IAAID,WAAW,GAAG;QACtCqB,cAAc,EAAEtB,QAAQ;QACxBuB,QAAQ,EAAE,CAAC,CAACvB,QAAQ,CAACS,EAAE,EAAEc;MAC7B,CAAC,CAAC;MAEF,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACP,OAAO,EAAEb,QAAQ,EAAEE,SAAS,CAAC;;MAE7D;MACC,IAAI,CAACW,OAAO,CAA0DW,aAAa,CAAC,MAAM;QACvF,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;QAC1B,IAAI,IAAI,CAACtB,QAAQ,EAAE;UACf,IAAI,CAACA,QAAQ,CAACqB,MAAM,CAACE,OAAO,EAAE,IAAI,CAACtB,QAAQ,CAAC;QAChD;MACR,CAAC,CAAC;MAEF,OAAO,IAAI,CAACQ,OAAO;IACvB;IAEUe,QAAQA,CAAA,EAAQ;MACtB,OAAO,IAAI,CAACf,OAAO,GAAI,IAAI,CAACA,OAAO,CAA4Ce,QAAQ,CAAC,CAAC,GAAG,IAAI;IACpG;IAEUC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAAChB,OAAO,IAAI,IAAI,CAACb,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACO,UAAU,EAAE;QACrB,IAAI,CAACM,OAAO,CAAiEiB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC9B,QAAQ,CAACS,EAAE,EAAEc,QAAQ,CAAC;MACvI;IACJ;EACJ;EAAC,IAAAQ,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAjC,YAAA,GAAAA,YAAA;EAAA,OAAAiC,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"CameraPlugin-dbg.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validate","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class CameraPlugin extends BasePlugin {\n /**\n * Renders a `CameraControl` 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 CameraControl.\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 ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: `{${modelName}>${bindingPath}}`,\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as CameraControl).attachCapture(() => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current base64 image state.\n * @returns {unknown} The image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CameraControl).getValue() : 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":";;;;;;QAASA,UAAU,GAAAC,sBAAA;EAAA,MAGZC,aAAa,GAAAC,sBAAA,CAAAC,eAAA;EAGb,MAAMC,YAAY,SAASL,UAAU,CAAC;IACzC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWM,MAAMA,CAACC,QAA2B,EAAGC,WAAmB,EAAGC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAwD,EAAW;MACrL,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACK,QAAQ,GAAGJ,WAAW,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAC5C,IAAI,CAACJ,SAAS,GAAGA,SAAS;MAE1B,IAAI,CAAC,IAAI,CAACK,UAAU,EAAE;QAElB,IAAI,CAACC,OAAO,GAAG,IAAIC,YAAY,CAAC;UAC5BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;UACrDW,GAAG,EAAE,IAAIV,SAAS,IAAID,WAAW,GAAG;UACpCY,KAAK,EAAE,OAAO;UACdC,GAAG,EAAEd,QAAQ,CAACe,EAAE,EAAEC,KAAK,IAAI;QAC/B,CAAC,CAAC;QACF,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACT,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;QAC7D,OAAO,IAAI,CAACM,OAAO;MACvB;MAEA,IAAI,CAACA,OAAO,GAAG,IAAIb,aAAa,CAAC;QAC7Be,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEF,WAAW,CAAC;QACrDiB,KAAK,EAAE,IAAIhB,SAAS,IAAID,WAAW,GAAG;QACtCkB,cAAc,EAAEnB,QAAQ;QACxBoB,QAAQ,EAAE,CAAC,CAACpB,QAAQ,CAACe,EAAE,EAAEK;MAC7B,CAAC,CAAC;MAEF,IAAI,CAACH,qBAAqB,CAAC,IAAI,CAACT,OAAO,EAAER,QAAQ,EAAEE,SAAS,CAAC;;MAE7D;MACC,IAAI,CAACM,OAAO,CAAmBa,aAAa,CAAC,MAAM;QAChD,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;QAC1B,IAAI,IAAI,CAACnB,QAAQ,EAAE;UACf,IAAI,CAACA,QAAQ,CAACkB,MAAM,CAACE,OAAO,EAAE,IAAI,CAACnB,QAAQ,CAAC;QAChD;MACR,CAAC,CAAC;MAEF,OAAO,IAAI,CAACG,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACciB,QAAQA,CAAA,EAAY;MAC1B,OAAO,IAAI,CAACjB,OAAO,GAAI,IAAI,CAACA,OAAO,CAAmBiB,QAAQ,CAAC,CAAC,GAAG,IAAI;IAC3E;;IAEA;AACJ;AACA;IACcC,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAAClB,OAAO,IAAI,IAAI,CAACR,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACO,UAAU,EAAE;QACrB,IAAI,CAACC,OAAO,CAAyBmB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC3B,QAAQ,CAACe,EAAE,EAAEK,QAAQ,CAAC;MAC/F;IACJ;EACJ;EAAC,IAAAQ,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAA9B,YAAA,GAAAA,YAAA;EAAA,OAAA8B,SAAA;AAAA","ignoreList":[]}
@@ -3,8 +3,25 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin" {
3
3
  import { IPropertyMetadata } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
4
4
  import Control from "sap/ui/core/Control";
5
5
  export class CameraPlugin extends BasePlugin {
6
+ /**
7
+ * Renders a `CameraControl` component.
8
+ *
9
+ * @param metadata The specific JSON schema properties for this field.
10
+ * @param bindingPath The JSON path bound to this control.
11
+ * @param modelName The UI5 JSONModel name.
12
+ * @param engineScopeId The deterministic scope ID.
13
+ * @param onChange The callback fired on value change.
14
+ * @returns {Control} The configured CameraControl.
15
+ */
6
16
  render(metadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
7
- protected getValue(): any;
17
+ /**
18
+ * Retrieves the current base64 image state.
19
+ * @returns {unknown} The image value.
20
+ */
21
+ protected getValue(): unknown;
22
+ /**
23
+ * Applies dynamic read-only state.
24
+ */
8
25
  protected applyState(): void;
9
26
  }
10
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CameraPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0DAA0D,CAAC;IAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C,MAAa,YAAa,SAAQ,UAAU;QACjC,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;QAuCxL,SAAS,CAAC,QAAQ,IAAI,GAAG;QAIzB,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
1
+ {"version":3,"file":"CameraPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,0DAA0D,CAAC;IAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAI1C,MAAa,YAAa,SAAQ,UAAU;QACxC;;;;;;;;;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;QAsCxL;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["../controls/BasePlugin","../../controls/CameraControl"],function(t,e){"use strict";function i(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const a=t["BasePlugin"];const s=i(e);class n extends a{render(t,e,i="meta",a,n){this.onChange=n;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=i;if(!this.isEditable){sap.ui.requireSync("sap/m/Image");const s=sap.ui.require("sap/m/Image");this.control=new s({id:this.generateStableId(a,e),src:`{${i}>${e}}`,width:"400px",alt:t.ui?.label||"Image"});this.applyCommonDirectives(this.control,t,i);return this.control}this.control=new s({id:this.generateStableId(a,e),value:`{${i}>${e}}`,schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,i);this.control.attachCapture(()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}});return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var r={__esModule:true};r.CameraPlugin=n;return r});
1
+ sap.ui.define(["../controls/BasePlugin","../../controls/CameraControl","sap/m/Image"],function(t,e,i){"use strict";function a(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const n=t["BasePlugin"];const s=a(e);class l extends n{render(t,e,a="meta",n,l){this.onChange=l;this.metadata=t;this.fieldKey=e.replace("/","");this.modelName=a;if(!this.isEditable){this.control=new i({id:this.generateStableId(n,e),src:`{${a}>${e}}`,width:"400px",alt:t.ui?.label||"Image"});this.applyCommonDirectives(this.control,t,a);return this.control}this.control=new s({id:this.generateStableId(n,e),value:`{${a}>${e}}`,schemaMetadata:t,readOnly:!!t.ui?.readOnly});this.applyCommonDirectives(this.control,t,a);this.control.attachCapture(()=>{const t=this.validate();if(this.onChange){this.onChange(t.isValid,this.fieldKey)}});return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setProperty("readOnly",!!this.metadata.ui?.readOnly)}}}var r={__esModule:true};r.CameraPlugin=l;return r});
2
2
  //# sourceMappingURL=CameraPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CameraPlugin.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","sap","ui","requireSync","ImageControl","require","control","id","generateStableId","src","width","alt","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validate","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\n\nexport class CameraPlugin extends BasePlugin {\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 sap.ui.requireSync(\"sap/m/Image\");\n const ImageControl = sap.ui.require(\"sap/m/Image\");\n this.control = new ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: `{${modelName}>${bindingPath}}`,\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as unknown as { attachCapture: (fn: Function) => void }).attachCapture(() => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown as { setProperty: (k: string, v: unknown) => void }).setProperty(\"readOnly\", !!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"0LAASA,EAAUC,EAAA,oBAGZC,EAAaC,EAAAC,GAEb,MAAMC,UAAqBL,EACvBM,OAAOC,EAA8BC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAClHC,KAAKD,SAAWA,EAChBC,KAAKL,SAAWA,EAChBK,KAAKC,SAAWL,EAAYM,QAAQ,IAAK,IACzCF,KAAKH,UAAYA,EAEjB,IAAKG,KAAKG,WAAY,CAClBC,IAAIC,GAAGC,YAAY,eACnB,MAAMC,EAAeH,IAAIC,GAAGG,QAAQ,eACpCR,KAAKS,QAAU,IAAIF,EAAa,CAC5BG,GAAIV,KAAKW,iBAAiBb,EAAeF,GACzCgB,IAAK,IAAIf,KAAaD,KACtBiB,MAAO,QACPC,IAAKnB,EAASU,IAAIU,OAAS,UAE/Bf,KAAKgB,sBAAsBhB,KAAKS,QAASd,EAAUE,GACnD,OAAOG,KAAKS,OAChB,CAEAT,KAAKS,QAAU,IAAInB,EAAc,CAC7BoB,GAAIV,KAAKW,iBAAiBb,EAAeF,GACzCqB,MAAO,IAAIpB,KAAaD,KACxBsB,eAAgBvB,EAChBwB,WAAYxB,EAASU,IAAIc,WAG7BnB,KAAKgB,sBAAsBhB,KAAKS,QAASd,EAAUE,GAGlDG,KAAKS,QAAiEW,cAAc,KACjF,MAAMC,EAASrB,KAAKsB,WAChB,GAAItB,KAAKD,SAAU,CACfC,KAAKD,SAASsB,EAAOE,QAASvB,KAAKC,SACvC,IAGR,OAAOD,KAAKS,OAChB,CAEUe,WACN,OAAOxB,KAAKS,QAAWT,KAAKS,QAAmDe,WAAa,IAChG,CAEUC,aACN,GAAIzB,KAAKS,SAAWT,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKS,QAAwEiB,YAAY,aAAc1B,KAAKL,SAASU,IAAIc,SAC9H,CACJ,EACH,IAAAQ,EAAA,CAAAC,WAAA,MAAAD,EAAAlC,eAAA,OAAAkC,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"CameraPlugin.js","names":["BasePlugin","___controls_BasePlugin","CameraControl","_interopRequireDefault","__CameraControl","CameraPlugin","render","metadata","bindingPath","modelName","engineScopeId","onChange","this","fieldKey","replace","isEditable","control","ImageControl","id","generateStableId","src","width","alt","ui","label","applyCommonDirectives","value","schemaMetadata","readOnly","attachCapture","result","validate","isValid","getValue","applyState","setProperty","__exports","__esModule"],"sources":["CameraPlugin.ts"],"sourcesContent":["import { BasePlugin } from \"../controls/BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CameraControl from \"../../controls/CameraControl\";\nimport ImageControl from \"sap/m/Image\";\n\nexport class CameraPlugin extends BasePlugin {\n /**\n * Renders a `CameraControl` 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 CameraControl.\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 ImageControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n src: `{${modelName}>${bindingPath}}`,\n width: \"400px\",\n alt: metadata.ui?.label || \"Image\"\n });\n this.applyCommonDirectives(this.control, metadata, modelName);\n return this.control as Control;\n }\n\n this.control = new CameraControl({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n schemaMetadata: metadata,\n readOnly: !!metadata.ui?.readOnly\n });\n\n this.applyCommonDirectives(this.control, metadata, modelName);\n\n // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.\n (this.control as CameraControl).attachCapture(() => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n });\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current base64 image state.\n * @returns {unknown} The image value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CameraControl).getValue() : 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":"0MAASA,EAAUC,EAAA,oBAGZC,EAAaC,EAAAC,GAGb,MAAMC,UAAqBL,EAWvBM,OAAOC,EAA8BC,EAAsBC,EAAoB,OAAQC,EAAwBC,GAClHC,KAAKD,SAAWA,EAChBC,KAAKL,SAAWA,EAChBK,KAAKC,SAAWL,EAAYM,QAAQ,IAAK,IACzCF,KAAKH,UAAYA,EAEjB,IAAKG,KAAKG,WAAY,CAElBH,KAAKI,QAAU,IAAIC,EAAa,CAC5BC,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCY,IAAK,IAAIX,KAAaD,KACtBa,MAAO,QACPC,IAAKf,EAASgB,IAAIC,OAAS,UAE/BZ,KAAKa,sBAAsBb,KAAKI,QAAST,EAAUE,GACnD,OAAOG,KAAKI,OAChB,CAEAJ,KAAKI,QAAU,IAAId,EAAc,CAC7BgB,GAAIN,KAAKO,iBAAiBT,EAAeF,GACzCkB,MAAO,IAAIjB,KAAaD,KACxBmB,eAAgBpB,EAChBqB,WAAYrB,EAASgB,IAAIK,WAG7BhB,KAAKa,sBAAsBb,KAAKI,QAAST,EAAUE,GAGlDG,KAAKI,QAA0Ba,cAAc,KAC1C,MAAMC,EAASlB,KAAKmB,WAChB,GAAInB,KAAKD,SAAU,CACfC,KAAKD,SAASmB,EAAOE,QAASpB,KAAKC,SACvC,IAGR,OAAOD,KAAKI,OAChB,CAMUiB,WACN,OAAOrB,KAAKI,QAAWJ,KAAKI,QAA0BiB,WAAa,IACvE,CAKUC,aACN,GAAItB,KAAKI,SAAWJ,KAAKL,SAAU,CAC/B,IAAKK,KAAKG,WAAY,OACrBH,KAAKI,QAAgCmB,YAAY,aAAcvB,KAAKL,SAASgB,IAAIK,SACtF,CACJ,EACH,IAAAQ,EAAA,CAAAC,WAAA,MAAAD,EAAA/B,eAAA,OAAA+B,CAAA","ignoreList":[]}
@@ -2,8 +2,19 @@ import { BasePlugin } from "../controls/BasePlugin";
2
2
  import { IPropertyMetadata } from "../../interfaces/ISchema";
3
3
  import Control from "sap/ui/core/Control";
4
4
  import CameraControl from "../../controls/CameraControl";
5
+ import ImageControl from "sap/m/Image";
5
6
 
6
7
  export class CameraPlugin extends BasePlugin {
8
+ /**
9
+ * Renders a `CameraControl` component.
10
+ *
11
+ * @param metadata The specific JSON schema properties for this field.
12
+ * @param bindingPath The JSON path bound to this control.
13
+ * @param modelName The UI5 JSONModel name.
14
+ * @param engineScopeId The deterministic scope ID.
15
+ * @param onChange The callback fired on value change.
16
+ * @returns {Control} The configured CameraControl.
17
+ */
7
18
  public render(metadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
8
19
  this.onChange = onChange;
9
20
  this.metadata = metadata;
@@ -11,8 +22,7 @@ export class CameraPlugin extends BasePlugin {
11
22
  this.modelName = modelName;
12
23
 
13
24
  if (!this.isEditable) {
14
- sap.ui.requireSync("sap/m/Image");
15
- const ImageControl = sap.ui.require("sap/m/Image");
25
+
16
26
  this.control = new ImageControl({
17
27
  id: this.generateStableId(engineScopeId, bindingPath),
18
28
  src: `{${modelName}>${bindingPath}}`,
@@ -33,7 +43,7 @@ export class CameraPlugin extends BasePlugin {
33
43
  this.applyCommonDirectives(this.control, metadata, modelName);
34
44
 
35
45
  // Validation mapping could be hooked into the 'capture' event if needed, but Two-Way binding updates the model naturally.
36
- (this.control as unknown as { attachCapture: (fn: Function) => void }).attachCapture(() => {
46
+ (this.control as CameraControl).attachCapture(() => {
37
47
  const result = this.validate();
38
48
  if (this.onChange) {
39
49
  this.onChange(result.isValid, this.fieldKey);
@@ -43,14 +53,21 @@ export class CameraPlugin extends BasePlugin {
43
53
  return this.control as Control;
44
54
  }
45
55
 
46
- protected getValue(): any {
47
- return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;
56
+ /**
57
+ * Retrieves the current base64 image state.
58
+ * @returns {unknown} The image value.
59
+ */
60
+ protected getValue(): unknown {
61
+ return this.control ? (this.control as CameraControl).getValue() : null;
48
62
  }
49
63
 
64
+ /**
65
+ * Applies dynamic read-only state.
66
+ */
50
67
  protected applyState(): void {
51
68
  if (this.control && this.metadata) {
52
69
  if (!this.isEditable) return;
53
- (this.control as unknown as { setProperty: (k: string, v: unknown) => void }).setProperty("readOnly", !!this.metadata.ui?.readOnly);
70
+ (this.control as sap.ui.core.Control).setProperty("readOnly", !!this.metadata.ui?.readOnly);
54
71
  }
55
72
  }
56
73
  }
@@ -1,4 +1,4 @@
1
- sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
1
+ sap.ui.define(["./BasePlugin", "sap/ui/codeeditor/CodeEditor"], function (___BasePlugin, CodeEditor) {
2
2
  "use strict";
3
3
 
4
4
  /**
@@ -14,6 +14,11 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
14
14
  * @public
15
15
  */
16
16
  class CodeEditorPlugin extends BasePlugin {
17
+ /**
18
+ * Infers the language type from the content.
19
+ * @param value The raw string.
20
+ * @returns The language string.
21
+ */
17
22
  detectLanguage(value) {
18
23
  if (!value || typeof value !== "string") return "javascript";
19
24
  const trimmed = value.trim();
@@ -37,6 +42,10 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
37
42
  // 3. Fallback to JavaScript
38
43
  return "javascript";
39
44
  }
45
+
46
+ /**
47
+ * Dynamically adjusts the height of the editor based on content lines.
48
+ */
40
49
  adjustHeight() {
41
50
  if (!this.control) return;
42
51
  const val = this.control.getValue() || "";
@@ -45,13 +54,22 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
45
54
  const newHeight = Math.max(100, lines * 18 + 20);
46
55
  this.control.setHeight(newHeight + "px");
47
56
  }
57
+
58
+ /**
59
+ * Renders a `sap.ui.codeeditor.CodeEditor` component.
60
+ *
61
+ * @param fieldMetadata The specific JSON schema properties for this field.
62
+ * @param bindingPath The JSON path bound to this control.
63
+ * @param modelName The UI5 JSONModel name.
64
+ * @param engineScopeId The deterministic scope ID.
65
+ * @param onChange The callback fired on value change.
66
+ * @returns {Control} The configured CodeEditor control.
67
+ */
48
68
  render(fieldMetadata, bindingPath, modelName = "meta", engineScopeId, onChange) {
49
69
  this.onChange = onChange;
50
70
  this.metadata = fieldMetadata;
51
71
  this.fieldKey = bindingPath.replace("/", ""); // For EventBus
52
72
 
53
- sap.ui.requireSync("sap/ui/codeeditor/CodeEditor");
54
- const CodeEditor = sap.ui.require("sap/ui/codeeditor/CodeEditor");
55
73
  this.control = new CodeEditor({
56
74
  id: this.generateStableId(engineScopeId, bindingPath),
57
75
  value: `{${modelName}>${bindingPath}}`,
@@ -103,9 +121,18 @@ sap.ui.define(["./BasePlugin"], function (___BasePlugin) {
103
121
  this.applyCommonDirectives(this.control, fieldMetadata, modelName);
104
122
  return this.control;
105
123
  }
124
+
125
+ /**
126
+ * Retrieves the current code string.
127
+ * @returns {unknown} The code value.
128
+ */
106
129
  getValue() {
107
130
  return this.control ? this.control.getValue() : null;
108
131
  }
132
+
133
+ /**
134
+ * Applies dynamic read-only state.
135
+ */
109
136
  applyState() {
110
137
  if (this.control && this.metadata) {
111
138
  if (!this.isEditable) return;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditorPlugin-dbg.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","sap","ui","requireSync","CodeEditor","require","id","generateStableId","type","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as unknown as { getValue: () => unknown }).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as unknown).setHeight(newHeight + \"px\");\n }\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.replace(\"/\", \"\"); // For EventBus\n \n sap.ui.requireSync(\"sap/ui/codeeditor/CodeEditor\");\n const CodeEditor = sap.ui.require(\"sap/ui/codeeditor/CodeEditor\");\n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as unknown).getType() !== detectedType) {\n (this.control as unknown).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as unknown).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as unknown).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as unknown).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CodeEditorPlugin-dbg.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","CodeEditor","id","generateStableId","type","ui","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CodeEditor from \"sap/ui/codeeditor/CodeEditor\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as CodeEditor).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as CodeEditor).setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` 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 CodeEditor 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.replace(\"/\", \"\"); // For EventBus\n \n \n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as CodeEditor).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as CodeEditor).getType() !== detectedType) {\n (this.control as CodeEditor).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as CodeEditor).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as CodeEditor).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as CodeEditor).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as CodeEditor).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {unknown} The code value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CodeEditor).getValue() : 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 CodeEditor).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":";;;EAAA;AACA;AACA;AACA;EAHA,MAKSA,UAAU,GAAAC,aAAA;EAKnB;AACA;AACA;AACA;AACA;AACA;AACA;EACO,MAAMC,gBAAgB,SAASF,UAAU,CAAC;IAC7C;AACJ;AACA;AACA;AACA;IACYG,cAAcA,CAACC,KAAa,EAAU;MAC1C,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,YAAY;MAE5D,MAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;MAC5B,IAAID,OAAO,KAAK,EAAE,EAAE,OAAO,YAAY;;MAEvC;MACA,IAAIA,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,IAAIF,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;QACpD,IAAI;UACAC,IAAI,CAACC,KAAK,CAACJ,OAAO,CAAC;UACnB,OAAO,MAAM;QACjB,CAAC,CAAC,OAAOK,CAAC,EAAE;UACR;QAAA;MAER;;MAEA;MACA,IAAI,mBAAmB,CAACC,IAAI,CAACN,OAAO,CAAC,EAAE;QACnC,OAAO,KAAK;MAChB;;MAEA;MACA,OAAO,YAAY;IACvB;;IAEA;AACJ;AACA;IACYO,YAAYA,CAAA,EAAS;MACzB,IAAI,CAAC,IAAI,CAACC,OAAO,EAAE;MACnB,MAAMC,GAAG,GAAI,IAAI,CAACD,OAAO,CAAgBE,QAAQ,CAAC,CAAC,IAAI,EAAE;MACzD,MAAMC,KAAK,GAAGF,GAAG,CAACG,KAAK,CAAC,YAAY,CAAC,CAACC,MAAM;MAC5C;MACA,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAGL,KAAK,GAAG,EAAE,GAAI,EAAE,CAAC;MACjD,IAAI,CAACH,OAAO,CAAgBS,SAAS,CAACH,SAAS,GAAG,IAAI,CAAC;IAC5D;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWI,MAAMA,CAACC,aAAgC,EAAEC,WAAmB,EAAEC,SAAiB,GAAG,MAAM,EAAEC,aAAsB,EAAEC,QAAwD,EAAW;MACxL,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACC,QAAQ,GAAGL,aAAa;MAC7B,IAAI,CAACM,QAAQ,GAAGL,WAAW,CAACM,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;;MAI9C,IAAI,CAAClB,OAAO,GAAG,IAAImB,UAAU,CAAC;QAC1BC,EAAE,EAAE,IAAI,CAACC,gBAAgB,CAACP,aAAa,EAAEF,WAAW,CAAC;QACrDrB,KAAK,EAAE,IAAIsB,SAAS,IAAID,WAAW,GAAG;QACtCU,IAAI,EAAEX,aAAa,CAACY,EAAE,EAAEC,IAAI,IAAI,YAAY;QAAE;QAC9CC,QAAQ,EAAE,CAAC,IAAI,CAACC,UAAU,GAAG,KAAK,GAAG,CAACf,aAAa,CAACY,EAAE,EAAEI,QAAQ;QAChEC,MAAM,EAAE,OAAO;QAAE;QACjBC,KAAK,EAAE,MAAM;QACbC,MAAM,EAAEA,CAAA,KAAM;UACV,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;UAC9B,IAAI,IAAI,CAACjB,QAAQ,EAAE;YACf,IAAI,CAACA,QAAQ,CAACgB,MAAM,CAACE,OAAO,EAAE,IAAI,CAAChB,QAAQ,CAAC;UAChD;;UAEA;UACA,IAAI,CAACN,aAAa,CAACY,EAAE,EAAEC,IAAI,EAAE;YACzB,MAAMU,UAAU,GAAI,IAAI,CAAClC,OAAO,CAAgBE,QAAQ,CAAC,CAAC;YAC1D,MAAMiC,YAAY,GAAG,IAAI,CAAC7C,cAAc,CAAC4C,UAAU,CAAC;YACpD,IAAK,IAAI,CAAClC,OAAO,CAAgBoC,OAAO,CAAC,CAAC,KAAKD,YAAY,EAAE;cACxD,IAAI,CAACnC,OAAO,CAAgBqC,OAAO,CAACF,YAAY,CAAC;YACtD;UACJ;UAEA,IAAI,CAACpC,YAAY,CAAC,CAAC;QACvB;MACJ,CAAC,CAAC;;MAEF;MACA;MACC,IAAI,CAACC,OAAO,CAAgBsC,eAAe,CAAC,oBAAoB,EAAE,MAAM;QACrE,MAAMC,QAAQ,GAAI,IAAI,CAACvC,OAAO,CAAgBwC,UAAU,CAAC,OAAO,CAAC;QAEjE,MAAMC,SAAS,GAAGA,CAAA,KAAM;UACpB,IAAI,IAAI,CAACzC,OAAO,EAAE;YACd,MAAMkC,UAAU,GAAI,IAAI,CAAClC,OAAO,CAAgBE,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAACS,aAAa,CAACY,EAAE,EAAEC,IAAI,EAAE;cACxB,IAAI,CAACxB,OAAO,CAAgBqC,OAAO,CAAC,IAAI,CAAC/C,cAAc,CAAC4C,UAAU,CAAC,CAAC;YACzE;YACA,IAAI,CAACnC,YAAY,CAAC,CAAC;UACvB;QACJ,CAAC;QAED,IAAIwC,QAAQ,EAAE;UACV;UACAA,QAAQ,CAACG,YAAY,CAACD,SAAS,CAAC;QACpC;;QAEA;QACAA,SAAS,CAAC,CAAC;MACf,CAAC,CAAC;MAEF,IAAI,CAACE,qBAAqB,CAAC,IAAI,CAAC3C,OAAO,EAAEW,aAAa,EAAEE,SAAS,CAAC;MAElE,OAAO,IAAI,CAACb,OAAO;IACvB;;IAEA;AACJ;AACA;AACA;IACcE,QAAQA,CAAA,EAAY;MAC1B,OAAO,IAAI,CAACF,OAAO,GAAI,IAAI,CAACA,OAAO,CAAgBE,QAAQ,CAAC,CAAC,GAAG,IAAI;IACxE;;IAEA;AACJ;AACA;IACc0C,UAAUA,CAAA,EAAS;MACzB,IAAI,IAAI,CAAC5C,OAAO,IAAI,IAAI,CAACgB,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACU,UAAU,EAAE;QACrB,IAAI,CAAC1B,OAAO,CAAgB6C,WAAW,CAAC,CAAC,IAAI,CAAC7B,QAAQ,CAACO,EAAE,EAAEI,QAAQ,CAAC;MACzE;IACJ;EACJ;EAAC,IAAAmB,SAAA;IAAAC,UAAA;EAAA;EAAAD,SAAA,CAAAzD,gBAAA,GAAAA,gBAAA;EAAA,OAAAyD,SAAA;AAAA","ignoreList":[]}
@@ -14,10 +14,35 @@ declare module "nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin" {
14
14
  * @public
15
15
  */
16
16
  export class CodeEditorPlugin extends BasePlugin {
17
+ /**
18
+ * Infers the language type from the content.
19
+ * @param value The raw string.
20
+ * @returns The language string.
21
+ */
17
22
  private detectLanguage;
23
+ /**
24
+ * Dynamically adjusts the height of the editor based on content lines.
25
+ */
18
26
  private adjustHeight;
27
+ /**
28
+ * Renders a `sap.ui.codeeditor.CodeEditor` component.
29
+ *
30
+ * @param fieldMetadata The specific JSON schema properties for this field.
31
+ * @param bindingPath The JSON path bound to this control.
32
+ * @param modelName The UI5 JSONModel name.
33
+ * @param engineScopeId The deterministic scope ID.
34
+ * @param onChange The callback fired on value change.
35
+ * @returns {Control} The configured CodeEditor control.
36
+ */
19
37
  render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName?: string, engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control;
20
- protected getValue(): any;
38
+ /**
39
+ * Retrieves the current code string.
40
+ * @returns {unknown} The code value.
41
+ */
42
+ protected getValue(): unknown;
43
+ /**
44
+ * Applies dynamic read-only state.
45
+ */
21
46
  protected applyState(): void;
22
47
  }
23
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditorPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAE1C;;;;;;OAMG;IACH,MAAa,gBAAiB,SAAQ,UAAU;QAC5C,OAAO,CAAC,cAAc;QAyBtB,OAAO,CAAC,YAAY;QASb,MAAM,CAAC,aAAa,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;QA+D3L,SAAS,CAAC,QAAQ,IAAI,GAAG;QAIzB,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
1
+ {"version":3,"file":"CodeEditorPlugin.d.ts","sourceRoot":"../../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,8DAA8D,CAAC;IAC9E;;;OAGG;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wDAAwD,CAAC;IACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;IAClF,OAAO,OAAO,MAAM,qBAAqB,CAAC;IAG1C;;;;;;OAMG;IACH,MAAa,gBAAiB,SAAQ,UAAU;QAC5C;;;;WAIG;QACH,OAAO,CAAC,cAAc;QAyBtB;;WAEG;QACH,OAAO,CAAC,YAAY;QASpB;;;;;;;;;WASG;QACI,MAAM,CAAC,aAAa,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;QA8D3L;;;WAGG;QACH,SAAS,CAAC,QAAQ,IAAI,OAAO;QAI7B;;WAEG;QACH,SAAS,CAAC,UAAU,IAAI,IAAI;KAM/B;CAEA"}
@@ -1,2 +1,2 @@
1
- sap.ui.define(["./BasePlugin"],function(t){"use strict";const e=t["BasePlugin"];class i extends e{detectLanguage(t){if(!t||typeof t!=="string")return"javascript";const e=t.trim();if(e==="")return"javascript";if(e.startsWith("{")||e.startsWith("[")){try{JSON.parse(e);return"json"}catch(t){}}if(/^\s*<[\s\S]*>\s*$/.test(e)){return"xml"}return"javascript"}adjustHeight(){if(!this.control)return;const t=this.control.getValue()||"";const e=t.split(/\r\n|\r|\n/).length;const i=Math.max(100,e*18+20);this.control.setHeight(i+"px")}render(t,e,i="meta",s,a){this.onChange=a;this.metadata=t;this.fieldKey=e.replace("/","");sap.ui.requireSync("sap/ui/codeeditor/CodeEditor");const n=sap.ui.require("sap/ui/codeeditor/CodeEditor");this.control=new n({id:this.generateStableId(s,e),value:`{${i}>${e}}`,type:t.ui?.args||"javascript",editable:!this.isEditable?false:!t.ui?.readOnly,height:"100px",width:"100%",change:()=>{const e=this.validate();if(this.onChange){this.onChange(e.isValid,this.fieldKey)}if(!t.ui?.args){const t=this.control.getValue();const e=this.detectLanguage(t);if(this.control.getType()!==e){this.control.setType(e)}}this.adjustHeight()}});this.control.attachEventOnce("modelContextChange",()=>{const e=this.control.getBinding("value");const i=()=>{if(this.control){const e=this.control.getValue();if(!t.ui?.args){this.control.setType(this.detectLanguage(e))}this.adjustHeight()}};if(e){e.attachChange(i)}i()});this.applyCommonDirectives(this.control,t,i);return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEditable(!this.metadata.ui?.readOnly)}}}var s={__esModule:true};s.CodeEditorPlugin=i;return s});
1
+ sap.ui.define(["./BasePlugin","sap/ui/codeeditor/CodeEditor"],function(t,e){"use strict";const i=t["BasePlugin"];class s extends i{detectLanguage(t){if(!t||typeof t!=="string")return"javascript";const e=t.trim();if(e==="")return"javascript";if(e.startsWith("{")||e.startsWith("[")){try{JSON.parse(e);return"json"}catch(t){}}if(/^\s*<[\s\S]*>\s*$/.test(e)){return"xml"}return"javascript"}adjustHeight(){if(!this.control)return;const t=this.control.getValue()||"";const e=t.split(/\r\n|\r|\n/).length;const i=Math.max(100,e*18+20);this.control.setHeight(i+"px")}render(t,i,s="meta",a,n){this.onChange=n;this.metadata=t;this.fieldKey=i.replace("/","");this.control=new e({id:this.generateStableId(a,i),value:`{${s}>${i}}`,type:t.ui?.args||"javascript",editable:!this.isEditable?false:!t.ui?.readOnly,height:"100px",width:"100%",change:()=>{const e=this.validate();if(this.onChange){this.onChange(e.isValid,this.fieldKey)}if(!t.ui?.args){const t=this.control.getValue();const e=this.detectLanguage(t);if(this.control.getType()!==e){this.control.setType(e)}}this.adjustHeight()}});this.control.attachEventOnce("modelContextChange",()=>{const e=this.control.getBinding("value");const i=()=>{if(this.control){const e=this.control.getValue();if(!t.ui?.args){this.control.setType(this.detectLanguage(e))}this.adjustHeight()}};if(e){e.attachChange(i)}i()});this.applyCommonDirectives(this.control,t,s);return this.control}getValue(){return this.control?this.control.getValue():null}applyState(){if(this.control&&this.metadata){if(!this.isEditable)return;this.control.setEditable(!this.metadata.ui?.readOnly)}}}var a={__esModule:true};a.CodeEditorPlugin=s;return a});
2
2
  //# sourceMappingURL=CodeEditorPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditorPlugin.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","this","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","sap","ui","requireSync","CodeEditor","require","id","generateStableId","type","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as unknown as { getValue: () => unknown }).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as unknown).setHeight(newHeight + \"px\");\n }\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.replace(\"/\", \"\"); // For EventBus\n \n sap.ui.requireSync(\"sap/ui/codeeditor/CodeEditor\");\n const CodeEditor = sap.ui.require(\"sap/ui/codeeditor/CodeEditor\");\n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as unknown).getType() !== detectedType) {\n (this.control as unknown).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as unknown).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as unknown).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as unknown).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n protected getValue(): any {\n return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;\n }\n\n protected applyState(): void {\n if (this.control && this.metadata) {\n if (!this.isEditable) return;\n (this.control as unknown).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"wDAAA,MAKSA,EAAUC,EAAA,cAWZ,MAAMC,UAAyBF,EAC1BG,eAAeC,GACnB,IAAKA,UAAgBA,IAAU,SAAU,MAAO,aAEhD,MAAMC,EAAUD,EAAME,OACtB,GAAID,IAAY,GAAI,MAAO,aAG3B,GAAIA,EAAQE,WAAW,MAAQF,EAAQE,WAAW,KAAM,CACpD,IACIC,KAAKC,MAAMJ,GACX,MAAO,MACX,CAAE,MAAOK,GACL,CAER,CAGA,GAAI,oBAAoBC,KAAKN,GAAU,CACnC,MAAO,KACX,CAGA,MAAO,YACX,CAEQO,eACJ,IAAKC,KAAKC,QAAS,OACnB,MAAMC,EAAOF,KAAKC,QAAmDE,YAAc,GACnF,MAAMC,EAAQF,EAAIG,MAAM,cAAcC,OAEtC,MAAMC,EAAYC,KAAKC,IAAI,IAAML,EAAQ,GAAM,IAC9CJ,KAAKC,QAAoBS,UAAUH,EAAY,KACpD,CAEOI,OAAOC,EAAkCC,EAAqBC,EAAoB,OAAQC,EAAwBC,GACrHhB,KAAKgB,SAAWA,EAChBhB,KAAKiB,SAAWL,EAChBZ,KAAKkB,SAAWL,EAAYM,QAAQ,IAAK,IAEzCC,IAAIC,GAAGC,YAAY,gCACnB,MAAMC,EAAaH,IAAIC,GAAGG,QAAQ,gCAElCxB,KAAKC,QAAU,IAAIsB,EAAW,CAC1BE,GAAIzB,KAAK0B,iBAAiBX,EAAeF,GACzCtB,MAAO,IAAIuB,KAAaD,KACxBc,KAAMf,EAAcS,IAAIO,MAAQ,aAChCC,UAAW7B,KAAK8B,WAAa,OAASlB,EAAcS,IAAIU,SACxDC,OAAQ,QACRC,MAAO,OACPC,OAAQA,KACJ,MAAMC,EAASnC,KAAKoC,WACpB,GAAIpC,KAAKgB,SAAU,CACfhB,KAAKgB,SAASmB,EAAOE,QAASrC,KAAKkB,SACvC,CAGA,IAAKN,EAAcS,IAAIO,KAAM,CACzB,MAAMU,EAActC,KAAKC,QAAmDE,WAC5E,MAAMoC,EAAevC,KAAKV,eAAegD,GACzC,GAAKtC,KAAKC,QAAoBuC,YAAcD,EAAc,CACrDvC,KAAKC,QAAoBwC,QAAQF,EACtC,CACJ,CAEAvC,KAAKD,kBAMZC,KAAKC,QAAoByC,gBAAgB,qBAAsB,KAC5D,MAAMC,EAAY3C,KAAKC,QAAoB2C,WAAW,SAEtD,MAAMC,EAAYA,KACd,GAAI7C,KAAKC,QAAS,CACd,MAAMqC,EAActC,KAAKC,QAAmDE,WAC5E,IAAKS,EAAcS,IAAIO,KAAM,CACxB5B,KAAKC,QAAoBwC,QAAQzC,KAAKV,eAAegD,GAC1D,CACAtC,KAAKD,cACT,GAGJ,GAAI4C,EAAU,CAEVA,EAASG,aAAaD,EAC1B,CAGAA,MAGJ7C,KAAK+C,sBAAsB/C,KAAKC,QAASW,EAAeE,GAExD,OAAOd,KAAKC,OAChB,CAEUE,WACN,OAAOH,KAAKC,QAAWD,KAAKC,QAAmDE,WAAa,IAChG,CAEU6C,aACN,GAAIhD,KAAKC,SAAWD,KAAKiB,SAAU,CAC/B,IAAKjB,KAAK8B,WAAY,OACrB9B,KAAKC,QAAoBgD,aAAajD,KAAKiB,SAASI,IAAIU,SAC7D,CACJ,EACH,IAAAmB,EAAA,CAAAC,WAAA,MAAAD,EAAA7D,mBAAA,OAAA6D,CAAA","ignoreList":[]}
1
+ {"version":3,"file":"CodeEditorPlugin.js","names":["BasePlugin","___BasePlugin","CodeEditorPlugin","detectLanguage","value","trimmed","trim","startsWith","JSON","parse","e","test","adjustHeight","this","control","val","getValue","lines","split","length","newHeight","Math","max","setHeight","render","fieldMetadata","bindingPath","modelName","engineScopeId","onChange","metadata","fieldKey","replace","CodeEditor","id","generateStableId","type","ui","args","editable","isEditable","readOnly","height","width","change","result","validate","isValid","currentVal","detectedType","getType","setType","attachEventOnce","oBinding","getBinding","initLogic","attachChange","applyCommonDirectives","applyState","setEditable","__exports","__esModule"],"sources":["CodeEditorPlugin.ts"],"sourcesContent":["/**\n * @file CodeEditorPlugin.ts\n * @description Renders a sap.ui.codeeditor.CodeEditor for editing source code/JSON.\n */\n\nimport { BasePlugin } from \"./BasePlugin\";\nimport { IPropertyMetadata } from \"../../interfaces/ISchema\";\nimport Control from \"sap/ui/core/Control\";\nimport CodeEditor from \"sap/ui/codeeditor/CodeEditor\";\n\n/**\n * Handles rendering logic for code editing.\n * Requires the `sap.ui.codeeditor` library to be loaded.\n * \n * @namespace nz.co.siliconst.ui5.metaui.plugins.controls\n * @public\n */\nexport class CodeEditorPlugin extends BasePlugin {\n /**\n * Infers the language type from the content.\n * @param value The raw string.\n * @returns The language string.\n */\n private detectLanguage(value: string): string {\n if (!value || typeof value !== \"string\") return \"javascript\";\n \n const trimmed = value.trim();\n if (trimmed === \"\") return \"javascript\";\n\n // 1. JSON\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) {\n try {\n JSON.parse(trimmed);\n return \"json\";\n } catch (e) {\n // Not valid JSON, continue testing\n }\n }\n\n // 2. XML / HTML\n if (/^\\s*<[\\s\\S]*>\\s*$/.test(trimmed)) {\n return \"xml\";\n }\n\n // 3. Fallback to JavaScript\n return \"javascript\";\n }\n\n /**\n * Dynamically adjusts the height of the editor based on content lines.\n */\n private adjustHeight(): void {\n if (!this.control) return;\n const val = (this.control as CodeEditor).getValue() || \"\";\n const lines = val.split(/\\r\\n|\\r|\\n/).length;\n // 18px per line + 20px padding, minimum 100px\n const newHeight = Math.max(100, (lines * 18) + 20);\n (this.control as CodeEditor).setHeight(newHeight + \"px\");\n }\n\n /**\n * Renders a `sap.ui.codeeditor.CodeEditor` 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 CodeEditor 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.replace(\"/\", \"\"); // For EventBus\n \n \n \n this.control = new CodeEditor({\n id: this.generateStableId(engineScopeId, bindingPath),\n value: `{${modelName}>${bindingPath}}`,\n type: fieldMetadata.ui?.args || \"javascript\", // will be dynamically overridden if args is missing\n editable: !this.isEditable ? false : !fieldMetadata.ui?.readOnly,\n height: \"100px\", // Initial minimum height\n width: \"100%\",\n change: () => {\n const result = this.validate();\n if (this.onChange) {\n this.onChange(result.isValid, this.fieldKey);\n }\n \n // If language isn't explicitly defined, try to guess it dynamically\n if (!fieldMetadata.ui?.args) {\n const currentVal = (this.control as CodeEditor).getValue();\n const detectedType = this.detectLanguage(currentVal);\n if ((this.control as CodeEditor).getType() !== detectedType) {\n (this.control as CodeEditor).setType(detectedType);\n }\n }\n \n this.adjustHeight();\n }\n });\n\n // Clean architecture: Wait for the model context, then attach safely to the binding itself.\n // No timeouts, no DOM hacks, pure UI5 Eventing.\n (this.control as CodeEditor).attachEventOnce(\"modelContextChange\", () => {\n const oBinding = (this.control as CodeEditor).getBinding(\"value\");\n \n const initLogic = () => {\n if (this.control) {\n const currentVal = (this.control as CodeEditor).getValue();\n if (!fieldMetadata.ui?.args) {\n (this.control as CodeEditor).setType(this.detectLanguage(currentVal));\n }\n this.adjustHeight();\n }\n };\n\n if (oBinding) {\n // Attach for future model changes\n oBinding.attachChange(initLogic);\n }\n \n // Execute immediately in case the model is synchronous (JSONModel)\n initLogic();\n });\n\n this.applyCommonDirectives(this.control, fieldMetadata, modelName);\n\n return this.control as Control;\n }\n\n /**\n * Retrieves the current code string.\n * @returns {unknown} The code value.\n */\n protected getValue(): unknown {\n return this.control ? (this.control as CodeEditor).getValue() : 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 CodeEditor).setEditable(!this.metadata.ui?.readOnly);\n }\n }\n}\n"],"mappings":"yFAAA,MAKSA,EAAUC,EAAA,cAYZ,MAAMC,UAAyBF,EAM1BG,eAAeC,GACnB,IAAKA,UAAgBA,IAAU,SAAU,MAAO,aAEhD,MAAMC,EAAUD,EAAME,OACtB,GAAID,IAAY,GAAI,MAAO,aAG3B,GAAIA,EAAQE,WAAW,MAAQF,EAAQE,WAAW,KAAM,CACpD,IACIC,KAAKC,MAAMJ,GACX,MAAO,MACX,CAAE,MAAOK,GACL,CAER,CAGA,GAAI,oBAAoBC,KAAKN,GAAU,CACnC,MAAO,KACX,CAGA,MAAO,YACX,CAKQO,eACJ,IAAKC,KAAKC,QAAS,OACnB,MAAMC,EAAOF,KAAKC,QAAuBE,YAAc,GACvD,MAAMC,EAAQF,EAAIG,MAAM,cAAcC,OAEtC,MAAMC,EAAYC,KAAKC,IAAI,IAAML,EAAQ,GAAM,IAC9CJ,KAAKC,QAAuBS,UAAUH,EAAY,KACvD,CAYOI,OAAOC,EAAkCC,EAAqBC,EAAoB,OAAQC,EAAwBC,GACrHhB,KAAKgB,SAAWA,EAChBhB,KAAKiB,SAAWL,EAChBZ,KAAKkB,SAAWL,EAAYM,QAAQ,IAAK,IAIzCnB,KAAKC,QAAU,IAAImB,EAAW,CAC1BC,GAAIrB,KAAKsB,iBAAiBP,EAAeF,GACzCtB,MAAO,IAAIuB,KAAaD,KACxBU,KAAMX,EAAcY,IAAIC,MAAQ,aAChCC,UAAW1B,KAAK2B,WAAa,OAASf,EAAcY,IAAII,SACxDC,OAAQ,QACRC,MAAO,OACPC,OAAQA,KACJ,MAAMC,EAAShC,KAAKiC,WACpB,GAAIjC,KAAKgB,SAAU,CACfhB,KAAKgB,SAASgB,EAAOE,QAASlC,KAAKkB,SACvC,CAGA,IAAKN,EAAcY,IAAIC,KAAM,CACzB,MAAMU,EAAcnC,KAAKC,QAAuBE,WAChD,MAAMiC,EAAepC,KAAKV,eAAe6C,GACzC,GAAKnC,KAAKC,QAAuBoC,YAAcD,EAAc,CACxDpC,KAAKC,QAAuBqC,QAAQF,EACzC,CACJ,CAEApC,KAAKD,kBAMZC,KAAKC,QAAuBsC,gBAAgB,qBAAsB,KAC/D,MAAMC,EAAYxC,KAAKC,QAAuBwC,WAAW,SAEzD,MAAMC,EAAYA,KACd,GAAI1C,KAAKC,QAAS,CACd,MAAMkC,EAAcnC,KAAKC,QAAuBE,WAChD,IAAKS,EAAcY,IAAIC,KAAM,CACxBzB,KAAKC,QAAuBqC,QAAQtC,KAAKV,eAAe6C,GAC7D,CACAnC,KAAKD,cACT,GAGJ,GAAIyC,EAAU,CAEVA,EAASG,aAAaD,EAC1B,CAGAA,MAGJ1C,KAAK4C,sBAAsB5C,KAAKC,QAASW,EAAeE,GAExD,OAAOd,KAAKC,OAChB,CAMUE,WACN,OAAOH,KAAKC,QAAWD,KAAKC,QAAuBE,WAAa,IACpE,CAKU0C,aACN,GAAI7C,KAAKC,SAAWD,KAAKiB,SAAU,CAC/B,IAAKjB,KAAK2B,WAAY,OACrB3B,KAAKC,QAAuB6C,aAAa9C,KAAKiB,SAASO,IAAII,SAChE,CACJ,EACH,IAAAmB,EAAA,CAAAC,WAAA,MAAAD,EAAA1D,mBAAA,OAAA0D,CAAA","ignoreList":[]}
@@ -6,6 +6,7 @@
6
6
  import { BasePlugin } from "./BasePlugin";
7
7
  import { IPropertyMetadata } from "../../interfaces/ISchema";
8
8
  import Control from "sap/ui/core/Control";
9
+ import CodeEditor from "sap/ui/codeeditor/CodeEditor";
9
10
 
10
11
  /**
11
12
  * Handles rendering logic for code editing.
@@ -15,6 +16,11 @@ import Control from "sap/ui/core/Control";
15
16
  * @public
16
17
  */
17
18
  export class CodeEditorPlugin extends BasePlugin {
19
+ /**
20
+ * Infers the language type from the content.
21
+ * @param value The raw string.
22
+ * @returns The language string.
23
+ */
18
24
  private detectLanguage(value: string): string {
19
25
  if (!value || typeof value !== "string") return "javascript";
20
26
 
@@ -40,22 +46,34 @@ export class CodeEditorPlugin extends BasePlugin {
40
46
  return "javascript";
41
47
  }
42
48
 
49
+ /**
50
+ * Dynamically adjusts the height of the editor based on content lines.
51
+ */
43
52
  private adjustHeight(): void {
44
53
  if (!this.control) return;
45
- const val = (this.control as unknown as { getValue: () => unknown }).getValue() || "";
54
+ const val = (this.control as CodeEditor).getValue() || "";
46
55
  const lines = val.split(/\r\n|\r|\n/).length;
47
56
  // 18px per line + 20px padding, minimum 100px
48
57
  const newHeight = Math.max(100, (lines * 18) + 20);
49
- (this.control as unknown).setHeight(newHeight + "px");
58
+ (this.control as CodeEditor).setHeight(newHeight + "px");
50
59
  }
51
60
 
61
+ /**
62
+ * Renders a `sap.ui.codeeditor.CodeEditor` component.
63
+ *
64
+ * @param fieldMetadata The specific JSON schema properties for this field.
65
+ * @param bindingPath The JSON path bound to this control.
66
+ * @param modelName The UI5 JSONModel name.
67
+ * @param engineScopeId The deterministic scope ID.
68
+ * @param onChange The callback fired on value change.
69
+ * @returns {Control} The configured CodeEditor control.
70
+ */
52
71
  public render(fieldMetadata: IPropertyMetadata, bindingPath: string, modelName: string = "meta", engineScopeId?: string, onChange?: (isValid: boolean, fieldKey?: string) => void): Control {
53
72
  this.onChange = onChange;
54
73
  this.metadata = fieldMetadata;
55
74
  this.fieldKey = bindingPath.replace("/", ""); // For EventBus
56
75
 
57
- sap.ui.requireSync("sap/ui/codeeditor/CodeEditor");
58
- const CodeEditor = sap.ui.require("sap/ui/codeeditor/CodeEditor");
76
+
59
77
 
60
78
  this.control = new CodeEditor({
61
79
  id: this.generateStableId(engineScopeId, bindingPath),
@@ -72,10 +90,10 @@ export class CodeEditorPlugin extends BasePlugin {
72
90
 
73
91
  // If language isn't explicitly defined, try to guess it dynamically
74
92
  if (!fieldMetadata.ui?.args) {
75
- const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();
93
+ const currentVal = (this.control as CodeEditor).getValue();
76
94
  const detectedType = this.detectLanguage(currentVal);
77
- if ((this.control as unknown).getType() !== detectedType) {
78
- (this.control as unknown).setType(detectedType);
95
+ if ((this.control as CodeEditor).getType() !== detectedType) {
96
+ (this.control as CodeEditor).setType(detectedType);
79
97
  }
80
98
  }
81
99
 
@@ -85,14 +103,14 @@ export class CodeEditorPlugin extends BasePlugin {
85
103
 
86
104
  // Clean architecture: Wait for the model context, then attach safely to the binding itself.
87
105
  // No timeouts, no DOM hacks, pure UI5 Eventing.
88
- (this.control as unknown).attachEventOnce("modelContextChange", () => {
89
- const oBinding = (this.control as unknown).getBinding("value");
106
+ (this.control as CodeEditor).attachEventOnce("modelContextChange", () => {
107
+ const oBinding = (this.control as CodeEditor).getBinding("value");
90
108
 
91
109
  const initLogic = () => {
92
110
  if (this.control) {
93
- const currentVal = (this.control as unknown as { getValue: () => unknown }).getValue();
111
+ const currentVal = (this.control as CodeEditor).getValue();
94
112
  if (!fieldMetadata.ui?.args) {
95
- (this.control as unknown).setType(this.detectLanguage(currentVal));
113
+ (this.control as CodeEditor).setType(this.detectLanguage(currentVal));
96
114
  }
97
115
  this.adjustHeight();
98
116
  }
@@ -112,14 +130,21 @@ export class CodeEditorPlugin extends BasePlugin {
112
130
  return this.control as Control;
113
131
  }
114
132
 
115
- protected getValue(): any {
116
- return this.control ? (this.control as unknown as { getValue: () => unknown }).getValue() : null;
133
+ /**
134
+ * Retrieves the current code string.
135
+ * @returns {unknown} The code value.
136
+ */
137
+ protected getValue(): unknown {
138
+ return this.control ? (this.control as CodeEditor).getValue() : null;
117
139
  }
118
140
 
141
+ /**
142
+ * Applies dynamic read-only state.
143
+ */
119
144
  protected applyState(): void {
120
145
  if (this.control && this.metadata) {
121
146
  if (!this.isEditable) return;
122
- (this.control as unknown).setEditable(!this.metadata.ui?.readOnly);
147
+ (this.control as CodeEditor).setEditable(!this.metadata.ui?.readOnly);
123
148
  }
124
149
  }
125
150
  }
@@ -1,4 +1,4 @@
1
- sap.ui.define(["./BasePlugin", "sap/m/DatePicker"], function (___BasePlugin, DatePicker) {
1
+ sap.ui.define(["./BasePlugin", "sap/m/DatePicker", "sap/m/Text"], function (___BasePlugin, DatePicker, TextControl) {
2
2
  "use strict";
3
3
 
4
4
  /**
@@ -10,12 +10,20 @@ sap.ui.define(["./BasePlugin", "sap/m/DatePicker"], function (___BasePlugin, Dat
10
10
  * Handles rendering logic for Date strings.
11
11
  */
12
12
  class DatePlugin extends BasePlugin {
13
+ /**
14
+ * Renders a `sap.m.DatePicker` component.
15
+ *
16
+ * @param fieldMetadata The specific JSON schema properties for this field.
17
+ * @param bindingPath The JSON path bound to this control.
18
+ * @param modelName The UI5 JSONModel name.
19
+ * @param engineScopeId The deterministic scope ID.
20
+ * @param onChange The callback fired on value change.
21
+ * @returns {Control} The configured DatePicker control.
22
+ */
13
23
  render(fieldMetadata, bindingPath, modelName = "meta", engineScopeId, onChange) {
14
24
  this.onChange = onChange;
15
25
  this.metadata = fieldMetadata;
16
26
  if (!this.isEditable) {
17
- sap.ui.requireSync("sap/m/Text");
18
- const TextControl = sap.ui.require("sap/m/Text");
19
27
  this.control = new TextControl({
20
28
  id: this.generateStableId(engineScopeId, bindingPath),
21
29
  text: {
@@ -57,9 +65,18 @@ sap.ui.define(["./BasePlugin", "sap/m/DatePicker"], function (___BasePlugin, Dat
57
65
  });
58
66
  return this.control;
59
67
  }
68
+
69
+ /**
70
+ * Retrieves the current date string.
71
+ * @returns {unknown} The date value.
72
+ */
60
73
  getValue() {
61
74
  return this.control ? this.control.getValue() : null;
62
75
  }
76
+
77
+ /**
78
+ * Applies dynamic read-only state.
79
+ */
63
80
  applyState() {
64
81
  if (this.control && this.metadata) {
65
82
  if (!this.isEditable) return;