@siliconst/metaui 1.4.6 → 1.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControl.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/BaseHardwareControlRenderer.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js +16 -2
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts +11 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.ts +14 -3
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +48 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts +48 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost.ts +55 -10
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js +32 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts +7 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/GeolocationControl.ts +11 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js +20 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts +12 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts +21 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js +38 -7
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts +17 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts +46 -8
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +22 -6
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts +41 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +57 -12
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +33 -5
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts +15 -4
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost.ts +40 -7
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js +5 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts +7 -3
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DataSyncDelegate.ts +8 -4
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts +5 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/DialogDelegate.ts +5 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts +4 -3
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ODataDelegate.ts +9 -8
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +7 -3
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts +5 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +11 -6
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/ConditionEngine.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js +45 -12
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts +6 -0
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/DefaultLayoutGenerator.ts +26 -13
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +25 -12
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/Engine.ts +35 -28
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js +17 -3
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts +5 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PipelineManager.ts +14 -4
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +162 -106
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts +25 -26
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts +180 -113
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js +26 -0
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts +23 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaNormalizer.ts +29 -7
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/SchemaValidator.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts +7 -2
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/core/StateManager.ts +11 -6
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPipeline.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js +10 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/CompactLayout.ts +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js +10 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/FormLayout.ts +10 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts +8 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/WizardLayout.ts +9 -1
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +3 -33
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +33 -34
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts +14 -7
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.ts +15 -34
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin.ts +2 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +18 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts +17 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin.ts +20 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +21 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin.ts +25 -13
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin.ts +5 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +2 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin.ts +5 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin.ts +23 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +30 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts +26 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin.ts +39 -14
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin.ts +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin.ts +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin.ts +6 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin.ts +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin.ts +23 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js +18 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts +17 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin.ts +17 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin.ts +21 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin.ts +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +23 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts +21 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin.ts +28 -7
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin.ts +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts +17 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin.ts +22 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin.ts +25 -8
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin.ts +22 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +4 -4
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin.ts +8 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin.ts +22 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin.ts +22 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin.ts +22 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +20 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin.ts +24 -7
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js +9 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts +8 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin.ts +13 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js +9 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts +8 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin.ts +10 -3
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +19 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts +18 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin.ts +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js +23 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts +20 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin.ts +25 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/CurrencyFormatterPlugin.ts +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts +6 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/DateFormatterPlugin.ts +7 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js +5 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts +6 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/PhoneFormatterPlugin.ts +6 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js +5 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts +6 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/formatters/TextCaseFormatterPlugin.ts +6 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/EmailValidatorPlugin.ts +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/IbanValidatorPlugin.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/MinLengthValidatorPlugin.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/PatternValidatorPlugin.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/RangeValidatorPlugin.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js +6 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/plugins/validators/UrlValidatorPlugin.ts +7 -1
- package/src/nz/co/siliconst/ui5/metaui/typings/ui5-custom.d.ts +20 -0
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js +0 -32
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry-dbg.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts +0 -16
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.d.ts.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js +0 -2
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.js.map +0 -1
- package/src/nz/co/siliconst/ui5/metaui/core/LayoutRegistry.ts +0 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeolocationControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","BaseHardwareControlRenderer","__BaseHardwareControlRenderer","GeolocationControl","static","aggregations","_content","type","multiple","visibility","init","super","this","locationBtn","Button","icon","text","press","getLocation","bind","resultInput","Input","editable","visible","vBox","VBox","items","setAggregation","onBeforeRendering","metadata","getProperty","ui","label","setText","readOnly","setEnabled","currentVal","setValue","setVisible","navigator","geolocation","MessageToast","show","getCurrentPosition","position","locStr","coords","latitude","longitude","setValueAndFire"],"sources":["GeolocationControl.ts"],"sourcesContent":["/**\n * @file GeolocationControl.ts\n * @description Native UI5 Control for GPS capture.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nimport BaseHardwareControl from \"./BaseHardwareControl\";\nimport BaseHardwareControlRenderer from \"./BaseHardwareControlRenderer\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport Button from \"sap/m/Button\";\nimport Input from \"sap/m/Input\";\nimport VBox from \"sap/m/VBox\";\nimport MessageToast from \"sap/m/MessageToast\";\n\nexport default class GeolocationControl extends BaseHardwareControl {\n private vBox: VBox;\n private locationBtn: Button;\n private resultInput: Input;\n\n static readonly renderer = BaseHardwareControlRenderer;\n\n static readonly metadata = {\n aggregations: {\n _content: { type: \"sap.m.VBox\", multiple: false, visibility: \"hidden\" }\n }\n };\n\n public init(): void {\n super.init();\n\n this.locationBtn = new Button({\n icon: \"sap-icon://map\",\n text: \"Get Location\",\n press: this.getLocation.bind(this)\n });\n\n this.resultInput = new Input({\n editable: false,\n visible: false\n });\n\n this.vBox = new VBox({\n items: [this.locationBtn, this.resultInput]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n public onBeforeRendering(): void {\n const metadata = this.getProperty(\"schemaMetadata\");\n if (metadata && metadata.ui && metadata.ui.label) {\n this.locationBtn.setText(metadata.ui.label);\n }\n\n const readOnly = this.getProperty(\"readOnly\");\n this.locationBtn.setEnabled(!readOnly);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal) {\n this.resultInput.setValue(currentVal as string);\n this.resultInput.setVisible(true);\n }\n }\n\n private getLocation(): void {\n if (!navigator.geolocation) {\n MessageToast.show(\"Geolocation is not supported by your browser\");\n return;\n }\n\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const locStr = `${position.coords.latitude}, ${position.coords.longitude}`;\n this.resultInput.setValue(locStr);\n this.resultInput.setVisible(true);\n this.setValueAndFire(locStr);\n MessageToast.show(\"Location acquired.\");\n },\n () => {\n MessageToast.show(\"Unable to retrieve your location\");\n }\n );\n }\n\n\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GeolocationControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","BaseHardwareControlRenderer","__BaseHardwareControlRenderer","GeolocationControl","static","aggregations","_content","type","multiple","visibility","init","super","this","locationBtn","Button","icon","text","press","getLocation","bind","resultInput","Input","editable","visible","vBox","VBox","items","setAggregation","onBeforeRendering","metadata","getProperty","ui","label","setText","readOnly","setEnabled","currentVal","setValue","setVisible","navigator","geolocation","MessageToast","show","getCurrentPosition","position","locStr","coords","latitude","longitude","setValueAndFire","error","__ui5_require_async","then","Logger","message"],"sources":["GeolocationControl.ts"],"sourcesContent":["/**\n * @file GeolocationControl.ts\n * @description Native UI5 Control for GPS capture.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nimport BaseHardwareControl from \"./BaseHardwareControl\";\nimport BaseHardwareControlRenderer from \"./BaseHardwareControlRenderer\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport Button from \"sap/m/Button\";\nimport Input from \"sap/m/Input\";\nimport VBox from \"sap/m/VBox\";\nimport MessageToast from \"sap/m/MessageToast\";\n\nexport default class GeolocationControl extends BaseHardwareControl {\n private vBox: VBox;\n private locationBtn: Button;\n private resultInput: Input;\n\n static readonly renderer = BaseHardwareControlRenderer;\n\n static readonly metadata = {\n aggregations: {\n _content: { type: \"sap.m.VBox\", multiple: false, visibility: \"hidden\" }\n }\n };\n\n /**\n * Initializes the control and builds the internal UI components.\n */\n public init(): void {\n super.init();\n\n this.locationBtn = new Button({\n icon: \"sap-icon://map\",\n text: \"Get Location\",\n press: this.getLocation.bind(this)\n });\n\n this.resultInput = new Input({\n editable: false,\n visible: false\n });\n\n this.vBox = new VBox({\n items: [this.locationBtn, this.resultInput]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n /**\n * Lifecycle hook called before the control is rendered to the DOM.\n * Updates button state and sets any existing values.\n */\n public onBeforeRendering(): void {\n const metadata = this.getProperty(\"schemaMetadata\");\n if (metadata && metadata.ui && metadata.ui.label) {\n this.locationBtn.setText(metadata.ui.label);\n }\n\n const readOnly = this.getProperty(\"readOnly\");\n this.locationBtn.setEnabled(!readOnly);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal) {\n this.resultInput.setValue(currentVal as string);\n this.resultInput.setVisible(true);\n }\n }\n\n private getLocation(): void {\n if (!navigator.geolocation) {\n MessageToast.show(\"Geolocation is not supported by your browser\");\n return;\n }\n\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const locStr = `${position.coords.latitude}, ${position.coords.longitude}`;\n this.resultInput.setValue(locStr);\n this.resultInput.setVisible(true);\n this.setValueAndFire(locStr);\n MessageToast.show(\"Location acquired.\");\n },\n (error) => {\n import(\"../utils/Logger\").then(({ Logger }) => {\n Logger.error(\"[MetaUI] Geolocation failed or denied\", error.message, \"GeolocationControl\");\n });\n MessageToast.show(\"Unable to retrieve your location\");\n }\n );\n }\n\n\n}\n"],"mappings":"ufAAA,MAMOA,EAAmBC,EAAAC,GAAA,MACnBC,EAA2BF,EAAAG,GAOnB,MAAMC,UAA2BL,EAK5CM,gBAA2BH,EAE3BG,gBAA2B,CACvBC,aAAc,CACVC,SAAU,CAAEC,KAAM,aAAcC,SAAU,MAAOC,WAAY,YAO9DC,OACHC,MAAMD,OAENE,KAAKC,YAAc,IAAIC,EAAO,CAC1BC,KAAM,iBACNC,KAAM,eACNC,MAAOL,KAAKM,YAAYC,KAAKP,QAGjCA,KAAKQ,YAAc,IAAIC,EAAM,CACzBC,SAAU,MACVC,QAAS,QAGbX,KAAKY,KAAO,IAAIC,EAAK,CACjBC,MAAO,CAACd,KAAKC,YAAaD,KAAKQ,eAGnCR,KAAKe,eAAe,WAAYf,KAAKY,KACzC,CAMOI,oBACH,MAAMC,EAAWjB,KAAKkB,YAAY,kBAClC,GAAID,GAAYA,EAASE,IAAMF,EAASE,GAAGC,MAAO,CAC9CpB,KAAKC,YAAYoB,QAAQJ,EAASE,GAAGC,MACzC,CAEA,MAAME,EAAWtB,KAAKkB,YAAY,YAClClB,KAAKC,YAAYsB,YAAYD,GAE7B,MAAME,EAAaxB,KAAKkB,YAAY,SACpC,GAAIM,EAAY,CACZxB,KAAKQ,YAAYiB,SAASD,GAC1BxB,KAAKQ,YAAYkB,WAAW,KAChC,CACJ,CAEQpB,cACJ,IAAKqB,UAAUC,YAAa,CACxBC,EAAaC,KAAK,gDAClB,MACJ,CAEAH,UAAUC,YAAYG,mBACjBC,IACG,MAAMC,EAAS,GAAGD,EAASE,OAAOC,aAAaH,EAASE,OAAOE,YAC/DpC,KAAKQ,YAAYiB,SAASQ,GAC1BjC,KAAKQ,YAAYkB,WAAW,MAC5B1B,KAAKqC,gBAAgBJ,GACrBJ,EAAaC,KAAK,uBAErBQ,IACGC,EAAO,mBAAmBC,KAAK,EAAGC,aAC9BA,EAAOH,MAAM,wCAAyCA,EAAMI,QAAS,wBAEzEb,EAAaC,KAAK,qCAG9B,EAGH,OAAAvC,CAAA","ignoreList":[]}
|
|
@@ -25,6 +25,9 @@ export default class GeolocationControl extends BaseHardwareControl {
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Initializes the control and builds the internal UI components.
|
|
30
|
+
*/
|
|
28
31
|
public init(): void {
|
|
29
32
|
super.init();
|
|
30
33
|
|
|
@@ -46,6 +49,10 @@ export default class GeolocationControl extends BaseHardwareControl {
|
|
|
46
49
|
this.setAggregation("_content", this.vBox);
|
|
47
50
|
}
|
|
48
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Lifecycle hook called before the control is rendered to the DOM.
|
|
54
|
+
* Updates button state and sets any existing values.
|
|
55
|
+
*/
|
|
49
56
|
public onBeforeRendering(): void {
|
|
50
57
|
const metadata = this.getProperty("schemaMetadata");
|
|
51
58
|
if (metadata && metadata.ui && metadata.ui.label) {
|
|
@@ -76,7 +83,10 @@ export default class GeolocationControl extends BaseHardwareControl {
|
|
|
76
83
|
this.setValueAndFire(locStr);
|
|
77
84
|
MessageToast.show("Location acquired.");
|
|
78
85
|
},
|
|
79
|
-
() => {
|
|
86
|
+
(error) => {
|
|
87
|
+
import("../utils/Logger").then(({ Logger }) => {
|
|
88
|
+
Logger.error("[MetaUI] Geolocation failed or denied", error.message, "GeolocationControl");
|
|
89
|
+
});
|
|
80
90
|
MessageToast.show("Unable to retrieve your location");
|
|
81
91
|
}
|
|
82
92
|
);
|
|
@@ -53,6 +53,26 @@ sap.ui.define(["./BaseHardwareControl", "./BaseHardwareControlRenderer", "sap/m/
|
|
|
53
53
|
this.richTextEditor.setValue(currentVal);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Overrides the default property setter to prevent full DOM invalidation.
|
|
59
|
+
* When dataJson pushes updates down to the UI5 models, UI5 typically destroys
|
|
60
|
+
* and recreates the custom control if the property changes.
|
|
61
|
+
* By suppressing re-rendering (true flag) and manually passing the value
|
|
62
|
+
* to the inner RichTextEditor, we prevent TinyMCE from tearing down its iframe
|
|
63
|
+
* and triggering expensive, redundant plugin boot sequences.
|
|
64
|
+
*
|
|
65
|
+
* @param {unknown} val The new string value to bind
|
|
66
|
+
* @returns {this} The control instance for chaining
|
|
67
|
+
*/
|
|
68
|
+
setValue: function _setValue(val) {
|
|
69
|
+
this.setProperty("value", val, true); // suppress re-rendering
|
|
70
|
+
if (this.richTextEditor && val !== undefined && val !== null) {
|
|
71
|
+
if (this.richTextEditor.getValue() !== val) {
|
|
72
|
+
this.richTextEditor.setValue(val);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return this;
|
|
56
76
|
}
|
|
57
77
|
});
|
|
58
78
|
return RichTextControl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextControl-dbg.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","BaseHardwareControlRenderer","__BaseHardwareControlRenderer","RichTextControl","extend","metadata","properties","events","aggregations","_content","type","multiple","visibility","renderer","init","_init","BaseHardwareControl.prototype.init.call","richTextEditor","RichTextEditor","width","height","showGroupFont","showGroupInsert","tooltip","change","oEvent","val","getParameter","setValueAndFire","vBox","VBox","items","setAggregation","onBeforeRendering","_onBeforeRendering","readOnly","getProperty","setEditable","currentVal","undefined","getValue","setValue"],"sources":["RichTextControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport BaseHardwareControlRenderer from \"./BaseHardwareControlRenderer\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport VBox from \"sap/m/VBox\";\nimport RichTextEditor from \"sap/ui/richtexteditor/RichTextEditor\";\n\n/**\n * @file RichTextControl.ts\n * @description Native UI5 Control for rich text input.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nexport default class RichTextControl extends BaseHardwareControl {\n private vBox!: VBox;\n private richTextEditor!: RichTextEditor;\n\n static readonly renderer = BaseHardwareControlRenderer;\n\n static readonly metadata = {\n properties: {},\n events: {},\n aggregations: {\n _content: { type: \"sap.m.VBox\", multiple: false, visibility: \"hidden\" }\n }\n };\n\n public init(): void {\n super.init();\n\n this.richTextEditor = new RichTextEditor({\n width: \"100%\",\n height: \"300px\",\n showGroupFont: true,\n showGroupInsert: true,\n tooltip: \"Rich Text Editor\",\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"newValue\");\n this.setValueAndFire(val);\n }\n });\n\n this.vBox = new VBox({\n items: [this.richTextEditor]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n public onBeforeRendering(): void {\n const readOnly = this.getProperty(\"readOnly\");\n this.richTextEditor.setEditable(!readOnly);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal !== undefined && currentVal !== null) {\n // Prevent recursive update if the value matches the editor's current value\n if (this.richTextEditor.getValue() !== currentVal) {\n this.richTextEditor.setValue(currentVal as string);\n }\n }\n }\n}\n"],"mappings":";;;;;;QAAOA,mBAAmB,GAAAC,sBAAA,CAAAC,qBAAA;EAAA,MACnBC,2BAA2B,GAAAF,sBAAA,CAAAG,6BAAA;EAKlC;AACA;AACA;AACA;AACA;AACA;EALA,MAMqBC,eAAe,GAASL,mBAAmB,CAAAM,MAAA;IAM5CC,QAAQ,EAAG;MACvBC,UAAU,EAAE,CAAC,CAAC;MACdC,MAAM,EAAE,CAAC,CAAC;MACVC,YAAY,EAAE;QACVC,QAAQ,EAAE;UAAEC,IAAI,EAAE,YAAY;UAAEC,QAAQ,EAAE,KAAK;UAAEC,UAAU,EAAE;QAAS;MAC1E;IACJ,CAAC;IAReC,QAAQ,EAAGZ,2BAA2B;IAU/Ca,IAAI,WAAAC,MAAA,EAAS;MAChBC,uCAAA;MAEA,IAAI,CAACC,cAAc,GAAG,IAAIC,cAAc,CAAC;QACrCC,KAAK,EAAE,MAAM;QACbC,MAAM,EAAE,OAAO;QACfC,aAAa,EAAE,IAAI;QACnBC,eAAe,EAAE,IAAI;QACrBC,OAAO,EAAE,kBAAkB;QAC3BC,MAAM,EAAGC,MAAyB,IAAK;UACnC,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,CAAC,UAAU,CAAC;UAC3C,IAAI,CAACC,eAAe,CAACF,GAAG,CAAC;QAC7B;MACJ,CAAC,CAAC;MAEF,IAAI,CAACG,IAAI,GAAG,IAAIC,IAAI,CAAC;QACjBC,KAAK,EAAE,CAAC,IAAI,CAACd,cAAc;MAC/B,CAAC,CAAC;MAEF,IAAI,CAACe,cAAc,CAAC,UAAU,EAAE,IAAI,CAACH,IAAI,CAAC;IAC9C,CAAC;IAEMI,iBAAiB,WAAAC,mBAAA,EAAS;MAC7B,MAAMC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC;MAC7C,IAAI,CAACnB,cAAc,CAACoB,WAAW,CAAC,CAACF,QAAQ,CAAC;MAE1C,MAAMG,UAAU,GAAG,IAAI,CAACF,WAAW,CAAC,OAAO,CAAC;MAC5C,IAAIE,UAAU,KAAKC,SAAS,IAAID,UAAU,KAAK,IAAI,EAAE;QACjD;QACA,IAAI,IAAI,CAACrB,cAAc,CAACuB,QAAQ,CAAC,CAAC,KAAKF,UAAU,EAAE;UAC/C,IAAI,CAACrB,cAAc,CAACwB,QAAQ,CAACH,UAAoB,CAAC;QACtD;MACJ;IACJ;EAAC;EAAA,
|
|
1
|
+
{"version":3,"file":"RichTextControl-dbg.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","BaseHardwareControlRenderer","__BaseHardwareControlRenderer","RichTextControl","extend","metadata","properties","events","aggregations","_content","type","multiple","visibility","renderer","init","_init","BaseHardwareControl.prototype.init.call","richTextEditor","RichTextEditor","width","height","showGroupFont","showGroupInsert","tooltip","change","oEvent","val","getParameter","setValueAndFire","vBox","VBox","items","setAggregation","onBeforeRendering","_onBeforeRendering","readOnly","getProperty","setEditable","currentVal","undefined","getValue","setValue","_setValue","setProperty"],"sources":["RichTextControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport BaseHardwareControlRenderer from \"./BaseHardwareControlRenderer\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport VBox from \"sap/m/VBox\";\nimport RichTextEditor from \"sap/ui/richtexteditor/RichTextEditor\";\n\n/**\n * @file RichTextControl.ts\n * @description Native UI5 Control for rich text input.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nexport default class RichTextControl extends BaseHardwareControl {\n private vBox!: VBox;\n private richTextEditor!: RichTextEditor;\n\n static readonly renderer = BaseHardwareControlRenderer;\n\n static readonly metadata = {\n properties: {},\n events: {},\n aggregations: {\n _content: { type: \"sap.m.VBox\", multiple: false, visibility: \"hidden\" }\n }\n };\n\n public init(): void {\n super.init();\n\n this.richTextEditor = new RichTextEditor({\n width: \"100%\",\n height: \"300px\",\n showGroupFont: true,\n showGroupInsert: true,\n tooltip: \"Rich Text Editor\",\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"newValue\");\n this.setValueAndFire(val);\n }\n });\n\n this.vBox = new VBox({\n items: [this.richTextEditor]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n public onBeforeRendering(): void {\n const readOnly = this.getProperty(\"readOnly\");\n this.richTextEditor.setEditable(!readOnly);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal !== undefined && currentVal !== null) {\n // Prevent recursive update if the value matches the editor's current value\n if (this.richTextEditor.getValue() !== currentVal) {\n this.richTextEditor.setValue(currentVal as string);\n }\n }\n }\n\n /**\n * Overrides the default property setter to prevent full DOM invalidation.\n * When dataJson pushes updates down to the UI5 models, UI5 typically destroys \n * and recreates the custom control if the property changes. \n * By suppressing re-rendering (true flag) and manually passing the value \n * to the inner RichTextEditor, we prevent TinyMCE from tearing down its iframe\n * and triggering expensive, redundant plugin boot sequences.\n *\n * @param {unknown} val The new string value to bind\n * @returns {this} The control instance for chaining\n */\n public setValue(val: unknown): this {\n this.setProperty(\"value\", val, true); // suppress re-rendering\n if (this.richTextEditor && val !== undefined && val !== null) {\n if (this.richTextEditor.getValue() !== val) {\n this.richTextEditor.setValue(val as string);\n }\n }\n return this;\n }\n}\n"],"mappings":";;;;;;QAAOA,mBAAmB,GAAAC,sBAAA,CAAAC,qBAAA;EAAA,MACnBC,2BAA2B,GAAAF,sBAAA,CAAAG,6BAAA;EAKlC;AACA;AACA;AACA;AACA;AACA;EALA,MAMqBC,eAAe,GAASL,mBAAmB,CAAAM,MAAA;IAM5CC,QAAQ,EAAG;MACvBC,UAAU,EAAE,CAAC,CAAC;MACdC,MAAM,EAAE,CAAC,CAAC;MACVC,YAAY,EAAE;QACVC,QAAQ,EAAE;UAAEC,IAAI,EAAE,YAAY;UAAEC,QAAQ,EAAE,KAAK;UAAEC,UAAU,EAAE;QAAS;MAC1E;IACJ,CAAC;IAReC,QAAQ,EAAGZ,2BAA2B;IAU/Ca,IAAI,WAAAC,MAAA,EAAS;MAChBC,uCAAA;MAEA,IAAI,CAACC,cAAc,GAAG,IAAIC,cAAc,CAAC;QACrCC,KAAK,EAAE,MAAM;QACbC,MAAM,EAAE,OAAO;QACfC,aAAa,EAAE,IAAI;QACnBC,eAAe,EAAE,IAAI;QACrBC,OAAO,EAAE,kBAAkB;QAC3BC,MAAM,EAAGC,MAAyB,IAAK;UACnC,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,CAAC,UAAU,CAAC;UAC3C,IAAI,CAACC,eAAe,CAACF,GAAG,CAAC;QAC7B;MACJ,CAAC,CAAC;MAEF,IAAI,CAACG,IAAI,GAAG,IAAIC,IAAI,CAAC;QACjBC,KAAK,EAAE,CAAC,IAAI,CAACd,cAAc;MAC/B,CAAC,CAAC;MAEF,IAAI,CAACe,cAAc,CAAC,UAAU,EAAE,IAAI,CAACH,IAAI,CAAC;IAC9C,CAAC;IAEMI,iBAAiB,WAAAC,mBAAA,EAAS;MAC7B,MAAMC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC;MAC7C,IAAI,CAACnB,cAAc,CAACoB,WAAW,CAAC,CAACF,QAAQ,CAAC;MAE1C,MAAMG,UAAU,GAAG,IAAI,CAACF,WAAW,CAAC,OAAO,CAAC;MAC5C,IAAIE,UAAU,KAAKC,SAAS,IAAID,UAAU,KAAK,IAAI,EAAE;QACjD;QACA,IAAI,IAAI,CAACrB,cAAc,CAACuB,QAAQ,CAAC,CAAC,KAAKF,UAAU,EAAE;UAC/C,IAAI,CAACrB,cAAc,CAACwB,QAAQ,CAACH,UAAoB,CAAC;QACtD;MACJ;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACWG,QAAQ,WAAAC,UAAChB,GAAY,EAAQ;MAChC,IAAI,CAACiB,WAAW,CAAC,OAAO,EAAEjB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;MACtC,IAAI,IAAI,CAACT,cAAc,IAAIS,GAAG,KAAKa,SAAS,IAAIb,GAAG,KAAK,IAAI,EAAE;QAC1D,IAAI,IAAI,CAACT,cAAc,CAACuB,QAAQ,CAAC,CAAC,KAAKd,GAAG,EAAE;UACxC,IAAI,CAACT,cAAc,CAACwB,QAAQ,CAACf,GAAa,CAAC;QAC/C;MACJ;MACA,OAAO,IAAI;IACf;EAAC;EAAA,OApEgBvB,eAAe;AAAA","ignoreList":[]}
|
|
@@ -27,6 +27,18 @@ declare module "nz/co/siliconst/ui5/metaui/controls/RichTextControl" {
|
|
|
27
27
|
};
|
|
28
28
|
init(): void;
|
|
29
29
|
onBeforeRendering(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Overrides the default property setter to prevent full DOM invalidation.
|
|
32
|
+
* When dataJson pushes updates down to the UI5 models, UI5 typically destroys
|
|
33
|
+
* and recreates the custom control if the property changes.
|
|
34
|
+
* By suppressing re-rendering (true flag) and manually passing the value
|
|
35
|
+
* to the inner RichTextEditor, we prevent TinyMCE from tearing down its iframe
|
|
36
|
+
* and triggering expensive, redundant plugin boot sequences.
|
|
37
|
+
*
|
|
38
|
+
* @param {unknown} val The new string value to bind
|
|
39
|
+
* @returns {this} The control instance for chaining
|
|
40
|
+
*/
|
|
41
|
+
setValue(val: unknown): this;
|
|
30
42
|
}
|
|
31
43
|
}
|
|
32
44
|
//# sourceMappingURL=RichTextControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextControl.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,qDAAqD,CAAC;IACrE,OAAO,mBAAmB,MAAM,yDAAyD,CAAC;IAE1F,OAAO,aAAa,MAAM,2BAA2B,CAAC;IAItD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,mBAAmB;QAC5D,OAAO,CAAC,IAAI,CAAQ;QACpB,OAAO,CAAC,cAAc,CAAkB;QAExC,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;UAA+B;QAEvD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;UAMtB;QAEK,IAAI,IAAI,IAAI;QAsBZ,iBAAiB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"RichTextControl.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/controls/RichTextControl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,qDAAqD,CAAC;IACrE,OAAO,mBAAmB,MAAM,yDAAyD,CAAC;IAE1F,OAAO,aAAa,MAAM,2BAA2B,CAAC;IAItD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,mBAAmB;QAC5D,OAAO,CAAC,IAAI,CAAQ;QACpB,OAAO,CAAC,cAAc,CAAkB;QAExC,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;UAA+B;QAEvD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;UAMtB;QAEK,IAAI,IAAI,IAAI;QAsBZ,iBAAiB,IAAI,IAAI;QAahC;;;;;;;;;;WAUG;QACI,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;KAStC;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["./BaseHardwareControl","./BaseHardwareControlRenderer","sap/m/VBox","sap/ui/richtexteditor/RichTextEditor"],function(t,e,i,
|
|
1
|
+
sap.ui.define(["./BaseHardwareControl","./BaseHardwareControlRenderer","sap/m/VBox","sap/ui/richtexteditor/RichTextEditor"],function(t,e,i,r){"use strict";function n(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const o=n(t);const s=n(e);const h=o.extend("nz.co.siliconst.ui5.metaui.controls.RichTextControl",{metadata:{properties:{},events:{},aggregations:{_content:{type:"sap.m.VBox",multiple:false,visibility:"hidden"}}},renderer:s,init:function t(){o.prototype.init.call(this);this.richTextEditor=new r({width:"100%",height:"300px",showGroupFont:true,showGroupInsert:true,tooltip:"Rich Text Editor",change:t=>{const e=t.getParameter("newValue");this.setValueAndFire(e)}});this.vBox=new i({items:[this.richTextEditor]});this.setAggregation("_content",this.vBox)},onBeforeRendering:function t(){const e=this.getProperty("readOnly");this.richTextEditor.setEditable(!e);const i=this.getProperty("value");if(i!==undefined&&i!==null){if(this.richTextEditor.getValue()!==i){this.richTextEditor.setValue(i)}}},setValue:function t(e){this.setProperty("value",e,true);if(this.richTextEditor&&e!==undefined&&e!==null){if(this.richTextEditor.getValue()!==e){this.richTextEditor.setValue(e)}}return this}});return h});
|
|
2
2
|
//# sourceMappingURL=RichTextControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","BaseHardwareControlRenderer","__BaseHardwareControlRenderer","RichTextControl","extend","metadata","properties","events","aggregations","_content","type","multiple","visibility","renderer","init","_init","BaseHardwareControl.prototype.init.call","this","richTextEditor","RichTextEditor","width","height","showGroupFont","showGroupInsert","tooltip","change","oEvent","val","getParameter","setValueAndFire","vBox","VBox","items","setAggregation","onBeforeRendering","_onBeforeRendering","readOnly","getProperty","setEditable","currentVal","undefined","getValue","setValue"],"sources":["RichTextControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport BaseHardwareControlRenderer from \"./BaseHardwareControlRenderer\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport VBox from \"sap/m/VBox\";\nimport RichTextEditor from \"sap/ui/richtexteditor/RichTextEditor\";\n\n/**\n * @file RichTextControl.ts\n * @description Native UI5 Control for rich text input.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nexport default class RichTextControl extends BaseHardwareControl {\n private vBox!: VBox;\n private richTextEditor!: RichTextEditor;\n\n static readonly renderer = BaseHardwareControlRenderer;\n\n static readonly metadata = {\n properties: {},\n events: {},\n aggregations: {\n _content: { type: \"sap.m.VBox\", multiple: false, visibility: \"hidden\" }\n }\n };\n\n public init(): void {\n super.init();\n\n this.richTextEditor = new RichTextEditor({\n width: \"100%\",\n height: \"300px\",\n showGroupFont: true,\n showGroupInsert: true,\n tooltip: \"Rich Text Editor\",\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"newValue\");\n this.setValueAndFire(val);\n }\n });\n\n this.vBox = new VBox({\n items: [this.richTextEditor]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n public onBeforeRendering(): void {\n const readOnly = this.getProperty(\"readOnly\");\n this.richTextEditor.setEditable(!readOnly);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal !== undefined && currentVal !== null) {\n // Prevent recursive update if the value matches the editor's current value\n if (this.richTextEditor.getValue() !== currentVal) {\n this.richTextEditor.setValue(currentVal as string);\n }\n }\n }\n}\n"],"mappings":"kPAAOA,EAAmBC,EAAAC,GAAA,MACnBC,EAA2BF,EAAAG,GAKlC,MAMqBC,EAAwBL,EAAmBM,OAAA,uDAM5CC,SAAW,CACvBC,WAAY,CAAC,EACbC,OAAQ,CAAC,EACTC,aAAc,CACVC,SAAU,CAAEC,KAAM,aAAcC,SAAU,MAAOC,WAAY,YANrDC,SAAWZ,EAUpBa,KAAI,SAAAC,IACPC,sBAAAC,MAEAA,KAAKC,eAAiB,IAAIC,EAAe,CACrCC,MAAO,OACPC,OAAQ,QACRC,cAAe,KACfC,gBAAiB,KACjBC,QAAS,mBACTC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,YAChCX,KAAKY,gBAAgBF,MAI7BV,KAAKa,KAAO,IAAIC,EAAK,CACjBC,MAAO,CAACf,KAAKC,kBAGjBD,KAAKgB,eAAe,WAAYhB,KAAKa,KACzC,EAEOI,kBAAiB,SAAAC,IACpB,MAAMC,EAAWnB,KAAKoB,YAAY,YAClCpB,KAAKC,eAAeoB,aAAaF,GAEjC,MAAMG,EAAatB,KAAKoB,YAAY,SACpC,GAAIE,IAAeC,WAAaD,IAAe,KAAM,CAEjD,GAAItB,KAAKC,eAAeuB,aAAeF,EAAY,CAC/CtB,KAAKC,eAAewB,SAASH,EACjC,CACJ,CACJ,
|
|
1
|
+
{"version":3,"file":"RichTextControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","BaseHardwareControlRenderer","__BaseHardwareControlRenderer","RichTextControl","extend","metadata","properties","events","aggregations","_content","type","multiple","visibility","renderer","init","_init","BaseHardwareControl.prototype.init.call","this","richTextEditor","RichTextEditor","width","height","showGroupFont","showGroupInsert","tooltip","change","oEvent","val","getParameter","setValueAndFire","vBox","VBox","items","setAggregation","onBeforeRendering","_onBeforeRendering","readOnly","getProperty","setEditable","currentVal","undefined","getValue","setValue","_setValue","setProperty"],"sources":["RichTextControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport BaseHardwareControlRenderer from \"./BaseHardwareControlRenderer\";\nimport RenderManager from \"sap/ui/core/RenderManager\";\nimport VBox from \"sap/m/VBox\";\nimport RichTextEditor from \"sap/ui/richtexteditor/RichTextEditor\";\n\n/**\n * @file RichTextControl.ts\n * @description Native UI5 Control for rich text input.\n * \n * @namespace nz.co.siliconst.ui5.metaui.controls\n */\nexport default class RichTextControl extends BaseHardwareControl {\n private vBox!: VBox;\n private richTextEditor!: RichTextEditor;\n\n static readonly renderer = BaseHardwareControlRenderer;\n\n static readonly metadata = {\n properties: {},\n events: {},\n aggregations: {\n _content: { type: \"sap.m.VBox\", multiple: false, visibility: \"hidden\" }\n }\n };\n\n public init(): void {\n super.init();\n\n this.richTextEditor = new RichTextEditor({\n width: \"100%\",\n height: \"300px\",\n showGroupFont: true,\n showGroupInsert: true,\n tooltip: \"Rich Text Editor\",\n change: (oEvent: sap.ui.base.Event) => {\n const val = oEvent.getParameter(\"newValue\");\n this.setValueAndFire(val);\n }\n });\n\n this.vBox = new VBox({\n items: [this.richTextEditor]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n public onBeforeRendering(): void {\n const readOnly = this.getProperty(\"readOnly\");\n this.richTextEditor.setEditable(!readOnly);\n\n const currentVal = this.getProperty(\"value\");\n if (currentVal !== undefined && currentVal !== null) {\n // Prevent recursive update if the value matches the editor's current value\n if (this.richTextEditor.getValue() !== currentVal) {\n this.richTextEditor.setValue(currentVal as string);\n }\n }\n }\n\n /**\n * Overrides the default property setter to prevent full DOM invalidation.\n * When dataJson pushes updates down to the UI5 models, UI5 typically destroys \n * and recreates the custom control if the property changes. \n * By suppressing re-rendering (true flag) and manually passing the value \n * to the inner RichTextEditor, we prevent TinyMCE from tearing down its iframe\n * and triggering expensive, redundant plugin boot sequences.\n *\n * @param {unknown} val The new string value to bind\n * @returns {this} The control instance for chaining\n */\n public setValue(val: unknown): this {\n this.setProperty(\"value\", val, true); // suppress re-rendering\n if (this.richTextEditor && val !== undefined && val !== null) {\n if (this.richTextEditor.getValue() !== val) {\n this.richTextEditor.setValue(val as string);\n }\n }\n return this;\n }\n}\n"],"mappings":"kPAAOA,EAAmBC,EAAAC,GAAA,MACnBC,EAA2BF,EAAAG,GAKlC,MAMqBC,EAAwBL,EAAmBM,OAAA,uDAM5CC,SAAW,CACvBC,WAAY,CAAC,EACbC,OAAQ,CAAC,EACTC,aAAc,CACVC,SAAU,CAAEC,KAAM,aAAcC,SAAU,MAAOC,WAAY,YANrDC,SAAWZ,EAUpBa,KAAI,SAAAC,IACPC,sBAAAC,MAEAA,KAAKC,eAAiB,IAAIC,EAAe,CACrCC,MAAO,OACPC,OAAQ,QACRC,cAAe,KACfC,gBAAiB,KACjBC,QAAS,mBACTC,OAASC,IACL,MAAMC,EAAMD,EAAOE,aAAa,YAChCX,KAAKY,gBAAgBF,MAI7BV,KAAKa,KAAO,IAAIC,EAAK,CACjBC,MAAO,CAACf,KAAKC,kBAGjBD,KAAKgB,eAAe,WAAYhB,KAAKa,KACzC,EAEOI,kBAAiB,SAAAC,IACpB,MAAMC,EAAWnB,KAAKoB,YAAY,YAClCpB,KAAKC,eAAeoB,aAAaF,GAEjC,MAAMG,EAAatB,KAAKoB,YAAY,SACpC,GAAIE,IAAeC,WAAaD,IAAe,KAAM,CAEjD,GAAItB,KAAKC,eAAeuB,aAAeF,EAAY,CAC/CtB,KAAKC,eAAewB,SAASH,EACjC,CACJ,CACJ,EAaOG,SAAQ,SAAAC,EAAChB,GACZV,KAAK2B,YAAY,QAASjB,EAAK,MAC/B,GAAIV,KAAKC,gBAAkBS,IAAQa,WAAab,IAAQ,KAAM,CAC1D,GAAIV,KAAKC,eAAeuB,aAAed,EAAK,CACxCV,KAAKC,eAAewB,SAASf,EACjC,CACJ,CACA,OAAOV,IACX,IAAC,OApEgBd,CAAe","ignoreList":[]}
|
|
@@ -58,4 +58,25 @@ export default class RichTextControl extends BaseHardwareControl {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Overrides the default property setter to prevent full DOM invalidation.
|
|
64
|
+
* When dataJson pushes updates down to the UI5 models, UI5 typically destroys
|
|
65
|
+
* and recreates the custom control if the property changes.
|
|
66
|
+
* By suppressing re-rendering (true flag) and manually passing the value
|
|
67
|
+
* to the inner RichTextEditor, we prevent TinyMCE from tearing down its iframe
|
|
68
|
+
* and triggering expensive, redundant plugin boot sequences.
|
|
69
|
+
*
|
|
70
|
+
* @param {unknown} val The new string value to bind
|
|
71
|
+
* @returns {this} The control instance for chaining
|
|
72
|
+
*/
|
|
73
|
+
public setValue(val: unknown): this {
|
|
74
|
+
this.setProperty("value", val, true); // suppress re-rendering
|
|
75
|
+
if (this.richTextEditor && val !== undefined && val !== null) {
|
|
76
|
+
if (this.richTextEditor.getValue() !== val) {
|
|
77
|
+
this.richTextEditor.setValue(val as string);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
61
82
|
}
|
|
@@ -18,6 +18,9 @@ sap.ui.define(["./BaseHardwareControl", "sap/m/Button", "sap/m/VBox", "sap/ui/co
|
|
|
18
18
|
isDrawing = false;
|
|
19
19
|
canvasCtx = null;
|
|
20
20
|
canvasEl = null;
|
|
21
|
+
/**
|
|
22
|
+
* Initializes the control and builds the canvas drawing surface.
|
|
23
|
+
*/
|
|
21
24
|
init() {
|
|
22
25
|
super.init();
|
|
23
26
|
this.canvasHtml = new HTML({
|
|
@@ -33,6 +36,11 @@ sap.ui.define(["./BaseHardwareControl", "sap/m/Button", "sap/m/VBox", "sap/ui/co
|
|
|
33
36
|
items: [this.canvasHtml, this.clearBtn]
|
|
34
37
|
});
|
|
35
38
|
this.setAggregation("_content", this.vBox);
|
|
39
|
+
this.boundStartDrawing = this.startDrawing.bind(this);
|
|
40
|
+
this.boundDraw = this.draw.bind(this);
|
|
41
|
+
this.boundStopDrawing = this.stopDrawing.bind(this);
|
|
42
|
+
this.boundStartDrawingTouch = this.startDrawingTouch.bind(this);
|
|
43
|
+
this.boundDrawTouch = this.drawTouch.bind(this);
|
|
36
44
|
}
|
|
37
45
|
onCanvasRendered() {
|
|
38
46
|
const domRef = this.canvasHtml.getDomRef();
|
|
@@ -46,19 +54,19 @@ sap.ui.define(["./BaseHardwareControl", "sap/m/Button", "sap/m/VBox", "sap/ui/co
|
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
// Mouse events
|
|
49
|
-
this.canvasEl.addEventListener("mousedown", this.
|
|
50
|
-
this.canvasEl.addEventListener("mousemove", this.
|
|
51
|
-
this.canvasEl.addEventListener("mouseup", this.
|
|
52
|
-
this.canvasEl.addEventListener("mouseout", this.
|
|
57
|
+
this.canvasEl.addEventListener("mousedown", this.boundStartDrawing);
|
|
58
|
+
this.canvasEl.addEventListener("mousemove", this.boundDraw);
|
|
59
|
+
this.canvasEl.addEventListener("mouseup", this.boundStopDrawing);
|
|
60
|
+
this.canvasEl.addEventListener("mouseout", this.boundStopDrawing);
|
|
53
61
|
|
|
54
62
|
// Touch events
|
|
55
|
-
this.canvasEl.addEventListener("touchstart", this.
|
|
63
|
+
this.canvasEl.addEventListener("touchstart", this.boundStartDrawingTouch, {
|
|
56
64
|
passive: false
|
|
57
65
|
});
|
|
58
|
-
this.canvasEl.addEventListener("touchmove", this.
|
|
66
|
+
this.canvasEl.addEventListener("touchmove", this.boundDrawTouch, {
|
|
59
67
|
passive: false
|
|
60
68
|
});
|
|
61
|
-
this.canvasEl.addEventListener("touchend", this.
|
|
69
|
+
this.canvasEl.addEventListener("touchend", this.boundStopDrawing);
|
|
62
70
|
|
|
63
71
|
// Restore existing signature if any
|
|
64
72
|
const val = this.getValue();
|
|
@@ -142,6 +150,11 @@ sap.ui.define(["./BaseHardwareControl", "sap/m/Button", "sap/m/VBox", "sap/ui/co
|
|
|
142
150
|
this.setValueAndFire(dataUrl);
|
|
143
151
|
}
|
|
144
152
|
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Sets the value of the control programmatically and re-draws the canvas.
|
|
156
|
+
* @param value The base64 data URL string representing the signature image.
|
|
157
|
+
*/
|
|
145
158
|
setValue(value) {
|
|
146
159
|
super.setValue(value);
|
|
147
160
|
if (value && typeof value === "string" && value.startsWith("data:image")) {
|
|
@@ -151,6 +164,24 @@ sap.ui.define(["./BaseHardwareControl", "sap/m/Button", "sap/m/VBox", "sap/ui/co
|
|
|
151
164
|
}
|
|
152
165
|
return this;
|
|
153
166
|
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Cleans up event listeners to prevent memory leaks when the control is destroyed.
|
|
170
|
+
*/
|
|
171
|
+
exit() {
|
|
172
|
+
if (this.canvasEl) {
|
|
173
|
+
this.canvasEl.removeEventListener("mousedown", this.boundStartDrawing);
|
|
174
|
+
this.canvasEl.removeEventListener("mousemove", this.boundDraw);
|
|
175
|
+
this.canvasEl.removeEventListener("mouseup", this.boundStopDrawing);
|
|
176
|
+
this.canvasEl.removeEventListener("mouseout", this.boundStopDrawing);
|
|
177
|
+
this.canvasEl.removeEventListener("touchstart", this.boundStartDrawingTouch);
|
|
178
|
+
this.canvasEl.removeEventListener("touchmove", this.boundDrawTouch);
|
|
179
|
+
this.canvasEl.removeEventListener("touchend", this.boundStopDrawing);
|
|
180
|
+
}
|
|
181
|
+
this.canvasEl = null;
|
|
182
|
+
this.canvasCtx = null;
|
|
183
|
+
super.exit();
|
|
184
|
+
}
|
|
154
185
|
}
|
|
155
186
|
return SignatureControl;
|
|
156
187
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureControl-dbg.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","SignatureControl","renderer","metadata","properties","events","isDrawing","canvasCtx","canvasEl","init","canvasHtml","HTML","content","afterRendering","onCanvasRendered","bind","addStyleClass","clearBtn","Button","icon","text","press","clearSignature","vBox","VBox","items","setAggregation","domRef","getDomRef","getContext","lineWidth","lineCap","strokeStyle","addEventListener","startDrawing","draw","stopDrawing","startDrawingTouch","passive","drawTouch","val","getValue","startsWith","loadImageOntoCanvas","dataUrl","img","window","Image","onload","clearRect","width","height","drawImage","src","getCoordinates","e","x","y","rect","getBoundingClientRect","clientX","clientY","type","touches","left","top","preventDefault","pos","lineTo","stroke","beginPath","moveTo","saveSignature","setValueAndFire","MessageToast","show","toDataURL","setValue","value"],"sources":["SignatureControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport Button from \"sap/m/Button\";\nimport VBox from \"sap/m/VBox\";\nimport HTML from \"sap/ui/core/HTML\";\nimport MessageToast from \"sap/m/MessageToast\";\n\n/**\n * SignatureControl\n * Provides an HTML5 Canvas for capturing signatures.\n */\nexport default class SignatureControl 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 clearBtn!: Button;\n private canvasHtml!: HTML;\n private isDrawing = false;\n private canvasCtx: CanvasRenderingContext2D | null = null;\n private canvasEl: HTMLCanvasElement | null = null;\n\n public init(): void {\n super.init();\n\n this.canvasHtml = new HTML({\n content: \"<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>\",\n afterRendering: this.onCanvasRendered.bind(this)\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n this.clearBtn = new Button({\n icon: \"sap-icon://sys-cancel\",\n text: \"Clear Signature\",\n press: this.clearSignature.bind(this)\n });\n\n this.vBox = new VBox({\n items: [this.canvasHtml, this.clearBtn]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n private onCanvasRendered(): void {\n const domRef = this.canvasHtml.getDomRef() as HTMLElement;\n if (!domRef) return;\n \n this.canvasEl = domRef as HTMLCanvasElement;\n this.canvasCtx = this.canvasEl.getContext(\"2d\");\n if (this.canvasCtx) {\n this.canvasCtx.lineWidth = 2;\n this.canvasCtx.lineCap = \"round\";\n this.canvasCtx.strokeStyle = \"#000\";\n }\n\n // Mouse events\n this.canvasEl.addEventListener(\"mousedown\", this.startDrawing.bind(this));\n this.canvasEl.addEventListener(\"mousemove\", this.draw.bind(this));\n this.canvasEl.addEventListener(\"mouseup\", this.stopDrawing.bind(this));\n this.canvasEl.addEventListener(\"mouseout\", this.stopDrawing.bind(this));\n \n // Touch events\n this.canvasEl.addEventListener(\"touchstart\", this.startDrawingTouch.bind(this), { passive: false });\n this.canvasEl.addEventListener(\"touchmove\", this.drawTouch.bind(this), { passive: false });\n this.canvasEl.addEventListener(\"touchend\", this.stopDrawing.bind(this));\n\n // Restore existing signature if any\n const val = this.getValue();\n if (val && typeof val === \"string\" && val.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(val);\n }\n }\n\n private loadImageOntoCanvas(dataUrl: string): void {\n const img = new window.Image();\n img.onload = () => {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n this.canvasCtx.drawImage(img, 0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n };\n img.src = dataUrl;\n }\n\n private getCoordinates(e: MouseEvent | TouchEvent): { x: number, y: number } {\n if (!this.canvasEl) return { x: 0, y: 0 };\n const rect = this.canvasEl.getBoundingClientRect();\n \n let clientX, clientY;\n if (e.type.startsWith(\"touch\")) {\n clientX = (e as TouchEvent).touches[0].clientX;\n clientY = (e as TouchEvent).touches[0].clientY;\n } else {\n clientX = (e as MouseEvent).clientX;\n clientY = (e as MouseEvent).clientY;\n }\n \n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n }\n\n private startDrawing(e: MouseEvent): void {\n this.isDrawing = true;\n this.draw(e);\n }\n\n private startDrawingTouch(e: TouchEvent): void {\n e.preventDefault(); // Prevent scrolling\n this.isDrawing = true;\n this.drawTouch(e);\n }\n\n private draw(e: MouseEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private drawTouch(e: TouchEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n e.preventDefault(); // Prevent scrolling\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private stopDrawing(): void {\n if (!this.isDrawing) return;\n this.isDrawing = false;\n if (this.canvasCtx) {\n this.canvasCtx.beginPath(); // Reset path\n this.saveSignature();\n }\n }\n\n private clearSignature(): void {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n this.setValueAndFire(null);\n MessageToast.show(\"Signature cleared.\");\n }\n\n private saveSignature(): void {\n if (this.canvasEl) {\n const dataUrl = this.canvasEl.toDataURL(\"image/png\");\n this.setValueAndFire(dataUrl);\n }\n }\n\n public setValue(value: any): this {\n super.setValue(value);\n if (value && typeof value === \"string\" && value.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(value);\n } else if (!value && this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n return this;\n }\n}\n"],"mappings":";;;;;;QAAOA,mBAAmB,GAAAC,sBAAA,CAAAC,qBAAA;EAM1B;AACA;AACA;AACA;EACe,MAAMC,gBAAgB,SAASH,mBAAmB,CAAC;IAC9D,OAAgBI,QAAQ,GAAG,iEAAiE;IAC5F,OAAgBC,QAAQ,GAAG;MACvBC,UAAU,EAAE,CAAC,CAAC;MACdC,MAAM,EAAE,CAAC;IACb,CAAC;IAKOC,SAAS,GAAG,KAAK;IACjBC,SAAS,GAAoC,IAAI;IACjDC,QAAQ,GAA6B,IAAI;IAE1CC,IAAIA,CAAA,EAAS;MAChB,KAAK,CAACA,IAAI,CAAC,CAAC;MAEZ,IAAI,CAACC,UAAU,GAAG,IAAIC,IAAI,CAAC;QACvBC,OAAO,EAAE,2IAA2I;QACpJC,cAAc,EAAE,IAAI,CAACC,gBAAgB,CAACC,IAAI,CAAC,IAAI;MACnD,CAAC,CAAC,CAACC,aAAa,CAAC,wBAAwB,CAAC;MAE1C,IAAI,CAACC,QAAQ,GAAG,IAAIC,MAAM,CAAC;QACvBC,IAAI,EAAE,uBAAuB;QAC7BC,IAAI,EAAE,iBAAiB;QACvBC,KAAK,EAAE,IAAI,CAACC,cAAc,CAACP,IAAI,CAAC,IAAI;MACxC,CAAC,CAAC;MAEF,IAAI,CAACQ,IAAI,GAAG,IAAIC,IAAI,CAAC;QACjBC,KAAK,EAAE,CAAC,IAAI,CAACf,UAAU,EAAE,IAAI,CAACO,QAAQ;MAC1C,CAAC,CAAC;MAEF,IAAI,CAACS,cAAc,CAAC,UAAU,EAAE,IAAI,CAACH,IAAI,CAAC;IAC9C;IAEQT,gBAAgBA,CAAA,EAAS;MAC7B,MAAMa,MAAM,GAAG,IAAI,CAACjB,UAAU,CAACkB,SAAS,CAAC,CAAgB;MACzD,IAAI,CAACD,MAAM,EAAE;MAEb,IAAI,CAACnB,QAAQ,GAAGmB,MAA2B;MAC3C,IAAI,CAACpB,SAAS,GAAG,IAAI,CAACC,QAAQ,CAACqB,UAAU,CAAC,IAAI,CAAC;MAC/C,IAAI,IAAI,CAACtB,SAAS,EAAE;QAChB,IAAI,CAACA,SAAS,CAACuB,SAAS,GAAG,CAAC;QAC5B,IAAI,CAACvB,SAAS,CAACwB,OAAO,GAAG,OAAO;QAChC,IAAI,CAACxB,SAAS,CAACyB,WAAW,GAAG,MAAM;MACvC;;MAEA;MACA,IAAI,CAACxB,QAAQ,CAACyB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,CAACnB,IAAI,CAAC,IAAI,CAAC,CAAC;MACzE,IAAI,CAACP,QAAQ,CAACyB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACE,IAAI,CAACpB,IAAI,CAAC,IAAI,CAAC,CAAC;MACjE,IAAI,CAACP,QAAQ,CAACyB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACG,WAAW,CAACrB,IAAI,CAAC,IAAI,CAAC,CAAC;MACtE,IAAI,CAACP,QAAQ,CAACyB,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACG,WAAW,CAACrB,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvE;MACA,IAAI,CAACP,QAAQ,CAACyB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACI,iBAAiB,CAACtB,IAAI,CAAC,IAAI,CAAC,EAAE;QAAEuB,OAAO,EAAE;MAAM,CAAC,CAAC;MACnG,IAAI,CAAC9B,QAAQ,CAACyB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACM,SAAS,CAACxB,IAAI,CAAC,IAAI,CAAC,EAAE;QAAEuB,OAAO,EAAE;MAAM,CAAC,CAAC;MAC1F,IAAI,CAAC9B,QAAQ,CAACyB,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACG,WAAW,CAACrB,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvE;MACA,MAAMyB,GAAG,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;MAC3B,IAAID,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACE,UAAU,CAAC,YAAY,CAAC,EAAE;QAChE,IAAI,CAACC,mBAAmB,CAACH,GAAG,CAAC;MACjC;IACJ;IAEQG,mBAAmBA,CAACC,OAAe,EAAQ;MAC/C,MAAMC,GAAG,GAAG,IAAIC,MAAM,CAACC,KAAK,CAAC,CAAC;MAC9BF,GAAG,CAACG,MAAM,GAAG,MAAM;QACf,IAAI,IAAI,CAACzC,SAAS,IAAI,IAAI,CAACC,QAAQ,EAAE;UACjC,IAAI,CAACD,SAAS,CAAC0C,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACzC,QAAQ,CAAC0C,KAAK,EAAE,IAAI,CAAC1C,QAAQ,CAAC2C,MAAM,CAAC;UACzE,IAAI,CAAC5C,SAAS,CAAC6C,SAAS,CAACP,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAACrC,QAAQ,CAAC0C,KAAK,EAAE,IAAI,CAAC1C,QAAQ,CAAC2C,MAAM,CAAC;QAClF;MACJ,CAAC;MACDN,GAAG,CAACQ,GAAG,GAAGT,OAAO;IACrB;IAEQU,cAAcA,CAACC,CAA0B,EAA4B;MACzE,IAAI,CAAC,IAAI,CAAC/C,QAAQ,EAAE,OAAO;QAAEgD,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;MACzC,MAAMC,IAAI,GAAG,IAAI,CAAClD,QAAQ,CAACmD,qBAAqB,CAAC,CAAC;MAElD,IAAIC,OAAO,EAAEC,OAAO;MACpB,IAAIN,CAAC,CAACO,IAAI,CAACpB,UAAU,CAAC,OAAO,CAAC,EAAE;QAC5BkB,OAAO,GAAIL,CAAC,CAAgBQ,OAAO,CAAC,CAAC,CAAC,CAACH,OAAO;QAC9CC,OAAO,GAAIN,CAAC,CAAgBQ,OAAO,CAAC,CAAC,CAAC,CAACF,OAAO;MAClD,CAAC,MAAM;QACHD,OAAO,GAAIL,CAAC,CAAgBK,OAAO;QACnCC,OAAO,GAAIN,CAAC,CAAgBM,OAAO;MACvC;MAEA,OAAO;QACHL,CAAC,EAAEI,OAAO,GAAGF,IAAI,CAACM,IAAI;QACtBP,CAAC,EAAEI,OAAO,GAAGH,IAAI,CAACO;MACtB,CAAC;IACL;IAEQ/B,YAAYA,CAACqB,CAAa,EAAQ;MACtC,IAAI,CAACjD,SAAS,GAAG,IAAI;MACrB,IAAI,CAAC6B,IAAI,CAACoB,CAAC,CAAC;IAChB;IAEQlB,iBAAiBA,CAACkB,CAAa,EAAQ;MAC3CA,CAAC,CAACW,cAAc,CAAC,CAAC,CAAC,CAAC;MACpB,IAAI,CAAC5D,SAAS,GAAG,IAAI;MACrB,IAAI,CAACiC,SAAS,CAACgB,CAAC,CAAC;IACrB;IAEQpB,IAAIA,CAACoB,CAAa,EAAQ;MAC9B,IAAI,CAAC,IAAI,CAACjD,SAAS,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE;MACxC,MAAM4D,GAAG,GAAG,IAAI,CAACb,cAAc,CAACC,CAAC,CAAC;MAClC,IAAI,CAAChD,SAAS,CAAC6D,MAAM,CAACD,GAAG,CAACX,CAAC,EAAEW,GAAG,CAACV,CAAC,CAAC;MACnC,IAAI,CAAClD,SAAS,CAAC8D,MAAM,CAAC,CAAC;MACvB,IAAI,CAAC9D,SAAS,CAAC+D,SAAS,CAAC,CAAC;MAC1B,IAAI,CAAC/D,SAAS,CAACgE,MAAM,CAACJ,GAAG,CAACX,CAAC,EAAEW,GAAG,CAACV,CAAC,CAAC;IACvC;IAEQlB,SAASA,CAACgB,CAAa,EAAQ;MACnC,IAAI,CAAC,IAAI,CAACjD,SAAS,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE;MACxCgD,CAAC,CAACW,cAAc,CAAC,CAAC,CAAC,CAAC;MACpB,MAAMC,GAAG,GAAG,IAAI,CAACb,cAAc,CAACC,CAAC,CAAC;MAClC,IAAI,CAAChD,SAAS,CAAC6D,MAAM,CAACD,GAAG,CAACX,CAAC,EAAEW,GAAG,CAACV,CAAC,CAAC;MACnC,IAAI,CAAClD,SAAS,CAAC8D,MAAM,CAAC,CAAC;MACvB,IAAI,CAAC9D,SAAS,CAAC+D,SAAS,CAAC,CAAC;MAC1B,IAAI,CAAC/D,SAAS,CAACgE,MAAM,CAACJ,GAAG,CAACX,CAAC,EAAEW,GAAG,CAACV,CAAC,CAAC;IACvC;IAEQrB,WAAWA,CAAA,EAAS;MACxB,IAAI,CAAC,IAAI,CAAC9B,SAAS,EAAE;MACrB,IAAI,CAACA,SAAS,GAAG,KAAK;MACtB,IAAI,IAAI,CAACC,SAAS,EAAE;QAChB,IAAI,CAACA,SAAS,CAAC+D,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAACE,aAAa,CAAC,CAAC;MACxB;IACJ;IAEQlD,cAAcA,CAAA,EAAS;MAC3B,IAAI,IAAI,CAACf,SAAS,IAAI,IAAI,CAACC,QAAQ,EAAE;QACjC,IAAI,CAACD,SAAS,CAAC0C,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACzC,QAAQ,CAAC0C,KAAK,EAAE,IAAI,CAAC1C,QAAQ,CAAC2C,MAAM,CAAC;MAC7E;MACA,IAAI,CAACsB,eAAe,CAAC,IAAI,CAAC;MAC1BC,YAAY,CAACC,IAAI,CAAC,oBAAoB,CAAC;IAC3C;IAEQH,aAAaA,CAAA,EAAS;MAC1B,IAAI,IAAI,CAAChE,QAAQ,EAAE;QACf,MAAMoC,OAAO,GAAG,IAAI,CAACpC,QAAQ,CAACoE,SAAS,CAAC,WAAW,CAAC;QACpD,IAAI,CAACH,eAAe,CAAC7B,OAAO,CAAC;MACjC;IACJ;IAEOiC,QAAQA,CAACC,KAAU,EAAQ;MAC9B,KAAK,CAACD,QAAQ,CAACC,KAAK,CAAC;MACrB,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACpC,UAAU,CAAC,YAAY,CAAC,EAAE;QACtE,IAAI,CAACC,mBAAmB,CAACmC,KAAK,CAAC;MACnC,CAAC,MAAM,IAAI,CAACA,KAAK,IAAI,IAAI,CAACvE,SAAS,IAAI,IAAI,CAACC,QAAQ,EAAE;QAClD,IAAI,CAACD,SAAS,CAAC0C,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACzC,QAAQ,CAAC0C,KAAK,EAAE,IAAI,CAAC1C,QAAQ,CAAC2C,MAAM,CAAC;MAC7E;MACA,OAAO,IAAI;IACf;EACJ;EAAC,OAAAlD,gBAAA;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SignatureControl-dbg.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","SignatureControl","renderer","metadata","properties","events","isDrawing","canvasCtx","canvasEl","init","canvasHtml","HTML","content","afterRendering","onCanvasRendered","bind","addStyleClass","clearBtn","Button","icon","text","press","clearSignature","vBox","VBox","items","setAggregation","boundStartDrawing","startDrawing","boundDraw","draw","boundStopDrawing","stopDrawing","boundStartDrawingTouch","startDrawingTouch","boundDrawTouch","drawTouch","domRef","getDomRef","getContext","lineWidth","lineCap","strokeStyle","addEventListener","passive","val","getValue","startsWith","loadImageOntoCanvas","dataUrl","img","window","Image","onload","clearRect","width","height","drawImage","src","getCoordinates","e","x","y","rect","getBoundingClientRect","clientX","clientY","type","touches","left","top","preventDefault","pos","lineTo","stroke","beginPath","moveTo","saveSignature","setValueAndFire","MessageToast","show","toDataURL","setValue","value","exit","removeEventListener"],"sources":["SignatureControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport Button from \"sap/m/Button\";\nimport VBox from \"sap/m/VBox\";\nimport HTML from \"sap/ui/core/HTML\";\nimport MessageToast from \"sap/m/MessageToast\";\n\n/**\n * SignatureControl\n * Provides an HTML5 Canvas for capturing signatures.\n */\nexport default class SignatureControl 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 clearBtn!: Button;\n private canvasHtml!: HTML;\n private isDrawing = false;\n private canvasCtx: CanvasRenderingContext2D | null = null;\n private canvasEl: HTMLCanvasElement | null = null;\n\n private boundStartDrawing!: (e: MouseEvent) => void;\n private boundDraw!: (e: MouseEvent) => void;\n private boundStopDrawing!: (e: MouseEvent | TouchEvent) => void;\n private boundStartDrawingTouch!: (e: TouchEvent) => void;\n private boundDrawTouch!: (e: TouchEvent) => void;\n\n /**\n * Initializes the control and builds the canvas drawing surface.\n */\n public init(): void {\n super.init();\n\n this.canvasHtml = new HTML({\n content: \"<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>\",\n afterRendering: this.onCanvasRendered.bind(this)\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n this.clearBtn = new Button({\n icon: \"sap-icon://sys-cancel\",\n text: \"Clear Signature\",\n press: this.clearSignature.bind(this)\n });\n\n this.vBox = new VBox({\n items: [this.canvasHtml, this.clearBtn]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n\n this.boundStartDrawing = this.startDrawing.bind(this);\n this.boundDraw = this.draw.bind(this);\n this.boundStopDrawing = this.stopDrawing.bind(this);\n this.boundStartDrawingTouch = this.startDrawingTouch.bind(this);\n this.boundDrawTouch = this.drawTouch.bind(this);\n }\n\n private onCanvasRendered(): void {\n const domRef = this.canvasHtml.getDomRef() as HTMLElement;\n if (!domRef) return;\n \n this.canvasEl = domRef as HTMLCanvasElement;\n this.canvasCtx = this.canvasEl.getContext(\"2d\");\n if (this.canvasCtx) {\n this.canvasCtx.lineWidth = 2;\n this.canvasCtx.lineCap = \"round\";\n this.canvasCtx.strokeStyle = \"#000\";\n }\n\n // Mouse events\n this.canvasEl.addEventListener(\"mousedown\", this.boundStartDrawing);\n this.canvasEl.addEventListener(\"mousemove\", this.boundDraw);\n this.canvasEl.addEventListener(\"mouseup\", this.boundStopDrawing);\n this.canvasEl.addEventListener(\"mouseout\", this.boundStopDrawing);\n \n // Touch events\n this.canvasEl.addEventListener(\"touchstart\", this.boundStartDrawingTouch, { passive: false });\n this.canvasEl.addEventListener(\"touchmove\", this.boundDrawTouch, { passive: false });\n this.canvasEl.addEventListener(\"touchend\", this.boundStopDrawing);\n\n // Restore existing signature if any\n const val = this.getValue();\n if (val && typeof val === \"string\" && val.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(val);\n }\n }\n\n private loadImageOntoCanvas(dataUrl: string): void {\n const img = new window.Image();\n img.onload = () => {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n this.canvasCtx.drawImage(img, 0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n };\n img.src = dataUrl;\n }\n\n private getCoordinates(e: MouseEvent | TouchEvent): { x: number, y: number } {\n if (!this.canvasEl) return { x: 0, y: 0 };\n const rect = this.canvasEl.getBoundingClientRect();\n \n let clientX, clientY;\n if (e.type.startsWith(\"touch\")) {\n clientX = (e as TouchEvent).touches[0].clientX;\n clientY = (e as TouchEvent).touches[0].clientY;\n } else {\n clientX = (e as MouseEvent).clientX;\n clientY = (e as MouseEvent).clientY;\n }\n \n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n }\n\n private startDrawing(e: MouseEvent): void {\n this.isDrawing = true;\n this.draw(e);\n }\n\n private startDrawingTouch(e: TouchEvent): void {\n e.preventDefault(); // Prevent scrolling\n this.isDrawing = true;\n this.drawTouch(e);\n }\n\n private draw(e: MouseEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private drawTouch(e: TouchEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n e.preventDefault(); // Prevent scrolling\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private stopDrawing(): void {\n if (!this.isDrawing) return;\n this.isDrawing = false;\n if (this.canvasCtx) {\n this.canvasCtx.beginPath(); // Reset path\n this.saveSignature();\n }\n }\n\n private clearSignature(): void {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n this.setValueAndFire(null);\n MessageToast.show(\"Signature cleared.\");\n }\n\n private saveSignature(): void {\n if (this.canvasEl) {\n const dataUrl = this.canvasEl.toDataURL(\"image/png\");\n this.setValueAndFire(dataUrl);\n }\n }\n\n /**\n * Sets the value of the control programmatically and re-draws the canvas.\n * @param value The base64 data URL string representing the signature image.\n */\n public setValue(value: unknown): this {\n super.setValue(value);\n if (value && typeof value === \"string\" && value.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(value);\n } else if (!value && this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n return this;\n }\n\n /**\n * Cleans up event listeners to prevent memory leaks when the control is destroyed.\n */\n public exit(): void {\n if (this.canvasEl) {\n this.canvasEl.removeEventListener(\"mousedown\", this.boundStartDrawing as EventListener);\n this.canvasEl.removeEventListener(\"mousemove\", this.boundDraw as EventListener);\n this.canvasEl.removeEventListener(\"mouseup\", this.boundStopDrawing as EventListener);\n this.canvasEl.removeEventListener(\"mouseout\", this.boundStopDrawing as EventListener);\n \n this.canvasEl.removeEventListener(\"touchstart\", this.boundStartDrawingTouch as EventListener);\n this.canvasEl.removeEventListener(\"touchmove\", this.boundDrawTouch as EventListener);\n this.canvasEl.removeEventListener(\"touchend\", this.boundStopDrawing as EventListener);\n }\n this.canvasEl = null;\n this.canvasCtx = null;\n super.exit();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,6 +16,14 @@ declare module "nz/co/siliconst/ui5/metaui/controls/SignatureControl" {
|
|
|
16
16
|
private isDrawing;
|
|
17
17
|
private canvasCtx;
|
|
18
18
|
private canvasEl;
|
|
19
|
+
private boundStartDrawing;
|
|
20
|
+
private boundDraw;
|
|
21
|
+
private boundStopDrawing;
|
|
22
|
+
private boundStartDrawingTouch;
|
|
23
|
+
private boundDrawTouch;
|
|
24
|
+
/**
|
|
25
|
+
* Initializes the control and builds the canvas drawing surface.
|
|
26
|
+
*/
|
|
19
27
|
init(): void;
|
|
20
28
|
private onCanvasRendered;
|
|
21
29
|
private loadImageOntoCanvas;
|
|
@@ -27,7 +35,15 @@ declare module "nz/co/siliconst/ui5/metaui/controls/SignatureControl" {
|
|
|
27
35
|
private stopDrawing;
|
|
28
36
|
private clearSignature;
|
|
29
37
|
private saveSignature;
|
|
30
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Sets the value of the control programmatically and re-draws the canvas.
|
|
40
|
+
* @param value The base64 data URL string representing the signature image.
|
|
41
|
+
*/
|
|
42
|
+
setValue(value: unknown): this;
|
|
43
|
+
/**
|
|
44
|
+
* Cleans up event listeners to prevent memory leaks when the control is destroyed.
|
|
45
|
+
*/
|
|
46
|
+
exit(): void;
|
|
31
47
|
}
|
|
32
48
|
}
|
|
33
49
|
//# sourceMappingURL=SignatureControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureControl.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,sDAAsD,CAAC;IACtE,OAAO,mBAAmB,MAAM,yDAAyD,CAAC;IAM1F;;;OAGG;IACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,mBAAmB;QAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,qEAAqE;QAC7F,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;UAGtB;QAEF,OAAO,CAAC,IAAI,CAAQ;QACpB,OAAO,CAAC,QAAQ,CAAU;QAC1B,OAAO,CAAC,UAAU,CAAQ;QAC1B,OAAO,CAAC,SAAS,CAAS;QAC1B,OAAO,CAAC,SAAS,CAAyC;QAC1D,OAAO,CAAC,QAAQ,CAAkC;
|
|
1
|
+
{"version":3,"file":"SignatureControl.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,sDAAsD,CAAC;IACtE,OAAO,mBAAmB,MAAM,yDAAyD,CAAC;IAM1F;;;OAGG;IACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,mBAAmB;QAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,qEAAqE;QAC7F,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;UAGtB;QAEF,OAAO,CAAC,IAAI,CAAQ;QACpB,OAAO,CAAC,QAAQ,CAAU;QAC1B,OAAO,CAAC,UAAU,CAAQ;QAC1B,OAAO,CAAC,SAAS,CAAS;QAC1B,OAAO,CAAC,SAAS,CAAyC;QAC1D,OAAO,CAAC,QAAQ,CAAkC;QAElD,OAAO,CAAC,iBAAiB,CAA2B;QACpD,OAAO,CAAC,SAAS,CAA2B;QAC5C,OAAO,CAAC,gBAAgB,CAAwC;QAChE,OAAO,CAAC,sBAAsB,CAA2B;QACzD,OAAO,CAAC,cAAc,CAA2B;QAEjD;;WAEG;QACI,IAAI,IAAI,IAAI;QA2BnB,OAAO,CAAC,gBAAgB;QA8BxB,OAAO,CAAC,mBAAmB;QAW3B,OAAO,CAAC,cAAc;QAmBtB,OAAO,CAAC,YAAY;QAKpB,OAAO,CAAC,iBAAiB;QAMzB,OAAO,CAAC,IAAI;QASZ,OAAO,CAAC,SAAS;QAUjB,OAAO,CAAC,WAAW;QASnB,OAAO,CAAC,cAAc;QAQtB,OAAO,CAAC,aAAa;QAOrB;;;WAGG;QACI,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;QAUrC;;WAEG;QACI,IAAI,IAAI,IAAI;KAetB;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["./BaseHardwareControl","sap/m/Button","sap/m/VBox","sap/ui/core/HTML","sap/m/MessageToast"],function(t,s,a,i,n){"use strict";function e(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const h=e(t);class r extends h{static renderer="nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";static metadata={properties:{},events:{}};isDrawing=false;canvasCtx=null;canvasEl=null;init(){super.init();this.canvasHtml=new i({content:"<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>",afterRendering:this.onCanvasRendered.bind(this)}).addStyleClass("sapUiSmallMarginBottom");this.clearBtn=new s({icon:"sap-icon://sys-cancel",text:"Clear Signature",press:this.clearSignature.bind(this)});this.vBox=new a({items:[this.canvasHtml,this.clearBtn]});this.setAggregation("_content",this.vBox)}onCanvasRendered(){const t=this.canvasHtml.getDomRef();if(!t)return;this.canvasEl=t;this.canvasCtx=this.canvasEl.getContext("2d");if(this.canvasCtx){this.canvasCtx.lineWidth=2;this.canvasCtx.lineCap="round";this.canvasCtx.strokeStyle="#000"}this.canvasEl.addEventListener("mousedown",this.
|
|
1
|
+
sap.ui.define(["./BaseHardwareControl","sap/m/Button","sap/m/VBox","sap/ui/core/HTML","sap/m/MessageToast"],function(t,s,a,i,n){"use strict";function e(t){return t&&t.__esModule&&typeof t.default!=="undefined"?t.default:t}const h=e(t);class r extends h{static renderer="nz.co.siliconst.ui5.metaui.controls.BaseHardwareControlRenderer";static metadata={properties:{},events:{}};isDrawing=false;canvasCtx=null;canvasEl=null;init(){super.init();this.canvasHtml=new i({content:"<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>",afterRendering:this.onCanvasRendered.bind(this)}).addStyleClass("sapUiSmallMarginBottom");this.clearBtn=new s({icon:"sap-icon://sys-cancel",text:"Clear Signature",press:this.clearSignature.bind(this)});this.vBox=new a({items:[this.canvasHtml,this.clearBtn]});this.setAggregation("_content",this.vBox);this.boundStartDrawing=this.startDrawing.bind(this);this.boundDraw=this.draw.bind(this);this.boundStopDrawing=this.stopDrawing.bind(this);this.boundStartDrawingTouch=this.startDrawingTouch.bind(this);this.boundDrawTouch=this.drawTouch.bind(this)}onCanvasRendered(){const t=this.canvasHtml.getDomRef();if(!t)return;this.canvasEl=t;this.canvasCtx=this.canvasEl.getContext("2d");if(this.canvasCtx){this.canvasCtx.lineWidth=2;this.canvasCtx.lineCap="round";this.canvasCtx.strokeStyle="#000"}this.canvasEl.addEventListener("mousedown",this.boundStartDrawing);this.canvasEl.addEventListener("mousemove",this.boundDraw);this.canvasEl.addEventListener("mouseup",this.boundStopDrawing);this.canvasEl.addEventListener("mouseout",this.boundStopDrawing);this.canvasEl.addEventListener("touchstart",this.boundStartDrawingTouch,{passive:false});this.canvasEl.addEventListener("touchmove",this.boundDrawTouch,{passive:false});this.canvasEl.addEventListener("touchend",this.boundStopDrawing);const s=this.getValue();if(s&&typeof s==="string"&&s.startsWith("data:image")){this.loadImageOntoCanvas(s)}}loadImageOntoCanvas(t){const s=new window.Image;s.onload=()=>{if(this.canvasCtx&&this.canvasEl){this.canvasCtx.clearRect(0,0,this.canvasEl.width,this.canvasEl.height);this.canvasCtx.drawImage(s,0,0,this.canvasEl.width,this.canvasEl.height)}};s.src=t}getCoordinates(t){if(!this.canvasEl)return{x:0,y:0};const s=this.canvasEl.getBoundingClientRect();let a,i;if(t.type.startsWith("touch")){a=t.touches[0].clientX;i=t.touches[0].clientY}else{a=t.clientX;i=t.clientY}return{x:a-s.left,y:i-s.top}}startDrawing(t){this.isDrawing=true;this.draw(t)}startDrawingTouch(t){t.preventDefault();this.isDrawing=true;this.drawTouch(t)}draw(t){if(!this.isDrawing||!this.canvasCtx)return;const s=this.getCoordinates(t);this.canvasCtx.lineTo(s.x,s.y);this.canvasCtx.stroke();this.canvasCtx.beginPath();this.canvasCtx.moveTo(s.x,s.y)}drawTouch(t){if(!this.isDrawing||!this.canvasCtx)return;t.preventDefault();const s=this.getCoordinates(t);this.canvasCtx.lineTo(s.x,s.y);this.canvasCtx.stroke();this.canvasCtx.beginPath();this.canvasCtx.moveTo(s.x,s.y)}stopDrawing(){if(!this.isDrawing)return;this.isDrawing=false;if(this.canvasCtx){this.canvasCtx.beginPath();this.saveSignature()}}clearSignature(){if(this.canvasCtx&&this.canvasEl){this.canvasCtx.clearRect(0,0,this.canvasEl.width,this.canvasEl.height)}this.setValueAndFire(null);n.show("Signature cleared.")}saveSignature(){if(this.canvasEl){const t=this.canvasEl.toDataURL("image/png");this.setValueAndFire(t)}}setValue(t){super.setValue(t);if(t&&typeof t==="string"&&t.startsWith("data:image")){this.loadImageOntoCanvas(t)}else if(!t&&this.canvasCtx&&this.canvasEl){this.canvasCtx.clearRect(0,0,this.canvasEl.width,this.canvasEl.height)}return this}exit(){if(this.canvasEl){this.canvasEl.removeEventListener("mousedown",this.boundStartDrawing);this.canvasEl.removeEventListener("mousemove",this.boundDraw);this.canvasEl.removeEventListener("mouseup",this.boundStopDrawing);this.canvasEl.removeEventListener("mouseout",this.boundStopDrawing);this.canvasEl.removeEventListener("touchstart",this.boundStartDrawingTouch);this.canvasEl.removeEventListener("touchmove",this.boundDrawTouch);this.canvasEl.removeEventListener("touchend",this.boundStopDrawing)}this.canvasEl=null;this.canvasCtx=null;super.exit()}}return r});
|
|
2
2
|
//# sourceMappingURL=SignatureControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","SignatureControl","static","properties","events","isDrawing","canvasCtx","canvasEl","init","super","this","canvasHtml","HTML","content","afterRendering","onCanvasRendered","bind","addStyleClass","clearBtn","Button","icon","text","press","clearSignature","vBox","VBox","items","setAggregation","domRef","getDomRef","getContext","lineWidth","lineCap","strokeStyle","addEventListener","startDrawing","draw","stopDrawing","startDrawingTouch","passive","drawTouch","val","getValue","startsWith","loadImageOntoCanvas","dataUrl","img","window","Image","onload","clearRect","width","height","drawImage","src","getCoordinates","e","x","y","rect","getBoundingClientRect","clientX","clientY","type","touches","left","top","preventDefault","pos","lineTo","stroke","beginPath","moveTo","saveSignature","setValueAndFire","MessageToast","show","toDataURL","setValue","value"],"sources":["SignatureControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport Button from \"sap/m/Button\";\nimport VBox from \"sap/m/VBox\";\nimport HTML from \"sap/ui/core/HTML\";\nimport MessageToast from \"sap/m/MessageToast\";\n\n/**\n * SignatureControl\n * Provides an HTML5 Canvas for capturing signatures.\n */\nexport default class SignatureControl 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 clearBtn!: Button;\n private canvasHtml!: HTML;\n private isDrawing = false;\n private canvasCtx: CanvasRenderingContext2D | null = null;\n private canvasEl: HTMLCanvasElement | null = null;\n\n public init(): void {\n super.init();\n\n this.canvasHtml = new HTML({\n content: \"<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>\",\n afterRendering: this.onCanvasRendered.bind(this)\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n this.clearBtn = new Button({\n icon: \"sap-icon://sys-cancel\",\n text: \"Clear Signature\",\n press: this.clearSignature.bind(this)\n });\n\n this.vBox = new VBox({\n items: [this.canvasHtml, this.clearBtn]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n }\n\n private onCanvasRendered(): void {\n const domRef = this.canvasHtml.getDomRef() as HTMLElement;\n if (!domRef) return;\n \n this.canvasEl = domRef as HTMLCanvasElement;\n this.canvasCtx = this.canvasEl.getContext(\"2d\");\n if (this.canvasCtx) {\n this.canvasCtx.lineWidth = 2;\n this.canvasCtx.lineCap = \"round\";\n this.canvasCtx.strokeStyle = \"#000\";\n }\n\n // Mouse events\n this.canvasEl.addEventListener(\"mousedown\", this.startDrawing.bind(this));\n this.canvasEl.addEventListener(\"mousemove\", this.draw.bind(this));\n this.canvasEl.addEventListener(\"mouseup\", this.stopDrawing.bind(this));\n this.canvasEl.addEventListener(\"mouseout\", this.stopDrawing.bind(this));\n \n // Touch events\n this.canvasEl.addEventListener(\"touchstart\", this.startDrawingTouch.bind(this), { passive: false });\n this.canvasEl.addEventListener(\"touchmove\", this.drawTouch.bind(this), { passive: false });\n this.canvasEl.addEventListener(\"touchend\", this.stopDrawing.bind(this));\n\n // Restore existing signature if any\n const val = this.getValue();\n if (val && typeof val === \"string\" && val.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(val);\n }\n }\n\n private loadImageOntoCanvas(dataUrl: string): void {\n const img = new window.Image();\n img.onload = () => {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n this.canvasCtx.drawImage(img, 0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n };\n img.src = dataUrl;\n }\n\n private getCoordinates(e: MouseEvent | TouchEvent): { x: number, y: number } {\n if (!this.canvasEl) return { x: 0, y: 0 };\n const rect = this.canvasEl.getBoundingClientRect();\n \n let clientX, clientY;\n if (e.type.startsWith(\"touch\")) {\n clientX = (e as TouchEvent).touches[0].clientX;\n clientY = (e as TouchEvent).touches[0].clientY;\n } else {\n clientX = (e as MouseEvent).clientX;\n clientY = (e as MouseEvent).clientY;\n }\n \n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n }\n\n private startDrawing(e: MouseEvent): void {\n this.isDrawing = true;\n this.draw(e);\n }\n\n private startDrawingTouch(e: TouchEvent): void {\n e.preventDefault(); // Prevent scrolling\n this.isDrawing = true;\n this.drawTouch(e);\n }\n\n private draw(e: MouseEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private drawTouch(e: TouchEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n e.preventDefault(); // Prevent scrolling\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private stopDrawing(): void {\n if (!this.isDrawing) return;\n this.isDrawing = false;\n if (this.canvasCtx) {\n this.canvasCtx.beginPath(); // Reset path\n this.saveSignature();\n }\n }\n\n private clearSignature(): void {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n this.setValueAndFire(null);\n MessageToast.show(\"Signature cleared.\");\n }\n\n private saveSignature(): void {\n if (this.canvasEl) {\n const dataUrl = this.canvasEl.toDataURL(\"image/png\");\n this.setValueAndFire(dataUrl);\n }\n }\n\n public setValue(value: any): this {\n super.setValue(value);\n if (value && typeof value === \"string\" && value.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(value);\n } else if (!value && this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n return this;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SignatureControl.js","names":["BaseHardwareControl","_interopRequireDefault","__BaseHardwareControl","SignatureControl","static","properties","events","isDrawing","canvasCtx","canvasEl","init","super","this","canvasHtml","HTML","content","afterRendering","onCanvasRendered","bind","addStyleClass","clearBtn","Button","icon","text","press","clearSignature","vBox","VBox","items","setAggregation","boundStartDrawing","startDrawing","boundDraw","draw","boundStopDrawing","stopDrawing","boundStartDrawingTouch","startDrawingTouch","boundDrawTouch","drawTouch","domRef","getDomRef","getContext","lineWidth","lineCap","strokeStyle","addEventListener","passive","val","getValue","startsWith","loadImageOntoCanvas","dataUrl","img","window","Image","onload","clearRect","width","height","drawImage","src","getCoordinates","e","x","y","rect","getBoundingClientRect","clientX","clientY","type","touches","left","top","preventDefault","pos","lineTo","stroke","beginPath","moveTo","saveSignature","setValueAndFire","MessageToast","show","toDataURL","setValue","value","exit","removeEventListener"],"sources":["SignatureControl.ts"],"sourcesContent":["import BaseHardwareControl from \"./BaseHardwareControl\";\nimport Button from \"sap/m/Button\";\nimport VBox from \"sap/m/VBox\";\nimport HTML from \"sap/ui/core/HTML\";\nimport MessageToast from \"sap/m/MessageToast\";\n\n/**\n * SignatureControl\n * Provides an HTML5 Canvas for capturing signatures.\n */\nexport default class SignatureControl 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 clearBtn!: Button;\n private canvasHtml!: HTML;\n private isDrawing = false;\n private canvasCtx: CanvasRenderingContext2D | null = null;\n private canvasEl: HTMLCanvasElement | null = null;\n\n private boundStartDrawing!: (e: MouseEvent) => void;\n private boundDraw!: (e: MouseEvent) => void;\n private boundStopDrawing!: (e: MouseEvent | TouchEvent) => void;\n private boundStartDrawingTouch!: (e: TouchEvent) => void;\n private boundDrawTouch!: (e: TouchEvent) => void;\n\n /**\n * Initializes the control and builds the canvas drawing surface.\n */\n public init(): void {\n super.init();\n\n this.canvasHtml = new HTML({\n content: \"<canvas width='400' height='200' style='border: 1px solid #ccc; background-color: #fff; touch-action: none; cursor: crosshair;'></canvas>\",\n afterRendering: this.onCanvasRendered.bind(this)\n }).addStyleClass(\"sapUiSmallMarginBottom\");\n\n this.clearBtn = new Button({\n icon: \"sap-icon://sys-cancel\",\n text: \"Clear Signature\",\n press: this.clearSignature.bind(this)\n });\n\n this.vBox = new VBox({\n items: [this.canvasHtml, this.clearBtn]\n });\n\n this.setAggregation(\"_content\", this.vBox);\n\n this.boundStartDrawing = this.startDrawing.bind(this);\n this.boundDraw = this.draw.bind(this);\n this.boundStopDrawing = this.stopDrawing.bind(this);\n this.boundStartDrawingTouch = this.startDrawingTouch.bind(this);\n this.boundDrawTouch = this.drawTouch.bind(this);\n }\n\n private onCanvasRendered(): void {\n const domRef = this.canvasHtml.getDomRef() as HTMLElement;\n if (!domRef) return;\n \n this.canvasEl = domRef as HTMLCanvasElement;\n this.canvasCtx = this.canvasEl.getContext(\"2d\");\n if (this.canvasCtx) {\n this.canvasCtx.lineWidth = 2;\n this.canvasCtx.lineCap = \"round\";\n this.canvasCtx.strokeStyle = \"#000\";\n }\n\n // Mouse events\n this.canvasEl.addEventListener(\"mousedown\", this.boundStartDrawing);\n this.canvasEl.addEventListener(\"mousemove\", this.boundDraw);\n this.canvasEl.addEventListener(\"mouseup\", this.boundStopDrawing);\n this.canvasEl.addEventListener(\"mouseout\", this.boundStopDrawing);\n \n // Touch events\n this.canvasEl.addEventListener(\"touchstart\", this.boundStartDrawingTouch, { passive: false });\n this.canvasEl.addEventListener(\"touchmove\", this.boundDrawTouch, { passive: false });\n this.canvasEl.addEventListener(\"touchend\", this.boundStopDrawing);\n\n // Restore existing signature if any\n const val = this.getValue();\n if (val && typeof val === \"string\" && val.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(val);\n }\n }\n\n private loadImageOntoCanvas(dataUrl: string): void {\n const img = new window.Image();\n img.onload = () => {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n this.canvasCtx.drawImage(img, 0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n };\n img.src = dataUrl;\n }\n\n private getCoordinates(e: MouseEvent | TouchEvent): { x: number, y: number } {\n if (!this.canvasEl) return { x: 0, y: 0 };\n const rect = this.canvasEl.getBoundingClientRect();\n \n let clientX, clientY;\n if (e.type.startsWith(\"touch\")) {\n clientX = (e as TouchEvent).touches[0].clientX;\n clientY = (e as TouchEvent).touches[0].clientY;\n } else {\n clientX = (e as MouseEvent).clientX;\n clientY = (e as MouseEvent).clientY;\n }\n \n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n }\n\n private startDrawing(e: MouseEvent): void {\n this.isDrawing = true;\n this.draw(e);\n }\n\n private startDrawingTouch(e: TouchEvent): void {\n e.preventDefault(); // Prevent scrolling\n this.isDrawing = true;\n this.drawTouch(e);\n }\n\n private draw(e: MouseEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private drawTouch(e: TouchEvent): void {\n if (!this.isDrawing || !this.canvasCtx) return;\n e.preventDefault(); // Prevent scrolling\n const pos = this.getCoordinates(e);\n this.canvasCtx.lineTo(pos.x, pos.y);\n this.canvasCtx.stroke();\n this.canvasCtx.beginPath();\n this.canvasCtx.moveTo(pos.x, pos.y);\n }\n\n private stopDrawing(): void {\n if (!this.isDrawing) return;\n this.isDrawing = false;\n if (this.canvasCtx) {\n this.canvasCtx.beginPath(); // Reset path\n this.saveSignature();\n }\n }\n\n private clearSignature(): void {\n if (this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n this.setValueAndFire(null);\n MessageToast.show(\"Signature cleared.\");\n }\n\n private saveSignature(): void {\n if (this.canvasEl) {\n const dataUrl = this.canvasEl.toDataURL(\"image/png\");\n this.setValueAndFire(dataUrl);\n }\n }\n\n /**\n * Sets the value of the control programmatically and re-draws the canvas.\n * @param value The base64 data URL string representing the signature image.\n */\n public setValue(value: unknown): this {\n super.setValue(value);\n if (value && typeof value === \"string\" && value.startsWith(\"data:image\")) {\n this.loadImageOntoCanvas(value);\n } else if (!value && this.canvasCtx && this.canvasEl) {\n this.canvasCtx.clearRect(0, 0, this.canvasEl.width, this.canvasEl.height);\n }\n return this;\n }\n\n /**\n * Cleans up event listeners to prevent memory leaks when the control is destroyed.\n */\n public exit(): void {\n if (this.canvasEl) {\n this.canvasEl.removeEventListener(\"mousedown\", this.boundStartDrawing as EventListener);\n this.canvasEl.removeEventListener(\"mousemove\", this.boundDraw as EventListener);\n this.canvasEl.removeEventListener(\"mouseup\", this.boundStopDrawing as EventListener);\n this.canvasEl.removeEventListener(\"mouseout\", this.boundStopDrawing as EventListener);\n \n this.canvasEl.removeEventListener(\"touchstart\", this.boundStartDrawingTouch as EventListener);\n this.canvasEl.removeEventListener(\"touchmove\", this.boundDrawTouch as EventListener);\n this.canvasEl.removeEventListener(\"touchend\", this.boundStopDrawing as EventListener);\n }\n this.canvasEl = null;\n this.canvasCtx = null;\n super.exit();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,6 +22,15 @@ export default class SignatureControl extends BaseHardwareControl {
|
|
|
22
22
|
private canvasCtx: CanvasRenderingContext2D | null = null;
|
|
23
23
|
private canvasEl: HTMLCanvasElement | null = null;
|
|
24
24
|
|
|
25
|
+
private boundStartDrawing!: (e: MouseEvent) => void;
|
|
26
|
+
private boundDraw!: (e: MouseEvent) => void;
|
|
27
|
+
private boundStopDrawing!: (e: MouseEvent | TouchEvent) => void;
|
|
28
|
+
private boundStartDrawingTouch!: (e: TouchEvent) => void;
|
|
29
|
+
private boundDrawTouch!: (e: TouchEvent) => void;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Initializes the control and builds the canvas drawing surface.
|
|
33
|
+
*/
|
|
25
34
|
public init(): void {
|
|
26
35
|
super.init();
|
|
27
36
|
|
|
@@ -41,6 +50,12 @@ export default class SignatureControl extends BaseHardwareControl {
|
|
|
41
50
|
});
|
|
42
51
|
|
|
43
52
|
this.setAggregation("_content", this.vBox);
|
|
53
|
+
|
|
54
|
+
this.boundStartDrawing = this.startDrawing.bind(this);
|
|
55
|
+
this.boundDraw = this.draw.bind(this);
|
|
56
|
+
this.boundStopDrawing = this.stopDrawing.bind(this);
|
|
57
|
+
this.boundStartDrawingTouch = this.startDrawingTouch.bind(this);
|
|
58
|
+
this.boundDrawTouch = this.drawTouch.bind(this);
|
|
44
59
|
}
|
|
45
60
|
|
|
46
61
|
private onCanvasRendered(): void {
|
|
@@ -56,15 +71,15 @@ export default class SignatureControl extends BaseHardwareControl {
|
|
|
56
71
|
}
|
|
57
72
|
|
|
58
73
|
// Mouse events
|
|
59
|
-
this.canvasEl.addEventListener("mousedown", this.
|
|
60
|
-
this.canvasEl.addEventListener("mousemove", this.
|
|
61
|
-
this.canvasEl.addEventListener("mouseup", this.
|
|
62
|
-
this.canvasEl.addEventListener("mouseout", this.
|
|
74
|
+
this.canvasEl.addEventListener("mousedown", this.boundStartDrawing);
|
|
75
|
+
this.canvasEl.addEventListener("mousemove", this.boundDraw);
|
|
76
|
+
this.canvasEl.addEventListener("mouseup", this.boundStopDrawing);
|
|
77
|
+
this.canvasEl.addEventListener("mouseout", this.boundStopDrawing);
|
|
63
78
|
|
|
64
79
|
// Touch events
|
|
65
|
-
this.canvasEl.addEventListener("touchstart", this.
|
|
66
|
-
this.canvasEl.addEventListener("touchmove", this.
|
|
67
|
-
this.canvasEl.addEventListener("touchend", this.
|
|
80
|
+
this.canvasEl.addEventListener("touchstart", this.boundStartDrawingTouch, { passive: false });
|
|
81
|
+
this.canvasEl.addEventListener("touchmove", this.boundDrawTouch, { passive: false });
|
|
82
|
+
this.canvasEl.addEventListener("touchend", this.boundStopDrawing);
|
|
68
83
|
|
|
69
84
|
// Restore existing signature if any
|
|
70
85
|
const val = this.getValue();
|
|
@@ -157,7 +172,11 @@ export default class SignatureControl extends BaseHardwareControl {
|
|
|
157
172
|
}
|
|
158
173
|
}
|
|
159
174
|
|
|
160
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Sets the value of the control programmatically and re-draws the canvas.
|
|
177
|
+
* @param value The base64 data URL string representing the signature image.
|
|
178
|
+
*/
|
|
179
|
+
public setValue(value: unknown): this {
|
|
161
180
|
super.setValue(value);
|
|
162
181
|
if (value && typeof value === "string" && value.startsWith("data:image")) {
|
|
163
182
|
this.loadImageOntoCanvas(value);
|
|
@@ -166,4 +185,23 @@ export default class SignatureControl extends BaseHardwareControl {
|
|
|
166
185
|
}
|
|
167
186
|
return this;
|
|
168
187
|
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Cleans up event listeners to prevent memory leaks when the control is destroyed.
|
|
191
|
+
*/
|
|
192
|
+
public exit(): void {
|
|
193
|
+
if (this.canvasEl) {
|
|
194
|
+
this.canvasEl.removeEventListener("mousedown", this.boundStartDrawing as EventListener);
|
|
195
|
+
this.canvasEl.removeEventListener("mousemove", this.boundDraw as EventListener);
|
|
196
|
+
this.canvasEl.removeEventListener("mouseup", this.boundStopDrawing as EventListener);
|
|
197
|
+
this.canvasEl.removeEventListener("mouseout", this.boundStopDrawing as EventListener);
|
|
198
|
+
|
|
199
|
+
this.canvasEl.removeEventListener("touchstart", this.boundStartDrawingTouch as EventListener);
|
|
200
|
+
this.canvasEl.removeEventListener("touchmove", this.boundDrawTouch as EventListener);
|
|
201
|
+
this.canvasEl.removeEventListener("touchend", this.boundStopDrawing as EventListener);
|
|
202
|
+
}
|
|
203
|
+
this.canvasEl = null;
|
|
204
|
+
this.canvasCtx = null;
|
|
205
|
+
super.exit();
|
|
206
|
+
}
|
|
169
207
|
}
|