@siliconst/metaui 1.4.5 → 1.4.7
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/CameraControl-dbg.js +13 -0
- 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 +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/CameraControl.d.ts.map +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 +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/DynamicHost-dbg.js +49 -6
- 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 +49 -5
- 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 +9 -0
- 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 +7 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/SignatureControl.d.ts.map +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 +7 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl-dbg.js +13 -0
- 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 +10 -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.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/VoiceInputControl.ts +10 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/GeneratorHost-dbg.js +46 -10
- 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 +17 -5
- 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 +48 -8
- 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 +4 -0
- 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 +4 -0
- 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 +4 -0
- 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 +4 -0
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate-dbg.js +4 -0
- 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 +4 -0
- 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.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/controls/host/delegates/ValidationDelegate.ts +4 -0
- 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 +25 -12
- package/src/nz/co/siliconst/ui5/metaui/core/Engine-dbg.js +30 -17
- 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 +8 -8
- 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 +39 -32
- 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 +4 -0
- 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 +13 -3
- package/src/nz/co/siliconst/ui5/metaui/core/PluginRegistry-dbg.js +158 -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 +176 -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 +22 -0
- 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 +22 -0
- 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 +5 -0
- 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 +5 -0
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts +3 -3
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.d.ts.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/interfaces/IPlugin.ts +3 -3
- 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 +9 -0
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js +2 -2
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/layouts/TableLayout.ts +2 -2
- 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 +8 -0
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js +2 -32
- package/src/nz/co/siliconst/ui5/metaui/library-dbg.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js +36 -37
- package/src/nz/co/siliconst/ui5/metaui/library-preload.js.map +1 -1
- package/src/nz/co/siliconst/ui5/metaui/library.d.ts +0 -6
- 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 +0 -33
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/ClearFormActionPlugin-dbg.js +2 -2
- 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.js +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 +2 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin-dbg.js +2 -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.js +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 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin-dbg.js +23 -5
- 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 +16 -0
- 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 +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 +21 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BasePlugin-dbg.js +6 -6
- 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 +5 -5
- 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 +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 +6 -6
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin-dbg.js +3 -2
- 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.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 +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin-dbg.js +31 -2
- 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 +25 -0
- 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 +27 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin-dbg.js +4 -2
- 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 +2 -0
- 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 +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- 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 +16 -0
- 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 +16 -0
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin-dbg.js +28 -5
- 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 +20 -0
- 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 +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 +25 -5
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin-dbg.js +21 -2
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin-dbg.js +4 -2
- 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 +2 -0
- 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 +4 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin-dbg.js +21 -2
- 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 +17 -0
- 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 +19 -2
- package/src/nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin-dbg.js +2 -2
- 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.js +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 +2 -2
- 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
|
@@ -18,7 +18,9 @@ import { TextCaseFormatterPlugin } from "../plugins/formatters/TextCaseFormatter
|
|
|
18
18
|
import { Logger } from "../utils/Logger";
|
|
19
19
|
|
|
20
20
|
// --- Built-in Default Validators ---
|
|
21
|
+
/** Internal rule for required fields. */
|
|
21
22
|
class RequiredValidator implements IValidator {
|
|
23
|
+
/** Validates that the value is not null, undefined, or empty string. */
|
|
22
24
|
validate(parsedValue: unknown, args?: unknown): IValidationResult {
|
|
23
25
|
if (parsedValue === null || parsedValue === undefined || parsedValue === "") {
|
|
24
26
|
return { isValid: false, errorMessage: "This field is required." };
|
|
@@ -27,7 +29,9 @@ class RequiredValidator implements IValidator {
|
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
31
|
|
|
32
|
+
/** Internal rule for string maximum length. */
|
|
30
33
|
class MaxLengthValidator implements IValidator {
|
|
34
|
+
/** Validates that a string does not exceed the provided argument length. */
|
|
31
35
|
validate(parsedValue: unknown, args?: unknown): IValidationResult {
|
|
32
36
|
if (typeof parsedValue === "string" && args && typeof args === "number") {
|
|
33
37
|
if (parsedValue.length > args) {
|
|
@@ -87,9 +91,15 @@ export class PipelineManager {
|
|
|
87
91
|
const validator = this.validators.get(rule);
|
|
88
92
|
if (validator) {
|
|
89
93
|
const args = argsMap ? argsMap[rule] : undefined;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
try {
|
|
95
|
+
const result = validator.validate(parsedValue, args);
|
|
96
|
+
if (!result.isValid) {
|
|
97
|
+
return result; // Fast fail on first error
|
|
98
|
+
}
|
|
99
|
+
} catch (error) {
|
|
100
|
+
const msg = (error as Error).message;
|
|
101
|
+
Logger.error(`[MetaUI] PipelineManager: Validator '${rule}' crashed during execution.`, msg);
|
|
102
|
+
return { isValid: false, errorMessage: `System validation error: ${msg}` };
|
|
93
103
|
}
|
|
94
104
|
} else {
|
|
95
105
|
Logger.warn(`[MetaUI] PipelineManager: Requested validator '${rule}' not found in registry.`);
|
|
@@ -1,146 +1,198 @@
|
|
|
1
|
-
sap.ui.define(["
|
|
1
|
+
sap.ui.define(["../utils/Logger"], function (___utils_Logger) {
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @file PluginRegistry.ts
|
|
6
6
|
* @description Centralized hub for mapping UI5 controls to SAP schema data types.
|
|
7
7
|
* Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.
|
|
8
|
+
* NOW WITH UNIVERSAL LAZY LOADING.
|
|
8
9
|
*/
|
|
9
|
-
const Registry = ___Registry["Registry"];
|
|
10
10
|
const Logger = ___utils_Logger["Logger"];
|
|
11
|
-
const StringPlugin = ___plugins_controls_StringPlugin["StringPlugin"];
|
|
12
|
-
const NumberPlugin = ___plugins_controls_NumberPlugin["NumberPlugin"];
|
|
13
|
-
const DatePlugin = ___plugins_controls_DatePlugin["DatePlugin"];
|
|
14
|
-
const TimePlugin = ___plugins_controls_TimePlugin["TimePlugin"];
|
|
15
|
-
const DateTimePlugin = ___plugins_controls_DateTimePlugin["DateTimePlugin"];
|
|
16
|
-
const BooleanPlugin = ___plugins_controls_BooleanPlugin["BooleanPlugin"];
|
|
17
|
-
const SwitchPlugin = ___plugins_controls_SwitchPlugin["SwitchPlugin"];
|
|
18
|
-
const ArrayPlugin = ___plugins_controls_ArrayPlugin["ArrayPlugin"];
|
|
19
|
-
const ObjectPlugin = ___plugins_controls_ObjectPlugin["ObjectPlugin"];
|
|
20
|
-
const DropdownPlugin = ___plugins_controls_DropdownPlugin["DropdownPlugin"];
|
|
21
|
-
const TextAreaPlugin = ___plugins_controls_TextAreaPlugin["TextAreaPlugin"];
|
|
22
|
-
const CodeEditorPlugin = ___plugins_controls_CodeEditorPlugin["CodeEditorPlugin"]; // New Phase 1 Controls
|
|
23
|
-
const FileUploaderPlugin = ___plugins_controls_FileUploaderPlugin["FileUploaderPlugin"];
|
|
24
|
-
const MultiSelectPlugin = ___plugins_controls_MultiSelectPlugin["MultiSelectPlugin"];
|
|
25
|
-
const SliderPlugin = ___plugins_controls_SliderPlugin["SliderPlugin"];
|
|
26
|
-
const RatingIndicatorPlugin = ___plugins_controls_RatingIndicatorPlugin["RatingIndicatorPlugin"];
|
|
27
|
-
const MessageStripPlugin = ___plugins_controls_MessageStripPlugin["MessageStripPlugin"]; // New Phase 5 Hardware / Base64 Plugins
|
|
28
|
-
const CameraPlugin = ___plugins_controls_CameraPlugin["CameraPlugin"];
|
|
29
|
-
const SignaturePlugin = ___plugins_controls_SignaturePlugin["SignaturePlugin"];
|
|
30
|
-
const GeolocationPlugin = ___plugins_controls_GeolocationPlugin["GeolocationPlugin"];
|
|
31
|
-
const BarcodeScannerPlugin = ___plugins_controls_BarcodeScannerPlugin["BarcodeScannerPlugin"];
|
|
32
|
-
const VoiceInputPlugin = ___plugins_controls_VoiceInputPlugin["VoiceInputPlugin"];
|
|
33
|
-
const RichTextPlugin = ___plugins_controls_RichTextPlugin["RichTextPlugin"]; // New Phase 4 Actions & Datasources
|
|
34
|
-
const UrlNavigationActionPlugin = ___plugins_actions_UrlNavigationActionPlugin["UrlNavigationActionPlugin"];
|
|
35
|
-
const SubmitFormActionPlugin = ___plugins_actions_SubmitFormActionPlugin["SubmitFormActionPlugin"];
|
|
36
|
-
const ODataListBindingPlugin = ___plugins_datasources_ODataListBindingPlugin["ODataListBindingPlugin"];
|
|
37
|
-
const RemoteDropdownPlugin = ___plugins_datasources_RemoteDropdownPlugin["RemoteDropdownPlugin"];
|
|
38
|
-
/**
|
|
39
|
-
* Singleton orchestrator responsible for maintaining the registry of all available UI control plugins.
|
|
40
|
-
* Resolves standard JSON schema types to their respective UI5 native controls.
|
|
41
|
-
*
|
|
42
|
-
* @namespace nz.co.siliconst.ui5.metaui.core
|
|
43
|
-
* @public
|
|
44
|
-
*/
|
|
45
11
|
class PluginRegistry {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
12
|
+
fieldIndex = {};
|
|
13
|
+
actionIndex = {};
|
|
14
|
+
layoutIndex = {};
|
|
15
|
+
activePromises = {};
|
|
50
16
|
constructor() {
|
|
51
|
-
//
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
17
|
+
// Core Mappings
|
|
18
|
+
this.registerPluginPath("string", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin");
|
|
19
|
+
this.registerPluginPath("number", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin");
|
|
20
|
+
this.registerPluginPath("integer", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin");
|
|
21
|
+
this.registerPluginPath("date", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin");
|
|
22
|
+
this.registerPluginPath("boolean", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin");
|
|
23
|
+
this.registerPluginPath("array", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin");
|
|
24
|
+
this.registerPluginPath("object", undefined, "nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin");
|
|
59
25
|
|
|
60
26
|
// Widget Overrides
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
66
|
-
this.
|
|
27
|
+
this.registerPluginPath("string", "time", "nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin");
|
|
28
|
+
this.registerPluginPath("string", "datetime", "nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin");
|
|
29
|
+
this.registerPluginPath("boolean", "switch", "nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin");
|
|
30
|
+
this.registerPluginPath("string", "select", "nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin");
|
|
31
|
+
this.registerPluginPath("string", "textArea", "nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin");
|
|
32
|
+
this.registerPluginPath("string", "codeEditor", "nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin");
|
|
67
33
|
|
|
68
34
|
// Phase 1 Mappings
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
71
|
-
this.
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
35
|
+
this.registerPluginPath("string", "fileUploader", "nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin");
|
|
36
|
+
this.registerPluginPath("array", "multiSelect", "nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin");
|
|
37
|
+
this.registerPluginPath("number", "slider", "nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin");
|
|
38
|
+
this.registerPluginPath("number", "rating", "nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin");
|
|
39
|
+
this.registerPluginPath("string", "messageStrip", "nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin");
|
|
74
40
|
|
|
75
41
|
// Phase 5 Mappings (Hardware)
|
|
76
|
-
this.
|
|
77
|
-
this.
|
|
78
|
-
this.
|
|
79
|
-
this.
|
|
80
|
-
this.
|
|
81
|
-
this.
|
|
42
|
+
this.registerPluginPath("string", "camera", "nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin");
|
|
43
|
+
this.registerPluginPath("string", "signature", "nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin");
|
|
44
|
+
this.registerPluginPath("object", "location", "nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin");
|
|
45
|
+
this.registerPluginPath("string", "scanner", "nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin");
|
|
46
|
+
this.registerPluginPath("string", "voiceInput", "nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin");
|
|
47
|
+
this.registerPluginPath("string", "richText", "nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin");
|
|
82
48
|
|
|
83
|
-
//
|
|
84
|
-
this.
|
|
85
|
-
this.
|
|
86
|
-
this.
|
|
87
|
-
this.
|
|
88
|
-
|
|
49
|
+
// Actions & Datasources
|
|
50
|
+
this.registerPluginPath("string", "urlButton", "nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin");
|
|
51
|
+
this.registerPluginPath("string", "submitButton", "nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin");
|
|
52
|
+
this.registerPluginPath("string", "odataSelect", "nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin");
|
|
53
|
+
this.registerPluginPath("string", "remoteDropdown", "nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin");
|
|
54
|
+
this.registerPluginPath("string", "liveSearch", "nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin");
|
|
55
|
+
this.registerPluginPath("string", "remoteValueHelp", "nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin");
|
|
89
56
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
57
|
+
// Layouts
|
|
58
|
+
this.registerLayoutPath("form", "nz/co/siliconst/ui5/metaui/layouts/FormLayout");
|
|
59
|
+
this.registerLayoutPath("table", "nz/co/siliconst/ui5/metaui/layouts/TableLayout");
|
|
60
|
+
this.registerLayoutPath("wizard", "nz/co/siliconst/ui5/metaui/layouts/WizardLayout");
|
|
61
|
+
this.registerLayoutPath("compact", "nz/co/siliconst/ui5/metaui/layouts/CompactLayout");
|
|
62
|
+
}
|
|
94
63
|
static getInstance() {
|
|
95
64
|
if (!PluginRegistry.instance) {
|
|
96
65
|
PluginRegistry.instance = new PluginRegistry();
|
|
97
66
|
}
|
|
98
67
|
return PluginRegistry.instance;
|
|
99
68
|
}
|
|
69
|
+
registerPluginPath(type, widgetName, path) {
|
|
70
|
+
const key = widgetName ? `${type}:${widgetName}` : type;
|
|
71
|
+
this.fieldIndex[key] = path;
|
|
72
|
+
}
|
|
73
|
+
registerActionPath(actionName, path) {
|
|
74
|
+
this.actionIndex[actionName] = path;
|
|
75
|
+
}
|
|
76
|
+
registerLayoutPath(strategy, path) {
|
|
77
|
+
this.layoutIndex[strategy] = path;
|
|
78
|
+
}
|
|
79
|
+
getFieldPath(type, widgetName) {
|
|
80
|
+
let path;
|
|
81
|
+
if (widgetName) {
|
|
82
|
+
path = this.fieldIndex[`${type}:${widgetName}`];
|
|
83
|
+
}
|
|
84
|
+
if (!path) {
|
|
85
|
+
path = this.fieldIndex[type];
|
|
86
|
+
}
|
|
87
|
+
if (!path) {
|
|
88
|
+
throw new Error(`No plugin path mapped for FieldType: ${type} (widget: ${widgetName})`);
|
|
89
|
+
}
|
|
90
|
+
return path;
|
|
91
|
+
}
|
|
92
|
+
getLayoutPath(strategy) {
|
|
93
|
+
const path = this.layoutIndex[strategy];
|
|
94
|
+
if (!path) {
|
|
95
|
+
throw new Error(`No layout path mapped for strategy: ${strategy}`);
|
|
96
|
+
}
|
|
97
|
+
return path;
|
|
98
|
+
}
|
|
100
99
|
|
|
101
100
|
/**
|
|
102
|
-
*
|
|
101
|
+
* Statically traverses the schema structure to identify all required plugins
|
|
102
|
+
* and layouts without actually instantiating them.
|
|
103
103
|
*
|
|
104
|
-
* @param
|
|
105
|
-
* @
|
|
106
|
-
* @param widgetName Optional UI hint to override the default type handler (e.g., 'textArea' for a 'string').
|
|
104
|
+
* @param {ISchema} schema The root JSON schema payload to traverse
|
|
105
|
+
* @returns {Set<string>} A distinct set of UI5 module paths required to render the schema
|
|
107
106
|
*/
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
107
|
+
getPathsToLoad(schema) {
|
|
108
|
+
const pathsToLoad = new Set();
|
|
109
|
+
|
|
110
|
+
// 1. Gather layout strategy
|
|
111
|
+
const strategy = schema.layoutStrategy || (schema.type === "array" ? "table" : "form");
|
|
112
|
+
pathsToLoad.add(this.getLayoutPath(strategy));
|
|
113
|
+
|
|
114
|
+
// 2. Recursively gather field plugins
|
|
115
|
+
const scanProperties = props => {
|
|
116
|
+
for (const key in props) {
|
|
117
|
+
const prop = props[key];
|
|
118
|
+
try {
|
|
119
|
+
pathsToLoad.add(this.getFieldPath(prop.type || "string", prop.ui?.widget));
|
|
120
|
+
} catch (e) {
|
|
121
|
+
Logger.warn(`[MetaUI LazyLoad] Could not find mapped plugin for field ${key}`);
|
|
122
|
+
}
|
|
123
|
+
if (prop.properties) scanProperties(prop.properties);
|
|
124
|
+
if (prop.items && prop.items.properties) scanProperties(prop.items.properties);
|
|
125
|
+
if (prop.items && prop.items.type) {
|
|
126
|
+
try {
|
|
127
|
+
pathsToLoad.add(this.getFieldPath(prop.items.type, prop.items.ui?.widget));
|
|
128
|
+
} catch (e) {}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
if (schema.properties) {
|
|
133
|
+
scanProperties(schema.properties);
|
|
134
|
+
} else if (schema.items && schema.items.properties) {
|
|
135
|
+
scanProperties(schema.items.properties);
|
|
136
|
+
}
|
|
137
|
+
return pathsToLoad;
|
|
111
138
|
}
|
|
112
139
|
|
|
113
140
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
141
|
+
* Defers the generation of the UI until all required UI5 modules have been
|
|
142
|
+
* downloaded asynchronously. Maintains a cache of active promises to prevent
|
|
143
|
+
* redundant network requests for the same module.
|
|
116
144
|
*
|
|
117
|
-
* @param
|
|
118
|
-
* @
|
|
119
|
-
* @returns {IPlugin} A new instance of the resolved plugin.
|
|
120
|
-
* @throws {Error} If no handler is registered for the specified type.
|
|
145
|
+
* @param {ISchema} schema The root JSON schema payload to parse
|
|
146
|
+
* @returns {Promise<void>} Resolves when all dependencies are securely in the UI5 require cache
|
|
121
147
|
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
148
|
+
async preloadDependencies(schema) {
|
|
149
|
+
const pathsToLoad = this.getPathsToLoad(schema);
|
|
150
|
+
|
|
151
|
+
// 3. Batch execute sap.ui.require via Promises
|
|
152
|
+
const promises = Array.from(pathsToLoad).map(path => {
|
|
153
|
+
if (!this.activePromises[path]) {
|
|
154
|
+
this.activePromises[path] = new Promise((resolve, reject) => {
|
|
155
|
+
sap.ui.require([path], Module => resolve(Module), err => {
|
|
156
|
+
Logger.error(`Failed to lazy load module: ${path}`);
|
|
157
|
+
reject(err);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return this.activePromises[path];
|
|
162
|
+
});
|
|
163
|
+
await Promise.all(promises);
|
|
164
|
+
}
|
|
165
|
+
extractConstructor(Module) {
|
|
166
|
+
if (!Module) return null;
|
|
167
|
+
if (typeof Module === "function") return Module;
|
|
168
|
+
if (Module.default && typeof Module.default === "function") return Module.default;
|
|
169
|
+
|
|
170
|
+
// Handle namespace exports (e.g. { FormLayout: class... })
|
|
171
|
+
const keys = Object.keys(Module);
|
|
172
|
+
for (const key of keys) {
|
|
173
|
+
if (typeof Module[key] === "function") {
|
|
174
|
+
return Module[key];
|
|
175
|
+
}
|
|
129
176
|
}
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
getPlugin(type, widgetName) {
|
|
180
|
+
const path = this.getFieldPath(type, widgetName);
|
|
181
|
+
const Module = sap.ui.require(path);
|
|
182
|
+
const PluginClass = this.extractConstructor(Module);
|
|
130
183
|
if (!PluginClass) {
|
|
131
|
-
|
|
132
|
-
Logger.error("[MetaUI PluginRegistry]", msg);
|
|
133
|
-
Logger.showErrorPopup(`Plugin Registry Error.\n\nDetails: ${msg}`);
|
|
134
|
-
throw new Error(`[MetaUI] ${msg}`);
|
|
184
|
+
throw new Error(`[MetaUI Plugin Instantiation] Plugin ${path} was not preloaded or has no constructor!`);
|
|
135
185
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
186
|
+
return new PluginClass();
|
|
187
|
+
}
|
|
188
|
+
getLayout(strategy) {
|
|
189
|
+
const path = this.getLayoutPath(strategy);
|
|
190
|
+
const Module = sap.ui.require(path);
|
|
191
|
+
const LayoutClass = this.extractConstructor(Module);
|
|
192
|
+
if (!LayoutClass) {
|
|
193
|
+
throw new Error(`[MetaUI Layout Instantiation] Layout ${path} was not preloaded or has no constructor!`);
|
|
143
194
|
}
|
|
195
|
+
return new LayoutClass();
|
|
144
196
|
}
|
|
145
197
|
}
|
|
146
198
|
var __exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginRegistry-dbg.js","names":["Registry","___Registry","Logger","___utils_Logger","StringPlugin","___plugins_controls_StringPlugin","NumberPlugin","___plugins_controls_NumberPlugin","DatePlugin","___plugins_controls_DatePlugin","TimePlugin","___plugins_controls_TimePlugin","DateTimePlugin","___plugins_controls_DateTimePlugin","BooleanPlugin","___plugins_controls_BooleanPlugin","SwitchPlugin","___plugins_controls_SwitchPlugin","ArrayPlugin","___plugins_controls_ArrayPlugin","ObjectPlugin","___plugins_controls_ObjectPlugin","DropdownPlugin","___plugins_controls_DropdownPlugin","TextAreaPlugin","___plugins_controls_TextAreaPlugin","CodeEditorPlugin","___plugins_controls_CodeEditorPlugin","FileUploaderPlugin","___plugins_controls_FileUploaderPlugin","MultiSelectPlugin","___plugins_controls_MultiSelectPlugin","SliderPlugin","___plugins_controls_SliderPlugin","RatingIndicatorPlugin","___plugins_controls_RatingIndicatorPlugin","MessageStripPlugin","___plugins_controls_MessageStripPlugin","CameraPlugin","___plugins_controls_CameraPlugin","SignaturePlugin","___plugins_controls_SignaturePlugin","GeolocationPlugin","___plugins_controls_GeolocationPlugin","BarcodeScannerPlugin","___plugins_controls_BarcodeScannerPlugin","VoiceInputPlugin","___plugins_controls_VoiceInputPlugin","RichTextPlugin","___plugins_controls_RichTextPlugin","UrlNavigationActionPlugin","___plugins_actions_UrlNavigationActionPlugin","SubmitFormActionPlugin","___plugins_actions_SubmitFormActionPlugin","ODataListBindingPlugin","___plugins_datasources_ODataListBindingPlugin","RemoteDropdownPlugin","___plugins_datasources_RemoteDropdownPlugin","PluginRegistry","registry","constructor","register","getInstance","instance","type","pluginConstructor","widgetName","key","getPlugin","PluginClass","get","msg","error","showErrorPopup","Error","message","__exports","__esModule"],"sources":["PluginRegistry.ts"],"sourcesContent":["/**\n * @file PluginRegistry.ts\n * @description Centralized hub for mapping UI5 controls to SAP schema data types.\n * Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.\n */\n\nimport { IPlugin } from \"../interfaces/IPlugin\";\nimport { FieldType } from \"../interfaces/ISchema\";\n\nimport { Registry } from \"./Registry\";\nimport { Logger } from \"../utils/Logger\";\n\nimport { StringPlugin } from \"../plugins/controls/StringPlugin\";\nimport { NumberPlugin } from \"../plugins/controls/NumberPlugin\";\nimport { DatePlugin } from \"../plugins/controls/DatePlugin\";\nimport { TimePlugin } from \"../plugins/controls/TimePlugin\";\nimport { DateTimePlugin } from \"../plugins/controls/DateTimePlugin\";\nimport { BooleanPlugin } from \"../plugins/controls/BooleanPlugin\";\nimport { SwitchPlugin } from \"../plugins/controls/SwitchPlugin\";\nimport { ArrayPlugin } from \"../plugins/controls/ArrayPlugin\";\nimport { ObjectPlugin } from \"../plugins/controls/ObjectPlugin\";\nimport { DropdownPlugin } from \"../plugins/controls/DropdownPlugin\";\nimport { TextAreaPlugin } from \"../plugins/controls/TextAreaPlugin\";\nimport { CodeEditorPlugin } from \"../plugins/controls/CodeEditorPlugin\";\n\n// New Phase 1 Controls\nimport { FileUploaderPlugin } from \"../plugins/controls/FileUploaderPlugin\";\nimport { MultiSelectPlugin } from \"../plugins/controls/MultiSelectPlugin\";\nimport { SliderPlugin } from \"../plugins/controls/SliderPlugin\";\nimport { RatingIndicatorPlugin } from \"../plugins/controls/RatingIndicatorPlugin\";\nimport { MessageStripPlugin } from \"../plugins/controls/MessageStripPlugin\";\n\n// New Phase 5 Hardware / Base64 Plugins\nimport { CameraPlugin } from \"../plugins/controls/CameraPlugin\";\nimport { SignaturePlugin } from \"../plugins/controls/SignaturePlugin\";\nimport { GeolocationPlugin } from \"../plugins/controls/GeolocationPlugin\";\nimport { BarcodeScannerPlugin } from \"../plugins/controls/BarcodeScannerPlugin\";\nimport { VoiceInputPlugin } from \"../plugins/controls/VoiceInputPlugin\";\nimport { RichTextPlugin } from \"../plugins/controls/RichTextPlugin\";\n\n// New Phase 4 Actions & Datasources\nimport { UrlNavigationActionPlugin } from \"../plugins/actions/UrlNavigationActionPlugin\";\nimport { SubmitFormActionPlugin } from \"../plugins/actions/SubmitFormActionPlugin\";\nimport { ODataListBindingPlugin } from \"../plugins/datasources/ODataListBindingPlugin\";\nimport { RemoteDropdownPlugin } from \"../plugins/datasources/RemoteDropdownPlugin\";\n\n/**\n * Singleton orchestrator responsible for maintaining the registry of all available UI control plugins.\n * Resolves standard JSON schema types to their respective UI5 native controls.\n * \n * @namespace nz.co.siliconst.ui5.metaui.core\n * @public\n */\nexport class PluginRegistry {\n /** The single instance of the PluginRegistry. */\n private static instance: PluginRegistry;\n \n /** Internal strongly typed registry holding plugin constructors. */\n private readonly registry: Registry<new () => IPlugin> = new Registry<new () => IPlugin>(\"Controls\");\n\n private constructor() {\n // Built-in Default Mappings\n this.register(\"string\", StringPlugin);\n this.register(\"number\", NumberPlugin);\n this.register(\"integer\", NumberPlugin);\n this.register(\"date\", DatePlugin);\n this.register(\"boolean\", BooleanPlugin);\n this.register(\"array\", ArrayPlugin);\n this.register(\"object\", ObjectPlugin);\n\n // Widget Overrides\n this.register(\"string\", TimePlugin, \"time\");\n this.register(\"string\", DateTimePlugin, \"datetime\");\n this.register(\"boolean\", SwitchPlugin, \"switch\");\n this.register(\"string\", DropdownPlugin, \"select\");\n this.register(\"string\", TextAreaPlugin, \"textArea\");\n this.register(\"string\", CodeEditorPlugin, \"codeEditor\");\n \n // Phase 1 Mappings\n this.register(\"string\", FileUploaderPlugin, \"fileUploader\");\n this.register(\"array\", MultiSelectPlugin, \"multiSelect\");\n this.register(\"number\", SliderPlugin, \"slider\");\n this.register(\"number\", RatingIndicatorPlugin, \"rating\");\n this.register(\"string\", MessageStripPlugin, \"messageStrip\");\n\n // Phase 5 Mappings (Hardware)\n this.register(\"string\", CameraPlugin, \"camera\");\n this.register(\"string\", SignaturePlugin, \"signature\");\n this.register(\"object\", GeolocationPlugin, \"location\");\n this.register(\"string\", BarcodeScannerPlugin, \"scanner\");\n this.register(\"string\", VoiceInputPlugin, \"voiceInput\");\n this.register(\"string\", RichTextPlugin, \"richText\");\n\n // Phase 4 Mappings\n this.register(\"string\", UrlNavigationActionPlugin, \"urlButton\");\n this.register(\"string\", SubmitFormActionPlugin, \"submitButton\");\n this.register(\"string\", ODataListBindingPlugin, \"odataSelect\");\n this.register(\"string\", RemoteDropdownPlugin, \"remoteDropdown\");\n }\n\n /**\n * Retrieves the singular instance of the PluginRegistry.\n * @returns {PluginRegistry} The active instance.\n */\n public static getInstance(): PluginRegistry {\n if (!PluginRegistry.instance) {\n PluginRegistry.instance = new PluginRegistry();\n }\n return PluginRegistry.instance;\n }\n\n /**\n * Registers a new control plugin to be utilized by the Layout Managers.\n * \n * @param type The JSON Schema primitive type (e.g., 'string', 'number').\n * @param pluginConstructor The class constructor for the plugin implementation.\n * @param widgetName Optional UI hint to override the default type handler (e.g., 'textArea' for a 'string').\n */\n public register(type: FieldType, pluginConstructor: new () => IPlugin, widgetName?: string): void {\n const key = widgetName ? `${type}:${widgetName}` : type;\n this.registry.register(key, pluginConstructor);\n }\n\n /**\n * Resolves and instantiates the correct control plugin based on the field type and widget hint.\n * Falls back to the primitive type handler if the specific widget is not registered.\n * \n * @param type The JSON Schema primitive type.\n * @param widgetName The specific UI widget hint (if provided in schema.ui.widget).\n * @returns {IPlugin} A new instance of the resolved plugin.\n * @throws {Error} If no handler is registered for the specified type.\n */\n public getPlugin(type: FieldType, widgetName?: string): IPlugin {\n let PluginClass;\n \n if (widgetName) {\n PluginClass = this.registry.get(`${type}:${widgetName}`);\n }\n \n if (!PluginClass) {\n PluginClass = this.registry.get(type);\n }\n\n if (!PluginClass) {\n const msg = `No control plugin registered for FieldType: ${type}${widgetName ? ` (widget: ${widgetName})` : ''}`;\n Logger.error(\"[MetaUI PluginRegistry]\", msg);\n Logger.showErrorPopup(`Plugin Registry Error.\\n\\nDetails: ${msg}`);\n throw new Error(`[MetaUI] ${msg}`);\n }\n \n try {\n return new PluginClass();\n } catch (error) {\n const msg = (error as Error).message;\n Logger.error(`[MetaUI PluginRegistry] Failed to instantiate plugin for ${type}`, msg);\n Logger.showErrorPopup(`Failed to instantiate plugin for '${type}'.\\n\\nDetails: ${msg}`);\n throw new Error(`[MetaUI Plugin Instantiation] ${msg}`);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PluginRegistry-dbg.js","names":["Logger","___utils_Logger","PluginRegistry","fieldIndex","actionIndex","layoutIndex","activePromises","constructor","registerPluginPath","undefined","registerLayoutPath","getInstance","instance","type","widgetName","path","key","registerActionPath","actionName","strategy","getFieldPath","Error","getLayoutPath","getPathsToLoad","schema","pathsToLoad","Set","layoutStrategy","add","scanProperties","props","prop","ui","widget","e","warn","properties","items","preloadDependencies","promises","Array","from","map","Promise","resolve","reject","sap","require","Module","err","error","all","extractConstructor","default","keys","Object","getPlugin","PluginClass","getLayout","LayoutClass","__exports","__esModule"],"sources":["PluginRegistry.ts"],"sourcesContent":["/**\n * @file PluginRegistry.ts\n * @description Centralized hub for mapping UI5 controls to SAP schema data types.\n * Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.\n * NOW WITH UNIVERSAL LAZY LOADING.\n */\n\nimport { IPlugin } from \"../interfaces/IPlugin\";\nimport { FieldType, ISchema, IPropertyMetadata } from \"../interfaces/ISchema\";\nimport { ILayoutManager } from \"../interfaces/ILayoutManager\";\nimport { Logger } from \"../utils/Logger\";\nimport { DefaultLayoutGenerator } from \"./DefaultLayoutGenerator\";\n\nexport class PluginRegistry {\n private static instance: PluginRegistry;\n \n private fieldIndex: Record<string, string> = {};\n private actionIndex: Record<string, string> = {};\n private layoutIndex: Record<string, string> = {};\n \n private activePromises: Record<string, Promise<any>> = {};\n\n private constructor() {\n // Core Mappings\n this.registerPluginPath(\"string\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin\");\n this.registerPluginPath(\"number\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin\");\n this.registerPluginPath(\"integer\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin\");\n this.registerPluginPath(\"date\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin\");\n this.registerPluginPath(\"boolean\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin\");\n this.registerPluginPath(\"array\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin\");\n this.registerPluginPath(\"object\", undefined, \"nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin\");\n\n // Widget Overrides\n this.registerPluginPath(\"string\", \"time\", \"nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin\");\n this.registerPluginPath(\"string\", \"datetime\", \"nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin\");\n this.registerPluginPath(\"boolean\", \"switch\", \"nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin\");\n this.registerPluginPath(\"string\", \"select\", \"nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin\");\n this.registerPluginPath(\"string\", \"textArea\", \"nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin\");\n this.registerPluginPath(\"string\", \"codeEditor\", \"nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin\");\n \n // Phase 1 Mappings\n this.registerPluginPath(\"string\", \"fileUploader\", \"nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin\");\n this.registerPluginPath(\"array\", \"multiSelect\", \"nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin\");\n this.registerPluginPath(\"number\", \"slider\", \"nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin\");\n this.registerPluginPath(\"number\", \"rating\", \"nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin\");\n this.registerPluginPath(\"string\", \"messageStrip\", \"nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin\");\n\n // Phase 5 Mappings (Hardware)\n this.registerPluginPath(\"string\", \"camera\", \"nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin\");\n this.registerPluginPath(\"string\", \"signature\", \"nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin\");\n this.registerPluginPath(\"object\", \"location\", \"nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin\");\n this.registerPluginPath(\"string\", \"scanner\", \"nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin\");\n this.registerPluginPath(\"string\", \"voiceInput\", \"nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin\");\n this.registerPluginPath(\"string\", \"richText\", \"nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin\");\n\n // Actions & Datasources\n this.registerPluginPath(\"string\", \"urlButton\", \"nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin\");\n this.registerPluginPath(\"string\", \"submitButton\", \"nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin\");\n this.registerPluginPath(\"string\", \"odataSelect\", \"nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin\");\n this.registerPluginPath(\"string\", \"remoteDropdown\", \"nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin\");\n this.registerPluginPath(\"string\", \"liveSearch\", \"nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin\");\n this.registerPluginPath(\"string\", \"remoteValueHelp\", \"nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin\");\n\n // Layouts\n this.registerLayoutPath(\"form\", \"nz/co/siliconst/ui5/metaui/layouts/FormLayout\");\n this.registerLayoutPath(\"table\", \"nz/co/siliconst/ui5/metaui/layouts/TableLayout\");\n this.registerLayoutPath(\"wizard\", \"nz/co/siliconst/ui5/metaui/layouts/WizardLayout\");\n this.registerLayoutPath(\"compact\", \"nz/co/siliconst/ui5/metaui/layouts/CompactLayout\");\n }\n\n public static getInstance(): PluginRegistry {\n if (!PluginRegistry.instance) {\n PluginRegistry.instance = new PluginRegistry();\n }\n return PluginRegistry.instance;\n }\n\n public registerPluginPath(type: FieldType, widgetName: string | undefined, path: string): void {\n const key = widgetName ? `${type}:${widgetName}` : type;\n this.fieldIndex[key] = path;\n }\n\n public registerActionPath(actionName: string, path: string): void {\n this.actionIndex[actionName] = path;\n }\n\n public registerLayoutPath(strategy: string, path: string): void {\n this.layoutIndex[strategy] = path;\n }\n\n private getFieldPath(type: FieldType, widgetName?: string): string {\n let path;\n if (widgetName) {\n path = this.fieldIndex[`${type}:${widgetName}`];\n }\n if (!path) {\n path = this.fieldIndex[type];\n }\n if (!path) {\n throw new Error(`No plugin path mapped for FieldType: ${type} (widget: ${widgetName})`);\n }\n return path;\n }\n\n private getLayoutPath(strategy: string): string {\n const path = this.layoutIndex[strategy];\n if (!path) {\n throw new Error(`No layout path mapped for strategy: ${strategy}`);\n }\n return path;\n }\n\n /**\n * Statically traverses the schema structure to identify all required plugins\n * and layouts without actually instantiating them.\n * \n * @param {ISchema} schema The root JSON schema payload to traverse\n * @returns {Set<string>} A distinct set of UI5 module paths required to render the schema\n */\n public getPathsToLoad(schema: ISchema): Set<string> {\n const pathsToLoad = new Set<string>();\n \n // 1. Gather layout strategy\n const strategy = schema.layoutStrategy || (schema.type === \"array\" ? \"table\" : \"form\");\n pathsToLoad.add(this.getLayoutPath(strategy));\n\n // 2. Recursively gather field plugins\n const scanProperties = (props: Record<string, IPropertyMetadata>) => {\n for (const key in props) {\n const prop = props[key];\n try {\n pathsToLoad.add(this.getFieldPath(prop.type || \"string\", prop.ui?.widget));\n } catch (e) {\n Logger.warn(`[MetaUI LazyLoad] Could not find mapped plugin for field ${key}`);\n }\n if (prop.properties) scanProperties(prop.properties);\n if (prop.items && prop.items.properties) scanProperties(prop.items.properties);\n if (prop.items && prop.items.type) {\n try {\n pathsToLoad.add(this.getFieldPath(prop.items.type, prop.items.ui?.widget));\n } catch (e) {}\n }\n }\n };\n\n if (schema.properties) {\n scanProperties(schema.properties);\n } else if (schema.items && schema.items.properties) {\n scanProperties(schema.items.properties);\n }\n\n return pathsToLoad;\n }\n\n /**\n * Defers the generation of the UI until all required UI5 modules have been\n * downloaded asynchronously. Maintains a cache of active promises to prevent\n * redundant network requests for the same module.\n * \n * @param {ISchema} schema The root JSON schema payload to parse\n * @returns {Promise<void>} Resolves when all dependencies are securely in the UI5 require cache\n */\n public async preloadDependencies(schema: ISchema): Promise<void> {\n const pathsToLoad = this.getPathsToLoad(schema);\n\n // 3. Batch execute sap.ui.require via Promises\n const promises = Array.from(pathsToLoad).map(path => {\n if (!this.activePromises[path]) {\n this.activePromises[path] = new Promise((resolve, reject) => {\n sap.ui.require([path], \n (Module: any) => resolve(Module), \n (err: any) => {\n Logger.error(`Failed to lazy load module: ${path}`);\n reject(err);\n }\n );\n });\n }\n return this.activePromises[path];\n });\n\n await Promise.all(promises);\n }\n\n private extractConstructor(Module: any): any {\n if (!Module) return null;\n if (typeof Module === \"function\") return Module;\n if (Module.default && typeof Module.default === \"function\") return Module.default;\n \n // Handle namespace exports (e.g. { FormLayout: class... })\n const keys = Object.keys(Module);\n for (const key of keys) {\n if (typeof Module[key] === \"function\") {\n return Module[key];\n }\n }\n return null;\n }\n\n public getPlugin(type: FieldType, widgetName?: string): IPlugin {\n const path = this.getFieldPath(type, widgetName);\n const Module = sap.ui.require(path);\n const PluginClass = this.extractConstructor(Module);\n \n if (!PluginClass) {\n throw new Error(`[MetaUI Plugin Instantiation] Plugin ${path} was not preloaded or has no constructor!`);\n }\n \n return new PluginClass();\n }\n\n public getLayout(strategy: string): ILayoutManager {\n const path = this.getLayoutPath(strategy);\n const Module = sap.ui.require(path);\n const LayoutClass = this.extractConstructor(Module);\n \n if (!LayoutClass) {\n throw new Error(`[MetaUI Layout Instantiation] Layout ${path} was not preloaded or has no constructor!`);\n }\n \n return new LayoutClass();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,45 +3,44 @@ declare module "nz/co/siliconst/ui5/metaui/core/PluginRegistry" {
|
|
|
3
3
|
* @file PluginRegistry.ts
|
|
4
4
|
* @description Centralized hub for mapping UI5 controls to SAP schema data types.
|
|
5
5
|
* Enforces the Registry Pattern to decouple the core engine from specific UI5 control implementations.
|
|
6
|
+
* NOW WITH UNIVERSAL LAZY LOADING.
|
|
6
7
|
*/
|
|
7
8
|
import { IPlugin } from "nz/co/siliconst/ui5/metaui/interfaces/IPlugin";
|
|
8
|
-
import { FieldType } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
9
|
-
|
|
10
|
-
* Singleton orchestrator responsible for maintaining the registry of all available UI control plugins.
|
|
11
|
-
* Resolves standard JSON schema types to their respective UI5 native controls.
|
|
12
|
-
*
|
|
13
|
-
* @namespace nz.co.siliconst.ui5.metaui.core
|
|
14
|
-
* @public
|
|
15
|
-
*/
|
|
9
|
+
import { FieldType, ISchema } from "nz/co/siliconst/ui5/metaui/interfaces/ISchema";
|
|
10
|
+
import { ILayoutManager } from "nz/co/siliconst/ui5/metaui/interfaces/ILayoutManager";
|
|
16
11
|
export class PluginRegistry {
|
|
17
|
-
/** The single instance of the PluginRegistry. */
|
|
18
12
|
private static instance;
|
|
19
|
-
|
|
20
|
-
private
|
|
13
|
+
private fieldIndex;
|
|
14
|
+
private actionIndex;
|
|
15
|
+
private layoutIndex;
|
|
16
|
+
private activePromises;
|
|
21
17
|
private constructor();
|
|
22
|
-
/**
|
|
23
|
-
* Retrieves the singular instance of the PluginRegistry.
|
|
24
|
-
* @returns {PluginRegistry} The active instance.
|
|
25
|
-
*/
|
|
26
18
|
static getInstance(): PluginRegistry;
|
|
19
|
+
registerPluginPath(type: FieldType, widgetName: string | undefined, path: string): void;
|
|
20
|
+
registerActionPath(actionName: string, path: string): void;
|
|
21
|
+
registerLayoutPath(strategy: string, path: string): void;
|
|
22
|
+
private getFieldPath;
|
|
23
|
+
private getLayoutPath;
|
|
27
24
|
/**
|
|
28
|
-
*
|
|
25
|
+
* Statically traverses the schema structure to identify all required plugins
|
|
26
|
+
* and layouts without actually instantiating them.
|
|
29
27
|
*
|
|
30
|
-
* @param
|
|
31
|
-
* @
|
|
32
|
-
* @param widgetName Optional UI hint to override the default type handler (e.g., 'textArea' for a 'string').
|
|
28
|
+
* @param {ISchema} schema The root JSON schema payload to traverse
|
|
29
|
+
* @returns {Set<string>} A distinct set of UI5 module paths required to render the schema
|
|
33
30
|
*/
|
|
34
|
-
|
|
31
|
+
getPathsToLoad(schema: ISchema): Set<string>;
|
|
35
32
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
33
|
+
* Defers the generation of the UI until all required UI5 modules have been
|
|
34
|
+
* downloaded asynchronously. Maintains a cache of active promises to prevent
|
|
35
|
+
* redundant network requests for the same module.
|
|
38
36
|
*
|
|
39
|
-
* @param
|
|
40
|
-
* @
|
|
41
|
-
* @returns {IPlugin} A new instance of the resolved plugin.
|
|
42
|
-
* @throws {Error} If no handler is registered for the specified type.
|
|
37
|
+
* @param {ISchema} schema The root JSON schema payload to parse
|
|
38
|
+
* @returns {Promise<void>} Resolves when all dependencies are securely in the UI5 require cache
|
|
43
39
|
*/
|
|
40
|
+
preloadDependencies(schema: ISchema): Promise<void>;
|
|
41
|
+
private extractConstructor;
|
|
44
42
|
getPlugin(type: FieldType, widgetName?: string): IPlugin;
|
|
43
|
+
getLayout(strategy: string): ILayoutManager;
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
//# sourceMappingURL=PluginRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;IAChE
|
|
1
|
+
{"version":3,"file":"PluginRegistry.d.ts","sourceRoot":"../../../../../../../..","sources":["src/nz/co/siliconst/ui5/metaui/core/PluginRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,gDAAgD,CAAC;IAChE;;;;;OAKG;IAEH,OAAO,EAAE,OAAO,EAAE,MAAM,+CAA+C,CAAC;IACxE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAqB,MAAM,+CAA+C,CAAC;IACtG,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;IAItF,MAAa,cAAc;QACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;QAExC,OAAO,CAAC,UAAU,CAA8B;QAChD,OAAO,CAAC,WAAW,CAA8B;QACjD,OAAO,CAAC,WAAW,CAA8B;QAEjD,OAAO,CAAC,cAAc,CAAoC;QAE1D,OAAO;eAgDO,WAAW,IAAI,cAAc;QAOpC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;QAKvF,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;QAI1D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;QAI/D,OAAO,CAAC,YAAY;QAcpB,OAAO,CAAC,aAAa;QAQrB;;;;;;WAMG;QACI,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QAmCnD;;;;;;;WAOG;QACU,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAsBhE,OAAO,CAAC,kBAAkB;QAenB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;QAYxD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;KAWrD;CAEA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
sap.ui.define(["
|
|
1
|
+
sap.ui.define(["../utils/Logger"],function(i){"use strict";const t=i["Logger"];class e{fieldIndex={};actionIndex={};layoutIndex={};activePromises={};constructor(){this.registerPluginPath("string",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/StringPlugin");this.registerPluginPath("number",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin");this.registerPluginPath("integer",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/NumberPlugin");this.registerPluginPath("date",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/DatePlugin");this.registerPluginPath("boolean",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/BooleanPlugin");this.registerPluginPath("array",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/ArrayPlugin");this.registerPluginPath("object",undefined,"nz/co/siliconst/ui5/metaui/plugins/controls/ObjectPlugin");this.registerPluginPath("string","time","nz/co/siliconst/ui5/metaui/plugins/controls/TimePlugin");this.registerPluginPath("string","datetime","nz/co/siliconst/ui5/metaui/plugins/controls/DateTimePlugin");this.registerPluginPath("boolean","switch","nz/co/siliconst/ui5/metaui/plugins/controls/SwitchPlugin");this.registerPluginPath("string","select","nz/co/siliconst/ui5/metaui/plugins/controls/DropdownPlugin");this.registerPluginPath("string","textArea","nz/co/siliconst/ui5/metaui/plugins/controls/TextAreaPlugin");this.registerPluginPath("string","codeEditor","nz/co/siliconst/ui5/metaui/plugins/controls/CodeEditorPlugin");this.registerPluginPath("string","fileUploader","nz/co/siliconst/ui5/metaui/plugins/controls/FileUploaderPlugin");this.registerPluginPath("array","multiSelect","nz/co/siliconst/ui5/metaui/plugins/controls/MultiSelectPlugin");this.registerPluginPath("number","slider","nz/co/siliconst/ui5/metaui/plugins/controls/SliderPlugin");this.registerPluginPath("number","rating","nz/co/siliconst/ui5/metaui/plugins/controls/RatingIndicatorPlugin");this.registerPluginPath("string","messageStrip","nz/co/siliconst/ui5/metaui/plugins/controls/MessageStripPlugin");this.registerPluginPath("string","camera","nz/co/siliconst/ui5/metaui/plugins/controls/CameraPlugin");this.registerPluginPath("string","signature","nz/co/siliconst/ui5/metaui/plugins/controls/SignaturePlugin");this.registerPluginPath("object","location","nz/co/siliconst/ui5/metaui/plugins/controls/GeolocationPlugin");this.registerPluginPath("string","scanner","nz/co/siliconst/ui5/metaui/plugins/controls/BarcodeScannerPlugin");this.registerPluginPath("string","voiceInput","nz/co/siliconst/ui5/metaui/plugins/controls/VoiceInputPlugin");this.registerPluginPath("string","richText","nz/co/siliconst/ui5/metaui/plugins/controls/RichTextPlugin");this.registerPluginPath("string","urlButton","nz/co/siliconst/ui5/metaui/plugins/actions/UrlNavigationActionPlugin");this.registerPluginPath("string","submitButton","nz/co/siliconst/ui5/metaui/plugins/actions/SubmitFormActionPlugin");this.registerPluginPath("string","odataSelect","nz/co/siliconst/ui5/metaui/plugins/datasources/ODataListBindingPlugin");this.registerPluginPath("string","remoteDropdown","nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteDropdownPlugin");this.registerPluginPath("string","liveSearch","nz/co/siliconst/ui5/metaui/plugins/datasources/LiveSearchPlugin");this.registerPluginPath("string","remoteValueHelp","nz/co/siliconst/ui5/metaui/plugins/datasources/RemoteValueHelpPlugin");this.registerLayoutPath("form","nz/co/siliconst/ui5/metaui/layouts/FormLayout");this.registerLayoutPath("table","nz/co/siliconst/ui5/metaui/layouts/TableLayout");this.registerLayoutPath("wizard","nz/co/siliconst/ui5/metaui/layouts/WizardLayout");this.registerLayoutPath("compact","nz/co/siliconst/ui5/metaui/layouts/CompactLayout")}static getInstance(){if(!e.instance){e.instance=new e}return e.instance}registerPluginPath(i,t,e){const n=t?`${i}:${t}`:i;this.fieldIndex[n]=e}registerActionPath(i,t){this.actionIndex[i]=t}registerLayoutPath(i,t){this.layoutIndex[i]=t}getFieldPath(i,t){let e;if(t){e=this.fieldIndex[`${i}:${t}`]}if(!e){e=this.fieldIndex[i]}if(!e){throw new Error(`No plugin path mapped for FieldType: ${i} (widget: ${t})`)}return e}getLayoutPath(i){const t=this.layoutIndex[i];if(!t){throw new Error(`No layout path mapped for strategy: ${i}`)}return t}getPathsToLoad(i){const e=new Set;const n=i.layoutStrategy||(i.type==="array"?"table":"form");e.add(this.getLayoutPath(n));const s=i=>{for(const n in i){const o=i[n];try{e.add(this.getFieldPath(o.type||"string",o.ui?.widget))}catch(i){t.warn(`[MetaUI LazyLoad] Could not find mapped plugin for field ${n}`)}if(o.properties)s(o.properties);if(o.items&&o.items.properties)s(o.items.properties);if(o.items&&o.items.type){try{e.add(this.getFieldPath(o.items.type,o.items.ui?.widget))}catch(i){}}}};if(i.properties){s(i.properties)}else if(i.items&&i.items.properties){s(i.items.properties)}return e}async preloadDependencies(i){const e=this.getPathsToLoad(i);const n=Array.from(e).map(i=>{if(!this.activePromises[i]){this.activePromises[i]=new Promise((e,n)=>{sap.ui.require([i],i=>e(i),e=>{t.error(`Failed to lazy load module: ${i}`);n(e)})})}return this.activePromises[i]});await Promise.all(n)}extractConstructor(i){if(!i)return null;if(typeof i==="function")return i;if(i.default&&typeof i.default==="function")return i.default;const t=Object.keys(i);for(const e of t){if(typeof i[e]==="function"){return i[e]}}return null}getPlugin(i,t){const e=this.getFieldPath(i,t);const n=sap.ui.require(e);const s=this.extractConstructor(n);if(!s){throw new Error(`[MetaUI Plugin Instantiation] Plugin ${e} was not preloaded or has no constructor!`)}return new s}getLayout(i){const t=this.getLayoutPath(i);const e=sap.ui.require(t);const n=this.extractConstructor(e);if(!n){throw new Error(`[MetaUI Layout Instantiation] Layout ${t} was not preloaded or has no constructor!`)}return new n}}var n={__esModule:true};n.PluginRegistry=e;return n});
|
|
2
2
|
//# sourceMappingURL=PluginRegistry.js.map
|