@siliconst/metaui 1.2.0 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/README.md +102 -33
  2. package/package.json +1 -1
  3. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js +70 -0
  4. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -0
  5. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts +67 -0
  6. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts.map +1 -0
  7. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js +2 -0
  8. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -0
  9. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +58 -0
  10. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js +28 -0
  11. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -0
  12. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts +16 -0
  13. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.d.ts.map +1 -0
  14. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js +2 -0
  15. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -0
  16. package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +28 -0
  17. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +142 -0
  18. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -0
  19. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +33 -0
  20. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -0
  21. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +2 -0
  22. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -0
  23. package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +164 -0
  24. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +266 -0
  25. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -0
  26. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +162 -0
  27. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -0
  28. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +2 -0
  29. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -0
  30. package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +203 -0
  31. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +73 -0
  32. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -0
  33. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +32 -0
  34. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -0
  35. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +2 -0
  36. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -0
  37. package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +86 -0
  38. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +60 -0
  39. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -0
  40. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +32 -0
  41. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -0
  42. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +2 -0
  43. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -0
  44. package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +61 -0
  45. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +157 -0
  46. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -0
  47. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +33 -0
  48. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -0
  49. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +2 -0
  50. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -0
  51. package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +169 -0
  52. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +160 -0
  53. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -0
  54. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +28 -0
  55. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -0
  56. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +2 -0
  57. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -0
  58. package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +185 -0
  59. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +443 -0
  60. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -0
  61. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +227 -0
  62. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -0
  63. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +2 -0
  64. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -0
  65. package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +421 -0
  66. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +103 -0
  67. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -0
  68. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +32 -0
  69. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -0
  70. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js +2 -0
  71. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -0
  72. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +119 -0
  73. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +64 -0
  74. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -0
  75. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +21 -0
  76. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -0
  77. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js +2 -0
  78. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -0
  79. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +64 -0
  80. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +120 -0
  81. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -0
  82. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +45 -0
  83. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -0
  84. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +2 -0
  85. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -0
  86. package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +131 -0
  87. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js +40 -15
  88. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
  89. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +27 -7
  90. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
  91. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js +1 -1
  92. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
  93. package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +41 -15
  94. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +62 -0
  95. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -0
  96. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +26 -0
  97. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -0
  98. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +2 -0
  99. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -0
  100. package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +62 -0
  101. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +159 -43
  102. package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
  103. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +64 -3
  104. package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
  105. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
  106. package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
  107. package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +166 -43
  108. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +32 -0
  109. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +1 -0
  110. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +16 -0
  111. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +1 -0
  112. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +2 -0
  113. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +1 -0
  114. package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +26 -0
  115. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +123 -0
  116. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -0
  117. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +49 -0
  118. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -0
  119. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +2 -0
  120. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -0
  121. package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +106 -0
  122. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +104 -25
  123. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
  124. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +21 -13
  125. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
  126. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
  127. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
  128. package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +110 -21
  129. package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js +79 -0
  130. package/src/nz/co/siliconst/ui5/metaui/core/Registry-dbg.js.map +1 -0
  131. package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts +43 -0
  132. package/src/nz/co/siliconst/ui5/metaui/core/Registry.d.ts.map +1 -0
  133. package/src/nz/co/siliconst/ui5/metaui/core/Registry.js +2 -0
  134. package/src/nz/co/siliconst/ui5/metaui/core/Registry.js.map +1 -0
  135. package/src/nz/co/siliconst/ui5/metaui/core/Registry.ts +70 -0
  136. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +71 -20
  137. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
  138. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +1 -0
  139. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
  140. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js +1 -1
  141. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
  142. package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +71 -20
  143. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js +54 -0
  144. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -0
  145. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts +11 -0
  146. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -0
  147. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js +2 -0
  148. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -0
  149. package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +53 -0
  150. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +88 -2
  151. package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
  152. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +15 -1
  153. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
  154. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js +1 -1
  155. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
  156. package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +103 -1
  157. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager-dbg.js.map +1 -1
  158. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts +7 -8
  159. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.d.ts.map +1 -1
  160. package/src/nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager.ts +7 -7
  161. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js +2 -0
  162. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js.map +1 -0
  163. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts +38 -0
  164. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts.map +1 -0
  165. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js +2 -0
  166. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.js.map +1 -0
  167. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.ts +39 -0
  168. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
  169. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +38 -2
  170. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
  171. package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +43 -2
  172. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema-dbg.js.map +1 -1
  173. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts +32 -3
  174. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.d.ts.map +1 -1
  175. package/src/nz/co/siliconst/ui5/metaui/interfaces/ISchema.ts +35 -3
  176. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +144 -0
  177. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -0
  178. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +27 -0
  179. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -0
  180. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js +2 -0
  181. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -0
  182. package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +139 -0
  183. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +132 -61
  184. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
  185. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +19 -12
  186. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
  187. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js +1 -1
  188. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
  189. package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +135 -71
  190. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +118 -51
  191. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
  192. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts +21 -8
  193. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.d.ts.map +1 -1
  194. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
  195. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
  196. package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +134 -65
  197. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +125 -0
  198. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -0
  199. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +28 -0
  200. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -0
  201. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js +2 -0
  202. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -0
  203. package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +127 -0
  204. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +17 -12
  205. package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
  206. package/src/nz/co/siliconst/ui5/metaui/library-preload.js +72 -25
  207. package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
  208. package/src/nz/co/siliconst/ui5/metaui/library.d.ts +1 -0
  209. package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
  210. package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
  211. package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
  212. package/src/nz/co/siliconst/ui5/metaui/library.ts +25 -12
  213. package/src/nz/co/siliconst/ui5/metaui/manifest.json +8 -1
  214. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +58 -0
  215. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -0
  216. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts +22 -0
  217. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -0
  218. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js +2 -0
  219. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -0
  220. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +57 -0
  221. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +55 -0
  222. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -0
  223. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts +21 -0
  224. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts.map +1 -0
  225. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js +2 -0
  226. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -0
  227. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +54 -0
  228. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js +46 -0
  229. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js.map +1 -0
  230. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts +23 -0
  231. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts.map +1 -0
  232. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js +2 -0
  233. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js.map +1 -0
  234. package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.ts +45 -0
  235. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +74 -0
  236. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -0
  237. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +15 -0
  238. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -0
  239. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js +2 -0
  240. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -0
  241. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +80 -0
  242. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +75 -0
  243. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -0
  244. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +12 -0
  245. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -0
  246. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +2 -0
  247. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -0
  248. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +83 -0
  249. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +174 -0
  250. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -0
  251. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +78 -0
  252. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -0
  253. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js +2 -0
  254. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -0
  255. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +165 -0
  256. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +79 -0
  257. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -0
  258. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +36 -0
  259. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -0
  260. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +2 -0
  261. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -0
  262. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +77 -0
  263. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +60 -0
  264. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -0
  265. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +11 -0
  266. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -0
  267. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +2 -0
  268. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -0
  269. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +56 -0
  270. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +122 -0
  271. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -0
  272. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +24 -0
  273. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -0
  274. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +2 -0
  275. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -0
  276. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +125 -0
  277. package/src/nz/co/siliconst/ui5/metaui/plugins/{DatePlugin-dbg.js → controls/DatePlugin-dbg.js} +29 -20
  278. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -0
  279. package/src/nz/co/siliconst/ui5/metaui/plugins/{DatePlugin.d.ts → controls/DatePlugin.d.ts} +4 -4
  280. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -0
  281. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +2 -0
  282. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -0
  283. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +74 -0
  284. package/src/nz/co/siliconst/ui5/metaui/plugins/{DateTimePlugin-dbg.js → controls/DateTimePlugin-dbg.js} +30 -20
  285. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -0
  286. package/src/nz/co/siliconst/ui5/metaui/plugins/{DateTimePlugin.d.ts → controls/DateTimePlugin.d.ts} +4 -4
  287. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -0
  288. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +2 -0
  289. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -0
  290. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +75 -0
  291. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +109 -0
  292. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -0
  293. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +37 -0
  294. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -0
  295. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +2 -0
  296. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -0
  297. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +105 -0
  298. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +65 -0
  299. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -0
  300. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +21 -0
  301. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -0
  302. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +2 -0
  303. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -0
  304. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +64 -0
  305. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +59 -0
  306. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -0
  307. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +11 -0
  308. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -0
  309. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +2 -0
  310. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -0
  311. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +56 -0
  312. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +45 -0
  313. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -0
  314. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +22 -0
  315. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -0
  316. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js +2 -0
  317. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -0
  318. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +42 -0
  319. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +74 -0
  320. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -0
  321. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +22 -0
  322. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -0
  323. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +2 -0
  324. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -0
  325. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +73 -0
  326. package/src/nz/co/siliconst/ui5/metaui/plugins/{NumberPlugin-dbg.js → controls/NumberPlugin-dbg.js} +21 -16
  327. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -0
  328. package/src/nz/co/siliconst/ui5/metaui/plugins/{NumberPlugin.d.ts → controls/NumberPlugin.d.ts} +4 -4
  329. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -0
  330. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +2 -0
  331. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -0
  332. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +62 -0
  333. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +74 -0
  334. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -0
  335. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +17 -0
  336. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -0
  337. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js +2 -0
  338. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -0
  339. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +81 -0
  340. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +61 -0
  341. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -0
  342. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +21 -0
  343. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -0
  344. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +2 -0
  345. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -0
  346. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +62 -0
  347. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +64 -0
  348. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -0
  349. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +16 -0
  350. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -0
  351. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +2 -0
  352. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -0
  353. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +67 -0
  354. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +58 -0
  355. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -0
  356. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +11 -0
  357. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -0
  358. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +2 -0
  359. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -0
  360. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +55 -0
  361. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +64 -0
  362. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -0
  363. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +21 -0
  364. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -0
  365. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +2 -0
  366. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -0
  367. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +65 -0
  368. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +87 -0
  369. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -0
  370. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +37 -0
  371. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -0
  372. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +2 -0
  373. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -0
  374. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +85 -0
  375. package/src/nz/co/siliconst/ui5/metaui/plugins/{SwitchPlugin-dbg.js → controls/SwitchPlugin-dbg.js} +24 -6
  376. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -0
  377. package/src/nz/co/siliconst/ui5/metaui/plugins/{SwitchPlugin.d.ts → controls/SwitchPlugin.d.ts} +4 -4
  378. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -0
  379. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +2 -0
  380. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -0
  381. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +62 -0
  382. package/src/nz/co/siliconst/ui5/metaui/plugins/{TextAreaPlugin-dbg.js → controls/TextAreaPlugin-dbg.js} +20 -14
  383. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -0
  384. package/src/nz/co/siliconst/ui5/metaui/plugins/{TextAreaPlugin.d.ts → controls/TextAreaPlugin.d.ts} +4 -4
  385. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -0
  386. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +2 -0
  387. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -0
  388. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +63 -0
  389. package/src/nz/co/siliconst/ui5/metaui/plugins/{TimePlugin-dbg.js → controls/TimePlugin-dbg.js} +30 -25
  390. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -0
  391. package/src/nz/co/siliconst/ui5/metaui/plugins/{TimePlugin.d.ts → controls/TimePlugin.d.ts} +4 -4
  392. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -0
  393. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +2 -0
  394. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -0
  395. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +76 -0
  396. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +62 -0
  397. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -0
  398. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +11 -0
  399. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -0
  400. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +2 -0
  401. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -0
  402. package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +59 -0
  403. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +94 -0
  404. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -0
  405. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts +29 -0
  406. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -0
  407. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js +2 -0
  408. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -0
  409. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +102 -0
  410. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +60 -0
  411. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -0
  412. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts +22 -0
  413. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -0
  414. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js +2 -0
  415. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -0
  416. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +57 -0
  417. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +106 -0
  418. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -0
  419. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +22 -0
  420. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -0
  421. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js +2 -0
  422. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -0
  423. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +101 -0
  424. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +77 -0
  425. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -0
  426. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts +25 -0
  427. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -0
  428. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js +2 -0
  429. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -0
  430. package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +86 -0
  431. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js +36 -0
  432. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js.map +1 -0
  433. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts +25 -0
  434. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts.map +1 -0
  435. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js +2 -0
  436. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js.map +1 -0
  437. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.ts +36 -0
  438. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js +32 -0
  439. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js.map +1 -0
  440. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts +19 -0
  441. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts.map +1 -0
  442. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js +2 -0
  443. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js.map +1 -0
  444. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.ts +31 -0
  445. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js +32 -0
  446. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js.map +1 -0
  447. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts +17 -0
  448. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts.map +1 -0
  449. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js +2 -0
  450. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js.map +1 -0
  451. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.ts +27 -0
  452. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js +31 -0
  453. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js.map +1 -0
  454. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts +18 -0
  455. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts.map +1 -0
  456. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js +2 -0
  457. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js.map +1 -0
  458. package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.ts +23 -0
  459. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js +45 -0
  460. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js.map +1 -0
  461. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts +24 -0
  462. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts.map +1 -0
  463. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js +2 -0
  464. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js.map +1 -0
  465. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.ts +30 -0
  466. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js +42 -0
  467. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js.map +1 -0
  468. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts +18 -0
  469. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts.map +1 -0
  470. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js +2 -0
  471. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js.map +1 -0
  472. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.ts +29 -0
  473. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js +41 -0
  474. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js.map +1 -0
  475. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts +17 -0
  476. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts.map +1 -0
  477. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js +2 -0
  478. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js.map +1 -0
  479. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.ts +25 -0
  480. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js +51 -0
  481. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js.map +1 -0
  482. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts +17 -0
  483. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts.map +1 -0
  484. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js +2 -0
  485. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js.map +1 -0
  486. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.ts +33 -0
  487. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js +48 -0
  488. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js.map +1 -0
  489. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts +17 -0
  490. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts.map +1 -0
  491. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js +2 -0
  492. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js.map +1 -0
  493. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.ts +32 -0
  494. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js +46 -0
  495. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js.map +1 -0
  496. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts +17 -0
  497. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts.map +1 -0
  498. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js +2 -0
  499. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js.map +1 -0
  500. package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.ts +29 -0
  501. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js +83 -0
  502. package/src/nz/co/siliconst/ui5/metaui/utils/Logger-dbg.js.map +1 -0
  503. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts +29 -0
  504. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.d.ts.map +1 -0
  505. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js +2 -0
  506. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.js.map +1 -0
  507. package/src/nz/co/siliconst/ui5/metaui/utils/Logger.ts +75 -0
  508. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js +0 -300
  509. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost-dbg.js.map +0 -1
  510. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts +0 -130
  511. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.d.ts.map +0 -1
  512. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js +0 -2
  513. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.js.map +0 -1
  514. package/src/nz/co/siliconst/ui5/metaui/controls/GeneratorHost.ts +0 -292
  515. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js +0 -66
  516. package/src/nz/co/siliconst/ui5/metaui/core/EventBus-dbg.js.map +0 -1
  517. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts +0 -40
  518. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.d.ts.map +0 -1
  519. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js +0 -2
  520. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.js.map +0 -1
  521. package/src/nz/co/siliconst/ui5/metaui/core/EventBus.ts +0 -60
  522. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js +0 -2
  523. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus-dbg.js.map +0 -1
  524. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts +0 -29
  525. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.d.ts.map +0 -1
  526. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js +0 -2
  527. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.js.map +0 -1
  528. package/src/nz/co/siliconst/ui5/metaui/interfaces/IEventBus.ts +0 -29
  529. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js +0 -24
  530. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout-dbg.js.map +0 -1
  531. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts +0 -15
  532. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.d.ts.map +0 -1
  533. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js +0 -2
  534. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.js.map +0 -1
  535. package/src/nz/co/siliconst/ui5/metaui/layouts/BaseLayout.ts +0 -22
  536. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js +0 -68
  537. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin-dbg.js.map +0 -1
  538. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts +0 -15
  539. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.d.ts.map +0 -1
  540. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js +0 -2
  541. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.js.map +0 -1
  542. package/src/nz/co/siliconst/ui5/metaui/plugins/ArrayPlugin.ts +0 -71
  543. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js +0 -55
  544. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin-dbg.js.map +0 -1
  545. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts +0 -24
  546. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.d.ts.map +0 -1
  547. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js +0 -2
  548. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.js.map +0 -1
  549. package/src/nz/co/siliconst/ui5/metaui/plugins/BasePlugin.ts +0 -56
  550. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js +0 -42
  551. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin-dbg.js.map +0 -1
  552. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts +0 -18
  553. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.d.ts.map +0 -1
  554. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js +0 -2
  555. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.js.map +0 -1
  556. package/src/nz/co/siliconst/ui5/metaui/plugins/BooleanPlugin.ts +0 -41
  557. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin-dbg.js.map +0 -1
  558. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.d.ts.map +0 -1
  559. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js +0 -2
  560. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.js.map +0 -1
  561. package/src/nz/co/siliconst/ui5/metaui/plugins/DatePlugin.ts +0 -69
  562. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin-dbg.js.map +0 -1
  563. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.d.ts.map +0 -1
  564. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js +0 -2
  565. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.js.map +0 -1
  566. package/src/nz/co/siliconst/ui5/metaui/plugins/DateTimePlugin.ts +0 -68
  567. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js +0 -67
  568. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin-dbg.js.map +0 -1
  569. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts +0 -18
  570. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.d.ts.map +0 -1
  571. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js +0 -2
  572. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.js.map +0 -1
  573. package/src/nz/co/siliconst/ui5/metaui/plugins/DropdownPlugin.ts +0 -65
  574. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin-dbg.js.map +0 -1
  575. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.d.ts.map +0 -1
  576. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js +0 -2
  577. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.js.map +0 -1
  578. package/src/nz/co/siliconst/ui5/metaui/plugins/NumberPlugin.ts +0 -56
  579. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js +0 -57
  580. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin-dbg.js.map +0 -1
  581. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts +0 -18
  582. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.d.ts.map +0 -1
  583. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js +0 -2
  584. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.js.map +0 -1
  585. package/src/nz/co/siliconst/ui5/metaui/plugins/StringPlugin.ts +0 -58
  586. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin-dbg.js.map +0 -1
  587. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.d.ts.map +0 -1
  588. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js +0 -2
  589. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.js.map +0 -1
  590. package/src/nz/co/siliconst/ui5/metaui/plugins/SwitchPlugin.ts +0 -42
  591. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin-dbg.js.map +0 -1
  592. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.d.ts.map +0 -1
  593. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js +0 -2
  594. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.js.map +0 -1
  595. package/src/nz/co/siliconst/ui5/metaui/plugins/TextAreaPlugin.ts +0 -58
  596. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin-dbg.js.map +0 -1
  597. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.d.ts.map +0 -1
  598. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js +0 -2
  599. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.js.map +0 -1
  600. package/src/nz/co/siliconst/ui5/metaui/plugins/TimePlugin.ts +0 -71
@@ -0,0 +1,169 @@
1
+ import BaseHardwareControl from "./BaseHardwareControl";
2
+ import Button from "sap/m/Button";
3
+ import VBox from "sap/m/VBox";
4
+ import HTML from "sap/ui/core/HTML";
5
+ import MessageToast from "sap/m/MessageToast";
6
+
7
+ /**
8
+ * SignatureControl
9
+ * Provides an HTML5 Canvas for capturing signatures.
10
+ */
11
+ export default class SignatureControl extends BaseHardwareControl {
12
+ static readonly renderer = "nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";
13
+ static readonly metadata = {
14
+ properties: {},
15
+ events: {}
16
+ };
17
+
18
+ private vBox!: VBox;
19
+ private clearBtn!: Button;
20
+ private canvasHtml!: HTML;
21
+ private isDrawing = false;
22
+ private canvasCtx: CanvasRenderingContext2D | null = null;
23
+ private canvasEl: HTMLCanvasElement | null = null;
24
+
25
+ public init(): void {
26
+ super.init();
27
+
28
+ this.canvasHtml = new HTML({
29
+ content: "<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>",
30
+ afterRendering: this.onCanvasRendered.bind(this)
31
+ }).addStyleClass("sapUiSmallMarginBottom");
32
+
33
+ this.clearBtn = new Button({
34
+ icon: "sap-icon://sys-cancel",
35
+ text: "Clear Signature",
36
+ press: this.clearSignature.bind(this)
37
+ });
38
+
39
+ this.vBox = new VBox({
40
+ items: [this.canvasHtml, this.clearBtn]
41
+ });
42
+
43
+ this.setAggregation("_content", this.vBox);
44
+ }
45
+
46
+ private onCanvasRendered(): void {
47
+ const domRef = this.canvasHtml.getDomRef() as HTMLElement;
48
+ if (!domRef) return;
49
+
50
+ this.canvasEl = domRef as HTMLCanvasElement;
51
+ this.canvasCtx = this.canvasEl.getContext("2d");
52
+ if (this.canvasCtx) {
53
+ this.canvasCtx.lineWidth = 2;
54
+ this.canvasCtx.lineCap = "round";
55
+ this.canvasCtx.strokeStyle = "#000";
56
+ }
57
+
58
+ // Mouse events
59
+ this.canvasEl.addEventListener("mousedown", this.startDrawing.bind(this));
60
+ this.canvasEl.addEventListener("mousemove", this.draw.bind(this));
61
+ this.canvasEl.addEventListener("mouseup", this.stopDrawing.bind(this));
62
+ this.canvasEl.addEventListener("mouseout", this.stopDrawing.bind(this));
63
+
64
+ // Touch events
65
+ this.canvasEl.addEventListener("touchstart", this.startDrawingTouch.bind(this), { passive: false });
66
+ this.canvasEl.addEventListener("touchmove", this.drawTouch.bind(this), { passive: false });
67
+ this.canvasEl.addEventListener("touchend", this.stopDrawing.bind(this));
68
+
69
+ // Restore existing signature if any
70
+ const val = this.getValue();
71
+ if (val && typeof val === "string" && val.startsWith("data:image")) {
72
+ this.loadImageOntoCanvas(val);
73
+ }
74
+ }
75
+
76
+ private loadImageOntoCanvas(dataUrl: string): void {
77
+ const img = new window.Image();
78
+ img.onload = () => {
79
+ if (this.canvasCtx && this.canvasEl) {
80
+ this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);
81
+ this.canvasCtx.drawImage(img, 0, 0, this.canvasEl.width, this.canvasEl.height);
82
+ }
83
+ };
84
+ img.src = dataUrl;
85
+ }
86
+
87
+ private getCoordinates(e: MouseEvent | TouchEvent): { x: number, y: number } {
88
+ if (!this.canvasEl) return { x: 0, y: 0 };
89
+ const rect = this.canvasEl.getBoundingClientRect();
90
+
91
+ let clientX, clientY;
92
+ if (e.type.startsWith("touch")) {
93
+ clientX = (e as TouchEvent).touches[0].clientX;
94
+ clientY = (e as TouchEvent).touches[0].clientY;
95
+ } else {
96
+ clientX = (e as MouseEvent).clientX;
97
+ clientY = (e as MouseEvent).clientY;
98
+ }
99
+
100
+ return {
101
+ x: clientX - rect.left,
102
+ y: clientY - rect.top
103
+ };
104
+ }
105
+
106
+ private startDrawing(e: MouseEvent): void {
107
+ this.isDrawing = true;
108
+ this.draw(e);
109
+ }
110
+
111
+ private startDrawingTouch(e: TouchEvent): void {
112
+ e.preventDefault(); // Prevent scrolling
113
+ this.isDrawing = true;
114
+ this.drawTouch(e);
115
+ }
116
+
117
+ private draw(e: MouseEvent): void {
118
+ if (!this.isDrawing || !this.canvasCtx) return;
119
+ const pos = this.getCoordinates(e);
120
+ this.canvasCtx.lineTo(pos.x, pos.y);
121
+ this.canvasCtx.stroke();
122
+ this.canvasCtx.beginPath();
123
+ this.canvasCtx.moveTo(pos.x, pos.y);
124
+ }
125
+
126
+ private drawTouch(e: TouchEvent): void {
127
+ if (!this.isDrawing || !this.canvasCtx) return;
128
+ e.preventDefault(); // Prevent scrolling
129
+ const pos = this.getCoordinates(e);
130
+ this.canvasCtx.lineTo(pos.x, pos.y);
131
+ this.canvasCtx.stroke();
132
+ this.canvasCtx.beginPath();
133
+ this.canvasCtx.moveTo(pos.x, pos.y);
134
+ }
135
+
136
+ private stopDrawing(): void {
137
+ if (!this.isDrawing) return;
138
+ this.isDrawing = false;
139
+ if (this.canvasCtx) {
140
+ this.canvasCtx.beginPath(); // Reset path
141
+ this.saveSignature();
142
+ }
143
+ }
144
+
145
+ private clearSignature(): void {
146
+ if (this.canvasCtx && this.canvasEl) {
147
+ this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);
148
+ }
149
+ this.setValueAndFire(null);
150
+ MessageToast.show("Signature cleared.");
151
+ }
152
+
153
+ private saveSignature(): void {
154
+ if (this.canvasEl) {
155
+ const dataUrl = this.canvasEl.toDataURL("image/png");
156
+ this.setValueAndFire(dataUrl);
157
+ }
158
+ }
159
+
160
+ public setValue(value: any): this {
161
+ super.setValue(value);
162
+ if (value && typeof value === "string" && value.startsWith("data:image")) {
163
+ this.loadImageOntoCanvas(value);
164
+ } else if (!value && this.canvasCtx && this.canvasEl) {
165
+ this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);
166
+ }
167
+ return this;
168
+ }
169
+ }
@@ -0,0 +1,160 @@
1
+ sap.ui.define(["./BaseHardwareControl", "sap/m/Button", "sap/m/VBox", "sap/m/TextArea", "sap/m/MessageToast", "sap/m/HBox", "../utils/Logger"], function (__BaseHardwareControl, Button, VBox, TextArea, MessageToast, HBox, ___utils_Logger) {
2
+ "use strict";
3
+
4
+ function _interopRequireDefault(obj) {
5
+ return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
6
+ }
7
+ const BaseHardwareControl = _interopRequireDefault(__BaseHardwareControl);
8
+ const Logger = ___utils_Logger["Logger"];
9
+ /**
10
+ * VoiceInputControl
11
+ * Provides a UI to dictate text using the browser's native Web Speech API.
12
+ */
13
+ class VoiceInputControl extends BaseHardwareControl {
14
+ static renderer = "nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";
15
+ static metadata = {
16
+ properties: {},
17
+ events: {}
18
+ };
19
+ recognition = null;
20
+ isRecording = false;
21
+ init() {
22
+ super.init();
23
+ this.textArea = new TextArea({
24
+ rows: 3,
25
+ width: "100%",
26
+ placeholder: "Dictated text will appear here...",
27
+ liveChange: oEvent => {
28
+ this.setValueAndFire(oEvent.getParameter("value"));
29
+ }
30
+ });
31
+ this.startBtn = new Button({
32
+ icon: "sap-icon://microphone",
33
+ text: "Start Dictation",
34
+ type: "Emphasized",
35
+ press: this.toggleDictation.bind(this)
36
+ });
37
+ const hBox = new HBox({
38
+ items: [this.startBtn]
39
+ }).addStyleClass("sapUiSmallMarginTop");
40
+ this.vBox = new VBox({
41
+ items: [this.textArea, hBox]
42
+ });
43
+ this.setAggregation("_content", this.vBox);
44
+ this.initSpeechRecognition();
45
+ }
46
+ toggleDictation() {
47
+ if (this.isRecording) {
48
+ this.stopDictation();
49
+ } else {
50
+ this.startDictation();
51
+ }
52
+ }
53
+ initSpeechRecognition() {
54
+ const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
55
+ if (SpeechRecognition) {
56
+ this.recognition = new SpeechRecognition();
57
+ this.recognition.continuous = true;
58
+ this.recognition.interimResults = true;
59
+ this.recognition.onresult = event => {
60
+ let finalTranscript = "";
61
+ let interimTranscript = "";
62
+ for (let i = event.resultIndex; i < event.results.length; ++i) {
63
+ if (event.results[i].isFinal) {
64
+ finalTranscript += event.results[i][0].transcript;
65
+ } else {
66
+ interimTranscript += event.results[i][0].transcript;
67
+ }
68
+ }
69
+
70
+ // Append the new final transcript to whatever was already in the textarea
71
+ const currentVal = this.getValue() || "";
72
+ const newVal = currentVal ? currentVal + " " + finalTranscript : finalTranscript;
73
+ if (finalTranscript) {
74
+ this.textArea.setValue(newVal);
75
+ this.setValueAndFire(newVal);
76
+ } else if (interimTranscript) {
77
+ // Just show interim temporarily in textarea without saving to model
78
+ this.textArea.setValue(currentVal ? currentVal + " " + interimTranscript : interimTranscript);
79
+ }
80
+ };
81
+ this.recognition.onstart = () => {
82
+ this.isRecording = true;
83
+ this.startBtn.setIcon("sap-icon://stop");
84
+ this.startBtn.setText("Stop Recording");
85
+ this.startBtn.setType("Reject");
86
+ MessageToast.show("Listening... Please speak now.");
87
+ };
88
+ this.recognition.onerror = event => {
89
+ Logger.error("Speech recognition error", event.error, "VoiceInputControl");
90
+ sap.ui.require(["sap/m/MessageBox"], MessageBox => {
91
+ MessageBox.error("Microphone Error: " + event.error + "\n\nPlease ensure you have a working microphone attached and have not blocked access in your browser settings.");
92
+ });
93
+ this.stopDictation();
94
+ };
95
+ this.recognition.onend = () => {
96
+ // If it ends natively (e.g. timeout), update UI
97
+ this.stopDictation();
98
+ };
99
+ } else {
100
+ Logger.warn("Web Speech API not supported in this browser.", "", "VoiceInputControl");
101
+ this.startBtn.setEnabled(false);
102
+ this.startBtn.setTooltip("Speech Recognition is not supported in this browser.");
103
+ }
104
+ }
105
+ startDictation() {
106
+ if (!this.recognition) return;
107
+ try {
108
+ this.recognition.start();
109
+ MessageToast.show("Requesting microphone access...");
110
+ // Provide immediate UI feedback in case browser delays the onstart event
111
+ this.startBtn.setIcon("sap-icon://stop");
112
+ this.startBtn.setText("Requesting mic...");
113
+ this.startBtn.setType("Reject");
114
+ } catch (err) {
115
+ Logger.error("Failed to start speech recognition", err.message || err, "VoiceInputControl");
116
+ sap.ui.require(["sap/m/MessageBox"], MessageBox => {
117
+ MessageBox.error("Failed to start dictation. Please ensure you have a working microphone and have granted browser permissions.\n\nDetails: " + (err.message || err));
118
+ });
119
+ this.stopDictation();
120
+ }
121
+ }
122
+ stopDictation() {
123
+ if (!this.recognition) return;
124
+ try {
125
+ this.recognition.stop();
126
+ } catch (e) {}
127
+ this.isRecording = false;
128
+ this.startBtn.setIcon("sap-icon://microphone");
129
+ this.startBtn.setText("Start Dictation");
130
+ this.startBtn.setType("Emphasized");
131
+ }
132
+ onBeforeRendering() {
133
+ const readOnly = this.getProperty("readOnly");
134
+ this.textArea.setEditable(!readOnly);
135
+
136
+ // Only enable if it's not readonly AND the browser supports speech recognition
137
+ this.startBtn.setEnabled(!readOnly && !!this.recognition);
138
+ const currentVal = this.getProperty("value");
139
+ if (currentVal !== undefined && currentVal !== null) {
140
+ // Only update text area if we aren't currently dictating interim results
141
+ if (!this.isRecording) {
142
+ this.textArea.setValue(currentVal);
143
+ }
144
+ }
145
+ }
146
+ exit() {
147
+ this.stopDictation();
148
+ if (this.recognition) {
149
+ this.recognition.onstart = null;
150
+ this.recognition.onresult = null;
151
+ this.recognition.onerror = null;
152
+ this.recognition.onend = null;
153
+ this.recognition = null;
154
+ }
155
+ super.exit();
156
+ }
157
+ }
158
+ return VoiceInputControl;
159
+ });
160
+ //# sourceMappingURL=VoiceInputControl-dbg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceInputControl-dbg.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","Logger","___utils_Logger","VoiceInputControl","renderer","metadata","properties","events","recognition","isRecording","init","textArea","TextArea","rows","width","placeholder","liveChange","oEvent","setValueAndFire","getParameter","startBtn","Button","icon","text","type","press","toggleDictation","bind","hBox","HBox","items","addStyleClass","vBox","VBox","setAggregation","initSpeechRecognition","stopDictation","startDictation","SpeechRecognition","window","webkitSpeechRecognition","continuous","interimResults","onresult","event","finalTranscript","interimTranscript","i","resultIndex","results","length","isFinal","transcript","currentVal","getValue","newVal","setValue","onstart","setIcon","setText","setType","MessageToast","show","onerror","error","sap","ui","require","MessageBox","onend","warn","setEnabled","setTooltip","start","err","message","stop","e","onBeforeRendering","readOnly","getProperty","setEditable","undefined","exit"],"sources":["VoiceInputControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport Button from \"sap/m/Button\";\nimport VBox from \"sap/m/VBox\";\nimport TextArea from \"sap/m/TextArea\";\nimport MessageToast from \"sap/m/MessageToast\";\nimport HBox from \"sap/m/HBox\";\nimport { Logger } from \"../utils/Logger\";\n\n/**\n * VoiceInputControl\n * Provides a UI to dictate text using the browser's native Web Speech API.\n */\nexport default class VoiceInputControl extends BaseHardwareControl {\n static readonly renderer = \"nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer\";\n static readonly metadata = {\n properties: {},\n events: {}\n };\n\n private vBox!: VBox;\n private textArea!: TextArea;\n private startBtn!: Button;\n private stopBtn!: Button;\n \n private recognition: any = null;\n private isRecording: boolean = false;\n\n public init(): void {\n super.init();\n\n this.textArea = new TextArea({\n rows: 3,\n width: \"100%\",\n placeholder: \"Dictated text will appear here...\",\n liveChange: (oEvent: sap.ui.base.Event) => {\n this.setValueAndFire(oEvent.getParameter(\"value\"));\n }\n });\n\n this.startBtn = new Button({\n icon: \"sap-icon://microphone\",\n text: \"Start Dictation\",\n type: \"Emphasized\",\n press: this.toggleDictation.bind(this)\n });\n\n const hBox = new HBox({\n items: [this.startBtn]\n }).addStyleClass(\"sapUiSmallMarginTop\");\n\n this.vBox = new VBox({\n items: [this.textArea, hBox]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n this.initSpeechRecognition();\n }\n\n private toggleDictation(): void {\n if (this.isRecording) {\n this.stopDictation();\n } else {\n this.startDictation();\n }\n }\n\n private initSpeechRecognition(): void {\n const SpeechRecognition = (window as unknown).SpeechRecognition || (window as unknown).webkitSpeechRecognition;\n if (SpeechRecognition) {\n this.recognition = new SpeechRecognition();\n this.recognition.continuous = true;\n this.recognition.interimResults = true;\n\n this.recognition.onresult = (event: any) => {\n let finalTranscript = \"\";\n let interimTranscript = \"\";\n\n for (let i = event.resultIndex; i < event.results.length; ++i) {\n if (event.results[i].isFinal) {\n finalTranscript += event.results[i][0].transcript;\n } else {\n interimTranscript += event.results[i][0].transcript;\n }\n }\n\n // Append the new final transcript to whatever was already in the textarea\n const currentVal = this.getValue() || \"\";\n const newVal = currentVal ? currentVal + \" \" + finalTranscript : finalTranscript;\n \n if (finalTranscript) {\n this.textArea.setValue(newVal);\n this.setValueAndFire(newVal);\n } else if (interimTranscript) {\n // Just show interim temporarily in textarea without saving to model\n this.textArea.setValue(currentVal ? currentVal + \" \" + interimTranscript : interimTranscript);\n }\n };\n\n this.recognition.onstart = () => {\n this.isRecording = true;\n this.startBtn.setIcon(\"sap-icon://stop\");\n this.startBtn.setText(\"Stop Recording\");\n this.startBtn.setType(\"Reject\");\n MessageToast.show(\"Listening... Please speak now.\");\n };\n\n this.recognition.onerror = (event: any) => {\n Logger.error(\"Speech recognition error\", event.error, \"VoiceInputControl\");\n sap.ui.require([\"sap/m/MessageBox\"], (MessageBox: unknown) => {\n MessageBox.error(\"Microphone Error: \" + event.error + \"\\n\\nPlease ensure you have a working microphone attached and have not blocked access in your browser settings.\");\n });\n this.stopDictation();\n };\n \n this.recognition.onend = () => {\n // If it ends natively (e.g. timeout), update UI\n this.stopDictation();\n };\n } else {\n Logger.warn(\"Web Speech API not supported in this browser.\", \"\", \"VoiceInputControl\");\n this.startBtn.setEnabled(false);\n this.startBtn.setTooltip(\"Speech Recognition is not supported in this browser.\");\n }\n }\n\n private startDictation(): void {\n if (!this.recognition) return;\n \n try {\n this.recognition.start();\n MessageToast.show(\"Requesting microphone access...\");\n // Provide immediate UI feedback in case browser delays the onstart event\n this.startBtn.setIcon(\"sap-icon://stop\");\n this.startBtn.setText(\"Requesting mic...\");\n this.startBtn.setType(\"Reject\");\n } catch (err: any) {\n Logger.error(\"Failed to start speech recognition\", err.message || err, \"VoiceInputControl\");\n sap.ui.require([\"sap/m/MessageBox\"], (MessageBox: unknown) => {\n MessageBox.error(\"Failed to start dictation. Please ensure you have a working microphone and have granted browser permissions.\\n\\nDetails: \" + (err.message || err));\n });\n this.stopDictation();\n }\n }\n\n private stopDictation(): void {\n if (!this.recognition) return;\n \n try {\n this.recognition.stop();\n } catch(e) {}\n \n this.isRecording = false;\n this.startBtn.setIcon(\"sap-icon://microphone\");\n this.startBtn.setText(\"Start Dictation\");\n this.startBtn.setType(\"Emphasized\");\n }\n\n public onBeforeRendering(): void {\n const readOnly = this.getProperty(\"readOnly\");\n this.textArea.setEditable(!readOnly);\n \n // Only enable if it's not readonly AND the browser supports speech recognition\n this.startBtn.setEnabled(!readOnly && !!this.recognition);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal !== undefined && currentVal !== null) {\n // Only update text area if we aren't currently dictating interim results\n if (!this.isRecording) {\n this.textArea.setValue(currentVal as string);\n }\n }\n }\n\n public exit(): void {\n this.stopDictation();\n if (this.recognition) {\n this.recognition.onstart = null;\n this.recognition.onresult = null;\n this.recognition.onerror = null;\n this.recognition.onend = null;\n this.recognition = null;\n }\n super.exit();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ declare module "nz/co/siliconst/ui5/metaui/controls/VoiceInputControl" {
2
+ import BaseHardwareControl from "nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl";
3
+ /**
4
+ * VoiceInputControl
5
+ * Provides a UI to dictate text using the browser's native Web Speech API.
6
+ */
7
+ export default class VoiceInputControl extends BaseHardwareControl {
8
+ static readonly renderer = "nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";
9
+ static readonly metadata: {
10
+ properties: {};
11
+ events: {};
12
+ };
13
+ private vBox;
14
+ private textArea;
15
+ private startBtn;
16
+ private stopBtn;
17
+ private recognition;
18
+ private isRecording;
19
+ init(): void;
20
+ private toggleDictation;
21
+ private initSpeechRecognition;
22
+ private startDictation;
23
+ private stopDictation;
24
+ onBeforeRendering(): void;
25
+ exit(): void;
26
+ }
27
+ }
28
+ //# sourceMappingURL=VoiceInputControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceInputControl.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,uDAAuD,CAAC;IACvE,OAAO,mBAAmB,MAAM,yDAAyD,CAAC;IAQ1F;;;OAGG;IACH,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,mBAAmB;QAC9D,MAAM,CAAC,QAAQ,CAAC,QAAQ,qEAAqE;QAC7F,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;UAGtB;QAEF,OAAO,CAAC,IAAI,CAAQ;QACpB,OAAO,CAAC,QAAQ,CAAY;QAC5B,OAAO,CAAC,QAAQ,CAAU;QAC1B,OAAO,CAAC,OAAO,CAAU;QAEzB,OAAO,CAAC,WAAW,CAAa;QAChC,OAAO,CAAC,WAAW,CAAkB;QAE9B,IAAI,IAAI,IAAI;QA+BnB,OAAO,CAAC,eAAe;QAQvB,OAAO,CAAC,qBAAqB;QA2D7B,OAAO,CAAC,cAAc;QAmBtB,OAAO,CAAC,aAAa;QAad,iBAAiB,IAAI,IAAI;QAgBzB,IAAI,IAAI,IAAI;KAWtB;CAEA"}
@@ -0,0 +1,2 @@
1
+ sap.ui.define(["./BaseHardwareControl","sap/m/Button","sap/m/VBox","sap/m/TextArea","sap/m/MessageToast","sap/m/HBox","../utils/Logger"],function(t,e,i,s,n,o,r){"use strict";function a(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const c=a(t);const h=r["Logger"];class l extends c{static renderer="nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";static metadata={properties:{},events:{}};recognition=null;isRecording=false;init(){super.init();this.textArea=new s({rows:3,width:"100%",placeholder:"Dictated text will appear here...",liveChange:t=>{this.setValueAndFire(t.getParameter("value"))}});this.startBtn=new e({icon:"sap-icon://microphone",text:"Start Dictation",type:"Emphasized",press:this.toggleDictation.bind(this)});const t=new o({items:[this.startBtn]}).addStyleClass("sapUiSmallMarginTop");this.vBox=new i({items:[this.textArea,t]});this.setAggregation("_content",this.vBox);this.initSpeechRecognition()}toggleDictation(){if(this.isRecording){this.stopDictation()}else{this.startDictation()}}initSpeechRecognition(){const t=window.SpeechRecognition||window.webkitSpeechRecognition;if(t){this.recognition=new t;this.recognition.continuous=true;this.recognition.interimResults=true;this.recognition.onresult=t=>{let e="";let i="";for(let s=t.resultIndex;s<t.results.length;++s){if(t.results[s].isFinal){e+=t.results[s][0].transcript}else{i+=t.results[s][0].transcript}}const s=this.getValue()||"";const n=s?s+" "+e:e;if(e){this.textArea.setValue(n);this.setValueAndFire(n)}else if(i){this.textArea.setValue(s?s+" "+i:i)}};this.recognition.onstart=()=>{this.isRecording=true;this.startBtn.setIcon("sap-icon://stop");this.startBtn.setText("Stop Recording");this.startBtn.setType("Reject");n.show("Listening... Please speak now.")};this.recognition.onerror=t=>{h.error("Speech recognition error",t.error,"VoiceInputControl");sap.ui.require(["sap/m/MessageBox"],e=>{e.error("Microphone Error: "+t.error+"\n\nPlease ensure you have a working microphone attached and have not blocked access in your browser settings.")});this.stopDictation()};this.recognition.onend=()=>{this.stopDictation()}}else{h.warn("Web Speech API not supported in this browser.","","VoiceInputControl");this.startBtn.setEnabled(false);this.startBtn.setTooltip("Speech Recognition is not supported in this browser.")}}startDictation(){if(!this.recognition)return;try{this.recognition.start();n.show("Requesting microphone access...");this.startBtn.setIcon("sap-icon://stop");this.startBtn.setText("Requesting mic...");this.startBtn.setType("Reject")}catch(t){h.error("Failed to start speech recognition",t.message||t,"VoiceInputControl");sap.ui.require(["sap/m/MessageBox"],e=>{e.error("Failed to start dictation. Please ensure you have a working microphone and have granted browser permissions.\n\nDetails: "+(t.message||t))});this.stopDictation()}}stopDictation(){if(!this.recognition)return;try{this.recognition.stop()}catch(t){}this.isRecording=false;this.startBtn.setIcon("sap-icon://microphone");this.startBtn.setText("Start Dictation");this.startBtn.setType("Emphasized")}onBeforeRendering(){const t=this.getProperty("readOnly");this.textArea.setEditable(!t);this.startBtn.setEnabled(!t&&!!this.recognition);const e=this.getProperty("value");if(e!==undefined&&e!==null){if(!this.isRecording){this.textArea.setValue(e)}}}exit(){this.stopDictation();if(this.recognition){this.recognition.onstart=null;this.recognition.onresult=null;this.recognition.onerror=null;this.recognition.onend=null;this.recognition=null}super.exit()}}return l});
2
+ //# sourceMappingURL=VoiceInputControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceInputControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","Logger","___utils_Logger","VoiceInputControl","static","properties","events","recognition","isRecording","init","super","this","textArea","TextArea","rows","width","placeholder","liveChange","oEvent","setValueAndFire","getParameter","startBtn","Button","icon","text","type","press","toggleDictation","bind","hBox","HBox","items","addStyleClass","vBox","VBox","setAggregation","initSpeechRecognition","stopDictation","startDictation","SpeechRecognition","window","webkitSpeechRecognition","continuous","interimResults","onresult","event","finalTranscript","interimTranscript","i","resultIndex","results","length","isFinal","transcript","currentVal","getValue","newVal","setValue","onstart","setIcon","setText","setType","MessageToast","show","onerror","error","sap","ui","require","MessageBox","onend","warn","setEnabled","setTooltip","start","err","message","stop","e","onBeforeRendering","readOnly","getProperty","setEditable","undefined","exit"],"sources":["VoiceInputControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport Button from \"sap/m/Button\";\nimport VBox from \"sap/m/VBox\";\nimport TextArea from \"sap/m/TextArea\";\nimport MessageToast from \"sap/m/MessageToast\";\nimport HBox from \"sap/m/HBox\";\nimport { Logger } from \"../utils/Logger\";\n\n/**\n * VoiceInputControl\n * Provides a UI to dictate text using the browser's native Web Speech API.\n */\nexport default class VoiceInputControl extends BaseHardwareControl {\n static readonly renderer = \"nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer\";\n static readonly metadata = {\n properties: {},\n events: {}\n };\n\n private vBox!: VBox;\n private textArea!: TextArea;\n private startBtn!: Button;\n private stopBtn!: Button;\n \n private recognition: any = null;\n private isRecording: boolean = false;\n\n public init(): void {\n super.init();\n\n this.textArea = new TextArea({\n rows: 3,\n width: \"100%\",\n placeholder: \"Dictated text will appear here...\",\n liveChange: (oEvent: sap.ui.base.Event) => {\n this.setValueAndFire(oEvent.getParameter(\"value\"));\n }\n });\n\n this.startBtn = new Button({\n icon: \"sap-icon://microphone\",\n text: \"Start Dictation\",\n type: \"Emphasized\",\n press: this.toggleDictation.bind(this)\n });\n\n const hBox = new HBox({\n items: [this.startBtn]\n }).addStyleClass(\"sapUiSmallMarginTop\");\n\n this.vBox = new VBox({\n items: [this.textArea, hBox]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n this.initSpeechRecognition();\n }\n\n private toggleDictation(): void {\n if (this.isRecording) {\n this.stopDictation();\n } else {\n this.startDictation();\n }\n }\n\n private initSpeechRecognition(): void {\n const SpeechRecognition = (window as unknown).SpeechRecognition || (window as unknown).webkitSpeechRecognition;\n if (SpeechRecognition) {\n this.recognition = new SpeechRecognition();\n this.recognition.continuous = true;\n this.recognition.interimResults = true;\n\n this.recognition.onresult = (event: any) => {\n let finalTranscript = \"\";\n let interimTranscript = \"\";\n\n for (let i = event.resultIndex; i < event.results.length; ++i) {\n if (event.results[i].isFinal) {\n finalTranscript += event.results[i][0].transcript;\n } else {\n interimTranscript += event.results[i][0].transcript;\n }\n }\n\n // Append the new final transcript to whatever was already in the textarea\n const currentVal = this.getValue() || \"\";\n const newVal = currentVal ? currentVal + \" \" + finalTranscript : finalTranscript;\n \n if (finalTranscript) {\n this.textArea.setValue(newVal);\n this.setValueAndFire(newVal);\n } else if (interimTranscript) {\n // Just show interim temporarily in textarea without saving to model\n this.textArea.setValue(currentVal ? currentVal + \" \" + interimTranscript : interimTranscript);\n }\n };\n\n this.recognition.onstart = () => {\n this.isRecording = true;\n this.startBtn.setIcon(\"sap-icon://stop\");\n this.startBtn.setText(\"Stop Recording\");\n this.startBtn.setType(\"Reject\");\n MessageToast.show(\"Listening... Please speak now.\");\n };\n\n this.recognition.onerror = (event: any) => {\n Logger.error(\"Speech recognition error\", event.error, \"VoiceInputControl\");\n sap.ui.require([\"sap/m/MessageBox\"], (MessageBox: unknown) => {\n MessageBox.error(\"Microphone Error: \" + event.error + \"\\n\\nPlease ensure you have a working microphone attached and have not blocked access in your browser settings.\");\n });\n this.stopDictation();\n };\n \n this.recognition.onend = () => {\n // If it ends natively (e.g. timeout), update UI\n this.stopDictation();\n };\n } else {\n Logger.warn(\"Web Speech API not supported in this browser.\", \"\", \"VoiceInputControl\");\n this.startBtn.setEnabled(false);\n this.startBtn.setTooltip(\"Speech Recognition is not supported in this browser.\");\n }\n }\n\n private startDictation(): void {\n if (!this.recognition) return;\n \n try {\n this.recognition.start();\n MessageToast.show(\"Requesting microphone access...\");\n // Provide immediate UI feedback in case browser delays the onstart event\n this.startBtn.setIcon(\"sap-icon://stop\");\n this.startBtn.setText(\"Requesting mic...\");\n this.startBtn.setType(\"Reject\");\n } catch (err: any) {\n Logger.error(\"Failed to start speech recognition\", err.message || err, \"VoiceInputControl\");\n sap.ui.require([\"sap/m/MessageBox\"], (MessageBox: unknown) => {\n MessageBox.error(\"Failed to start dictation. Please ensure you have a working microphone and have granted browser permissions.\\n\\nDetails: \" + (err.message || err));\n });\n this.stopDictation();\n }\n }\n\n private stopDictation(): void {\n if (!this.recognition) return;\n \n try {\n this.recognition.stop();\n } catch(e) {}\n \n this.isRecording = false;\n this.startBtn.setIcon(\"sap-icon://microphone\");\n this.startBtn.setText(\"Start Dictation\");\n this.startBtn.setType(\"Emphasized\");\n }\n\n public onBeforeRendering(): void {\n const readOnly = this.getProperty(\"readOnly\");\n this.textArea.setEditable(!readOnly);\n \n // Only enable if it's not readonly AND the browser supports speech recognition\n this.startBtn.setEnabled(!readOnly && !!this.recognition);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal !== undefined && currentVal !== null) {\n // Only update text area if we aren't currently dictating interim results\n if (!this.isRecording) {\n this.textArea.setValue(currentVal as string);\n }\n }\n }\n\n public exit(): void {\n this.stopDictation();\n if (this.recognition) {\n this.recognition.onstart = null;\n this.recognition.onresult = null;\n this.recognition.onerror = null;\n this.recognition.onend = null;\n this.recognition = null;\n }\n super.exit();\n }\n}\n"],"mappings":"qQAAOA,EAAmBC,EAAAC,GAAA,MAMjBC,EAAMC,EAAA,UAMA,MAAMC,UAA0BL,EAC3CM,gBAA2B,kEAC3BA,gBAA2B,CACvBC,WAAY,CAAC,EACbC,OAAQ,CAAC,GAQLC,YAAmB,KACnBC,YAAuB,MAExBC,OACHC,MAAMD,OAENE,KAAKC,SAAW,IAAIC,EAAS,CACzBC,KAAM,EACNC,MAAO,OACPC,YAAa,oCACbC,WAAaC,IACTP,KAAKQ,gBAAgBD,EAAOE,aAAa,aAIjDT,KAAKU,SAAW,IAAIC,EAAO,CACvBC,KAAM,wBACNC,KAAM,kBACNC,KAAM,aACNC,MAAOf,KAAKgB,gBAAgBC,KAAKjB,QAGrC,MAAMkB,EAAO,IAAIC,EAAK,CAClBC,MAAO,CAACpB,KAAKU,YACdW,cAAc,uBAEjBrB,KAAKsB,KAAO,IAAIC,EAAK,CACjBH,MAAO,CAACpB,KAAKC,SAAUiB,KAG3BlB,KAAKwB,eAAe,WAAYxB,KAAKsB,MACrCtB,KAAKyB,uBACT,CAEQT,kBACJ,GAAIhB,KAAKH,YAAa,CAClBG,KAAK0B,eACT,KAAO,CACH1B,KAAK2B,gBACT,CACJ,CAEQF,wBACJ,MAAMG,EAAqBC,OAAmBD,mBAAsBC,OAAmBC,wBACvF,GAAIF,EAAmB,CACnB5B,KAAKJ,YAAc,IAAIgC,EACvB5B,KAAKJ,YAAYmC,WAAa,KAC9B/B,KAAKJ,YAAYoC,eAAiB,KAElChC,KAAKJ,YAAYqC,SAAYC,IACzB,IAAIC,EAAkB,GACtB,IAAIC,EAAoB,GAExB,IAAK,IAAIC,EAAIH,EAAMI,YAAaD,EAAIH,EAAMK,QAAQC,SAAUH,EAAG,CAC3D,GAAIH,EAAMK,QAAQF,GAAGI,QAAS,CAC1BN,GAAmBD,EAAMK,QAAQF,GAAG,GAAGK,UAC3C,KAAO,CACHN,GAAqBF,EAAMK,QAAQF,GAAG,GAAGK,UAC7C,CACJ,CAGA,MAAMC,EAAa3C,KAAK4C,YAAc,GACtC,MAAMC,EAASF,EAAaA,EAAa,IAAMR,EAAkBA,EAEjE,GAAIA,EAAiB,CACjBnC,KAAKC,SAAS6C,SAASD,GACvB7C,KAAKQ,gBAAgBqC,EACzB,MAAO,GAAIT,EAAmB,CAE1BpC,KAAKC,SAAS6C,SAASH,EAAaA,EAAa,IAAMP,EAAoBA,EAC/E,GAGJpC,KAAKJ,YAAYmD,QAAU,KACvB/C,KAAKH,YAAc,KACnBG,KAAKU,SAASsC,QAAQ,mBACtBhD,KAAKU,SAASuC,QAAQ,kBACtBjD,KAAKU,SAASwC,QAAQ,UACtBC,EAAaC,KAAK,mCAGtBpD,KAAKJ,YAAYyD,QAAWnB,IACxB5C,EAAOgE,MAAM,2BAA4BpB,EAAMoB,MAAO,qBACtDC,IAAIC,GAAGC,QAAQ,CAAC,oBAAsBC,IAClCA,EAAWJ,MAAM,qBAAuBpB,EAAMoB,MAAQ,oHAE1DtD,KAAK0B,iBAGT1B,KAAKJ,YAAY+D,MAAQ,KAErB3D,KAAK0B,gBAEb,KAAO,CACHpC,EAAOsE,KAAK,gDAAiD,GAAI,qBACjE5D,KAAKU,SAASmD,WAAW,OACzB7D,KAAKU,SAASoD,WAAW,uDAC7B,CACJ,CAEQnC,iBACJ,IAAK3B,KAAKJ,YAAa,OAEvB,IACII,KAAKJ,YAAYmE,QACjBZ,EAAaC,KAAK,mCAElBpD,KAAKU,SAASsC,QAAQ,mBACtBhD,KAAKU,SAASuC,QAAQ,qBACtBjD,KAAKU,SAASwC,QAAQ,SAC1B,CAAE,MAAOc,GACL1E,EAAOgE,MAAM,qCAAsCU,EAAIC,SAAWD,EAAK,qBACvET,IAAIC,GAAGC,QAAQ,CAAC,oBAAsBC,IAClCA,EAAWJ,MAAM,6HAA+HU,EAAIC,SAAWD,MAEnKhE,KAAK0B,eACT,CACJ,CAEQA,gBACJ,IAAK1B,KAAKJ,YAAa,OAEvB,IACII,KAAKJ,YAAYsE,MACrB,CAAE,MAAMC,GAAI,CAEZnE,KAAKH,YAAc,MACnBG,KAAKU,SAASsC,QAAQ,yBACtBhD,KAAKU,SAASuC,QAAQ,mBACtBjD,KAAKU,SAASwC,QAAQ,aAC1B,CAEOkB,oBACH,MAAMC,EAAWrE,KAAKsE,YAAY,YAClCtE,KAAKC,SAASsE,aAAaF,GAG3BrE,KAAKU,SAASmD,YAAYQ,KAAcrE,KAAKJ,aAE7C,MAAM+C,EAAa3C,KAAKsE,YAAY,SACpC,GAAI3B,IAAe6B,WAAa7B,IAAe,KAAM,CAEjD,IAAK3C,KAAKH,YAAa,CACnBG,KAAKC,SAAS6C,SAASH,EAC3B,CACJ,CACJ,CAEO8B,OACHzE,KAAK0B,gBACL,GAAI1B,KAAKJ,YAAa,CAClBI,KAAKJ,YAAYmD,QAAU,KAC3B/C,KAAKJ,YAAYqC,SAAW,KAC5BjC,KAAKJ,YAAYyD,QAAU,KAC3BrD,KAAKJ,YAAY+D,MAAQ,KACzB3D,KAAKJ,YAAc,IACvB,CACAG,MAAM0E,MACV,EACH,OAAAjF,CAAA","ignoreList":[]}
@@ -0,0 +1,185 @@
1
+ import BaseHardwareControl from "./BaseHardwareControl";
2
+ import Button from "sap/m/Button";
3
+ import VBox from "sap/m/VBox";
4
+ import TextArea from "sap/m/TextArea";
5
+ import MessageToast from "sap/m/MessageToast";
6
+ import HBox from "sap/m/HBox";
7
+ import { Logger } from "../utils/Logger";
8
+
9
+ /**
10
+ * VoiceInputControl
11
+ * Provides a UI to dictate text using the browser's native Web Speech API.
12
+ */
13
+ export default class VoiceInputControl extends BaseHardwareControl {
14
+ static readonly renderer = "nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";
15
+ static readonly metadata = {
16
+ properties: {},
17
+ events: {}
18
+ };
19
+
20
+ private vBox!: VBox;
21
+ private textArea!: TextArea;
22
+ private startBtn!: Button;
23
+ private stopBtn!: Button;
24
+
25
+ private recognition: any = null;
26
+ private isRecording: boolean = false;
27
+
28
+ public init(): void {
29
+ super.init();
30
+
31
+ this.textArea = new TextArea({
32
+ rows: 3,
33
+ width: "100%",
34
+ placeholder: "Dictated text will appear here...",
35
+ liveChange: (oEvent: sap.ui.base.Event) => {
36
+ this.setValueAndFire(oEvent.getParameter("value"));
37
+ }
38
+ });
39
+
40
+ this.startBtn = new Button({
41
+ icon: "sap-icon://microphone",
42
+ text: "Start Dictation",
43
+ type: "Emphasized",
44
+ press: this.toggleDictation.bind(this)
45
+ });
46
+
47
+ const hBox = new HBox({
48
+ items: [this.startBtn]
49
+ }).addStyleClass("sapUiSmallMarginTop");
50
+
51
+ this.vBox = new VBox({
52
+ items: [this.textArea, hBox]
53
+ });
54
+
55
+ this.setAggregation("_content", this.vBox);
56
+ this.initSpeechRecognition();
57
+ }
58
+
59
+ private toggleDictation(): void {
60
+ if (this.isRecording) {
61
+ this.stopDictation();
62
+ } else {
63
+ this.startDictation();
64
+ }
65
+ }
66
+
67
+ private initSpeechRecognition(): void {
68
+ const SpeechRecognition = (window as unknown).SpeechRecognition || (window as unknown).webkitSpeechRecognition;
69
+ if (SpeechRecognition) {
70
+ this.recognition = new SpeechRecognition();
71
+ this.recognition.continuous = true;
72
+ this.recognition.interimResults = true;
73
+
74
+ this.recognition.onresult = (event: any) => {
75
+ let finalTranscript = "";
76
+ let interimTranscript = "";
77
+
78
+ for (let i = event.resultIndex; i < event.results.length; ++i) {
79
+ if (event.results[i].isFinal) {
80
+ finalTranscript += event.results[i][0].transcript;
81
+ } else {
82
+ interimTranscript += event.results[i][0].transcript;
83
+ }
84
+ }
85
+
86
+ // Append the new final transcript to whatever was already in the textarea
87
+ const currentVal = this.getValue() || "";
88
+ const newVal = currentVal ? currentVal + " " + finalTranscript : finalTranscript;
89
+
90
+ if (finalTranscript) {
91
+ this.textArea.setValue(newVal);
92
+ this.setValueAndFire(newVal);
93
+ } else if (interimTranscript) {
94
+ // Just show interim temporarily in textarea without saving to model
95
+ this.textArea.setValue(currentVal ? currentVal + " " + interimTranscript : interimTranscript);
96
+ }
97
+ };
98
+
99
+ this.recognition.onstart = () => {
100
+ this.isRecording = true;
101
+ this.startBtn.setIcon("sap-icon://stop");
102
+ this.startBtn.setText("Stop Recording");
103
+ this.startBtn.setType("Reject");
104
+ MessageToast.show("Listening... Please speak now.");
105
+ };
106
+
107
+ this.recognition.onerror = (event: any) => {
108
+ Logger.error("Speech recognition error", event.error, "VoiceInputControl");
109
+ sap.ui.require(["sap/m/MessageBox"], (MessageBox: unknown) => {
110
+ MessageBox.error("Microphone Error: " + event.error + "\n\nPlease ensure you have a working microphone attached and have not blocked access in your browser settings.");
111
+ });
112
+ this.stopDictation();
113
+ };
114
+
115
+ this.recognition.onend = () => {
116
+ // If it ends natively (e.g. timeout), update UI
117
+ this.stopDictation();
118
+ };
119
+ } else {
120
+ Logger.warn("Web Speech API not supported in this browser.", "", "VoiceInputControl");
121
+ this.startBtn.setEnabled(false);
122
+ this.startBtn.setTooltip("Speech Recognition is not supported in this browser.");
123
+ }
124
+ }
125
+
126
+ private startDictation(): void {
127
+ if (!this.recognition) return;
128
+
129
+ try {
130
+ this.recognition.start();
131
+ MessageToast.show("Requesting microphone access...");
132
+ // Provide immediate UI feedback in case browser delays the onstart event
133
+ this.startBtn.setIcon("sap-icon://stop");
134
+ this.startBtn.setText("Requesting mic...");
135
+ this.startBtn.setType("Reject");
136
+ } catch (err: any) {
137
+ Logger.error("Failed to start speech recognition", err.message || err, "VoiceInputControl");
138
+ sap.ui.require(["sap/m/MessageBox"], (MessageBox: unknown) => {
139
+ MessageBox.error("Failed to start dictation. Please ensure you have a working microphone and have granted browser permissions.\n\nDetails: " + (err.message || err));
140
+ });
141
+ this.stopDictation();
142
+ }
143
+ }
144
+
145
+ private stopDictation(): void {
146
+ if (!this.recognition) return;
147
+
148
+ try {
149
+ this.recognition.stop();
150
+ } catch(e) {}
151
+
152
+ this.isRecording = false;
153
+ this.startBtn.setIcon("sap-icon://microphone");
154
+ this.startBtn.setText("Start Dictation");
155
+ this.startBtn.setType("Emphasized");
156
+ }
157
+
158
+ public onBeforeRendering(): void {
159
+ const readOnly = this.getProperty("readOnly");
160
+ this.textArea.setEditable(!readOnly);
161
+
162
+ // Only enable if it's not readonly AND the browser supports speech recognition
163
+ this.startBtn.setEnabled(!readOnly && !!this.recognition);
164
+
165
+ const currentVal = this.getProperty("value");
166
+ if (currentVal !== undefined && currentVal !== null) {
167
+ // Only update text area if we aren't currently dictating interim results
168
+ if (!this.isRecording) {
169
+ this.textArea.setValue(currentVal as string);
170
+ }
171
+ }
172
+ }
173
+
174
+ public exit(): void {
175
+ this.stopDictation();
176
+ if (this.recognition) {
177
+ this.recognition.onstart = null;
178
+ this.recognition.onresult = null;
179
+ this.recognition.onerror = null;
180
+ this.recognition.onend = null;
181
+ this.recognition = null;
182
+ }
183
+ super.exit();
184
+ }
185
+ }